From 918e260f3e6fd7737dcf1b216bfa37046bdfa0aa Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Thu, 15 Oct 2020 19:15:13 +0800 Subject: [PATCH] refactor: Add IServerController.Server and use in ModeControllers --- Netch/Controllers/HTTPController.cs | 2 +- Netch/Controllers/IServerController.cs | 2 ++ Netch/Controllers/NFController.cs | 18 +++++++----------- Netch/Controllers/TUNTAPController.cs | 6 +++--- Netch/Servers/Shadowsocks/SSController.cs | 3 ++- Netch/Servers/ShadowsocksR/SSRController.cs | 2 ++ Netch/Servers/Socks5/S5Controller.cs | 2 ++ Netch/Servers/Trojan/TrojanController.cs | 2 ++ Netch/Servers/VLESS/VLESSController.cs | 2 ++ Netch/Servers/VMess/VMessController.cs | 2 ++ 10 files changed, 25 insertions(+), 16 deletions(-) diff --git a/Netch/Controllers/HTTPController.cs b/Netch/Controllers/HTTPController.cs index b14fbefc..4435f7e1 100644 --- a/Netch/Controllers/HTTPController.cs +++ b/Netch/Controllers/HTTPController.cs @@ -32,7 +32,7 @@ namespace Netch.Controllers try { - pPrivoxyController.Start(s, mode); + pPrivoxyController.Start(MainController.ServerController.Server, mode); if (mode.Type == 3) NativeMethods.SetGlobal($"127.0.0.1:{Global.Settings.HTTPLocalPort}", IEProxyExceptions); } diff --git a/Netch/Controllers/IServerController.cs b/Netch/Controllers/IServerController.cs index dba15b25..4ccb0c22 100644 --- a/Netch/Controllers/IServerController.cs +++ b/Netch/Controllers/IServerController.cs @@ -4,6 +4,8 @@ namespace Netch.Controllers { public interface IServerController : IController { + public Server Server { get; set; } + public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } diff --git a/Netch/Controllers/NFController.cs b/Netch/Controllers/NFController.cs index f25ce816..64a3f95c 100644 --- a/Netch/Controllers/NFController.cs +++ b/Netch/Controllers/NFController.cs @@ -69,7 +69,7 @@ namespace Netch.Controllers aio_dial((int) NameList.TYPE_ADDNAME, "NTT.exe"); - if (s is Socks5 socks5) + if (MainController.ServerController.Server is Socks5 socks5) { if (!socks5.Auth()) { @@ -78,22 +78,18 @@ namespace Netch.Controllers } else { - /* TODO Direct handled by redirector - aio_dial((int) NameList.TYPE_TCPHOST, $"{socks5.AutoResolveHostname()}:{socks5.Port}"); - aio_dial((int) NameList.TYPE_UDPHOST, $"{socks5.AutoResolveHostname()}:{socks5.Port}"); - aio_dial((int) NameList.TYPE_, socks5.Username); - aio_dial((int) NameList.TYPE_, socks5.Password); - */ - aio_dial((int) NameList.TYPE_TCPHOST, $"127.0.0.1:{Global.Settings.Socks5LocalPort}"); - aio_dial((int) NameList.TYPE_UDPHOST, $"127.0.0.1:{Global.Settings.Socks5LocalPort}"); + // TODO Socks5 Auth Direct handled by redirector + aio_dial((int) NameList.TYPE_TCPHOST, $"127.0.0.1:{MainController.ServerController.Socks5LocalPort()}"); + aio_dial((int) NameList.TYPE_UDPHOST, $"127.0.0.1:{MainController.ServerController.Socks5LocalPort()}"); } } else { - aio_dial((int) NameList.TYPE_TCPHOST, $"127.0.0.1:{Global.Settings.Socks5LocalPort}"); - aio_dial((int) NameList.TYPE_UDPHOST, $"127.0.0.1:{Global.Settings.Socks5LocalPort}"); + aio_dial((int) NameList.TYPE_TCPHOST, $"127.0.0.1:{MainController.ServerController.Socks5LocalPort()}"); + aio_dial((int) NameList.TYPE_UDPHOST, $"127.0.0.1:{MainController.ServerController.Socks5LocalPort()}"); } + if (Global.Settings.ModifySystemDNS) { // 备份并替换系统 DNS diff --git a/Netch/Controllers/TUNTAPController.cs b/Netch/Controllers/TUNTAPController.cs index 0462a1f6..2540633e 100644 --- a/Netch/Controllers/TUNTAPController.cs +++ b/Netch/Controllers/TUNTAPController.cs @@ -42,7 +42,7 @@ namespace Netch.Controllers public bool Start(Server s, Mode mode) { _savedMode = mode; - _savedServer = s; + _savedServer = MainController.ServerController.Server; // 查询服务器 IP 地址 _serverAddresses = DNS.Lookup(_savedServer.Hostname); @@ -82,8 +82,8 @@ namespace Netch.Controllers } var argument = new StringBuilder(); - if (s is Socks5 socks5 && !socks5.Auth()) - argument.Append($"-proxyServer {_serverAddresses}:{s.Port} "); + if (_savedServer is Socks5 socks5 && !socks5.Auth()) + argument.Append($"-proxyServer {_serverAddresses}:{_savedServer.Port} "); else argument.Append($"-proxyServer 127.0.0.1:{Global.Settings.Socks5LocalPort} "); diff --git a/Netch/Servers/Shadowsocks/SSController.cs b/Netch/Servers/Shadowsocks/SSController.cs index c9031f61..87b073fb 100644 --- a/Netch/Servers/Shadowsocks/SSController.cs +++ b/Netch/Servers/Shadowsocks/SSController.cs @@ -11,6 +11,7 @@ namespace Netch.Servers.Shadowsocks public override string Name { get; protected set; } = "Shadowsocks"; public override string MainFile { get; protected set; } = "Shadowsocks.exe"; + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } @@ -20,7 +21,7 @@ namespace Netch.Servers.Shadowsocks public bool Start(Server s, Mode mode) { _savedMode = mode; - + Server = s; var server = (Shadowsocks) s; //从DLL启动Shaowsocks if (DllFlag) diff --git a/Netch/Servers/ShadowsocksR/SSRController.cs b/Netch/Servers/ShadowsocksR/SSRController.cs index 47f2cf15..97c978d2 100644 --- a/Netch/Servers/ShadowsocksR/SSRController.cs +++ b/Netch/Servers/ShadowsocksR/SSRController.cs @@ -11,11 +11,13 @@ namespace Netch.Servers.ShadowsocksR public override string Name { get; protected set; } = "ShadowsocksR"; + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } public bool Start(Server s, Mode mode) { + Server = s; var server = (ShadowsocksR) s; #region Argument diff --git a/Netch/Servers/Socks5/S5Controller.cs b/Netch/Servers/Socks5/S5Controller.cs index b4a67f82..4ffb8a3f 100644 --- a/Netch/Servers/Socks5/S5Controller.cs +++ b/Netch/Servers/Socks5/S5Controller.cs @@ -12,6 +12,7 @@ namespace Netch.Servers.Socks5 public bool Start(Server s, Mode mode) { + Server = s; var server = (Socks5) s; if (server.Auth() && !mode.SupportSocks5Auth) { @@ -33,6 +34,7 @@ namespace Netch.Servers.Socks5 StopInstance(); } + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } diff --git a/Netch/Servers/Trojan/TrojanController.cs b/Netch/Servers/Trojan/TrojanController.cs index 2ea13c4c..179063f8 100644 --- a/Netch/Servers/Trojan/TrojanController.cs +++ b/Netch/Servers/Trojan/TrojanController.cs @@ -18,12 +18,14 @@ namespace Netch.Servers.Trojan public override string MainFile { get; protected set; } = "Trojan.exe"; public override string Name { get; protected set; } = "Trojan"; + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } public bool Start(Server s, Mode mode) { + Server = s; var server = (Trojan) s; File.WriteAllText("data\\last.json", JsonConvert.SerializeObject(new TrojanConfig { diff --git a/Netch/Servers/VLESS/VLESSController.cs b/Netch/Servers/VLESS/VLESSController.cs index 49782e08..c35a1c11 100644 --- a/Netch/Servers/VLESS/VLESSController.cs +++ b/Netch/Servers/VLESS/VLESSController.cs @@ -10,12 +10,14 @@ namespace Netch.Servers.VLESS public override string Name { get; protected set; } = "VLESS"; public override string MainFile { get; protected set; } = "v2ray.exe"; + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } public bool Start(Server s, Mode mode) { + Server = s; File.WriteAllText("data\\last.json", V2rayConfigUtils.GenerateClientConfig(s, mode)); return StartInstanceAuto("-config ..\\data\\last.json"); } diff --git a/Netch/Servers/VMess/VMessController.cs b/Netch/Servers/VMess/VMessController.cs index ba1773f9..de4038da 100644 --- a/Netch/Servers/VMess/VMessController.cs +++ b/Netch/Servers/VMess/VMessController.cs @@ -15,12 +15,14 @@ namespace Netch.Servers.VMess public override string Name { get; protected set; } = "V2Ray"; public override string MainFile { get; protected set; } = "v2ray.exe"; + public Server Server { get; set; } public ushort? Socks5LocalPort { get; set; } public string LocalAddress { get; set; } public bool Start(Server s, Mode mode) { + Server = s; File.WriteAllText("data\\last.json", V2rayConfigUtils.GenerateClientConfig(s, mode)); return StartInstanceAuto("-config ..\\data\\last.json"); }