From 11ab1b89afc85f921f7706cbb8f36f769a817627 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Thu, 11 Feb 2021 23:36:47 +0800 Subject: [PATCH] Refactor IServerController --- Netch/Controllers/Guard.cs | 5 ++-- Netch/Controllers/NTTController.cs | 10 +++---- Netch/Controllers/PrivoxyController.cs | 2 +- Netch/Controllers/TUNTAPController.cs | 5 +--- Netch/Servers/Shadowsocks/SSController.cs | 2 +- Netch/Servers/ShadowsocksR/SSRController.cs | 2 +- Netch/Servers/Socks5/S5Controller.cs | 29 ++++--------------- Netch/Servers/Trojan/TrojanController.cs | 3 +- .../{VMess => V2ray}/Models/V2rayConfig.cs | 5 +--- .../{VMess => V2ray}/Models/V2rayNSharing.cs | 2 +- .../Utils/V2rayConfigUtils.cs | 10 +++---- .../V2rayController.cs} | 16 +++++----- Netch/Servers/VLESS/VLESSController.cs | 28 ------------------ Netch/Servers/VLESS/VLESSUtil.cs | 3 +- Netch/Servers/VMess/VMessUtil.cs | 5 ++-- Netch/Utils/Firewall.cs | 1 - 16 files changed, 36 insertions(+), 92 deletions(-) rename Netch/Servers/{VMess => V2ray}/Models/V2rayConfig.cs (99%) rename Netch/Servers/{VMess => V2ray}/Models/V2rayNSharing.cs (97%) rename Netch/Servers/{VMess => V2ray}/Utils/V2rayConfigUtils.cs (98%) rename Netch/Servers/{VMess/VMessController.cs => V2ray/V2rayController.cs} (68%) delete mode 100644 Netch/Servers/VLESS/VLESSController.cs diff --git a/Netch/Controllers/Guard.cs b/Netch/Controllers/Guard.cs index 2659a86a..e599169b 100644 --- a/Netch/Controllers/Guard.cs +++ b/Netch/Controllers/Guard.cs @@ -14,12 +14,12 @@ namespace Netch.Controllers { public abstract class Guard { - public abstract string Name { get; protected set; } + public virtual string Name { get; } /// /// 主程序名 /// - public abstract string MainFile { get; protected set; } + public virtual string MainFile { get; protected set; } protected State State { get; set; } = State.Waiting; @@ -103,7 +103,6 @@ namespace Netch.Controllers }; } - /// /// 默认行为启动主程序 /// diff --git a/Netch/Controllers/NTTController.cs b/Netch/Controllers/NTTController.cs index 889906ca..a22fee6d 100644 --- a/Netch/Controllers/NTTController.cs +++ b/Netch/Controllers/NTTController.cs @@ -7,7 +7,7 @@ namespace Netch.Controllers { public class NTTController : Guard, IController { - public override string Name { get; protected set; } = "NTT"; + public override string Name { get; } = "NTT"; public override string MainFile { get; protected set; } = "NTT.exe"; /// @@ -16,10 +16,10 @@ namespace Netch.Controllers /// public (string, string, string) Start() { - string localEnd=null; - string publicEnd=null; - string result =null; - string bindingTest=null; + string localEnd = null; + string publicEnd = null; + string result = null; + string bindingTest = null; try { diff --git a/Netch/Controllers/PrivoxyController.cs b/Netch/Controllers/PrivoxyController.cs index ffe4a3d2..a9634c77 100644 --- a/Netch/Controllers/PrivoxyController.cs +++ b/Netch/Controllers/PrivoxyController.cs @@ -12,7 +12,7 @@ namespace Netch.Controllers RedirectStd = false; } - public override string Name { get; protected set; } = "Privoxy"; + public override string Name { get; } = "Privoxy"; public override string MainFile { get; protected set; } = "Privoxy.exe"; diff --git a/Netch/Controllers/TUNTAPController.cs b/Netch/Controllers/TUNTAPController.cs index f00ea391..0994e95a 100644 --- a/Netch/Controllers/TUNTAPController.cs +++ b/Netch/Controllers/TUNTAPController.cs @@ -35,7 +35,7 @@ namespace Netch.Controllers } public override string MainFile { get; protected set; } = "tun2socks.exe"; - public override string Name { get; protected set; } = "tun2socks"; + public override string Name { get; } = "tun2socks"; public bool Start(in Mode mode) { @@ -206,7 +206,6 @@ namespace Netch.Controllers } } - /// /// 清除绕行规则 /// @@ -219,7 +218,6 @@ namespace Netch.Controllers return true; } - public bool TestFakeDNS() { try @@ -357,7 +355,6 @@ namespace Netch.Controllers return result; } - private enum RouteType { Outbound, diff --git a/Netch/Servers/Shadowsocks/SSController.cs b/Netch/Servers/Shadowsocks/SSController.cs index 435a9dbe..550eb85f 100644 --- a/Netch/Servers/Shadowsocks/SSController.cs +++ b/Netch/Servers/Shadowsocks/SSController.cs @@ -8,7 +8,7 @@ namespace Netch.Servers.Shadowsocks { public class SSController : Guard, IServerController { - public override string Name { get; protected set; } = "Shadowsocks"; + public override string Name { get; } = "Shadowsocks"; public override string MainFile { get; protected set; } = "Shadowsocks.exe"; public ushort? Socks5LocalPort { get; set; } diff --git a/Netch/Servers/ShadowsocksR/SSRController.cs b/Netch/Servers/ShadowsocksR/SSRController.cs index 43efed4c..ab2c91f0 100644 --- a/Netch/Servers/ShadowsocksR/SSRController.cs +++ b/Netch/Servers/ShadowsocksR/SSRController.cs @@ -8,7 +8,7 @@ namespace Netch.Servers.ShadowsocksR { public override string MainFile { get; protected set; } = "ShadowsocksR.exe"; - public override string Name { get; protected set; } = "ShadowsocksR"; + public override string Name { get; } = "ShadowsocksR"; public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } diff --git a/Netch/Servers/Socks5/S5Controller.cs b/Netch/Servers/Socks5/S5Controller.cs index e0f338e0..9e7a733f 100644 --- a/Netch/Servers/Socks5/S5Controller.cs +++ b/Netch/Servers/Socks5/S5Controller.cs @@ -1,40 +1,21 @@ -using System.IO; -using Netch.Controllers; using Netch.Models; -using Netch.Servers.VMess.Utils; +using Netch.Servers.V2ray; namespace Netch.Servers.Socks5 { - public class S5Controller : Guard, IServerController + public class S5Controller : V2RayController { - public override string Name { get; protected set; } = "Socks5"; - public override string MainFile { get; protected set; } = "v2ray.exe"; + public override string Name { get; } = "Socks5"; - public bool Start(in Server s, in Mode mode) + public override bool Start(in Server s, in Mode mode) { var server = (Socks5) s; if (server.Auth()) { - File.WriteAllText("data\\last.json", V2rayConfigUtils.GenerateClientConfig(s, mode)); - if (StartInstanceAuto("-config ..\\data\\last.json")) - { - return true; - } - - return false; + return base.Start(s, mode); } return true; } - - public override void Stop() - { - if (Instance != null) - StopInstance(); - } - - public ushort? Socks5LocalPort { get; set; } - - public string LocalAddress { get; set; } } } \ No newline at end of file diff --git a/Netch/Servers/Trojan/TrojanController.cs b/Netch/Servers/Trojan/TrojanController.cs index 2b2aaeb9..a4d00e70 100644 --- a/Netch/Servers/Trojan/TrojanController.cs +++ b/Netch/Servers/Trojan/TrojanController.cs @@ -16,11 +16,10 @@ namespace Netch.Servers.Trojan } public override string MainFile { get; protected set; } = "Trojan.exe"; - public override string Name { get; protected set; } = "Trojan"; + public override string Name { get; } = "Trojan"; public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } - public bool Start(in Server s, in Mode mode) { var server = (Trojan) s; diff --git a/Netch/Servers/VMess/Models/V2rayConfig.cs b/Netch/Servers/V2ray/Models/V2rayConfig.cs similarity index 99% rename from Netch/Servers/VMess/Models/V2rayConfig.cs rename to Netch/Servers/V2ray/Models/V2rayConfig.cs index 2a536486..be39e1ea 100644 --- a/Netch/Servers/VMess/Models/V2rayConfig.cs +++ b/Netch/Servers/V2ray/Models/V2rayConfig.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Netch.Servers.VMess.Models +namespace Netch.Servers.V2ray.Models { public class V2rayConfig { @@ -40,7 +40,6 @@ namespace Netch.Servers.VMess.Models public List clients { get; set; } - public string decryption { get; set; } } @@ -125,7 +124,6 @@ namespace Netch.Servers.VMess.Models public int level { get; set; } } - public class Mux { public bool enabled { get; set; } @@ -218,7 +216,6 @@ namespace Netch.Servers.VMess.Models public TCPRequestHeaders headers; } - public class TCPRequestHeaders { public string Host; diff --git a/Netch/Servers/VMess/Models/V2rayNSharing.cs b/Netch/Servers/V2ray/Models/V2rayNSharing.cs similarity index 97% rename from Netch/Servers/VMess/Models/V2rayNSharing.cs rename to Netch/Servers/V2ray/Models/V2rayNSharing.cs index e63bfd09..7c969933 100644 --- a/Netch/Servers/VMess/Models/V2rayNSharing.cs +++ b/Netch/Servers/V2ray/Models/V2rayNSharing.cs @@ -1,4 +1,4 @@ -namespace Netch.Servers.VMess.Models +namespace Netch.Servers.V2ray.Models { /// /// 使用 v2rayN 定义的 VMess 链接格式 diff --git a/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs b/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs similarity index 98% rename from Netch/Servers/VMess/Utils/V2rayConfigUtils.cs rename to Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs index daff8e98..11adf01e 100644 --- a/Netch/Servers/VMess/Utils/V2rayConfigUtils.cs +++ b/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs @@ -1,11 +1,11 @@ using System.Collections.Generic; using System.Linq; using Netch.Models; -using Netch.Servers.VMess.Models; +using Netch.Servers.V2ray.Models; using Newtonsoft.Json; -using V2rayConfig = Netch.Servers.VMess.Models.V2rayConfig; +using V2rayConfig = Netch.Servers.V2ray.Models.V2rayConfig; -namespace Netch.Servers.VMess.Utils +namespace Netch.Servers.V2ray.Utils { public static class V2rayConfigUtils { @@ -214,7 +214,7 @@ namespace Netch.Servers.VMess.Utils outbound.settings.servers = null; break; } - case VMess vmess: + case VMess.VMess vmess: { var vnextItem = new VnextItem { @@ -261,7 +261,7 @@ namespace Netch.Servers.VMess.Utils } } - private static void boundStreamSettings(VMess server, ref StreamSettings streamSettings) + private static void boundStreamSettings(VMess.VMess server, ref StreamSettings streamSettings) { try { diff --git a/Netch/Servers/VMess/VMessController.cs b/Netch/Servers/V2ray/V2rayController.cs similarity index 68% rename from Netch/Servers/VMess/VMessController.cs rename to Netch/Servers/V2ray/V2rayController.cs index e4d05d47..46eb0666 100644 --- a/Netch/Servers/VMess/VMessController.cs +++ b/Netch/Servers/V2ray/V2rayController.cs @@ -1,25 +1,23 @@ -using System.IO; +using System.IO; using Netch.Controllers; using Netch.Models; -using Netch.Servers.VMess.Utils; +using Netch.Servers.V2ray.Utils; -namespace Netch.Servers.VMess +namespace Netch.Servers.V2ray { - public class VMessController : Guard, IServerController + public class V2RayController : Guard, IServerController { - public VMessController() + public V2RayController() { StartedKeywords.Add("started"); StoppedKeywords.AddRange(new[] {"config file not readable", "failed to"}); } - public override string Name { get; protected set; } = "VMess"; + public override string Name { get; } = "V2ray"; public override string MainFile { get; protected set; } = "v2ray.exe"; public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } - - - public bool Start(in Server s,in Mode mode) + public virtual bool Start(in Server s, in Mode mode) { File.WriteAllText("data\\last.json", V2rayConfigUtils.GenerateClientConfig(s, mode)); return StartInstanceAuto("-config ..\\data\\last.json"); diff --git a/Netch/Servers/VLESS/VLESSController.cs b/Netch/Servers/VLESS/VLESSController.cs deleted file mode 100644 index 92c6343c..00000000 --- a/Netch/Servers/VLESS/VLESSController.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.IO; -using Netch.Controllers; -using Netch.Models; -using Netch.Servers.VMess.Utils; - -namespace Netch.Servers.VLESS -{ - public class VLESSController : Guard, IServerController - { - public override string Name { get; protected set; } = "VLESS"; - public override string MainFile { get; protected set; } = "v2ray.exe"; - - public ushort? Socks5LocalPort { get; set; } - - public string LocalAddress { get; set; } - - public bool Start(in Server s,in Mode mode) - { - File.WriteAllText("data\\last.json", V2rayConfigUtils.GenerateClientConfig(s, mode)); - return StartInstanceAuto("-config ..\\data\\last.json"); - } - - public override void Stop() - { - StopInstance(); - } - } -} \ No newline at end of file diff --git a/Netch/Servers/VLESS/VLESSUtil.cs b/Netch/Servers/VLESS/VLESSUtil.cs index 813838bf..055eab46 100644 --- a/Netch/Servers/VLESS/VLESSUtil.cs +++ b/Netch/Servers/VLESS/VLESSUtil.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Netch.Controllers; using Netch.Models; +using Netch.Servers.V2ray; using Newtonsoft.Json.Linq; namespace Netch.Servers.VLESS @@ -36,7 +37,7 @@ namespace Netch.Servers.VLESS public IServerController GetController() { - return new VLESSController(); + return new V2RayController(); } public IEnumerable ParseUri(string text) diff --git a/Netch/Servers/VMess/VMessUtil.cs b/Netch/Servers/VMess/VMessUtil.cs index c8a44fff..e365dc32 100644 --- a/Netch/Servers/VMess/VMessUtil.cs +++ b/Netch/Servers/VMess/VMessUtil.cs @@ -2,8 +2,9 @@ using System; using System.Collections.Generic; using Netch.Controllers; using Netch.Models; +using Netch.Servers.V2ray; +using Netch.Servers.V2ray.Models; using Netch.Servers.VMess.Form; -using Netch.Servers.VMess.Models; using Netch.Utils; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -56,7 +57,7 @@ namespace Netch.Servers.VMess public IServerController GetController() { - return new VMessController(); + return new V2RayController(); } public IEnumerable ParseUri(string text) diff --git a/Netch/Utils/Firewall.cs b/Netch/Utils/Firewall.cs index dfef9a4e..cdc3766e 100644 --- a/Netch/Utils/Firewall.cs +++ b/Netch/Utils/Firewall.cs @@ -120,7 +120,6 @@ namespace Netch.Utils return (INetFwRule) Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")); } - private static string GetFwRulePath(string ruleName) { try