using System.Text.Json; namespace Netch.Models; /// /// 用于读取和写入的配置的类 /// public class Setting { public RedirectorConfig Redirector { get; set; } = new(); /// /// 服务器列表 /// public List Server { get; set; } = new(); public AioDNSConfig AioDNS { get; set; } = new(); /// /// 是否检查 Beta 更新 /// public bool CheckBetaUpdate { get; set; } = false; /// /// 是否打开软件时检查更新 /// public bool CheckUpdateWhenOpened { get; set; } = true; /// /// 测试所有服务器心跳/秒 /// public int DetectionTick { get; set; } = 10; /// /// 是否关闭窗口时退出 /// public bool ExitWhenClosed { get; set; } = false; /// /// HTTP 本地端口 /// public ushort HTTPLocalPort { get; set; } = 2802; /// /// 语言设置 /// public string Language { get; set; } = "System"; /// /// HTTP 和 Socks5 本地代理地址 /// public string LocalAddress { get; set; } = "127.0.0.1"; /// /// 是否启动后自动最小化 /// public bool MinimizeWhenStarted { get; set; } = false; /// /// 模式选择位置 /// public int ModeComboBoxSelectedIndex { get; set; } = -1; /// /// 快捷配置数量 /// public int ProfileCount { get; set; } = 4; /// /// 已保存的快捷配置 /// public List Profiles { get; set; } = new(); /// /// 配置最大列数 /// public byte ProfileTableColumnCount { get; set; } = 5; /// /// 网页请求超时 毫秒 /// public int RequestTimeout { get; set; } = 10000; /// /// 是否开机启动软件 /// public bool RunAtStartup { get; set; } = false; /// /// 服务器选择位置 /// public int ServerComboBoxSelectedIndex { get; set; } = -1; /// /// 服务器测试方式 false.ICMPing true.TCPing /// public bool ServerTCPing { get; set; } = true; /// /// Socks5 本地端口 /// public ushort Socks5LocalPort { get; set; } = 2801; /// /// 启动后延迟测试间隔/秒 /// public int StartedPingInterval { get; set; } = -1; /// /// 是否打开软件时启动加速 /// public bool StartWhenOpened { get; set; } = false; /// /// 是否退出时停止 /// public bool StopWhenExited { get; set; } = false; /// /// STUN测试服务器 /// public string STUN_Server { get; set; } = "stun.syncthing.net"; /// /// STUN测试服务器 /// public int STUN_Server_Port { get; set; } = 3478; /// /// 订阅链接列表 /// public List Subscription { get; set; } = new(); /// /// TUNTAP 适配器配置 /// public TUNConfig TUNTAP { get; set; } = new(); /// /// 是否打开软件时更新订阅 /// public bool UpdateServersWhenOpened { get; set; } = false; public V2rayConfig V2RayConfig { get; set; } = new(); public bool NoSupportDialog { get; set; } = false; #region Migration [Obsolete] public JsonElement SubscribeLink { set { if (Subscription == null! || !Subscription.Any()) Subscription = value.Deserialize>()!; } } #endregion public Setting ShallowCopy() { return (Setting)MemberwiseClone(); } public void Set(Setting value) { foreach (var p in typeof(Setting).GetProperties()) p.SetValue(this, p.GetValue(value)); } }