From b94d10d808ae16713ad82a024428ef7d0079049a Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 17 Oct 2019 09:41:46 +0800 Subject: [PATCH] up speedtest --- v2rayN/v2rayN/Forms/MainForm.cs | 9 +++--- v2rayN/v2rayN/Global.cs | 4 +-- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 1 + v2rayN/v2rayN/Handler/StatisticsHandler.cs | 2 +- v2rayN/v2rayN/Handler/V2rayConfigHandler.cs | 2 +- v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs | 6 ++-- .../HttpProxyHandler/HttpProxyHandle.cs | 6 ++-- .../v2rayN/HttpProxyHandler/PACListHandle.cs | 2 +- .../HttpProxyHandler/PACServerHandle.cs | 4 +-- .../v2rayN/HttpProxyHandler/PrivoxyHandler.cs | 2 +- v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs | 31 +++++++++++++++++-- v2rayN/v2rayN/Properties/AssemblyInfo.cs | 2 +- 12 files changed, 49 insertions(+), 22 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 11ec3fdd..3f5b5f17 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -319,16 +319,15 @@ namespace v2rayN.Forms private void DisplayToolStatus() { - var localIP = "127.0.0.1"; toolSslSocksPort.Text = toolSslHttpPort.Text = toolSslPacPort.Text = "NONE"; - toolSslSocksPort.Text = $"{localIP}:{config.inbound[0].localPort}"; + toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}"; if (config.sysAgentEnabled) { - toolSslHttpPort.Text = $"{localIP}:{Global.sysAgentPort}"; + toolSslHttpPort.Text = $"{Global.Loopback}:{Global.sysAgentPort}"; if (config.listenerType == 2 || config.listenerType == 4) { if (PACServerHandle.IsRunning) @@ -607,7 +606,7 @@ namespace v2rayN.Forms private void menuRealPingServer_Click(object sender, EventArgs e) { - if (!config.sysAgentEnabled || config.listenerType != 1) + if (!config.sysAgentEnabled) { UI.Show(UIRes.I18N("NeedHttpGlobalProxy")); return; @@ -622,7 +621,7 @@ namespace v2rayN.Forms private void menuSpeedServer_Click(object sender, EventArgs e) { - if (!config.sysAgentEnabled || config.listenerType != 1) + if (!config.sysAgentEnabled) { UI.Show(UIRes.I18N("NeedHttpGlobalProxy")); return; diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 2027cc78..94534f20 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -147,10 +147,10 @@ namespace v2rayN /// public const string CustomIconName = "v2rayN.ico"; + public const string Loopback = "127.0.0.1"; public const string InboundAPITagName = "api"; - public const string InboundProxyTagName = "proxy"; - public const string Loopback = "127.0.0.1"; + public const string InboundProxyTagName = "proxy"; public const string InboundAPIProtocal = "dokodemo-door"; public enum StatisticsFreshRate diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index f96dd00d..55b3b7fd 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -276,6 +276,7 @@ namespace v2rayN.Handler { HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); myHttpWebRequest.Timeout = 5000; + myHttpWebRequest.Proxy = new WebProxy(Global.Loopback, Global.sysAgentPort); var timer = new Stopwatch(); timer.Start(); diff --git a/v2rayN/v2rayN/Handler/StatisticsHandler.cs b/v2rayN/v2rayN/Handler/StatisticsHandler.cs index 766d4021..c6074b66 100644 --- a/v2rayN/v2rayN/Handler/StatisticsHandler.cs +++ b/v2rayN/v2rayN/Handler/StatisticsHandler.cs @@ -95,7 +95,7 @@ namespace v2rayN.Handler { Global.statePort = GetFreePort(); - channel_ = new Channel($"127.0.0.1:{Global.statePort}", ChannelCredentials.Insecure); + channel_ = new Channel($"{Global.Loopback}:{Global.statePort}", ChannelCredentials.Insecure); channel_.ConnectAsync(); client_ = new StatsService.StatsServiceClient(channel_); } diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs index 712e8350..f9e08998 100644 --- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs @@ -159,7 +159,7 @@ namespace v2rayN.Handler } else { - inbound.listen = "127.0.0.1"; + inbound.listen = Global.Loopback; } //开启udp inbound.settings.udp = config.inbound[0].udpEnabled; diff --git a/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs b/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs index 2de80f26..4dd37479 100644 --- a/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs +++ b/v2rayN/v2rayN/Handler/V2rayUpdateHandle.cs @@ -100,12 +100,14 @@ namespace v2rayN.Handler ServicePointManager.DefaultConnectionLimit = 256; if (UpdateCompleted != null) { - UpdateCompleted(this, new ResultEventArgs(false, url)); + UpdateCompleted(this, new ResultEventArgs(false, "Downloading...")); } progressPercentage = -1; WebClientEx ws = new WebClientEx(); + ws.Proxy = new WebProxy(Global.Loopback, Global.sysAgentPort); + ws.DownloadFileCompleted += ws_DownloadFileCompleted; ws.DownloadProgressChanged += ws_DownloadProgressChanged; ws.DownloadFileAsync(new Uri(url), Utils.GetPath(DownloadFileName)); @@ -216,6 +218,6 @@ namespace v2rayN.Handler } } - + } } diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs index fd11820b..d2282c31 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs @@ -47,7 +47,7 @@ namespace v2rayN.HttpProxyHandler { PACServerHandle.Stop(); PACFileWatcherHandle.StopWatch(); - SysProxyHandle.SetIEProxy(true, true, "127.0.0.1:" + port, null); + SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}", null); } else if (type == 2) { @@ -168,8 +168,8 @@ namespace v2rayN.HttpProxyHandler public static string GetPacUrl() { - string pacUrl = string.Format("http://127.0.0.1:{0}/pac/?t={1}", Global.pacPort, - GetTimestamp(DateTime.Now)); + string pacUrl = $"http://{Global.Loopback}:{Global.pacPort}/pac/?t={GetTimestamp(DateTime.Now)}"; + return pacUrl; } diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs index 2d021a3b..8aaa0822 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/PACListHandle.cs @@ -46,7 +46,7 @@ namespace v2rayN.HttpProxyHandler //{ // throw new Exception("未发现HTTP代理,无法设置代理更新"); //} - WebClient http = new WebClient(); + var http = new WebClientEx(); //http.Headers.Add("Connection", "Close"); //http.Proxy = new WebProxy(IPAddress.Loopback.ToString(), httpProxy.localPort); http.DownloadStringCompleted += http_DownloadStringCompleted; diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs index 01561103..21e3fd6c 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs @@ -31,11 +31,11 @@ namespace v2rayN.HttpProxyHandler //{ // pacPort = Global.pacPort; //} - if (InitServer("127.0.0.1")) + if (InitServer(Global.Loopback)) { pacPort = Global.pacPort; } - else if (InitServerB("127.0.0.1")) + else if (InitServerB(Global.Loopback)) { pacPort = Global.pacPort; } diff --git a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs index 169ed1df..939f1415 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs @@ -99,7 +99,7 @@ namespace v2rayN.HttpProxyHandler } else { - privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", "127.0.0.1"); + privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", Global.Loopback); } FileManager.ByteArrayToFile(Utils.GetTempPath(_uniqueConfigFile), Encoding.UTF8.GetBytes(privoxyConfig)); diff --git a/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs b/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs index 2ce644d5..3b141f85 100644 --- a/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs +++ b/v2rayN/v2rayN/HttpProxyHandler/WebClientEx.cs @@ -5,17 +5,42 @@ namespace v2rayN.HttpProxyHandler { class WebClientEx : WebClient { - public int Timeout { get; set; } + public int Timeout + { + get; set; + } public WebClientEx(int timeout = 3000) { Timeout = timeout; } - protected override WebRequest GetWebRequest(Uri address) { - var request = base.GetWebRequest(address); + HttpWebRequest request; + if (address.Scheme == "https") + { + ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => { return true; }; + request = (HttpWebRequest)base.GetWebRequest(address); + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = (HttpWebRequest)base.GetWebRequest(address); + } + request.Timeout = Timeout; + request.ReadWriteTimeout = Timeout; + //request.AllowAutoRedirect = false; + //request.AllowWriteStreamBuffering = true; + + request.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEndPoint, retryCount) => + { + if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) + return new IPEndPoint(IPAddress.IPv6Any, 0); + else + return new IPEndPoint(IPAddress.Any, 0); + }; + return request; } } diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs index 789bb76b..ec178c4d 100644 --- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -33,4 +33,4 @@ using System.Runtime.InteropServices; // 方法是按如下所示使用“*”: //[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("2.43")] +[assembly: AssemblyFileVersion("2.45")]