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));
}
}