using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Threading; using System.Windows.Forms; using WindowsJobAPI; using Netch.Controllers; using Netch.Forms; using Netch.Models; namespace Netch { public static class Global { /// /// 换行 /// public const string EOF = "\r\n"; public const string UserACL = "data\\user.acl"; public const string BuiltinACL = "bin\\default.acl"; public static readonly string NetchDir = Application.StartupPath; public static readonly string NetchExecutable = Application.ExecutablePath; /// /// 主窗体的静态实例 /// public static MainForm MainForm; public static readonly Mutex Mutex = new(false, "Global\\Netch"); #if DEBUG public static bool Testing = false; #else public const bool Testing = false; #endif /// /// 用于读取和写入的配置 /// public static Setting Settings = new(); /// /// 用于存储模式 /// public static readonly List Modes = new(); /// /// Windows Job API /// public static readonly JobObject Job = new(); public static class Flags { public static readonly bool IsWindows10Upper = Environment.OSVersion.Version.Major >= 10; private static bool? _supportFakeDns; public static bool SupportFakeDns => _supportFakeDns ??= new TUNTAPController().TestFakeDNS(); } /// /// 出口适配器 /// public static class Outbound { /// /// 索引 /// public static int Index = -1; /// /// 网关 /// public static IPAddress Gateway; public static NetworkInterface Adapter; /// /// 地址 /// public static IPAddress Address => Adapter.GetIPProperties() .UnicastAddresses.First(ip => ip.Address.AddressFamily == AddressFamily.InterNetwork) .Address; } /// /// TUN/TAP 适配器 /// public static class TUNTAP { /// /// 适配器 /// public static NetworkInterface Adapter; /// /// 索引 /// public static int Index = -1; /// /// 组件 ID /// public static string ComponentID = string.Empty; } } }