From 78def0ae1d73f55f89e16e0a2c567975d8379c04 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Mon, 5 Oct 2020 16:19:50 +0800 Subject: [PATCH] fix: lookup server hostname before start --- Netch/Controllers/MainController.cs | 6 ++++++ Netch/Controllers/TUNTAPController.cs | 2 +- Netch/Servers/Shadowsocks/SSController.cs | 4 ++-- Netch/Servers/ShadowsocksR/SSRController.cs | 3 ++- Netch/Servers/Trojan/TrojanController.cs | 3 ++- Netch/Servers/VMess/VMessController.cs | 3 ++- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 92074f23..419ce2e7 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -40,6 +40,12 @@ namespace Netch.Controllers return false; } + if (DNS.Lookup(server.Hostname) == null) + { + MessageBoxX.Show("Lookup Server hostname failed"); + return false; + } + _ = Task.Run(Firewall.AddNetchFwRules); try diff --git a/Netch/Controllers/TUNTAPController.cs b/Netch/Controllers/TUNTAPController.cs index 974ae241..668f2c94 100644 --- a/Netch/Controllers/TUNTAPController.cs +++ b/Netch/Controllers/TUNTAPController.cs @@ -86,7 +86,7 @@ namespace Netch.Controllers var argument = new StringBuilder(); if (s.IsSocks5()) - argument.Append($"-proxyServer {s.Hostname}:{s.Port} "); + argument.Append($"-proxyServer {_serverAddresses}:{s.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 c36f5a78..36d496d5 100644 --- a/Netch/Servers/Shadowsocks/SSController.cs +++ b/Netch/Servers/Shadowsocks/SSController.cs @@ -27,7 +27,7 @@ namespace Netch.Servers.Shadowsocks { State = State.Starting; var client = Encoding.UTF8.GetBytes($"{LocalAddress}:{Socks5LocalPort}"); - var remote = Encoding.UTF8.GetBytes($"{server.Hostname}:{server.Port}"); + var remote = Encoding.UTF8.GetBytes($"{DNS.Lookup(server.Hostname)}:{server.Port}"); var passwd = Encoding.UTF8.GetBytes($"{server.Password}"); var method = Encoding.UTF8.GetBytes($"{server.EncryptMethod}"); if (!ShadowsocksDLL.Info(client, remote, passwd, method)) @@ -55,7 +55,7 @@ namespace Netch.Servers.Shadowsocks var argument = new StringBuilder(); argument.Append( - $"-s {server.Hostname} " + + $"-s {DNS.Lookup(server.Hostname)} " + $"-p {server.Port} " + $"-b {LocalAddress ?? Global.Settings.LocalAddress} " + $"-l {Socks5LocalPort ?? Global.Settings.Socks5LocalPort} " + diff --git a/Netch/Servers/ShadowsocksR/SSRController.cs b/Netch/Servers/ShadowsocksR/SSRController.cs index e4d11a24..0862242f 100644 --- a/Netch/Servers/ShadowsocksR/SSRController.cs +++ b/Netch/Servers/ShadowsocksR/SSRController.cs @@ -1,6 +1,7 @@ using System.Text; using Netch.Controllers; using Netch.Models; +using Netch.Utils; namespace Netch.Servers.ShadowsocksR { @@ -20,7 +21,7 @@ namespace Netch.Servers.ShadowsocksR #region Argument var argument = new StringBuilder(); - argument.Append($"-s {server.Hostname} -p {server.Port} -k \"{server.Password}\" -m {server.EncryptMethod} -t 120"); + argument.Append($"-s {DNS.Lookup(server.Hostname)} -p {server.Port} -k \"{server.Password}\" -m {server.EncryptMethod} -t 120"); if (!string.IsNullOrEmpty(server.Protocol)) { argument.Append($" -O {server.Protocol}"); diff --git a/Netch/Servers/Trojan/TrojanController.cs b/Netch/Servers/Trojan/TrojanController.cs index d5d0f749..ba97b669 100644 --- a/Netch/Servers/Trojan/TrojanController.cs +++ b/Netch/Servers/Trojan/TrojanController.cs @@ -3,6 +3,7 @@ using System.IO; using Netch.Controllers; using Netch.Models; using Netch.Servers.Trojan.Models; +using Netch.Utils; using Newtonsoft.Json; namespace Netch.Servers.Trojan @@ -28,7 +29,7 @@ namespace Netch.Servers.Trojan { local_addr = LocalAddress ?? Global.Settings.LocalAddress, local_port = Socks5LocalPort ?? Global.Settings.Socks5LocalPort, - remote_addr = server.Hostname, + remote_addr = DNS.Lookup(server.Hostname).ToString(), remote_port = server.Port, password = new List { diff --git a/Netch/Servers/VMess/VMessController.cs b/Netch/Servers/VMess/VMessController.cs index de7a9f6f..9f038bf5 100644 --- a/Netch/Servers/VMess/VMessController.cs +++ b/Netch/Servers/VMess/VMessController.cs @@ -3,6 +3,7 @@ using System.IO; using Netch.Controllers; using Netch.Models; using Netch.Servers.VMess.Models; +using Netch.Utils; using Newtonsoft.Json; namespace Netch.Servers.VMess @@ -46,7 +47,7 @@ namespace Netch.Servers.VMess { new VMessConfig.VNext { - address = server.Hostname, + address = DNS.Lookup(server.Hostname).ToString(), port = server.Port, users = new List {