Compare commits

..

30 Commits

Author SHA1 Message Date
2dust a5c39c0df0 Update AssemblyInfo.cs 2019-10-07 20:25:53 +08:00
2dust 3abc9bf6ba add webserverb 2019-10-07 18:47:00 +08:00
2dust 74852be816 e 2019-09-30 19:07:40 +08:00
2dust 4eb7f312b5 d 2019-09-30 17:32:34 +08:00
2dust 37af5f372a Create HttpWebServerB.cs 2019-09-30 17:32:15 +08:00
2dust ea1a471c42 Update AssemblyInfo.cs 2019-09-30 10:11:53 +08:00
2dust 6043d74bd0 Update MainForm.cs 2019-09-30 10:11:50 +08:00
2dust 1bd2944074 Update BaseForm.cs 2019-09-30 10:11:48 +08:00
2dust 02a3b25963 up 2019-09-24 08:10:27 +08:00
2dust cfb93a9ff2 Update PACServerHandle.cs 2019-09-23 22:02:20 +08:00
2dust 1943757f43 remove pacB 2019-09-23 17:23:39 +08:00
2dust f41fe6d7a3 Update HttpWebServerB.cs 2019-09-22 18:54:34 +08:00
2dust b53ce37b0a Update PACServerHandle.cs 2019-09-22 18:54:30 +08:00
2dust 9fd56605f9 Update StatisticsHandler.cs 2019-09-20 13:36:42 +08:00
2dust 19ad24c2d5 Update PACServerHandle.cs 2019-09-20 13:18:43 +08:00
2dust 1dc1d4dccd Update StatisticsHandler.cs 2019-09-20 13:18:38 +08:00
2dust a4174805f6 Merge pull request #80 from Undefined-User/dev
fix PAC
2019-09-20 07:53:29 +08:00
Undefined aa5f00e67b fix PAC 2019-09-19 15:41:30 +08:00
2dust b921dd3610 Update AssemblyInfo.cs 2019-09-18 13:37:25 +08:00
2dust 1526b2435a Update PACServerHandle.cs 2019-09-18 13:37:22 +08:00
2dust 486b0920af Update HttpWebServerB.cs 2019-09-18 13:37:20 +08:00
2dust 59a6e1862c Update HttpWebServer.cs 2019-09-18 13:37:16 +08:00
2dust 8ddddb66df Update HttpWebServerB.cs 2019-09-11 11:24:09 +08:00
2dust 55d540d556 Update HttpWebServer.cs 2019-09-11 11:24:07 +08:00
2dust a2cf1cef16 fix ui 2019-09-11 09:42:58 +08:00
2dust 01fdb08dd3 up tls 2019-09-11 09:23:33 +08:00
2dust a8f1a992c5 Update MainForm.cs 2019-09-02 11:08:19 +08:00
2dust 1bbc73f963 Update ListViewFlickerFree.cs 2019-09-02 11:08:15 +08:00
2dust 2676ce0357 up 2019-09-01 20:14:02 +08:00
2dust b22bb90d2d fix state 2019-08-30 16:24:43 +08:00
24 changed files with 607 additions and 447 deletions
+1
View File
@@ -35,5 +35,6 @@ namespace v2rayN.Forms
Utils.SaveLog($"Loading custom icon failed: {e.Message}"); Utils.SaveLog($"Loading custom icon failed: {e.Message}");
} }
} }
} }
} }
+43 -2
View File
@@ -1,4 +1,5 @@
using System.Windows.Forms; using System.Drawing;
using System.Windows.Forms;
namespace v2rayN.Forms namespace v2rayN.Forms
{ {
@@ -11,5 +12,45 @@ namespace v2rayN.Forms
, true); , true);
UpdateStyles(); UpdateStyles();
} }
public void AutoResizeColumns()
{
try
{
int count = this.Columns.Count;
int MaxWidth = 0;
Graphics graphics = this.CreateGraphics();
Font font = this.Font;
ListView.ListViewItemCollection items = this.Items;
string str;
int width;
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
for (int i = 0; i < count; i++)
{
str = this.Columns[i].Text;
MaxWidth = this.Columns[i].Width;
foreach (ListViewItem item in items)
{
str = item.SubItems[i].Text;
width = (int)graphics.MeasureString(str, font).Width;
if (width > MaxWidth)
{
MaxWidth = width;
}
}
if (i == 0)
{
this.Columns[i].Width = MaxWidth;
}
this.Columns[i].Width = MaxWidth;
}
}
catch { }
}
} }
} }
+6 -6
View File
@@ -506,8 +506,8 @@
// //
// toolSslSocksPortLab // toolSslSocksPortLab
// //
this.toolSslSocksPortLab.Name = "toolSslSocksPortLab";
resources.ApplyResources(this.toolSslSocksPortLab, "toolSslSocksPortLab"); resources.ApplyResources(this.toolSslSocksPortLab, "toolSslSocksPortLab");
this.toolSslSocksPortLab.Name = "toolSslSocksPortLab";
// //
// toolSslSocksPort // toolSslSocksPort
// //
@@ -516,14 +516,14 @@
// //
// toolSslBlank1 // toolSslBlank1
// //
this.toolSslBlank1.Name = "toolSslBlank1";
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1"); resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
this.toolSslBlank1.Name = "toolSslBlank1";
this.toolSslBlank1.Spring = true; this.toolSslBlank1.Spring = true;
// //
// toolSslHttpPortLab // toolSslHttpPortLab
// //
this.toolSslHttpPortLab.Name = "toolSslHttpPortLab";
resources.ApplyResources(this.toolSslHttpPortLab, "toolSslHttpPortLab"); resources.ApplyResources(this.toolSslHttpPortLab, "toolSslHttpPortLab");
this.toolSslHttpPortLab.Name = "toolSslHttpPortLab";
// //
// toolSslHttpPort // toolSslHttpPort
// //
@@ -532,14 +532,14 @@
// //
// toolSslBlank2 // toolSslBlank2
// //
this.toolSslBlank2.Name = "toolSslBlank2";
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2"); resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
this.toolSslBlank2.Name = "toolSslBlank2";
this.toolSslBlank2.Spring = true; this.toolSslBlank2.Spring = true;
// //
// toolSslPacPortLab // toolSslPacPortLab
// //
this.toolSslPacPortLab.Name = "toolSslPacPortLab";
resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab"); resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab");
this.toolSslPacPortLab.Name = "toolSslPacPortLab";
// //
// toolSslPacPort // toolSslPacPort
// //
@@ -548,8 +548,8 @@
// //
// toolSslBlank3 // toolSslBlank3
// //
this.toolSslBlank3.Name = "toolSslBlank3";
resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3"); resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3");
this.toolSslBlank3.Name = "toolSslBlank3";
this.toolSslBlank3.Spring = true; this.toolSslBlank3.Spring = true;
// //
// toolSslServerSpeed // toolSslServerSpeed
+72 -21
View File
@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Text; using System.Text;
@@ -59,25 +60,25 @@ namespace v2rayN.Forms
Utils.HumanFy(down) Utils.HumanFy(down)
); );
List<string[]> datas = new List<string[]>(); List<string[]> datas = new List<string[]>();
for (int i = 0; i < config.vmess.Count; i++) for (int i = 0; i < config.vmess.Count; i++)
{ {
string totalUp_ = string.Empty, string totalUp_ = string.Empty,
totalDown_ = string.Empty, totalDown_ = string.Empty,
todayUp_ = string.Empty, todayUp_ = string.Empty,
todayDown_ = string.Empty; todayDown_ = string.Empty;
var index = statistics.FindIndex(item_ => Utils.IsIdenticalServer(item_, new ServerStatistics(config.vmess[i].remarks, config.vmess[i].address, config.vmess[i].port, config.vmess[i].path, config.vmess[i].requestHost, 0, 0, 0, 0))); var index = statistics.FindIndex(item_ => Utils.IsIdenticalServer(item_, new ServerStatistics(config.vmess[i].remarks, config.vmess[i].address, config.vmess[i].port, config.vmess[i].path, config.vmess[i].requestHost, 0, 0, 0, 0)));
if (index != -1) if (index != -1)
{ {
totalUp_ = Utils.HumanFy(statistics[index].totalUp); totalUp_ = Utils.HumanFy(statistics[index].totalUp);
totalDown_ = Utils.HumanFy(statistics[index].totalDown); totalDown_ = Utils.HumanFy(statistics[index].totalDown);
todayUp_ = Utils.HumanFy(statistics[index].todayUp); todayUp_ = Utils.HumanFy(statistics[index].todayUp);
todayDown_ = Utils.HumanFy(statistics[index].todayDown); todayDown_ = Utils.HumanFy(statistics[index].todayDown);
} }
datas.Add(new string[] { totalUp_, totalDown_, todayUp_, todayDown_ }); datas.Add(new string[] { totalUp_, totalDown_, todayUp_, todayDown_ });
} }
lvServers.Invoke((MethodInvoker)delegate lvServers.Invoke((MethodInvoker)delegate
{ {
lvServers.SuspendLayout(); lvServers.SuspendLayout();
@@ -116,6 +117,7 @@ namespace v2rayN.Forms
{ {
InitServersView(); InitServersView();
RefreshServers(); RefreshServers();
lvServers.AutoResizeColumns();
LoadV2ray(); LoadV2ray();
@@ -212,7 +214,7 @@ namespace v2rayN.Forms
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90, HorizontalAlignment.Left); lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90, HorizontalAlignment.Left);
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70, HorizontalAlignment.Left); lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70, HorizontalAlignment.Left);
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50, HorizontalAlignment.Left); lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50, HorizontalAlignment.Left);
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 100, HorizontalAlignment.Left); lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Left);
if (statistics != null && statistics.Enable) if (statistics != null && statistics.Enable)
{ {
@@ -381,9 +383,18 @@ namespace v2rayN.Forms
toolSslHttpPort.Text = $"{localIP}:{Global.sysAgentPort}"; toolSslHttpPort.Text = $"{localIP}:{Global.sysAgentPort}";
if (config.listenerType == 2 || config.listenerType == 4) if (config.listenerType == 2 || config.listenerType == 4)
{ {
toolSslPacPort.Text = $"{HttpProxyHandle.GetPacUrl()}"; if (PACServerHandle.IsRunning)
{
toolSslPacPort.Text = $"{HttpProxyHandle.GetPacUrl()}";
}
else
{
toolSslPacPort.Text = UIRes.I18N("StartPacFailed");
}
} }
} }
notifyMain.Icon = GetNotifyIcon();
} }
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e) private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{ {
@@ -392,6 +403,47 @@ namespace v2rayN.Forms
Utils.SetClipboardData(e.ClickedItem.Text); Utils.SetClipboardData(e.ClickedItem.Text);
} }
} }
private Icon GetNotifyIcon()
{
try
{
var color = ColorTranslator.FromHtml("#3399CC");
var index = config.sysAgentEnabled ? config.listenerType : 0;
if (index > 0)
{
color = (new Color[] { Color.Red, Color.Orange, Color.DarkGreen, Color.Purple })[index - 1];
//color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
}
var width = 128;
var height = 128;
var bitmap = new Bitmap(width, height);
var graphics = Graphics.FromImage(bitmap);
var drawBrush = new SolidBrush(color);
graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
var zoom = 16;
graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2);
bitmap.Save(Utils.GetPath("temp_icon.ico"), System.Drawing.Imaging.ImageFormat.Icon);
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
drawBrush.Dispose();
graphics.Dispose();
bitmap.Dispose();
return createdIcon;
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
return this.Icon;
}
}
#endregion #endregion
#region v2ray #region v2ray
@@ -407,6 +459,7 @@ namespace v2rayN.Forms
} }
v2rayHandler.LoadV2ray(config); v2rayHandler.LoadV2ray(config);
Global.reloadV2ray = false; Global.reloadV2ray = false;
ConfigHandler.ToJsonFile(config);
ChangeSysAgent(config.sysAgentEnabled); ChangeSysAgent(config.sysAgentEnabled);
DisplayToolStatus(); DisplayToolStatus();
@@ -559,9 +612,6 @@ namespace v2rayN.Forms
//刷新 //刷新
RefreshServers(); RefreshServers();
LoadV2ray(); LoadV2ray();
// save to config file
ConfigHandler.ToJsonFile(config);
} }
private void menuCopyServer_Click(object sender, EventArgs e) private void menuCopyServer_Click(object sender, EventArgs e)
@@ -1011,7 +1061,7 @@ namespace v2rayN.Forms
{ {
//this.WindowState = FormWindowState.Minimized; //this.WindowState = FormWindowState.Minimized;
this.Hide(); this.Hide();
this.notifyMain.Icon = this.Icon; //this.notifyMain.Icon = this.Icon;
this.notifyMain.Visible = true; this.notifyMain.Visible = true;
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
@@ -1552,5 +1602,6 @@ namespace v2rayN.Forms
#endregion #endregion
} }
} }
+115 -91
View File
@@ -311,7 +311,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="lvServers.Size" type="System.Drawing.Size, System.Drawing"> <data name="lvServers.Size" type="System.Drawing.Size, System.Drawing">
<value>638, 331</value> <value>686, 331</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lvServers.TabIndex" type="System.Int32, mscorlib"> <data name="lvServers.TabIndex" type="System.Int32, mscorlib">
@@ -381,10 +381,10 @@
<value>100</value> <value>100</value>
</data> </data>
<data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing"> <data name="splitContainer1.Size" type="System.Drawing.Size, System.Drawing">
<value>898, 331</value> <value>946, 331</value>
</data> </data>
<data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib"> <data name="splitContainer1.SplitterDistance" type="System.Int32, mscorlib">
<value>638</value> <value>686</value>
</data> </data>
<data name="splitContainer1.TabIndex" type="System.Int32, mscorlib"> <data name="splitContainer1.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
@@ -410,33 +410,12 @@
<data name="cmsMain.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="cmsMain.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 164</value>
</data>
<data name="&gt;&gt;cmsMain.Name" xml:space="preserve">
<value>cmsMain</value>
</data>
<data name="&gt;&gt;cmsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="notifyMain.Text" xml:space="preserve">
<value>v2rayN</value>
</data>
<data name="notifyMain.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="menuSysAgentEnabled.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuSysAgentEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 22</value> <value>264, 22</value>
</data> </data>
<data name="menuSysAgentEnabled.Text" xml:space="preserve"> <data name="menuSysAgentEnabled.Text" xml:space="preserve">
<value>Enable Http proxy</value> <value>Enable Http proxy</value>
</data> </data>
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 22</value>
</data>
<data name="menuSysAgentMode.Text" xml:space="preserve">
<value>Http proxy mode</value>
</data>
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
<value>547, 22</value> <value>547, 22</value>
</data> </data>
@@ -461,6 +440,12 @@
<data name="menuKeepPAC.Text" xml:space="preserve"> <data name="menuKeepPAC.Text" xml:space="preserve">
<value>Only open PAC, do not automatically configure PAC</value> <value>Only open PAC, do not automatically configure PAC</value>
</data> </data>
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 22</value>
</data>
<data name="menuSysAgentMode.Text" xml:space="preserve">
<value>Http proxy mode</value>
</data>
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 22</value> <value>264, 22</value>
</data> </data>
@@ -494,6 +479,21 @@
<data name="menuExit.Text" xml:space="preserve"> <data name="menuExit.Text" xml:space="preserve">
<value>Exit</value> <value>Exit</value>
</data> </data>
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 164</value>
</data>
<data name="&gt;&gt;cmsMain.Name" xml:space="preserve">
<value>cmsMain</value>
</data>
<data name="&gt;&gt;cmsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="notifyMain.Text" xml:space="preserve">
<value>v2rayN</value>
</data>
<data name="notifyMain.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<metadata name="bgwPing.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="bgwPing.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>232, 17</value> <value>232, 17</value>
</metadata> </metadata>
@@ -507,7 +507,7 @@
<value>0, 66</value> <value>0, 66</value>
</data> </data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>904, 351</value> <value>952, 351</value>
</data> </data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib"> <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
@@ -543,7 +543,7 @@
<value>Vertical</value> <value>Vertical</value>
</data> </data>
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
<value>898, 134</value> <value>946, 134</value>
</data> </data>
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib"> <data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
@@ -563,8 +563,11 @@
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>603, 17</value> <value>603, 17</value>
</metadata> </metadata>
<data name="toolSslSocksPortLab.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data>
<data name="toolSslSocksPortLab.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslSocksPortLab.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value> <value>49, 17</value>
</data> </data>
<data name="toolSslSocksPortLab.Text" xml:space="preserve"> <data name="toolSslSocksPortLab.Text" xml:space="preserve">
<value>SOCKS5</value> <value>SOCKS5</value>
@@ -572,11 +575,17 @@
<data name="toolSslSocksPort.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslSocksPort.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value> <value>0, 17</value>
</data> </data>
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data>
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value> <value>198, 17</value>
</data>
<data name="toolSslHttpPortLab.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data> </data>
<data name="toolSslHttpPortLab.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslHttpPortLab.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 17</value> <value>36, 17</value>
</data> </data>
<data name="toolSslHttpPortLab.Text" xml:space="preserve"> <data name="toolSslHttpPortLab.Text" xml:space="preserve">
<value>HTTP</value> <value>HTTP</value>
@@ -584,11 +593,17 @@
<data name="toolSslHttpPort.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslHttpPort.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value> <value>0, 17</value>
</data> </data>
<data name="toolSslBlank2.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data>
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value> <value>198, 17</value>
</data>
<data name="toolSslPacPortLab.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data> </data>
<data name="toolSslPacPortLab.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslPacPortLab.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 17</value> <value>30, 17</value>
</data> </data>
<data name="toolSslPacPortLab.Text" xml:space="preserve"> <data name="toolSslPacPortLab.Text" xml:space="preserve">
<value>PAC</value> <value>PAC</value>
@@ -596,21 +611,30 @@
<data name="toolSslPacPort.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslPacPort.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value> <value>0, 17</value>
</data> </data>
<data name="toolSslBlank3.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data>
<data name="toolSslBlank3.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslBlank3.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value> <value>198, 17</value>
</data> </data>
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib"> <data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
</data> </data>
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value>
</data>
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms"> <data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value> <value>No</value>
</data> </data>
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 17</value> <value>220, 17</value>
</data> </data>
<data name="toolSslServerSpeed.Text" xml:space="preserve"> <data name="toolSslServerSpeed.Text" xml:space="preserve">
<value>SPEED Disabled</value> <value>SPEED Disabled</value>
</data> </data>
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value> <value>0, 17</value>
</data> </data>
@@ -618,7 +642,7 @@
<value>3, 151</value> <value>3, 151</value>
</data> </data>
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing"> <data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
<value>898, 22</value> <value>946, 22</value>
</data> </data>
<data name="ssMain.TabIndex" type="System.Int32, mscorlib"> <data name="ssMain.TabIndex" type="System.Int32, mscorlib">
<value>7</value> <value>7</value>
@@ -645,7 +669,7 @@
<value>0, 417</value> <value>0, 417</value>
</data> </data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing"> <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>904, 176</value> <value>952, 176</value>
</data> </data>
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib"> <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
@@ -672,7 +696,7 @@
<value>0, 56</value> <value>0, 56</value>
</data> </data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>904, 10</value> <value>952, 10</value>
</data> </data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib"> <data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>5</value> <value>5</value>
@@ -692,42 +716,9 @@
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>409, 17</value> <value>409, 17</value>
</metadata> </metadata>
<data name="tsMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>904, 56</value>
</data>
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;tsMain.Name" xml:space="preserve">
<value>tsMain</value>
</data>
<data name="&gt;&gt;tsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsMain.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tsMain.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value> <value>6, 56</value>
</data> </data>
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 53</value>
</data>
<data name="tsbSub.Text" xml:space="preserve">
<value>Subscription</value>
</data>
<data name="tsbSub.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value>
</data>
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 22</value> <value>197, 22</value>
</data> </data>
@@ -740,6 +731,18 @@
<data name="tsbSubUpdate.Text" xml:space="preserve"> <data name="tsbSubUpdate.Text" xml:space="preserve">
<value>Update subscription</value> <value>Update subscription</value>
</data> </data>
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 53</value>
</data>
<data name="tsbSub.Text" xml:space="preserve">
<value>Subscription</value>
</data>
<data name="tsbSub.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator8.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator8.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value> <value>6, 56</value>
</data> </data>
@@ -787,18 +790,6 @@
<data name="toolStripSeparator7.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator7.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value> <value>6, 56</value>
</data> </data>
<data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 53</value>
</data>
<data name="tsbCheckUpdate.Text" xml:space="preserve">
<value>Check for updates</value>
</data>
<data name="tsbCheckUpdate.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value>
</data>
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
<value>338, 22</value> <value>338, 22</value>
</data> </data>
@@ -823,21 +814,21 @@
<data name="tsbCheckClearPACList.Text" xml:space="preserve"> <data name="tsbCheckClearPACList.Text" xml:space="preserve">
<value>Simplify PAC (please set Core route)</value> <value>Simplify PAC (please set Core route)</value>
</data> </data>
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>6, 56</value>
</data>
<data name="tsbHelp.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value> <value>Magenta</value>
</data> </data>
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 53</value> <value>128, 53</value>
</data> </data>
<data name="tsbHelp.Text" xml:space="preserve"> <data name="tsbCheckUpdate.Text" xml:space="preserve">
<value>Help</value> <value>Check for updates</value>
</data> </data>
<data name="tsbHelp.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms"> <data name="tsbCheckUpdate.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value> <value>ImageAboveText</value>
</data> </data>
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
</data>
<data name="tsbAbout.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value> <value>187, 22</value>
</data> </data>
@@ -859,6 +850,18 @@
<data name="tsbLanguageZhHans.Text" xml:space="preserve"> <data name="tsbLanguageZhHans.Text" xml:space="preserve">
<value>语言-[中文简体]</value> <value>语言-[中文简体]</value>
</data> </data>
<data name="tsbHelp.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 53</value>
</data>
<data name="tsbHelp.Text" xml:space="preserve">
<value>Help</value>
</data>
<data name="tsbHelp.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value>
</data>
<data name="tsbPromotion.ImageTransparentColor" type="System.Drawing.Color, System.Drawing"> <data name="tsbPromotion.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value> <value>Magenta</value>
</data> </data>
@@ -893,6 +896,27 @@
<data name="tsbClose.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms"> <data name="tsbClose.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageAboveText</value> <value>ImageAboveText</value>
</data> </data>
<data name="tsMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 56</value>
</data>
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;tsMain.Name" xml:space="preserve">
<value>tsMain</value>
</data>
<data name="&gt;&gt;tsMain.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsMain.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tsMain.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@@ -903,7 +927,7 @@
<value>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>904, 593</value> <value>952, 593</value>
</data> </data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
+37 -46
View File
@@ -282,21 +282,12 @@
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
</value> </value>
</data> </data>
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 164</value>
</data>
<data name="menuSysAgentEnabled.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuSysAgentEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value> <value>195, 22</value>
</data> </data>
<data name="menuSysAgentEnabled.Text" xml:space="preserve"> <data name="menuSysAgentEnabled.Text" xml:space="preserve">
<value>启用Http代理</value> <value>启用Http代理</value>
</data> </data>
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
</data>
<data name="menuSysAgentMode.Text" xml:space="preserve">
<value>Http代理模式</value>
</data>
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
<value>340, 22</value> <value>340, 22</value>
</data> </data>
@@ -321,6 +312,12 @@
<data name="menuKeepPAC.Text" xml:space="preserve"> <data name="menuKeepPAC.Text" xml:space="preserve">
<value>仅开启PAC,不自动配置PAC</value> <value>仅开启PAC,不自动配置PAC</value>
</data> </data>
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
</data>
<data name="menuSysAgentMode.Text" xml:space="preserve">
<value>Http代理模式</value>
</data>
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing"> <data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value> <value>195, 22</value>
</data> </data>
@@ -354,27 +351,18 @@
<data name="menuExit.Text" xml:space="preserve"> <data name="menuExit.Text" xml:space="preserve">
<value>退出</value> <value>退出</value>
</data> </data>
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 164</value>
</data>
<data name="groupBox1.Text" xml:space="preserve"> <data name="groupBox1.Text" xml:space="preserve">
<value>服务器列表</value> <value>服务器列表</value>
</data> </data>
<data name="toolSslServerSpeed.Text" xml:space="preserve">
<value>网速显示未启用</value>
</data>
<data name="groupBox2.Text" xml:space="preserve"> <data name="groupBox2.Text" xml:space="preserve">
<value>信息</value> <value>信息</value>
</data> </data>
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value>
</data>
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value>
</data>
<data name="toolSslBlank3.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 17</value>
</data>
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 53</value>
</data>
<data name="tsbSub.Text" xml:space="preserve">
<value> 订阅 </value>
</data>
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 22</value> <value>124, 22</value>
</data> </data>
@@ -387,6 +375,12 @@
<data name="tsbSubUpdate.Text" xml:space="preserve"> <data name="tsbSubUpdate.Text" xml:space="preserve">
<value>更新订阅</value> <value>更新订阅</value>
</data> </data>
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 53</value>
</data>
<data name="tsbSub.Text" xml:space="preserve">
<value> 订阅 </value>
</data>
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 53</value> <value>76, 53</value>
</data> </data>
@@ -395,13 +389,13 @@
</data> </data>
<data name="tsbReload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbReload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
wwAADsMBx2+oZAAAATdJREFUWEftloENAiEMRW8ER3AEN9ANdARHcAPdwBF0A91AN9INtC+5JvUCJwWM YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
mvCTFw3QUiiU65qa/lUTYT6Ato9rJZyERwT6GFNdU+EihCYNwVhsqmgm3AR1fheOAitd9PCfNvp0HDbY QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
FolV2MmZZCzX9J0FG0TRTlwFdbahIVE7Qe1IR5bYVnXCyr2yO5F1MNUBec25YtjomcCXSxhr9DmrV2Gr jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
flyL4GSrYcm9tmnEZ7JsAC7DgWr5ydbXA8hOAcVjG8FTD6ocQgvXKrW8MqFWUfc1DAXgmRwVFaJQAHsh 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
VbYUU87diqWA934sl/TZ7wV2Lesx0gBwsO5/1Sl5PQhLQb+G+E+bfTm9KXsRAVgHrMK+jO9gbNEzzMSh NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY
6DlM9nANoa+kdCeLXLNLFtc9b2r6EXXdE4e4mdByNuG1AAAAAElFTkSuQmCC B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
@@ -410,12 +404,6 @@
<data name="tsbReload.Text" xml:space="preserve"> <data name="tsbReload.Text" xml:space="preserve">
<value> 重启服务 </value> <value> 重启服务 </value>
</data> </data>
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 53</value>
</data>
<data name="tsbCheckUpdate.Text" xml:space="preserve">
<value> 检查更新 </value>
</data>
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 22</value> <value>232, 22</value>
</data> </data>
@@ -440,15 +428,21 @@
<data name="tsbCheckClearPACList.Text" xml:space="preserve"> <data name="tsbCheckClearPACList.Text" xml:space="preserve">
<value>简化PAC (请设置Core路由)</value> <value>简化PAC (请设置Core路由)</value>
</data> </data>
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 53</value>
</data>
<data name="tsbCheckUpdate.Text" xml:space="preserve">
<value> 检查更新 </value>
</data>
<data name="tsbAbout.Text" xml:space="preserve">
<value>关于</value>
</data>
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 53</value> <value>69, 53</value>
</data> </data>
<data name="tsbHelp.Text" xml:space="preserve"> <data name="tsbHelp.Text" xml:space="preserve">
<value> 帮助 </value> <value> 帮助 </value>
</data> </data>
<data name="tsbAbout.Text" xml:space="preserve">
<value>关于</value>
</data>
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
<value>68, 53</value> <value>68, 53</value>
</data> </data>
@@ -457,15 +451,12 @@
</data> </data>
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tsbClose.Text" xml:space="preserve"> <data name="tsbClose.Text" xml:space="preserve">
<value> 关闭 </value> <value> 关闭 </value>
</data> </data>
<data name="toolSslServerSpeed.Text" xml:space="preserve">
<value>网速显示未启用</value>
</data>
</root> </root>
+5
View File
@@ -95,6 +95,11 @@ namespace v2rayN
/// 阻止 tag值 /// 阻止 tag值
/// </summary> /// </summary>
public const string blockTag = "block"; public const string blockTag = "block";
/// <summary>
///
/// </summary>
public const string StreamSecurity = "tls";
/// <summary> /// <summary>
/// vmess /// vmess
+51 -27
View File
@@ -23,21 +23,42 @@ namespace v2rayN.Handler
private bool enabled_; private bool enabled_;
public bool Enable public bool Enable
{ {
get { return enabled_; } get
set { enabled_ = value; } {
return enabled_;
}
set
{
enabled_ = value;
}
} }
public bool UpdateUI; public bool UpdateUI;
public ulong TotalUp { get; private set; } public ulong TotalUp
{
get; private set;
}
public ulong TotalDown { get; private set; } public ulong TotalDown
{
get; private set;
}
public List<Mode.ServerStatistics> Statistic { get; set; } public List<Mode.ServerStatistics> Statistic
{
get; set;
}
public ulong Up { get; private set; } public ulong Up
{
get; private set;
}
public ulong Down { get; private set; } public ulong Down
{
get; private set;
}
private string logPath_; private string logPath_;
@@ -49,7 +70,7 @@ namespace v2rayN.Handler
enabled_ = config.enableStatistics; enabled_ = config.enableStatistics;
UpdateUI = false; UpdateUI = false;
updateFunc_ = update; updateFunc_ = update;
logPath_ = Utils.GetPath($"{Global.StatisticLogDirectory}\\"); logPath_ = Utils.GetPath(Global.StatisticLogDirectory);
Statistic = new List<Mode.ServerStatistics>(); Statistic = new List<Mode.ServerStatistics>();
exitFlag_ = false; exitFlag_ = false;
@@ -213,7 +234,7 @@ namespace v2rayN.Handler
Utils.ToHumanReadable(TotalUp, out up_amount, out up_unit); Utils.ToHumanReadable(TotalUp, out up_amount, out up_unit);
Utils.ToHumanReadable(TotalDown, out down_amount, out down_unit); Utils.ToHumanReadable(TotalDown, out down_amount, out down_unit);
overallWriter.WriteLine($"LastUpdate {DateTime.Now.ToLongDateString()} {DateTime.Now.ToLongTimeString()}"); overallWriter.WriteLine($"LastUpdate {DateTime.Now.ToString("yyyy-MM-dd")} {DateTime.Now.ToLongTimeString()}");
overallWriter.WriteLine($"UP {string.Format("{0:f2}", up_amount)}{up_unit} {TotalUp}"); overallWriter.WriteLine($"UP {string.Format("{0:f2}", up_amount)}{up_unit} {TotalUp}");
overallWriter.WriteLine($"DOWN {string.Format("{0:f2}", down_amount)}{down_unit} {TotalDown}"); overallWriter.WriteLine($"DOWN {string.Format("{0:f2}", down_amount)}{down_unit} {TotalDown}");
foreach (var s in Statistic) foreach (var s in Statistic)
@@ -228,7 +249,7 @@ namespace v2rayN.Handler
} }
// 当天流量记录文件 // 当天流量记录文件
var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToLongDateString()}.txt"); var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
if (!File.Exists(dailyPath)) if (!File.Exists(dailyPath))
{ {
File.Create(dailyPath); File.Create(dailyPath);
@@ -237,7 +258,7 @@ namespace v2rayN.Handler
{ {
using (var dailyWriter = new StreamWriter(dailyPath)) using (var dailyWriter = new StreamWriter(dailyPath))
{ {
dailyWriter.WriteLine($"LastUpdate {DateTime.Now.ToLongDateString()} {DateTime.Now.ToLongTimeString()}"); dailyWriter.WriteLine($"LastUpdate {DateTime.Now.ToString("yyyy-MM-dd")} {DateTime.Now.ToLongTimeString()}");
foreach (var s in Statistic) foreach (var s in Statistic)
{ {
dailyWriter.WriteLine($"* {s.name} {s.address} {s.port} {s.path} {s.host} {s.todayUp} {s.todayDown}"); dailyWriter.WriteLine($"* {s.name} {s.address} {s.port} {s.path} {s.host} {s.todayUp} {s.todayDown}");
@@ -261,11 +282,12 @@ namespace v2rayN.Handler
/// UP [readable string] [amount] /// UP [readable string] [amount]
/// DOWN [readable string] [amount] /// DOWN [readable string] [amount]
/// 每行每个数据空格分隔 /// 每行每个数据空格分隔
///
var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall); try
if (File.Exists(overallPath))
{ {
try Utils.SaveLog(logPath_ + Global.StatisticLogOverall);
var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall);
if (File.Exists(overallPath))
{ {
using (var overallReader = new StreamReader(overallPath)) using (var overallReader = new StreamReader(overallPath))
{ {
@@ -314,20 +336,22 @@ namespace v2rayN.Handler
} }
} }
} }
} }
} }
catch (Exception ex) }
{ catch (Exception ex)
Utils.SaveLog(ex.Message, ex); {
} Utils.SaveLog(ex.Message, ex);
} }
// 当天流量记录文件 try
var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToLongDateString()}.txt");
if (File.Exists(dailyPath))
{ {
try Utils.SaveLog(logPath_ + $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
if (File.Exists(dailyPath))
{ {
using (var dailyReader = new StreamReader(dailyPath)) using (var dailyReader = new StreamReader(dailyPath))
{ {
while (!dailyReader.EndOfStream) while (!dailyReader.EndOfStream)
@@ -365,10 +389,10 @@ namespace v2rayN.Handler
} }
} }
} }
catch (Exception ex) }
{ catch (Exception ex)
Utils.SaveLog(ex.Message, ex); {
} Utils.SaveLog(ex.Message, ex);
} }
} }
+16 -1
View File
@@ -443,7 +443,7 @@ namespace v2rayN.Handler
var host = config.requestHost(); var host = config.requestHost();
//if tls //if tls
if (config.streamSecurity() == "tls") if (config.streamSecurity() == Global.StreamSecurity)
{ {
streamSettings.security = config.streamSecurity(); streamSettings.security = config.streamSecurity();
@@ -964,6 +964,13 @@ namespace v2rayN.Handler
} }
} }
//tls
if (outbound.streamSettings != null
&& outbound.streamSettings.security != null
&& outbound.streamSettings.security == Global.StreamSecurity)
{
vmessItem.streamSecurity = Global.StreamSecurity;
}
} }
catch catch
{ {
@@ -1101,6 +1108,14 @@ namespace v2rayN.Handler
vmessItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host); vmessItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host);
} }
} }
//tls
if (inbound.streamSettings != null
&& inbound.streamSettings.security != null
&& inbound.streamSettings.security == Global.StreamSecurity)
{
vmessItem.streamSecurity = Global.StreamSecurity;
}
} }
catch catch
{ {
@@ -12,7 +12,7 @@ namespace v2rayN.HttpProxyHandler
{ {
private static string GetTimestamp(DateTime value) private static string GetTimestamp(DateTime value)
{ {
return value.ToString("yyyyMMddHHmmssfff"); return value.ToString("MMddHHmmssfff");
} }
public static void ReSetPACProxy(Config config) public static void ReSetPACProxy(Config config)
@@ -8,9 +8,9 @@ namespace v2rayN.HttpProxyHandler
public class HttpWebServer public class HttpWebServer
{ {
private HttpListener _listener; private HttpListener _listener;
private Func<HttpListenerRequest, string> _responderMethod; private Func<string, string> _responderMethod;
public HttpWebServer(string[] prefixes, Func<HttpListenerRequest, string> method) public HttpWebServer(string[] prefixes, Func<string, string> method)
{ {
try try
{ {
@@ -39,10 +39,11 @@ namespace v2rayN.HttpProxyHandler
catch (Exception ex) catch (Exception ex)
{ {
Utils.SaveLog(ex.Message, ex); Utils.SaveLog(ex.Message, ex);
throw;
} }
} }
public HttpWebServer(Func<HttpListenerRequest, string> method, params string[] prefixes) public HttpWebServer(Func<string, string> method, params string[] prefixes)
: this(prefixes, method) { } : this(prefixes, method) { }
public void Run() public void Run()
@@ -59,7 +60,8 @@ namespace v2rayN.HttpProxyHandler
var ctx = c as HttpListenerContext; var ctx = c as HttpListenerContext;
try try
{ {
string rstr = _responderMethod(ctx.Request); string address = ctx.Request.LocalEndPoint.Address.ToString();
string rstr = _responderMethod(address);
byte[] buf = Encoding.UTF8.GetBytes(rstr); byte[] buf = Encoding.UTF8.GetBytes(rstr);
ctx.Response.StatusCode = 200; ctx.Response.StatusCode = 200;
ctx.Response.ContentType = "application/x-ns-proxy-autoconfig"; ctx.Response.ContentType = "application/x-ns-proxy-autoconfig";
@@ -1,4 +1,5 @@
using System; using System;
using System.Collections;
using System.IO; using System.IO;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
@@ -9,84 +10,20 @@ namespace v2rayN.HttpProxyHandler
{ {
public class HttpWebServerB public class HttpWebServerB
{ {
private int port;
private TcpListener listener; private TcpListener listener;
private int port;
private Func<string, string> _responderMethod;
private Func<TcpClient, string> _responderMethod; public HttpWebServerB(int port, Func<string, string> method)
public HttpWebServerB(int port, Func<TcpClient, string> method)
{ {
try this.port = port;
{ this._responderMethod = method;
this.port = port;
this._responderMethod = method;
listener = new TcpListener(new IPEndPoint(IPAddress.Any, port)); Thread thread = new Thread(StartListen);
listener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); thread.IsBackground = true;
listener.Start(); thread.Start();
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
Utils.SaveLog("WebserverB running...");
AsyncCallback callback = null;
listener.BeginAcceptTcpClient(callback = ((ares) =>
{
try
{
if (listener != null)
{
TcpClient tcpClient = listener.EndAcceptTcpClient(ares);
listener.BeginAcceptTcpClient(callback, null);
if (tcpClient != null && _responderMethod != null)
{
string pac = _responderMethod(tcpClient);
NetworkStream netStream = tcpClient.GetStream();
if (netStream.CanRead)
{
// Reads NetworkStream into a byte buffer.
byte[] bytes = new byte[tcpClient.ReceiveBufferSize];
// Read can return anything from 0 to numBytesToRead.
// This method blocks until at least one byte is read.
netStream.Read(bytes, 0, (int)tcpClient.ReceiveBufferSize);
// Returns the data received from the host to the console.
string returndata = Encoding.UTF8.GetString(bytes);
if (!Utils.IsNullOrEmpty(returndata)
&& returndata.IndexOf("/pac/") >= 0
&& netStream.CanWrite)
{
BinaryWriter writer = new BinaryWriter(netStream);
//writeSuccess(writer, pac);
Byte[] sendBytes = Encoding.UTF8.GetBytes(writeSuccess(pac));
writer.Write(sendBytes, 0, sendBytes.Length);
writer.Flush();
writer.Close();
}
}
netStream.Close();
tcpClient.Close();
}
}
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
//Console.WriteLine("Client connected completed");
}), null);
} }
public void Stop() public void Stop()
{ {
if (listener != null) if (listener != null)
@@ -95,38 +32,93 @@ namespace v2rayN.HttpProxyHandler
listener = null; listener = null;
} }
} }
//private static void writeSuccess(BinaryWriter writer, string pac) private void StartListen()
//{
// writer.Write("HTTP/1.0 200 OK");
// writer.Write(Environment.NewLine);
// writer.Write("Content-Type:application/x-ns-proxy-autoconfig; charset=UTF-8");
// writer.Write(Environment.NewLine);
// writer.Write("Content-Length: " + pac.Length);
// writer.Write(Environment.NewLine);
// writer.Write(Environment.NewLine);
// writer.Write(pac);
// writer.Flush();
//}
private static string writeSuccess(string pac)
{ {
StringBuilder sb = new StringBuilder(); listener = new TcpListener(IPAddress.Any, port);
string content_type = "application/x-ns-proxy-autoconfig"; listener.Start();
Utils.SaveLog("WebserverB running...");
sb.Append("HTTP/1.0 200 OK"); while (true)
sb.AppendLine(); {
sb.Append(String.Format("Content-Type:{0};charset=utf-8", content_type)); TcpClient socket = listener.AcceptTcpClient();
sb.AppendLine(); Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
//sb.Append("Connection: close"); thread.Start(socket);
//sb.AppendLine(); Thread.Sleep(1);
sb.Append(pac); }
sb.AppendLine(); }
private void ProcessThread(object obj)
{
try
{
var socket = obj as TcpClient;
return sb.ToString(); var inputStream = new BufferedStream(socket.GetStream());
var outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
if (inputStream.CanRead)
{
var data = ReadStream(inputStream);
if (data.Contains("/pac/"))
{
if (_responderMethod != null)
{
var address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
string pac = _responderMethod(address);
if (inputStream.CanWrite)
{
WriteStream(outputStream, pac);
}
}
}
}
outputStream.BaseStream.Flush();
inputStream = null;
outputStream = null;
socket.Close();
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
} }
private string ReadStream(Stream inputStream)
{
int nextchar;
string data = "";
while (true)
{
nextchar = inputStream.ReadByte();
if (nextchar == '\n')
{
break;
}
if (nextchar == '\r')
{
continue;
}
if (nextchar == -1)
{
Thread.Sleep(1);
continue;
};
data += Convert.ToChar(nextchar);
}
return data;
}
private void WriteStream(StreamWriter outputStream, string pac)
{
var content_type = "application/x-ns-proxy-autoconfig";
outputStream.WriteLine("HTTP/1.1 200 OK");
outputStream.WriteLine(String.Format("Content-Type:{0}", content_type));
outputStream.WriteLine("Connection: close");
outputStream.WriteLine("");
outputStream.WriteLine(pac);
outputStream.Flush();
}
} }
} }
@@ -75,7 +75,7 @@ namespace v2rayN.HttpProxyHandler
public static List<string> ParseResult(string response) public static List<string> ParseResult(string response)
{ {
byte[] bytes = Convert.FromBase64String(response); byte[] bytes = Convert.FromBase64String(response);
string content = Encoding.ASCII.GetString(bytes); string content = Encoding.UTF8.GetString(bytes);
List<string> valid_lines = new List<string>(); List<string> valid_lines = new List<string>();
using (var sr = new StringReader(content)) using (var sr = new StringReader(content))
{ {
@@ -1,8 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text; using System.Text;
using v2rayN.Mode; using v2rayN.Mode;
using v2rayN.Properties; using v2rayN.Properties;
@@ -19,19 +17,36 @@ namespace v2rayN.HttpProxyHandler
private static HttpWebServer server; private static HttpWebServer server;
private static HttpWebServerB serverB; private static HttpWebServerB serverB;
public static void Init(Config config) public static bool IsRunning
{ {
if (Utils.IsAdministrator()) get
{ {
InitServer("127.0.0.1"); return (pacPort > 0);
}
else
{
InitServerB("127.0.0.1");
} }
} }
public static void InitServer(string address) public static void Init(Config config)
{
//if (InitServer("*"))
//{
// pacPort = Global.pacPort;
//}
if (InitServer("127.0.0.1"))
{
pacPort = Global.pacPort;
}
else if (InitServerB("127.0.0.1"))
{
pacPort = Global.pacPort;
}
else
{
Utils.SaveLog("Webserver init failed ");
pacPort = 0;
}
}
private static bool InitServer(string address)
{ {
try try
{ {
@@ -45,13 +60,13 @@ namespace v2rayN.HttpProxyHandler
if (server == null) if (server == null)
{ {
string prefixes = string.Format("http://{0}:{1}/pac/", "+", Global.pacPort); string prefixes = string.Format("http://{0}:{1}/pac/", address, Global.pacPort);
Utils.SaveLog("Webserver prefixes " + prefixes); Utils.SaveLog("Webserver prefixes " + prefixes);
HttpWebServer ws = new HttpWebServer(SendResponse, prefixes); server = new HttpWebServer(SendResponse, prefixes);
ws.Run(); server.Run();
pacPort = Global.pacPort; //pacPort = Global.pacPort;
} }
} }
Utils.SaveLog("Webserver at " + address); Utils.SaveLog("Webserver at " + address);
@@ -59,11 +74,12 @@ namespace v2rayN.HttpProxyHandler
catch (Exception ex) catch (Exception ex)
{ {
Utils.SaveLog("Webserver InitServer " + ex.Message); Utils.SaveLog("Webserver InitServer " + ex.Message);
return false;
} }
return true;
} }
public static bool InitServerB(string address)
public static void InitServerB(string address)
{ {
try try
{ {
@@ -78,22 +94,23 @@ namespace v2rayN.HttpProxyHandler
if (serverB == null) if (serverB == null)
{ {
serverB = new HttpWebServerB(Global.pacPort, SendResponse); serverB = new HttpWebServerB(Global.pacPort, SendResponse);
pacPort = Global.pacPort; //pacPort = Global.pacPort;
} }
} }
Utils.SaveLog("Webserver at " + address); Utils.SaveLog("WebserverB at " + address);
} }
catch (Exception ex) catch (Exception ex)
{ {
Utils.SaveLog("Webserver InitServer " + ex.Message); Utils.SaveLog("WebserverB InitServer " + ex.Message);
return false;
} }
return true;
} }
public static string SendResponse(HttpListenerRequest request) public static string SendResponse(string address)
{ {
try try
{ {
string address = request.LocalEndPoint.Address.ToString();
var pac = GetPacList(address); var pac = GetPacList(address);
return pac; return pac;
} }
@@ -103,27 +120,6 @@ namespace v2rayN.HttpProxyHandler
return ex.Message; return ex.Message;
} }
} }
public static string SendResponse(TcpClient tcpClient)
{
try
{
var address = ((IPEndPoint)tcpClient.Client.LocalEndPoint).Address.ToString();
var pac = GetPacList(address);
Console.WriteLine("SendResponse addr " + address);
//Utils.SaveLog("SendResponse addr " + address);
return pac;
}
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return "";
}
public static void Stop() public static void Stop()
{ {
@@ -159,6 +155,7 @@ namespace v2rayN.HttpProxyHandler
//} //}
} }
private static string GetPacList(string address) private static string GetPacList(string address)
{ {
var port = Global.sysAgentPort; var port = Global.sysAgentPort;
@@ -182,8 +179,10 @@ namespace v2rayN.HttpProxyHandler
return pac; return pac;
} }
catch catch
{ } {
}
return "No pac content"; return "No pac content";
} }
} }
} }
Binary file not shown.
+1 -1
View File
@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”: // 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")] //[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("2.38")] [assembly: AssemblyFileVersion("2.43")]
+11 -1
View File
@@ -19,7 +19,7 @@ namespace v2rayN.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。 // (以 /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.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
@@ -120,6 +120,16 @@ namespace v2rayN.Properties {
} }
} }
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap notify {
get {
object obj = ResourceManager.GetObject("notify", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
+3
View File
@@ -136,6 +136,9 @@
<data name="minimize" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="minimize" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="notify" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\notify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="option" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="option" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

+98 -98
View File
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // 此代码由工具生成。
// Runtime Version:4.0.30319.42000 // 运行时版本:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // 对此文件的更改可能会导致不正确的行为,并且如果
// the code is regenerated. // 重新生成代码,这些更改将会丢失。
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -13,13 +13,13 @@ namespace v2rayN.Resx {
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // 此类是由 StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio. // 类通过类似于 ResGen Visual Studio 的工具自动生成的。
// To add or remove a member, edit your .ResX file then rerun ResGen // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// with the /str option, or rebuild your VS project. // (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class ResUI { internal class ResUI {
@@ -33,7 +33,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// 重写当前线程的 CurrentUICulture 属性
/// resource lookups using this strongly typed resource class. /// 重写当前线程的 CurrentUICulture 属性。
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Batch export subscription to clipboard successfully. /// 查找类似 Batch export subscription to clipboard successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string BatchExportSubscriptionSuccessfully { internal static string BatchExportSubscriptionSuccessfully {
get { get {
@@ -70,7 +70,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Batch export share URL to clipboard successfully. /// 查找类似 Batch export share URL to clipboard successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string BatchExportURLSuccessfully { internal static string BatchExportURLSuccessfully {
get { get {
@@ -79,7 +79,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please check the server settings first. /// 查找类似 Please check the server settings first 的本地化字符串。
/// </summary> /// </summary>
internal static string CheckServerSettings { internal static string CheckServerSettings {
get { get {
@@ -88,7 +88,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to configuration format is incorrect. /// 查找类似 configuration format is incorrect 的本地化字符串。
/// </summary> /// </summary>
internal static string ConfigurationFormatIncorrect { internal static string ConfigurationFormatIncorrect {
get { get {
@@ -97,7 +97,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to 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.. /// 查找类似 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. 的本地化字符串。
/// </summary> /// </summary>
internal static string CustomServerTips { internal static string CustomServerTips {
get { get {
@@ -106,7 +106,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to DOWN. /// 查找类似 DOWN 的本地化字符串。
/// </summary> /// </summary>
internal static string downloadSpeed { internal static string downloadSpeed {
get { get {
@@ -115,7 +115,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Whether to download? {0}. /// 查找类似 Whether to download? {0} 的本地化字符串。
/// </summary> /// </summary>
internal static string DownloadYesNo { internal static string DownloadYesNo {
get { get {
@@ -124,7 +124,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to convert configuration file. /// 查找类似 Failed to convert configuration file 的本地化字符串。
/// </summary> /// </summary>
internal static string FailedConversionConfiguration { internal static string FailedConversionConfiguration {
get { get {
@@ -133,7 +133,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to generate default configuration file. /// 查找类似 Failed to generate default configuration file 的本地化字符串。
/// </summary> /// </summary>
internal static string FailedGenDefaultConfiguration { internal static string FailedGenDefaultConfiguration {
get { get {
@@ -142,7 +142,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to get the default configuration. /// 查找类似 Failed to get the default configuration 的本地化字符串。
/// </summary> /// </summary>
internal static string FailedGetDefaultConfiguration { internal static string FailedGetDefaultConfiguration {
get { get {
@@ -151,7 +151,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to import custom configuration server. /// 查找类似 Failed to import custom configuration server 的本地化字符串。
/// </summary> /// </summary>
internal static string FailedImportedCustomServer { internal static string FailedImportedCustomServer {
get { get {
@@ -160,7 +160,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to read configuration file. /// 查找类似 Failed to read configuration file 的本地化字符串。
/// </summary> /// </summary>
internal static string FailedReadConfiguration { internal static string FailedReadConfiguration {
get { get {
@@ -169,7 +169,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the correct format extra ID. /// 查找类似 Please fill in the correct format extra ID 的本地化字符串。
/// </summary> /// </summary>
internal static string FillCorrectAlterId { internal static string FillCorrectAlterId {
get { get {
@@ -178,7 +178,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the correct format server port. /// 查找类似 Please fill in the correct format server port 的本地化字符串。
/// </summary> /// </summary>
internal static string FillCorrectServerPort { internal static string FillCorrectServerPort {
get { get {
@@ -187,7 +187,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the KCP parameters correctly. /// 查找类似 Please fill in the KCP parameters correctly 的本地化字符串。
/// </summary> /// </summary>
internal static string FillKcpParameters { internal static string FillKcpParameters {
get { get {
@@ -196,7 +196,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the local listening port. /// 查找类似 Please fill in the local listening port 的本地化字符串。
/// </summary> /// </summary>
internal static string FillLocalListeningPort { internal static string FillLocalListeningPort {
get { get {
@@ -205,7 +205,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the password. /// 查找类似 Please fill in the password 的本地化字符串。
/// </summary> /// </summary>
internal static string FillPassword { internal static string FillPassword {
get { get {
@@ -214,7 +214,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the server address. /// 查找类似 Please fill in the server address 的本地化字符串。
/// </summary> /// </summary>
internal static string FillServerAddress { internal static string FillServerAddress {
get { get {
@@ -223,7 +223,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please fill in the user ID. /// 查找类似 Please fill in the user ID 的本地化字符串。
/// </summary> /// </summary>
internal static string FillUUID { internal static string FillUUID {
get { get {
@@ -232,7 +232,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to is not the correct client configuration file, please check. /// 查找类似 is not the correct client configuration file, please check 的本地化字符串。
/// </summary> /// </summary>
internal static string IncorrectClientConfiguration { internal static string IncorrectClientConfiguration {
get { get {
@@ -241,7 +241,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to is not the correct configuration, please check. /// 查找类似 is not the correct configuration, please check 的本地化字符串。
/// </summary> /// </summary>
internal static string Incorrectconfiguration { internal static string Incorrectconfiguration {
get { get {
@@ -250,7 +250,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to is not the correct server configuration file, please check. /// 查找类似 is not the correct server configuration file, please check 的本地化字符串。
/// </summary> /// </summary>
internal static string IncorrectServerConfiguration { internal static string IncorrectServerConfiguration {
get { get {
@@ -259,7 +259,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Initial Configuration. /// 查找类似 Initial Configuration 的本地化字符串。
/// </summary> /// </summary>
internal static string InitialConfiguration { internal static string InitialConfiguration {
get { get {
@@ -268,7 +268,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Address. /// 查找类似 Address 的本地化字符串。
/// </summary> /// </summary>
internal static string LvAddress { internal static string LvAddress {
get { get {
@@ -277,7 +277,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Alias. /// 查找类似 Alias 的本地化字符串。
/// </summary> /// </summary>
internal static string LvAlias { internal static string LvAlias {
get { get {
@@ -286,7 +286,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Security. /// 查找类似 Security 的本地化字符串。
/// </summary> /// </summary>
internal static string LvEncryptionMethod { internal static string LvEncryptionMethod {
get { get {
@@ -295,7 +295,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Port. /// 查找类似 Port 的本地化字符串。
/// </summary> /// </summary>
internal static string LvPort { internal static string LvPort {
get { get {
@@ -304,7 +304,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Type. /// 查找类似 Type 的本地化字符串。
/// </summary> /// </summary>
internal static string LvServiceType { internal static string LvServiceType {
get { get {
@@ -313,7 +313,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Subs. /// 查找类似 Subs 的本地化字符串。
/// </summary> /// </summary>
internal static string LvSubscription { internal static string LvSubscription {
get { get {
@@ -322,7 +322,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Test Results. /// 查找类似 Test Results 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTestResults { internal static string LvTestResults {
get { get {
@@ -331,7 +331,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Today download traffic. /// 查找类似 Today download traffic 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTodayDownloadDataAmount { internal static string LvTodayDownloadDataAmount {
get { get {
@@ -340,7 +340,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Today upload traffic. /// 查找类似 Today upload traffic 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTodayUploadDataAmount { internal static string LvTodayUploadDataAmount {
get { get {
@@ -349,7 +349,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Total download traffic. /// 查找类似 Total download traffic 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTotalDownloadDataAmount { internal static string LvTotalDownloadDataAmount {
get { get {
@@ -358,7 +358,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Total upload traffic. /// 查找类似 Total upload traffic 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTotalUploadDataAmount { internal static string LvTotalUploadDataAmount {
get { get {
@@ -367,7 +367,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Transport. /// 查找类似 Transport 的本地化字符串。
/// </summary> /// </summary>
internal static string LvTransportProtocol { internal static string LvTransportProtocol {
get { get {
@@ -376,7 +376,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to MediumFresh. /// 查找类似 MediumFresh 的本地化字符串。
/// </summary> /// </summary>
internal static string MediumFresh { internal static string MediumFresh {
get { get {
@@ -385,7 +385,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Clear original subscription content. /// 查找类似 Clear original subscription content 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgClearSubscription { internal static string MsgClearSubscription {
get { get {
@@ -394,7 +394,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Download V2rayCore successfully. /// 查找类似 Download V2rayCore successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgDownloadV2rayCoreSuccessfully { internal static string MsgDownloadV2rayCoreSuccessfully {
get { get {
@@ -403,7 +403,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Failed to import subscription content. /// 查找类似 Failed to import subscription content 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgFailedImportSubscription { internal static string MsgFailedImportSubscription {
get { get {
@@ -412,7 +412,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Get the subscription content successfully. /// 查找类似 Get the subscription content successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgGetSubscriptionSuccessfully { internal static string MsgGetSubscriptionSuccessfully {
get { get {
@@ -421,7 +421,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to No valid subscriptions set. /// 查找类似 No valid subscriptions set 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgNoValidSubscription { internal static string MsgNoValidSubscription {
get { get {
@@ -430,7 +430,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to PAC update failed. /// 查找类似 PAC update failed 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgPACUpdateFailed { internal static string MsgPACUpdateFailed {
get { get {
@@ -439,7 +439,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to PAC update succeeded. /// 查找类似 PAC update succeeded 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgPACUpdateSuccessfully { internal static string MsgPACUpdateSuccessfully {
get { get {
@@ -448,7 +448,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Resolve V2rayCore successfully. /// 查找类似 Resolve V2rayCore successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgParsingV2rayCoreSuccessfully { internal static string MsgParsingV2rayCoreSuccessfully {
get { get {
@@ -457,7 +457,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Simplify PAC Success. /// 查找类似 Simplify PAC Success 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgSimplifyPAC { internal static string MsgSimplifyPAC {
get { get {
@@ -466,7 +466,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Start getting subscriptions. /// 查找类似 Start getting subscriptions 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgStartGettingSubscriptions { internal static string MsgStartGettingSubscriptions {
get { get {
@@ -475,7 +475,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Start updating PAC.... /// 查找类似 Start updating PAC... 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgStartUpdatingPAC { internal static string MsgStartUpdatingPAC {
get { get {
@@ -484,7 +484,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Start updating V2rayCore.... /// 查找类似 Start updating V2rayCore... 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgStartUpdatingV2rayCore { internal static string MsgStartUpdatingV2rayCore {
get { get {
@@ -493,7 +493,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Subscription content decoding failed (non-BASE64 code). /// 查找类似 Subscription content decoding failed (non-BASE64 code) 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgSubscriptionDecodingFailed { internal static string MsgSubscriptionDecodingFailed {
get { get {
@@ -502,7 +502,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to is unpacking.... /// 查找类似 is unpacking... 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgUnpacking { internal static string MsgUnpacking {
get { get {
@@ -511,7 +511,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Update subscription end. /// 查找类似 Update subscription end 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgUpdateSubscriptionEnd { internal static string MsgUpdateSubscriptionEnd {
get { get {
@@ -520,7 +520,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Update subscription starts. /// 查找类似 Update subscription starts 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgUpdateSubscriptionStart { internal static string MsgUpdateSubscriptionStart {
get { get {
@@ -529,7 +529,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Update V2rayCore successfully. /// 查找类似 Update V2rayCore successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgUpdateV2rayCoreSuccessfully { internal static string MsgUpdateV2rayCoreSuccessfully {
get { get {
@@ -538,7 +538,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Update V2rayCore successfully! Restarting service.... /// 查找类似 Update V2rayCore successfully! Restarting service... 的本地化字符串。
/// </summary> /// </summary>
internal static string MsgUpdateV2rayCoreSuccessfullyMore { internal static string MsgUpdateV2rayCoreSuccessfullyMore {
get { get {
@@ -547,7 +547,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to This feature relies on the Http global proxy, please set it correctly first.. /// 查找类似 This feature relies on the Http global proxy, please set it correctly first. 的本地化字符串。
/// </summary> /// </summary>
internal static string NeedHttpGlobalProxy { internal static string NeedHttpGlobalProxy {
get { get {
@@ -556,7 +556,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Non-vmess or ss protocol. /// 查找类似 Non-vmess or ss protocol 的本地化字符串。
/// </summary> /// </summary>
internal static string NonvmessOrssProtocol { internal static string NonvmessOrssProtocol {
get { get {
@@ -565,7 +565,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to non-Vmess service, this feature is invalid. /// 查找类似 non-Vmess service, this feature is invalid 的本地化字符串。
/// </summary> /// </summary>
internal static string NonVmessService { internal static string NonVmessService {
get { get {
@@ -574,7 +574,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to V2ray-core not found, download address: {0}. /// 查找类似 V2ray-core not found, download address: {0} 的本地化字符串。
/// </summary> /// </summary>
internal static string NotFoundCore { internal static string NotFoundCore {
get { get {
@@ -583,7 +583,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Scan completed, no valid QR code found. /// 查找类似 Scan completed, no valid QR code found 的本地化字符串。
/// </summary> /// </summary>
internal static string NoValidQRcodeFound { internal static string NoValidQRcodeFound {
get { get {
@@ -592,7 +592,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to operation failed, please check retry. /// 查找类似 operation failed, please check retry 的本地化字符串。
/// </summary> /// </summary>
internal static string OperationFailed { internal static string OperationFailed {
get { get {
@@ -601,7 +601,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please Fill Remarks. /// 查找类似 Please Fill Remarks 的本地化字符串。
/// </summary> /// </summary>
internal static string PleaseFillRemarks { internal static string PleaseFillRemarks {
get { get {
@@ -610,7 +610,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please select the encryption method. /// 查找类似 Please select the encryption method 的本地化字符串。
/// </summary> /// </summary>
internal static string PleaseSelectEncryption { internal static string PleaseSelectEncryption {
get { get {
@@ -619,7 +619,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please select an agreement. /// 查找类似 Please select an agreement 的本地化字符串。
/// </summary> /// </summary>
internal static string PleaseSelectProtocol { internal static string PleaseSelectProtocol {
get { get {
@@ -628,7 +628,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Please select the server first. /// 查找类似 Please select the server first 的本地化字符串。
/// </summary> /// </summary>
internal static string PleaseSelectServer { internal static string PleaseSelectServer {
get { get {
@@ -637,7 +637,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to QuickFresh. /// 查找类似 QuickFresh 的本地化字符串。
/// </summary> /// </summary>
internal static string QuickFresh { internal static string QuickFresh {
get { get {
@@ -646,7 +646,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Are you sure to remove the server?. /// 查找类似 Are you sure to remove the server? 的本地化字符串。
/// </summary> /// </summary>
internal static string RemoveServer { internal static string RemoveServer {
get { get {
@@ -655,7 +655,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to The client configuration file is saved at: {0}. /// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。
/// </summary> /// </summary>
internal static string SaveClientConfigurationIn { internal static string SaveClientConfigurationIn {
get { get {
@@ -664,7 +664,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to The server configuration file is saved at: {0}. /// 查找类似 The server configuration file is saved at: {0} 的本地化字符串。
/// </summary> /// </summary>
internal static string SaveServerConfigurationIn { internal static string SaveServerConfigurationIn {
get { get {
@@ -673,7 +673,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to SlowFresh. /// 查找类似 SlowFresh 的本地化字符串。
/// </summary> /// </summary>
internal static string SlowFresh { internal static string SlowFresh {
get { get {
@@ -682,7 +682,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node!. /// 查找类似 Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node! 的本地化字符串。
/// </summary> /// </summary>
internal static string SpeedServerTips { internal static string SpeedServerTips {
get { get {
@@ -691,7 +691,16 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Start service ({0})....... /// 查找类似 PAC failed to start. Pls with an administrator. 的本地化字符串。
/// </summary>
internal static string StartPacFailed {
get {
return ResourceManager.GetString("StartPacFailed", resourceCulture);
}
}
/// <summary>
/// 查找类似 Start service ({0})...... 的本地化字符串。
/// </summary> /// </summary>
internal static string StartService { internal static string StartService {
get { get {
@@ -700,8 +709,8 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Successful configuration /// 查找类似 Successful configuration
///{0}. ///{0} 的本地化字符串。
/// </summary> /// </summary>
internal static string SuccessfulConfiguration { internal static string SuccessfulConfiguration {
get { get {
@@ -710,7 +719,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Successfully imported custom configuration server. /// 查找类似 Successfully imported custom configuration server 的本地化字符串。
/// </summary> /// </summary>
internal static string SuccessfullyImportedCustomServer { internal static string SuccessfullyImportedCustomServer {
get { get {
@@ -719,7 +728,7 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Imported bulk URL from clipboard successfully. /// 查找类似 Imported bulk URL from clipboard successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string SuccessfullyImportedServerViaClipboard { internal static string SuccessfullyImportedServerViaClipboard {
get { get {
@@ -728,21 +737,12 @@ namespace v2rayN.Resx {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Scan import URL successfully. /// 查找类似 Scan import URL successfully 的本地化字符串。
/// </summary> /// </summary>
internal static string SuccessfullyImportedServerViaScan { internal static string SuccessfullyImportedServerViaScan {
get { get {
return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture); return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture);
} }
} }
/// <summary>
/// Looks up a localized string similar to UP.
/// </summary>
internal static string uploadSpeed {
get {
return ResourceManager.GetString("uploadSpeed", resourceCulture);
}
}
} }
} }
+2 -2
View File
@@ -343,7 +343,7 @@
<data name="LvTotalUploadDataAmount" xml:space="preserve"> <data name="LvTotalUploadDataAmount" xml:space="preserve">
<value>Total upload traffic</value> <value>Total upload traffic</value>
</data> </data>
<data name="uploadSpeed" xml:space="preserve"> <data name="StartPacFailed" xml:space="preserve">
<value>UP</value> <value>PAC failed to start. Pls with an administrator.</value>
</data> </data>
</root> </root>
+2 -2
View File
@@ -343,7 +343,7 @@
<data name="LvTotalUploadDataAmount" xml:space="preserve"> <data name="LvTotalUploadDataAmount" xml:space="preserve">
<value>总上传</value> <value>总上传</value>
</data> </data>
<data name="uploadSpeed" xml:space="preserve"> <data name="StartPacFailed" xml:space="preserve">
<value>上传</value> <value>PAC服务启动失败,请用管理员启动</value>
</data> </data>
</root> </root>
+1 -1
View File
@@ -316,7 +316,7 @@ namespace v2rayN
double result; double result;
string unit; string unit;
ToHumanReadable(amount, out result, out unit); ToHumanReadable(amount, out result, out unit);
return $"{string.Format("{0:f2}", result)}{unit}"; return $"{string.Format("{0:f1}", result)}{unit}";
} }
public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result) public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result)
+2
View File
@@ -425,7 +425,9 @@
<Content Include="grpc_csharp_ext.x86.dll"> <Content Include="grpc_csharp_ext.x86.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<EmbeddedResource Include="LIB\netstandard.dll" />
<Content Include="Resources\help.png" /> <Content Include="Resources\help.png" />
<None Include="Resources\notify.png" />
<Content Include="Resources\privoxy_conf.txt" /> <Content Include="Resources\privoxy_conf.txt" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />