refactor: Add IServerController.Server and use in ModeControllers

This commit is contained in:
ChsBuffer
2020-10-15 19:15:13 +08:00
parent 508e77759c
commit 918e260f3e
10 changed files with 25 additions and 16 deletions

View File

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

View File

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

View File

@@ -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

View File

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

View File

@@ -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)

View File

@@ -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

View File

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

View File

@@ -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
{

View File

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

View File

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