Files
i2p 773d05f8f1
Pulsar .NET 9.0 Windows Release / build (push) Waiting to run
Mirror to Codeberg and Gitea / mirror (push) Waiting to run
initial commit
2026-08-27 10:57:58 -06:00

196 lines
5.9 KiB
C#

using System.IO;
using System.Windows.Forms;
using Microsoft.Win32;
using Newtonsoft.Json;
namespace Pulsar.Server.Models
{
public static class Settings
{
private static readonly string PulsarStuffDir = Path.Combine(Application.StartupPath, "PulsarStuff");
private static readonly string SettingsPath = Path.Combine(PulsarStuffDir, "settings.json");
private static SettingsModel _settings;
private static readonly object _lockObject = new object();
public static readonly string CertificatePath = Path.Combine(PulsarStuffDir, "Pulsar.p12");
private static bool _isDarkMode()
{
int res = -1;
try
{
res = (int)Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", "AppsUseLightTheme", -1);
}
catch { }
if (res == 0)
{
return true;
}
else if (res == 1)
{
return false;
}
else
{
return false;
}
}
private static SettingsModel LoadSettings()
{
if (_settings != null)
return _settings;
lock (_lockObject)
{
if (_settings != null)
return _settings;
try
{
if (File.Exists(SettingsPath))
{
string json = File.ReadAllText(SettingsPath);
_settings = JsonConvert.DeserializeObject<SettingsModel>(json) ?? new SettingsModel();
}
else
{
_settings = new SettingsModel();
_settings.DarkMode = _isDarkMode();
SaveSettings();
}
}
catch
{
_settings = new SettingsModel();
_settings.DarkMode = _isDarkMode();
}
return _settings;
}
}
private static void SaveSettings()
{
lock (_lockObject)
{
try
{
if (!Directory.Exists(PulsarStuffDir))
{
Directory.CreateDirectory(PulsarStuffDir);
}
string json = JsonConvert.SerializeObject(_settings, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(SettingsPath, json);
}
catch
{
}
}
}
public static bool DarkMode
{
get { return LoadSettings().DarkMode; }
set { LoadSettings().DarkMode = value; SaveSettings(); }
}
public static bool HideFromScreenCapture
{
get { return LoadSettings().HideFromScreenCapture; }
set { LoadSettings().HideFromScreenCapture = value; SaveSettings(); }
}
public static bool DiscordRPC
{
get { return LoadSettings().DiscordRPC; }
set { LoadSettings().DiscordRPC = value; SaveSettings(); }
}
public static ushort ListenPort
{
get { return LoadSettings().ListenPort; }
set { LoadSettings().ListenPort = value; SaveSettings(); }
}
public static ushort[] ListenPorts
{
get { return LoadSettings().ListenPorts ?? new ushort[0]; }
set { LoadSettings().ListenPorts = value; SaveSettings(); }
}
public static bool IPv6Support
{
get { return LoadSettings().IPv6Support; }
set { LoadSettings().IPv6Support = value; SaveSettings(); }
}
public static bool AutoListen
{
get { return LoadSettings().AutoListen; }
set { LoadSettings().AutoListen = value; SaveSettings(); }
}
public static bool EventLog
{
get { return LoadSettings().EventLog; }
set { LoadSettings().EventLog = value; SaveSettings(); }
}
public static bool TelegramNotifications
{
get { return LoadSettings().TelegramNotifications; }
set { LoadSettings().TelegramNotifications = value; SaveSettings(); }
}
public static bool ShowPopup
{
get { return LoadSettings().ShowPopup; }
set { LoadSettings().ShowPopup = value; SaveSettings(); }
}
public static bool UseUPnP
{
get { return LoadSettings().UseUPnP; }
set { LoadSettings().UseUPnP = value; SaveSettings(); }
}
public static bool ShowToolTip
{
get { return LoadSettings().ShowToolTip; }
set { LoadSettings().ShowToolTip = value; SaveSettings(); }
}
public static string TelegramChatID
{
get { return LoadSettings().TelegramChatID; }
set { LoadSettings().TelegramChatID = value; SaveSettings(); }
}
public static string TelegramBotToken
{
get { return LoadSettings().TelegramBotToken; }
set { LoadSettings().TelegramBotToken = value; SaveSettings(); }
}
public static string SaveFormat
{
get { return LoadSettings().SaveFormat; }
set { LoadSettings().SaveFormat = value; SaveSettings(); }
}
public static ushort ReverseProxyPort
{
get { return LoadSettings().ReverseProxyPort; }
set { LoadSettings().ReverseProxyPort = value; SaveSettings(); }
}
public static bool ShowCountryGroups
{
get { return LoadSettings().ShowCountryGroups; }
set { LoadSettings().ShowCountryGroups = value; SaveSettings(); }
}
}
}