From 2c6b2f8065bf307949df37a5b216ef8b0737511f Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Mon, 17 Feb 2020 13:55:58 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=AD=89?= =?UTF-8?q?=E7=90=90=E7=A2=8E=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 2 +- v2rayN/v2rayN/Forms/MainForm.resx | 6 +++--- v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 6 +++--- v2rayN/v2rayN/Handler/V2rayHandler.cs | 4 ++-- v2rayN/v2rayN/Resx/ResUI.Designer.cs | 4 ++-- v2rayN/v2rayN/Resx/ResUI.resx | 2 +- v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 2 +- v2rayN/v2rayN/Tool/Utils.cs | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 8ab48a1d..8464565a 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -324,7 +324,7 @@ namespace v2rayN.Forms { toolSslSocksPort.Text = toolSslHttpPort.Text = - toolSslPacPort.Text = "NONE"; + toolSslPacPort.Text = "OFF"; toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}"; diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index cde6dfff..646fbc58 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -657,7 +657,7 @@ 49, 17 - SOCKS5 + SOCKS5: 0, 17 @@ -675,7 +675,7 @@ 36, 17 - HTTP + HTTP: 0, 17 @@ -693,7 +693,7 @@ 30, 17 - PAC + PAC: 0, 17 diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 1659d54e..24220d6c 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -420,19 +420,19 @@ 232, 22 - 检查更新v2rayN + v2rayN 232, 22 - 检查更新v2rayCore + v2rayCore 232, 22 - 检查更新PAC + PAC 232, 22 diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs index 653efece..65e73792 100644 --- a/v2rayN/v2rayN/Handler/V2rayHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs @@ -152,9 +152,9 @@ namespace v2rayN.Handler { //查找v2ray文件是否存在 string fileName = string.Empty; - for (int k = 0; k < lstV2ray.Count; k++) + foreach (string name in lstV2ray) { - string vName = string.Format("{0}.exe", lstV2ray[k]); + string vName = string.Format("{0}.exe", name); vName = Utils.GetPath(vName); if (File.Exists(vName)) { diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index e80f0555..0e5092df 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -19,7 +19,7 @@ namespace v2rayN.Resx { // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class ResUI { @@ -691,7 +691,7 @@ namespace v2rayN.Resx { } /// - /// 查找类似 PAC failed to start. Pls with an administrator. 的本地化字符串。 + /// 查找类似 PAC failed to start. Run it with Admin right. 的本地化字符串。 /// internal static string StartPacFailed { get { diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index 74280a36..b62bbc98 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -344,6 +344,6 @@ Total upload traffic - PAC failed to start. Pls with an administrator. + PAC failed to start. Run it with Admin right. \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index cf7cab26..c7378691 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -254,7 +254,7 @@ 端口 - 服务类型 + 类型 订阅 diff --git a/v2rayN/v2rayN/Tool/Utils.cs b/v2rayN/v2rayN/Tool/Utils.cs index 2e840ecd..b7da94e8 100644 --- a/v2rayN/v2rayN/Tool/Utils.cs +++ b/v2rayN/v2rayN/Tool/Utils.cs @@ -317,7 +317,7 @@ namespace v2rayN double result; string unit; ToHumanReadable(amount, out result, out unit); - return $"{string.Format("{0:f1}", result)}{unit}"; + return $"{string.Format("{0:f1}", result)} {unit}"; } public static void DedupServerList(List source, out List result) From 4089cc5cf0e880cd20898d66022aff03438af7c1 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Mon, 17 Feb 2020 14:45:04 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=88=97=E6=AC=A1?= =?UTF-8?q?=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 8464565a..dd54c1db 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -167,10 +167,10 @@ namespace v2rayN.Forms if (statistics != null && statistics.Enable) { - lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70, HorizontalAlignment.Left); - lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70, HorizontalAlignment.Left); - lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70, HorizontalAlignment.Left); lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70, HorizontalAlignment.Left); + lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70, HorizontalAlignment.Left); } } From e09210e6c39315e1ababf2e2b0bd376ec237fc7a Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Tue, 18 Feb 2020 18:02:01 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E5=89=AA=E8=B4=B4=E6=9D=BF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E9=87=8F=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 24 ++++++++++++++---------- v2rayN/v2rayN/Handler/ConfigHandler.cs | 8 ++------ v2rayN/v2rayN/Resx/ResUI.Designer.cs | 2 +- v2rayN/v2rayN/Resx/ResUI.resx | 2 +- v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 2 +- v2rayN/v2rayN/Tool/UI.cs | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index dd54c1db..0f0f6ef8 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -809,9 +809,10 @@ namespace v2rayN.Forms private void menuAddServers_Click(object sender, EventArgs e) { string clipboardData = Utils.GetClipboardData(); - if (AddBatchServers(clipboardData) == 0) + int result = AddBatchServers(clipboardData); + if (result > 0) { - UI.Show(UIRes.I18N("SuccessfullyImportedServerViaClipboard")); + UI.Show(string.Format(UIRes.I18N("SuccessfullyImportedServerViaClipboard"), result)); } } @@ -823,16 +824,19 @@ namespace v2rayN.Forms private int AddBatchServers(string clipboardData, string subid = "") { - if (ConfigHandler.AddBatchServers(ref config, clipboardData, subid) != 0) + int counter; + int _Add() + { + return ConfigHandler.AddBatchServers(ref config, clipboardData, subid); + } + counter = _Add(); + if (counter < 1) { clipboardData = Utils.Base64Decode(clipboardData); - if (ConfigHandler.AddBatchServers(ref config, clipboardData, subid) != 0) - { - return -1; - } + counter = _Add(); } RefreshServers(); - return 0; + return counter; } #endregion @@ -1356,7 +1360,7 @@ namespace v2rayN.Forms } else { - if (AddBatchServers(result) == 0) + if (AddBatchServers(result) > 0) { UI.Show(UIRes.I18N("SuccessfullyImportedServerViaScan")); } @@ -1416,7 +1420,7 @@ namespace v2rayN.Forms ConfigHandler.RemoveServerViaSubid(ref config, id); AppendText(false, $"{hashCode}{UIRes.I18N("MsgClearSubscription")}"); RefreshServers(); - if (AddBatchServers(result, id) == 0) + if (AddBatchServers(result, id) > 0) { } else diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index 3db74a47..b8fd7971 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -724,7 +724,7 @@ namespace v2rayN.Handler /// /// /// - /// + /// 成功导入的数量 public static int AddBatchServers(ref Config config, string clipboardData, string subid = "") { if (Utils.IsNullOrEmpty(clipboardData)) @@ -779,11 +779,7 @@ namespace v2rayN.Handler } } } - if (countServers > 0) - { - return 0; - } - return -1; + return countServers; } /// diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index 0e5092df..e8aa87e2 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -728,7 +728,7 @@ namespace v2rayN.Resx { } /// - /// 查找类似 Imported bulk URL from clipboard successfully 的本地化字符串。 + /// 查找类似 {0} servers have been imported from clipboard. 的本地化字符串。 /// internal static string SuccessfullyImportedServerViaClipboard { get { diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index b62bbc98..37d728d2 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -175,7 +175,7 @@ Successfully imported custom configuration server - Imported bulk URL from clipboard successfully + {0} servers have been imported from clipboard. Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index c7378691..9123de73 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -175,7 +175,7 @@ 成功导入自定义配置服务器 - 从剪贴板导入批量URL成功 + 成功从剪贴板导入 {0} 个服务器 注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用 diff --git a/v2rayN/v2rayN/Tool/UI.cs b/v2rayN/v2rayN/Tool/UI.cs index 8225a291..267c8366 100644 --- a/v2rayN/v2rayN/Tool/UI.cs +++ b/v2rayN/v2rayN/Tool/UI.cs @@ -7,7 +7,7 @@ namespace v2rayN { public static void Show(string msg) { - MessageBox.Show(msg); + MessageBox.Show(msg, "v2rayN", MessageBoxButtons.OK, MessageBoxIcon.Information); } public static DialogResult ShowYesNo(string msg) From 6206c81546a5ec81da0aed8d7be9aaf2b7ed7f65 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Tue, 18 Feb 2020 18:19:07 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=8E=BB?= =?UTF-8?q?=E9=87=8D=E7=BB=93=E6=9E=9C=E5=9B=9E=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 3 +++ v2rayN/v2rayN/Resx/ResUI.Designer.cs | 9 +++++++++ v2rayN/v2rayN/Resx/ResUI.resx | 3 +++ v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 3 +++ 4 files changed, 18 insertions(+) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 0f0f6ef8..042159c6 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -546,6 +546,8 @@ namespace v2rayN.Forms { List servers = null; Utils.DedupServerList(config.vmess, out servers); + int oldCount = config.vmess.Count; + int newCount = servers.Count; if (servers != null) { config.vmess = servers; @@ -553,6 +555,7 @@ namespace v2rayN.Forms //刷新 RefreshServers(); LoadV2ray(); + UI.Show(string.Format(UIRes.I18N("RemoveDuplicateServerResult"), oldCount, newCount)); } private void menuCopyServer_Click(object sender, EventArgs e) diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index e8aa87e2..8bb07589 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -645,6 +645,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Servers deduplication completed. Old: {0}, New: {1}. 的本地化字符串。 + /// + internal static string RemoveDuplicateServerResult { + get { + return ResourceManager.GetString("RemoveDuplicateServerResult", resourceCulture); + } + } + /// /// 查找类似 Are you sure to remove the server? 的本地化字符串。 /// diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index 37d728d2..058dbeeb 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -346,4 +346,7 @@ PAC failed to start. Run it with Admin right. + + Servers deduplication completed. Old: {0}, New: {1}. + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index 9123de73..62fdfccf 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -346,4 +346,7 @@ PAC服务启动失败,请用管理员启动 + + 服务器去重完成。原数量: {0},现数量: {1} + \ No newline at end of file From 1b0e3b3575977ab7a1c6fcb310bd24ffdc9deaf5 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 00:11:51 +0800 Subject: [PATCH 05/19] =?UTF-8?q?tcping=E5=A2=9E=E5=8A=A05s=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=9C=BA=E5=88=B6;=20ping=E9=97=B4=E9=9A=94=E9=99=8D?= =?UTF-8?q?=E4=BD=8E=E8=87=B310ms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 4 ++-- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 042159c6..c2f749a8 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -977,9 +977,9 @@ namespace v2rayN.Forms } private void ClearTestResult() { - for (int k = 0; k < lvSelecteds.Count; k++) + foreach (int s in lvSelecteds) { - SetTestResult(lvSelecteds[k], ""); + SetTestResult(s, ""); } } private void UpdateSpeedtestHandler(int index, string msg) diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index 295650b0..367b198b 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -103,9 +103,8 @@ namespace v2rayN.Handler { try { - for (int k = 0; k < _selecteds.Count; k++) + foreach (int index in _selecteds) { - int index = _selecteds[k]; if (_config.vmess[index].configType == (int)EConfigType.Custom) { continue; @@ -121,7 +120,7 @@ namespace v2rayN.Handler } } - Thread.Sleep(100); + Thread.Sleep(10); } catch (Exception ex) @@ -262,8 +261,14 @@ namespace v2rayN.Handler var timer = new Stopwatch(); timer.Start(); - Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - clientSocket.Connect(new IPEndPoint(ipAddress, port)); + var endPoint = new IPEndPoint(ipAddress, port); + Socket clientSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); + + IAsyncResult result = clientSocket.BeginConnect(endPoint, null, null); + if (!result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5))) + throw new TimeoutException("connect timeout (5s): " + url); + clientSocket.EndConnect(result); + timer.Stop(); responseTime = timer.Elapsed.Milliseconds; clientSocket.Close(); From 31fb479459d17d770d2772bb52ce1273751161fa Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 00:11:58 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E6=98=8E=E7=A1=AE=E2=80=9C=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=AA=97=E5=8F=A3=E2=80=9D=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 24220d6c..e88ad62c 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -469,6 +469,6 @@ - 关闭 + 关闭窗口 \ No newline at end of file From c4c05bfafd2b2b2e50ca86560eae02334ced8560 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 01:03:25 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=88=97=E5=90=8E?= =?UTF-8?q?=E7=BB=AD=E7=BA=A0=E6=AD=A3=EF=BC=8C=E5=8F=8A=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index c2f749a8..da552b57 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -198,13 +198,13 @@ namespace v2rayN.Forms ListViewItem lvItem = null; if (statistics != null && statistics.Enable) { - var index = statistics.Statistic.FindIndex(item_ => item_.itemId == item.getItemId()); - if (index != -1) + var sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId()); + if (sItem != null) { - totalUp = Utils.HumanFy(statistics.Statistic[index].totalUp); - totalDown = Utils.HumanFy(statistics.Statistic[index].totalDown); - todayUp = Utils.HumanFy(statistics.Statistic[index].todayUp); - todayDown = Utils.HumanFy(statistics.Statistic[index].todayDown); + totalUp = Utils.HumanFy(sItem.totalUp); + totalDown = Utils.HumanFy(sItem.totalDown); + todayUp = Utils.HumanFy(sItem.todayUp); + todayDown = Utils.HumanFy(sItem.todayDown); } lvItem = new ListViewItem(new string[] @@ -220,10 +220,10 @@ namespace v2rayN.Forms item.network, item.getSubRemarks(config), item.testResult, - totalUp, - totalDown, + todayDown, todayUp, - todayDown + totalDown, + totalUp }); } else @@ -241,10 +241,6 @@ namespace v2rayN.Forms item.network, item.getSubRemarks(config), item.testResult - //totalUp, - //totalDown, - //todayUp, - //todayDown, }); } From 627e4513f33f992ab218370a7859de514f562892 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 03:11:56 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E6=96=B0=E5=A2=9ECtrl+C=E5=92=8CCtrl+V?= =?UTF-8?q?=EF=BC=8C=E8=A7=84=E8=8C=83=E5=BF=AB=E6=8D=B7=E9=94=AE=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E9=97=B4=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.Designer.cs | 2 +- v2rayN/v2rayN/Forms/MainForm.cs | 10 +++++++-- v2rayN/v2rayN/Forms/MainForm.resx | 26 +++++++++++------------ v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 18 ++++++++-------- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index dd2ce2b2..0294c5dc 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -162,7 +162,7 @@ this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged); this.lvServers.Click += new System.EventHandler(this.lvServers_Click); this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick); - this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown); + this.lvServers.KeyUp += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyUp); // // cmsLv // diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index da552b57..539e685e 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -464,7 +464,7 @@ namespace v2rayN.Forms } } - private void lvServers_KeyDown(object sender, KeyEventArgs e) + private void lvServers_KeyUp(object sender, KeyEventArgs e) { if (e.Control) { @@ -473,6 +473,12 @@ namespace v2rayN.Forms case Keys.A: menuSelectAll_Click(null, null); break; + case Keys.C: + menuExport2ShareUrl_Click(null, null); + break; + case Keys.V: + menuAddServers_Click(null, null); + break; case Keys.P: menuPingServer_Click(null, null); break; @@ -1059,7 +1065,7 @@ namespace v2rayN.Forms } if (ConfigHandler.MoveServer(ref config, index, eMove) == 0) { - //刷新 + //TODO: reload is not good. RefreshServers(); LoadV2ray(); } diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 646fbc58..84c902c0 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -156,7 +156,7 @@ 447, 22 - Import bulk URL from clipboard + Import bulk URL from clipboard (Ctrl+V) 447, 22 @@ -231,25 +231,25 @@ 447, 22 - Test server ping (multiple choice)(Ctrl+P) + Test server ping (multiple choice) (Ctrl+P) 447, 22 - Test server tcping (multiple choice)(Ctrl+O) + Test server tcping (multiple choice) (Ctrl+O) 447, 22 - Test server real ping (multiple choice)(Ctrl+R) + Test server real ping (multiple choice) (Ctrl+R) 447, 22 - Test server speed (multiple choice)(Ctrl+T) + Test server speed (multiple choice) (Ctrl+T) 444, 6 @@ -270,7 +270,7 @@ 447, 22 - Batch export share URL to clipboard (multiple choice) + Batch export share URL to clipboard (multiple choice) (Ctrl+C) 447, 22 @@ -291,7 +291,7 @@ ImageAboveText - 448, 534 + 448, 556 cmsLv @@ -654,7 +654,7 @@ 微软雅黑, 8pt - 49, 17 + 52, 17 SOCKS5: @@ -666,13 +666,13 @@ 微软雅黑, 8pt - 198, 17 + 195, 17 微软雅黑, 8pt - 36, 17 + 39, 17 HTTP: @@ -684,13 +684,13 @@ 微软雅黑, 8pt - 198, 17 + 195, 17 微软雅黑, 8pt - 30, 17 + 33, 17 PAC: @@ -702,7 +702,7 @@ 微软雅黑, 8pt - 198, 17 + 195, 17 False diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index e88ad62c..87b5f57c 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -146,7 +146,7 @@ 278, 22 - 从剪贴板导入批量URL + 从剪贴板导入批量URL (Ctrl+V) 278, 22 @@ -161,7 +161,7 @@ 278, 22 - 移除所选服务器(多选) (Delete) + 移除所选服务器(多选) (Delete) 278, 22 @@ -179,7 +179,7 @@ 278, 22 - 设为活动服务器 (Enter) + 设为活动服务器 (Enter) 275, 6 @@ -212,7 +212,7 @@ 278, 22 - 全选 (Ctrl+A) + 全选 (Ctrl+A) 275, 6 @@ -221,25 +221,25 @@ 278, 22 - 测试服务器延迟Ping(多选)(Ctrl+P) + 测试服务器延迟Ping(多选) (Ctrl+P) 278, 22 - 测试服务器延迟Tcping(多选)(Ctrl+O) + 测试服务器延迟Tcping(多选) (Ctrl+O) 278, 22 - 测试服务器真连接延迟(多选)(Ctrl+R) + 测试服务器真连接延迟(多选) (Ctrl+R) 278, 22 - 测试服务器速度(多选)(Ctrl+T) + 测试服务器速度(多选) (Ctrl+T) 275, 6 @@ -260,7 +260,7 @@ 278, 22 - 批量导出分享URL至剪贴板(多选) + 批量导出分享URL至剪贴板(多选) (Ctrl+C) 278, 22 From c975896c5eabb0e1a490e1186eebf8d287c0d8bf Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 03:21:13 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0V2Ray?= =?UTF-8?q?=E5=AE=98=E7=BD=91=EF=BC=8C=E8=B0=83=E6=95=B4=E7=94=A8=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.Designer.cs | 18 +- v2rayN/v2rayN/Forms/MainForm.cs | 6 +- v2rayN/v2rayN/Forms/MainForm.resx | 283 ++++++++++------------ v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 5 +- v2rayN/v2rayN/Global.cs | 1 + 5 files changed, 157 insertions(+), 156 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index 0294c5dc..0e3b713d 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -107,6 +107,7 @@ this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem(); this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem(); this.tsbCheckUpdatePACList = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); this.tsbCheckClearPACList = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton(); @@ -117,7 +118,7 @@ this.tsbPromotion = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.tsbClose = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbV2rayWebsite = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -196,7 +197,6 @@ this.menuExport2ShareUrl, this.menuExport2SubContent}); this.cmsLv.Name = "cmsLv"; - this.cmsLv.OwnerItem = this.tsbServer; resources.ApplyResources(this.cmsLv, "cmsLv"); // // menuAddVmessServer @@ -684,6 +684,11 @@ resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList"); this.tsbCheckUpdatePACList.Click += new System.EventHandler(this.tsbCheckUpdatePACList_Click); // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13"); + // // tsbCheckClearPACList // this.tsbCheckClearPACList.Name = "tsbCheckClearPACList"; @@ -698,6 +703,7 @@ // tsbHelp // this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbV2rayWebsite, this.tsbAbout, this.toolStripSeparator12, this.tsbLanguageDef, @@ -748,10 +754,11 @@ this.tsbClose.Name = "tsbClose"; this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click); // - // toolStripSeparator13 + // tsbV2rayWebsite // - this.toolStripSeparator13.Name = "toolStripSeparator13"; - resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13"); + this.tsbV2rayWebsite.Name = "tsbV2rayWebsite"; + resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite"); + this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click); // // MainForm // @@ -877,6 +884,7 @@ private System.Windows.Forms.ToolStripMenuItem menuRealPingServer; private System.Windows.Forms.ToolStripMenuItem menuNotEnabledHttp; private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; + private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite; } } diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 539e685e..f591e475 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1467,8 +1467,12 @@ namespace v2rayN.Forms Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value); } + #endregion - + private void tsbV2rayWebsite_Click(object sender, EventArgs e) + { + System.Diagnostics.Process.Start(Global.v2rayWebsiteUrl); + } } } diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 84c902c0..de23d280 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -278,20 +278,8 @@ Batch export subscription content to clipboard (multiple choice) - - Magenta - - - 64, 53 - - - Servers - - - ImageAboveText - - 448, 556 + 448, 534 cmsLv @@ -413,6 +401,18 @@ 0 + + Magenta + + + 64, 53 + + + Servers + + + ImageAboveText + 17, 17 @@ -422,27 +422,6 @@ NoControl - - 265, 142 - - - cmsMain - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - - True - - - 264, 22 - - - Http proxy - 547, 22 @@ -473,6 +452,12 @@ Only open PAC, do not automatically configure PAC + + 264, 22 + + + Http proxy + 264, 22 @@ -506,6 +491,21 @@ Exit + + 265, 142 + + + cmsMain + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN + + + True + 498, 17 @@ -536,60 +536,6 @@ 2 - - 228, 18 - - - txtMsgBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - ssMain - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 1 - - - Bottom - - - 0, 417 - - - 952, 176 - - - 4 - - - Information - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - Fill @@ -626,30 +572,6 @@ 228, 18 - - 3, 151 - - - 946, 22 - - - 7 - - - statusStrip1 - - - ssMain - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 1 - 微软雅黑, 8pt @@ -725,6 +647,57 @@ 0, 17 + + 3, 151 + + + 946, 22 + + + 7 + + + statusStrip1 + + + ssMain + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + Bottom + + + 0, 417 + + + 952, 176 + + + 4 + + + Information + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + Top @@ -755,6 +728,18 @@ 6, 56 + + 197, 22 + + + Subscription settings + + + 197, 22 + + + Update subscription + Magenta @@ -856,6 +841,33 @@ 6, 56 + + 187, 22 + + + V2Ray Website + + + 187, 22 + + + v2rayN Project + + + 184, 6 + + + 187, 22 + + + Language-[English] + + + 187, 22 + + + 语言-[中文简体] + Magenta @@ -923,39 +935,6 @@ 5 - - 197, 22 - - - Subscription settings - - - 197, 22 - - - Update subscription - - - 187, 22 - - - About - - - 184, 6 - - - 187, 22 - - - Language-[English] - - - 187, 22 - - - 语言-[中文简体] - True @@ -1370,6 +1349,12 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripSeparator13 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + tsbCheckClearPACList @@ -1430,11 +1415,11 @@ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripSeparator13 + + tsbV2rayWebsite - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MainForm diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 87b5f57c..dd89ee23 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -446,8 +446,11 @@ 检查更新 + + V2Ray 官网 + - 关于 + v2rayN 项目 69, 53 diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index f64cef38..68bef5ae 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -6,6 +6,7 @@ namespace v2rayN #region 常量 + public const string v2rayWebsiteUrl = @"https://www.v2ray.com/"; public const string AboutUrl = @"https://github.com/2dust/v2rayN"; public const string UpdateUrl = AboutUrl + @"/releases"; From cc3560ab298f2807c9590b0ddffa059f1dcbddc8 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 03:52:25 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 1 + v2rayN/v2rayN/Program.cs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index f591e475..d9143940 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1465,6 +1465,7 @@ namespace v2rayN.Forms private void SetCurrentLanguage(string value) { Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value); + Application.Restart(); } diff --git a/v2rayN/v2rayN/Program.cs b/v2rayN/v2rayN/Program.cs index 61797937..e40749ef 100644 --- a/v2rayN/v2rayN/Program.cs +++ b/v2rayN/v2rayN/Program.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.Reflection; +using System.Threading; using System.Windows.Forms; using v2rayN.Forms; using v2rayN.Properties; @@ -31,6 +32,7 @@ namespace v2rayN //AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; + Thread.Sleep(300); // 尽量避免切换语言后提示“已经运行” Process instance = RunningInstance(); if (instance == null) { From 195828cee15bb1f021770de21d61e72ed9798d06 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 06:38:42 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E7=90=90=E7=A2=8E=E7=9A=84=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.resx | 42 +++++++++++++------------- v2rayN/v2rayN/Forms/QRCodeControl.resx | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index de23d280..819050b3 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -522,7 +522,7 @@ 2 - Server list + Servers list groupBox1 @@ -684,7 +684,7 @@ 4 - Information + Informations groupBox2 @@ -729,25 +729,25 @@ 6, 56 - 197, 22 + 180, 22 - Subscription settings + Settings - 197, 22 + 180, 22 - Update subscription + Updates Magenta - 93, 53 + 99, 53 - Subscription + Subscriptions ImageAboveText @@ -759,10 +759,10 @@ Magenta - 52, 53 + 58, 53 - Setting + Settings ImageAboveText @@ -788,10 +788,10 @@ Magenta - 97, 53 + 98, 53 - Restart service + Restart Service ImageAboveText @@ -800,31 +800,31 @@ 6, 56 - 338, 22 + 393, 22 - Check for updates to v2rayN + v2rayN (this software) - 338, 22 + 393, 22 - Check for updates to v2rayCore + Update v2rayCore - 338, 22 + 393, 22 - Check for updated PAC (requires Http proxy) + Check for updated PAC (need the HTTP proxy are ON) - 335, 6 + 390, 6 - 338, 22 + 393, 22 - Simplify PAC (please set Core route) + Simplify PAC (need to set Core route) Magenta diff --git a/v2rayN/v2rayN/Forms/QRCodeControl.resx b/v2rayN/v2rayN/Forms/QRCodeControl.resx index ef0c4f04..29882d55 100644 --- a/v2rayN/v2rayN/Forms/QRCodeControl.resx +++ b/v2rayN/v2rayN/Forms/QRCodeControl.resx @@ -132,7 +132,7 @@ 0 - Show shared content + Sharing panel System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 From cdf381ce41e1dac9cfd5fd9a836e837d1bf6455f Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Wed, 19 Feb 2020 23:44:06 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0=E9=A1=B6/?= =?UTF-8?q?=E5=BA=95=E7=9A=84=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0=E5=BF=AB?= =?UTF-8?q?=E6=8D=B7=E9=94=AE=20#456?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 35 ++++++++++++++--------- v2rayN/v2rayN/Forms/MainForm.resx | 34 +++++++++++----------- v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 8 +++--- 3 files changed, 43 insertions(+), 34 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index d9143940..d296856d 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -479,6 +479,12 @@ namespace v2rayN.Forms case Keys.V: menuAddServers_Click(null, null); break; + case Keys.U: + menuMoveTop_Click(null, null); + break; + case Keys.D: + menuMoveBottom_Click(null, null); + break; case Keys.P: menuPingServer_Click(null, null); break; @@ -493,20 +499,23 @@ namespace v2rayN.Forms break; } } - switch (e.KeyCode) + else { - case Keys.Enter: - menuSetDefaultServer_Click(null, null); - break; - case Keys.Delete: - menuRemoveServer_Click(null, null); - break; - case Keys.U: - menuMoveUp_Click(null, null); - break; - case Keys.D: - menuMoveDown_Click(null, null); - break; + switch (e.KeyCode) + { + case Keys.Enter: + menuSetDefaultServer_Click(null, null); + break; + case Keys.Delete: + menuRemoveServer_Click(null, null); + break; + case Keys.U: + menuMoveUp_Click(null, null); + break; + case Keys.D: + menuMoveDown_Click(null, null); + break; + } } } diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 819050b3..1e8db31c 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -198,7 +198,7 @@ 447, 22 - Up to top + Move to top (Ctrl+U) 447, 22 @@ -216,7 +216,7 @@ 447, 22 - Moves down to the bottom + Move to bottom (Ctrl+D) 447, 22 @@ -278,8 +278,20 @@ Batch export subscription content to clipboard (multiple choice) + + Magenta + + + 64, 53 + + + Servers + + + ImageAboveText + - 448, 534 + 448, 556 cmsLv @@ -401,18 +413,6 @@ 0 - - Magenta - - - 64, 53 - - - Servers - - - ImageAboveText - 17, 17 @@ -729,13 +729,13 @@ 6, 56 - 180, 22 + 125, 22 Settings - 180, 22 + 125, 22 Updates diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index dd89ee23..b8f6cebb 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -188,25 +188,25 @@ 278, 22 - 上移至顶 + 上移至顶 (Ctrl+U) 278, 22 - 上移 (U) + 上移 (U) 278, 22 - 下移 (D) + 下移 (D) 278, 22 - 下移至底 + 下移至底 (Ctrl+D) 278, 22 From ae296fced83602e987ee1fc9c6dd046643f58bd8 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Thu, 20 Feb 2020 00:03:58 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=92=8C=E7=90=90?= =?UTF-8?q?=E7=A2=8E=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 8 ++++---- v2rayN/v2rayN/Forms/MainForm.resx | 18 +++++++++--------- v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 2 +- v2rayN/v2rayN/Forms/SubSettingForm.cs | 3 +-- v2rayN/v2rayN/Handler/ConfigHandler.cs | 2 +- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 6 ++---- v2rayN/v2rayN/Handler/V2rayConfigHandler.cs | 7 +++---- 7 files changed, 21 insertions(+), 25 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index d296856d..ec357a87 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -652,9 +652,9 @@ namespace v2rayN.Forms GetLvSelectedIndex(); StringBuilder sb = new StringBuilder(); - for (int k = 0; k < lvSelecteds.Count; k++) + foreach (int v in lvSelecteds) { - string url = ConfigHandler.GetVmessQRCode(config, lvSelecteds[k]); + string url = ConfigHandler.GetVmessQRCode(config, v); if (Utils.IsNullOrEmpty(url)) { continue; @@ -674,9 +674,9 @@ namespace v2rayN.Forms GetLvSelectedIndex(); StringBuilder sb = new StringBuilder(); - for (int k = 0; k < lvSelecteds.Count; k++) + foreach (int v in lvSelecteds) { - string url = ConfigHandler.GetVmessQRCode(config, lvSelecteds[k]); + string url = ConfigHandler.GetVmessQRCode(config, v); if (Utils.IsNullOrEmpty(url)) { continue; diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 1e8db31c..18ad432d 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -171,19 +171,19 @@ 447, 22 - Remove selected server (multiple choice) (Delete) + Remove selected servers (Delete) 447, 22 - Remove duplicate server + Remove duplicate servers 447, 22 - Copy selected server + Clone selected server 447, 22 @@ -231,25 +231,25 @@ 447, 22 - Test server ping (multiple choice) (Ctrl+P) + Test servers ping (Ctrl+P) 447, 22 - Test server tcping (multiple choice) (Ctrl+O) + Test servers with tcping (Ctrl+O) 447, 22 - Test server real ping (multiple choice) (Ctrl+R) + Test servers real delay (Ctrl+R) 447, 22 - Test server speed (multiple choice) (Ctrl+T) + Test servers download speed (Ctrl+T) 444, 6 @@ -270,13 +270,13 @@ 447, 22 - Batch export share URL to clipboard (multiple choice) (Ctrl+C) + Export share URLs to clipboard (Ctrl+C) 447, 22 - Batch export subscription content to clipboard (multiple choice) + Export subscription (base64) share to clipboard Magenta diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index b8f6cebb..3ff52395 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -173,7 +173,7 @@ 278, 22 - 复制所选服务器 + 克隆所选服务器 278, 22 diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.cs b/v2rayN/v2rayN/Forms/SubSettingForm.cs index 14b5fbf6..25ac20e6 100644 --- a/v2rayN/v2rayN/Forms/SubSettingForm.cs +++ b/v2rayN/v2rayN/Forms/SubSettingForm.cs @@ -47,9 +47,8 @@ namespace v2rayN.Forms } } - for (int k = 0; k < config.subItem.Count; k++) + foreach (var item in config.subItem) { - var item = config.subItem[k]; SubSettingControl control = new SubSettingControl(); control.OnButtonClicked += Control_OnButtonClicked; control.subItem = item; diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index b8fd7971..28adbaa1 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -247,7 +247,7 @@ namespace v2rayN.Handler } /// - /// 复制服务器 + /// 克隆服务器 /// /// /// diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index 367b198b..dad221e8 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -72,9 +72,8 @@ namespace v2rayN.Handler { try { - for (int k = 0; k < _selecteds.Count; k++) + foreach (int index in _selecteds) { - int index = _selecteds[k]; if (_config.vmess[index].configType == (int)EConfigType.Custom) { continue; @@ -141,9 +140,8 @@ namespace v2rayN.Handler Thread.Sleep(5000); var httpPort = _config.GetLocalPort("speedtest"); - for (int k = 0; k < _selecteds.Count; k++) + foreach (int index in _selecteds) { - int index = _selecteds[k]; if (_config.vmess[index].configType == (int)EConfigType.Custom) { continue; diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs index 8c3a81f3..ec3ecbc0 100644 --- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs @@ -237,9 +237,9 @@ namespace v2rayN.Handler rulesIP.outboundTag = tag; rulesIP.ip = new List(); - for (int k = 0; k < userRule.Count; k++) + foreach (string u in userRule) { - string url = userRule[k].TrimEx(); + string url = u.TrimEx(); if (Utils.IsNullOrEmpty(url)) { continue; @@ -1424,9 +1424,8 @@ namespace v2rayN.Handler var httpPort = configCopy.GetLocalPort("speedtest"); - for (int k = 0; k < selecteds.Count; k++) + foreach (int index in selecteds) { - int index = selecteds[k]; if (configCopy.vmess[index].configType == (int)EConfigType.Custom) { continue; From dda920e33ecebec74abc78fee6061df838279932 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Thu, 20 Feb 2020 00:14:50 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=88=97=E6=AC=A1=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index ec357a87..7da8e2e5 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1024,10 +1024,10 @@ namespace v2rayN.Forms lvServers.SuspendLayout(); var indexStart = 9; - lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalUp); - lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown); - lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp); lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayDown); + lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp); + lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown); + lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalUp); lvServers.ResumeLayout(); }); From 7cf6ab4b514ca43134dd356e7a61d8db315289d6 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Thu, 20 Feb 2020 01:45:32 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E5=85=8B=E9=9A=86=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E5=A2=9E=E5=88=B0=E4=B8=8B=E4=B8=80=E9=A1=B9?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=E6=9C=80=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Handler/ConfigHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index 28adbaa1..bd9d16df 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -274,7 +274,7 @@ namespace v2rayN.Handler vmessItem.streamSecurity = config.vmess[index].streamSecurity; vmessItem.remarks = string.Format("{0}-clone", config.vmess[index].remarks); - config.vmess.Add(vmessItem); + config.vmess.Insert(index + 1, vmessItem); // 插入到下一项 ToJsonFile(config); From a62f375f5b64eaab27c53a5367db88aff6048069 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Fri, 21 Feb 2020 07:03:38 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E4=BF=AE=E6=AD=A3tcping=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 当IP地址存在反向解析结果(例 [xxx].members.linode.com),会连接反向域名的IP地址池,可能导致测速IPv4服务器时连接到IPv6地址并且失败。 --- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index dad221e8..69bc5a9c 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -253,8 +253,12 @@ namespace v2rayN.Handler try { - IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(url); - IPAddress ipAddress = ipHostInfo.AddressList[0]; + IPAddress ipAddress; + if (!System.Net.IPAddress.TryParse(url, out ipAddress)) + { + IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(url); + ipAddress = ipHostInfo.AddressList[0]; + } var timer = new Stopwatch(); timer.Start(); From 643a8094a639e84a9a65eda1b36318d10fc113d2 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Fri, 21 Feb 2020 11:28:51 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Handler/DownloadHandle.cs | 56 +++++++++++++++++++++---- v2rayN/v2rayN/Resx/ResUI.Designer.cs | 22 +++++++++- v2rayN/v2rayN/Resx/ResUI.resx | 10 ++++- v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 10 ++++- 4 files changed, 84 insertions(+), 14 deletions(-) diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index cfbc9ab8..29db08ca 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.IO; using System.Net; using System.Text; +using System.Text.RegularExpressions; using v2rayN.Base; using v2rayN.Mode; using v2rayN.Properties; @@ -75,7 +76,8 @@ namespace v2rayN.Handler { if (AbsoluteCompleted != null) { - AbsoluteCompleted(this, new ResultEventArgs(false, "Already the latest version")); + string message = string.Format(UIRes.I18N("IsLatestN"), curVersion); + AbsoluteCompleted(this, new ResultEventArgs(false, message)); } return; } @@ -108,7 +110,42 @@ namespace v2rayN.Handler WebRequest request = WebRequest.Create(coreLatestUrl); request.BeginGetResponse(new AsyncCallback(OnResponseV2rayCore), request); } + /// + /// 获取V2RayCore版本 + /// + public string getV2rayVersion() + { + try + { + string filePath = Utils.GetPath("V2ray.exe"); + if (!File.Exists(filePath)) + { + string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases"); + //ShowMsg(true, msg); + return ""; + } + Process p = new Process(); + p.StartInfo.FileName = filePath; + p.StartInfo.Arguments = "-version"; + p.StartInfo.WorkingDirectory = Utils.StartupPath(); + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.CreateNoWindow = true; + p.StartInfo.StandardOutputEncoding = Encoding.UTF8; + p.Start(); + p.WaitForExit(5000); + string echo = p.StandardOutput.ReadToEnd(); + string version = Regex.Match(echo, "V2Ray ([0-9.]+) \\(").Groups[1].Value; + return version; + } + + catch (Exception ex) + { + Utils.SaveLog(ex.Message, ex); + return ""; + } + } private void OnResponseV2rayCore(IAsyncResult ar) { try @@ -118,15 +155,18 @@ namespace v2rayN.Handler string redirectUrl = response.ResponseUri.AbsoluteUri; string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); - string osBit = string.Empty; - if (Environment.Is64BitProcess) + string curVersion = "v" + getV2rayVersion(); + if (curVersion == version) { - osBit = "64"; - } - else - { - osBit = "32"; + if (AbsoluteCompleted != null) + { + string message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); + AbsoluteCompleted(this, new ResultEventArgs(false, message)); + } + return; } + + string osBit = Environment.Is64BitProcess ? "64" : "32"; string url = string.Format(coreUrl, version, osBit); if (AbsoluteCompleted != null) { diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index 8bb07589..ae78335f 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -267,6 +267,24 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 {0} already up to date. 的本地化字符串。 + /// + internal static string IsLatestCore { + get { + return ResourceManager.GetString("IsLatestCore", resourceCulture); + } + } + + /// + /// 查找类似 {0} already up to date. 的本地化字符串。 + /// + internal static string IsLatestN { + get { + return ResourceManager.GetString("IsLatestN", resourceCulture); + } + } + /// /// 查找类似 Address 的本地化字符串。 /// @@ -574,7 +592,7 @@ namespace v2rayN.Resx { } /// - /// 查找类似 V2ray-core not found, download address: {0} 的本地化字符串。 + /// 查找类似 V2ray-core not found, please download: {0} 的本地化字符串。 /// internal static string NotFoundCore { get { @@ -709,7 +727,7 @@ namespace v2rayN.Resx { } /// - /// 查找类似 Start service ({0})...... 的本地化字符串。 + /// 查找类似 Start service ({0})... 的本地化字符串。 /// internal static string StartService { get { diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index 058dbeeb..0767dc8c 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -236,10 +236,16 @@ {0} - V2ray-core not found, download address: {0} + V2ray-core not found, please download: {0} + + + {0} already up to date. + + + {0} already up to date. - Start service ({0})...... + Start service ({0})... Address diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index 62fdfccf..5a3a465a 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -236,10 +236,16 @@ {0} - 未找到v2ray-core,下载地址:{0} + 找不到 v2ray-core,下载地址: {0} + + + {0} 已是最新版本。 + + + {0} 已是最新版本。 - 启动服务({0})...... + 启动服务({0})... 地址 From 6dddaa03ae91b81f6a7583c6cd6efc3b3fe20504 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Fri, 21 Feb 2020 13:06:43 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E6=95=B4=E5=90=88=E5=92=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 4 +- v2rayN/v2rayN/Handler/DownloadHandle.cs | 149 ++++++++++-------------- v2rayN/v2rayN/v2rayN.csproj | 2 + 3 files changed, 66 insertions(+), 89 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 7da8e2e5..2a2f214a 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1217,7 +1217,7 @@ namespace v2rayN.Forms } AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore")); - downloadHandle.AbsoluteV2rayN(config); + downloadHandle.CheckUpdateAsync("v2rayN"); } private void tsbCheckUpdateCore_Click(object sender, EventArgs e) @@ -1290,7 +1290,7 @@ namespace v2rayN.Forms } AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore")); - downloadHandle.AbsoluteV2rayCore(config); + downloadHandle.CheckUpdateAsync("Core"); } private void tsbCheckUpdatePACList_Click(object sender, EventArgs e) diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index 29db08ca..15aaf93b 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -4,8 +4,10 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Net; +using System.Net.Http; using System.Text; using System.Text.RegularExpressions; +using System.Threading.Tasks; using v2rayN.Base; using v2rayN.Mode; using v2rayN.Properties; @@ -48,68 +50,45 @@ namespace v2rayN.Handler private DateTime totalDatetime = new DateTime(); private int DownloadTimeout = -1; + #region Check for updates - - #region v2rayN - - private string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest"; + private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest"; private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip"; - - public void AbsoluteV2rayN(Config config) - { - Utils.SetSecurityProtocol(); - WebRequest request = WebRequest.Create(nLatestUrl); - request.BeginGetResponse(new AsyncCallback(OnResponseV2rayN), request); - } - - private void OnResponseV2rayN(IAsyncResult ar) - { - try - { - HttpWebRequest request = (HttpWebRequest)ar.AsyncState; - HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar); - string redirectUrl = response.ResponseUri.AbsoluteUri; - string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); - - var curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString(); - if (curVersion == version) - { - if (AbsoluteCompleted != null) - { - string message = string.Format(UIRes.I18N("IsLatestN"), curVersion); - AbsoluteCompleted(this, new ResultEventArgs(false, message)); - } - return; - } - - string url = string.Format(nUrl, version); - if (AbsoluteCompleted != null) - { - AbsoluteCompleted(this, new ResultEventArgs(true, url)); - } - } - catch (Exception ex) - { - Utils.SaveLog(ex.Message, ex); - - if (Error != null) - Error(this, new ErrorEventArgs(ex)); - } - } - - #endregion - - #region Core - - private string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest"; + private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest"; private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip"; - public void AbsoluteV2rayCore(Config config) + public async Task CheckUpdateAsync(string type) { Utils.SetSecurityProtocol(); - WebRequest request = WebRequest.Create(coreLatestUrl); - request.BeginGetResponse(new AsyncCallback(OnResponseV2rayCore), request); + WebRequestHandler webRequestHandler = new WebRequestHandler(); + webRequestHandler.AllowAutoRedirect = false; + HttpClient httpClient = new HttpClient(webRequestHandler); + + string url; + if (type == "Core") + { + url = coreLatestUrl; + } + else if (type == "v2rayN") + { + url = nLatestUrl; + } + else + { + throw new ArgumentException("Type"); + } + HttpResponseMessage response = await httpClient.GetAsync(url); + if (response.StatusCode.ToString() == "Redirect") + { + responseHandler(type, response.Headers.Location.ToString()); + } + else + { + Utils.SaveLog("StatusCode error: " + url); + return; + } } + /// /// 获取V2RayCore版本 /// @@ -146,39 +125,44 @@ namespace v2rayN.Handler return ""; } } - private void OnResponseV2rayCore(IAsyncResult ar) + private void responseHandler(string type, string redirectUrl) { try { - HttpWebRequest request = (HttpWebRequest)ar.AsyncState; - HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar); - string redirectUrl = response.ResponseUri.AbsoluteUri; string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); - string curVersion = "v" + getV2rayVersion(); + string curVersion; + string message; + string url; + if (type == "Core") { + curVersion = "v" + getV2rayVersion(); + message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); + string osBit = Environment.Is64BitProcess ? "64" : "32"; + url = string.Format(coreUrl, version, osBit); + } + else if (type == "v2rayN") { + curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString(); + message = string.Format(UIRes.I18N("IsLatestN"), curVersion); + url = string.Format(nUrl, version); + } + else + { + throw new ArgumentException("Type"); + } + if (curVersion == version) { - if (AbsoluteCompleted != null) - { - string message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); - AbsoluteCompleted(this, new ResultEventArgs(false, message)); - } + AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message)); return; } - string osBit = Environment.Is64BitProcess ? "64" : "32"; - string url = string.Format(coreUrl, version, osBit); - if (AbsoluteCompleted != null) - { - AbsoluteCompleted(this, new ResultEventArgs(true, url)); - } + AbsoluteCompleted?.Invoke(this, new ResultEventArgs(true, url)); } catch (Exception ex) { Utils.SaveLog(ex.Message, ex); - if (Error != null) - Error(this, new ErrorEventArgs(ex)); + Error?.Invoke(this, new ErrorEventArgs(ex)); } } @@ -191,10 +175,7 @@ namespace v2rayN.Handler try { Utils.SetSecurityProtocol(); - if (UpdateCompleted != null) - { - UpdateCompleted(this, new ResultEventArgs(false, "Downloading...")); - } + UpdateCompleted?.Invoke(this, new ResultEventArgs(false, "Downloading...")); progressPercentage = -1; totalBytesToReceive = 0; @@ -214,8 +195,7 @@ namespace v2rayN.Handler { Utils.SaveLog(ex.Message, ex); - if (Error != null) - Error(this, new ErrorEventArgs(ex)); + Error?.Invoke(this, new ErrorEventArgs(ex)); } } @@ -280,8 +260,7 @@ namespace v2rayN.Handler { Utils.SaveLog(ex.Message, ex); - if (Error != null) - Error(this, new ErrorEventArgs(ex)); + Error?.Invoke(this, new ErrorEventArgs(ex)); } } @@ -314,10 +293,7 @@ namespace v2rayN.Handler || Utils.IsNullOrEmpty(e.Error.ToString())) { string source = e.Result; - if (UpdateCompleted != null) - { - UpdateCompleted(this, new ResultEventArgs(true, source)); - } + UpdateCompleted?.Invoke(this, new ResultEventArgs(true, source)); } else { @@ -328,8 +304,7 @@ namespace v2rayN.Handler { Utils.SaveLog(ex.Message, ex); - if (Error != null) - Error(this, new ErrorEventArgs(ex)); + Error?.Invoke(this, new ErrorEventArgs(ex)); } } diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj index b9bb5a70..002d99e3 100644 --- a/v2rayN/v2rayN/v2rayN.csproj +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -116,6 +116,8 @@ + + False LIB\System.Runtime.CompilerServices.Unsafe.dll From 5a386c28020ac82dbb80bdd46f2cf5e0087d02d3 Mon Sep 17 00:00:00 2001 From: YFdyh000 Date: Fri, 21 Feb 2020 13:41:45 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/SubSettingControl.cs | 5 +---- v2rayN/v2rayN/Handler/V2rayHandler.cs | 11 ++++------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/v2rayN/v2rayN/Forms/SubSettingControl.cs b/v2rayN/v2rayN/Forms/SubSettingControl.cs index a3f09593..9836be5d 100644 --- a/v2rayN/v2rayN/Forms/SubSettingControl.cs +++ b/v2rayN/v2rayN/Forms/SubSettingControl.cs @@ -54,10 +54,7 @@ namespace v2rayN.Forms subItem.url = string.Empty; } - if (OnButtonClicked != null) - { - OnButtonClicked(sender, e); - } + OnButtonClicked?.Invoke(sender, e); } } } diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs index 65e73792..61d59bf6 100644 --- a/v2rayN/v2rayN/Handler/V2rayHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs @@ -202,14 +202,11 @@ namespace v2rayN.Handler /// /// 消息委托 /// - /// - /// - private void ShowMsg(bool notify, string msg) + /// 是否更新托盘图标的工具提示 + /// 输出到日志框 + private void ShowMsg(bool updateToTrayTooltip, string msg) { - if (ProcessEvent != null) - { - ProcessEvent(notify, msg); - } + ProcessEvent?.Invoke(updateToTrayTooltip, msg); } private void KillProcess(Process p)