mirror of
https://github.com/2dust/v2rayN.git
synced 2025-07-03 13:32:10 +00:00
Revert "Merge pull request #695 from yfdyh000/pr8"
This reverts commit78402118ef
, reversing changes made to0c26662602
.
This commit is contained in:
parent
78402118ef
commit
3b27e7be36
35 changed files with 2219 additions and 3276 deletions
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 16.0.29926.136
|
VisualStudioVersion = 15.0.28010.2050
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayN", "v2rayN\v2rayN.csproj", "{0A9785E6-D256-4B73-9757-4EF59955FD1E}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayN", "v2rayN\v2rayN.csproj", "{0A9785E6-D256-4B73-9757-4EF59955FD1E}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -35,8 +35,7 @@ Global
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
RESX_ResXSortingComparison = CurrentCulture
|
|
||||||
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
|
||||||
RESX_SortFileContentOnSave = True
|
RESX_SortFileContentOnSave = True
|
||||||
|
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace v2rayN.Base
|
||||||
listener.Start();
|
listener.Start();
|
||||||
Utils.SaveLog("WebserverB running...");
|
Utils.SaveLog("WebserverB running...");
|
||||||
|
|
||||||
while (true && listener != null)
|
while (true)
|
||||||
{
|
{
|
||||||
if (!listener.Pending())
|
if (!listener.Pending())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
|
|
||||||
// ref: https://stackoverflow.com/questions/1214289/how-do-i-sort-integers-in-a-listview
|
|
||||||
class Sorter : System.Collections.IComparer
|
|
||||||
{
|
|
||||||
public int Column = 0;
|
|
||||||
public int Sorting = 0;
|
|
||||||
public int Compare(object x, object y) // IComparer Member
|
|
||||||
{
|
|
||||||
if (!(x is ListViewItem) || !(y is ListViewItem))
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
ListViewItem l1 = (ListViewItem)x;
|
|
||||||
ListViewItem l2 = (ListViewItem)y;
|
|
||||||
|
|
||||||
int doIntSort = Sorting;
|
|
||||||
if (doIntSort > 0 // Tag will be number
|
|
||||||
&& (ulong.TryParse(l1.SubItems[Column].Tag?.ToString(), out ulong fl1)
|
|
||||||
&& ulong.TryParse(l2.SubItems[Column].Tag?.ToString(), out ulong fl2)) // fallback to text
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if (doIntSort == 1)
|
|
||||||
return fl1.CompareTo(fl2);
|
|
||||||
else
|
|
||||||
return fl2.CompareTo(fl1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string str1 = l1.SubItems[Column].Text;
|
|
||||||
string str2 = l2.SubItems[Column].Text;
|
|
||||||
|
|
||||||
if (doIntSort == -1 || doIntSort == 1)
|
|
||||||
return str1.CompareTo(str2);
|
|
||||||
else
|
|
||||||
return str2.CompareTo(str1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,7 +5,10 @@ namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
class WebClientEx : WebClient
|
class WebClientEx : WebClient
|
||||||
{
|
{
|
||||||
public int Timeout { get; set; }
|
public int Timeout
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
public WebClientEx(int timeout = 3000)
|
public WebClientEx(int timeout = 3000)
|
||||||
{
|
{
|
||||||
Timeout = timeout;
|
Timeout = timeout;
|
||||||
|
|
100
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
100
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
|
@ -55,7 +55,7 @@
|
||||||
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuTestMe = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbTestMe = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
@ -94,8 +94,6 @@
|
||||||
this.toolSslPacPortLab = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslPacPortLab = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslPacPort = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslPacPort = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslBlank3 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslBlank3 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslRouting = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerLatency = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
@ -155,21 +153,20 @@
|
||||||
//
|
//
|
||||||
// lvServers
|
// lvServers
|
||||||
//
|
//
|
||||||
this.lvServers.AllowColumnReorder = true;
|
|
||||||
this.lvServers.ContextMenuStrip = this.cmsLv;
|
this.lvServers.ContextMenuStrip = this.cmsLv;
|
||||||
resources.ApplyResources(this.lvServers, "lvServers");
|
resources.ApplyResources(this.lvServers, "lvServers");
|
||||||
this.lvServers.FullRowSelect = true;
|
this.lvServers.FullRowSelect = true;
|
||||||
this.lvServers.GridLines = true;
|
this.lvServers.GridLines = true;
|
||||||
|
this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
this.lvServers.HideSelection = false;
|
this.lvServers.HideSelection = false;
|
||||||
this.lvServers.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
this.lvServers.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvServers.Items")))});
|
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvServers.Items")))});
|
||||||
|
this.lvServers.MultiSelect = false;
|
||||||
this.lvServers.Name = "lvServers";
|
this.lvServers.Name = "lvServers";
|
||||||
this.lvServers.UseCompatibleStateImageBehavior = false;
|
this.lvServers.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvServers.View = System.Windows.Forms.View.Details;
|
this.lvServers.View = System.Windows.Forms.View.Details;
|
||||||
this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick);
|
|
||||||
this.lvServers.ColumnReordered += new System.Windows.Forms.ColumnReorderedEventHandler(this.lvServers_ColumnReordered);
|
|
||||||
this.lvServers.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.lvServers_ColumnWidthChanged);
|
|
||||||
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
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.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
||||||
this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown);
|
this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown);
|
||||||
//
|
//
|
||||||
|
@ -199,7 +196,7 @@
|
||||||
this.menuTcpingServer,
|
this.menuTcpingServer,
|
||||||
this.menuRealPingServer,
|
this.menuRealPingServer,
|
||||||
this.menuSpeedServer,
|
this.menuSpeedServer,
|
||||||
this.menuTestMe,
|
this.tsbTestMe,
|
||||||
this.toolStripSeparator6,
|
this.toolStripSeparator6,
|
||||||
this.menuExport2ClientConfig,
|
this.menuExport2ClientConfig,
|
||||||
this.menuExport2ServerConfig,
|
this.menuExport2ServerConfig,
|
||||||
|
@ -338,11 +335,11 @@
|
||||||
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
||||||
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
||||||
//
|
//
|
||||||
// menuTestMe
|
// tsbTestMe
|
||||||
//
|
//
|
||||||
this.menuTestMe.Name = "menuTestMe";
|
this.tsbTestMe.Name = "tsbTestMe";
|
||||||
resources.ApplyResources(this.menuTestMe, "menuTestMe");
|
resources.ApplyResources(this.tsbTestMe, "tsbTestMe");
|
||||||
this.menuTestMe.Click += new System.EventHandler(this.menuTestMe_Click);
|
this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator6
|
// toolStripSeparator6
|
||||||
//
|
//
|
||||||
|
@ -536,7 +533,6 @@
|
||||||
//
|
//
|
||||||
// ssMain
|
// ssMain
|
||||||
//
|
//
|
||||||
this.ssMain.AllowItemReorder = true;
|
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.toolSslSocksPortLab,
|
this.toolSslSocksPortLab,
|
||||||
this.toolSslSocksPort,
|
this.toolSslSocksPort,
|
||||||
|
@ -547,124 +543,65 @@
|
||||||
this.toolSslPacPortLab,
|
this.toolSslPacPortLab,
|
||||||
this.toolSslPacPort,
|
this.toolSslPacPort,
|
||||||
this.toolSslBlank3,
|
this.toolSslBlank3,
|
||||||
this.toolSslRouting,
|
|
||||||
this.toolSslServerLatency,
|
|
||||||
this.toolSslServerSpeed,
|
this.toolSslServerSpeed,
|
||||||
this.toolSslBlank4});
|
this.toolSslBlank4});
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
resources.ApplyResources(this.ssMain, "ssMain");
|
||||||
this.ssMain.Name = "ssMain";
|
this.ssMain.Name = "ssMain";
|
||||||
this.ssMain.ShowItemToolTips = true;
|
|
||||||
this.ssMain.TabStop = true;
|
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
||||||
//
|
//
|
||||||
// toolSslSocksPortLab
|
// toolSslSocksPortLab
|
||||||
//
|
//
|
||||||
this.toolSslSocksPortLab.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslSocksPortLab.Name = "toolSslSocksPortLab";
|
|
||||||
this.toolSslSocksPortLab.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslSocksPortLab, "toolSslSocksPortLab");
|
resources.ApplyResources(this.toolSslSocksPortLab, "toolSslSocksPortLab");
|
||||||
|
this.toolSslSocksPortLab.Name = "toolSslSocksPortLab";
|
||||||
//
|
//
|
||||||
// toolSslSocksPort
|
// toolSslSocksPort
|
||||||
//
|
//
|
||||||
this.toolSslSocksPort.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslSocksPort.Name = "toolSslSocksPort";
|
this.toolSslSocksPort.Name = "toolSslSocksPort";
|
||||||
this.toolSslSocksPort.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
|
resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
|
||||||
//
|
//
|
||||||
// toolSslBlank1
|
// toolSslBlank1
|
||||||
//
|
//
|
||||||
this.toolSslBlank1.AutoToolTip = true;
|
|
||||||
this.toolSslBlank1.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
|
||||||
this.toolSslBlank1.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
|
||||||
this.toolSslBlank1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslBlank1.Name = "toolSslBlank1";
|
|
||||||
this.toolSslBlank1.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
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.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslHttpPortLab.Name = "toolSslHttpPortLab";
|
|
||||||
this.toolSslHttpPortLab.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslHttpPortLab, "toolSslHttpPortLab");
|
resources.ApplyResources(this.toolSslHttpPortLab, "toolSslHttpPortLab");
|
||||||
|
this.toolSslHttpPortLab.Name = "toolSslHttpPortLab";
|
||||||
//
|
//
|
||||||
// toolSslHttpPort
|
// toolSslHttpPort
|
||||||
//
|
//
|
||||||
this.toolSslHttpPort.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslHttpPort.Name = "toolSslHttpPort";
|
this.toolSslHttpPort.Name = "toolSslHttpPort";
|
||||||
this.toolSslHttpPort.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
|
resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
|
||||||
//
|
//
|
||||||
// toolSslBlank2
|
// toolSslBlank2
|
||||||
//
|
//
|
||||||
this.toolSslBlank2.AutoToolTip = true;
|
|
||||||
this.toolSslBlank2.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
|
||||||
this.toolSslBlank2.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
|
||||||
this.toolSslBlank2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
|
||||||
this.toolSslBlank2.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
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.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslPacPortLab.Name = "toolSslPacPortLab";
|
|
||||||
this.toolSslPacPortLab.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab");
|
resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab");
|
||||||
|
this.toolSslPacPortLab.Name = "toolSslPacPortLab";
|
||||||
//
|
//
|
||||||
// toolSslPacPort
|
// toolSslPacPort
|
||||||
//
|
//
|
||||||
this.toolSslPacPort.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslPacPort.Name = "toolSslPacPort";
|
this.toolSslPacPort.Name = "toolSslPacPort";
|
||||||
this.toolSslPacPort.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort");
|
resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort");
|
||||||
//
|
//
|
||||||
// toolSslBlank3
|
// toolSslBlank3
|
||||||
//
|
//
|
||||||
this.toolSslBlank3.AutoToolTip = true;
|
|
||||||
this.toolSslBlank3.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
|
||||||
this.toolSslBlank3.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
|
||||||
this.toolSslBlank3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslBlank3.Name = "toolSslBlank3";
|
|
||||||
this.toolSslBlank3.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3");
|
resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3");
|
||||||
|
this.toolSslBlank3.Name = "toolSslBlank3";
|
||||||
this.toolSslBlank3.Spring = true;
|
this.toolSslBlank3.Spring = true;
|
||||||
//
|
//
|
||||||
// toolSslRouting
|
|
||||||
//
|
|
||||||
this.toolSslRouting.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
|
||||||
this.toolSslRouting.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
|
||||||
this.toolSslRouting.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslRouting.IsLink = true;
|
|
||||||
this.toolSslRouting.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline;
|
|
||||||
this.toolSslRouting.LinkColor = System.Drawing.SystemColors.ControlText;
|
|
||||||
this.toolSslRouting.Margin = new System.Windows.Forms.Padding(0, 3, 5, 2);
|
|
||||||
this.toolSslRouting.Name = "toolSslRouting";
|
|
||||||
this.toolSslRouting.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
|
|
||||||
resources.ApplyResources(this.toolSslRouting, "toolSslRouting");
|
|
||||||
this.toolSslRouting.Click += new System.EventHandler(this.toolSslRouting_Click);
|
|
||||||
//
|
|
||||||
// toolSslServerLatency
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslServerLatency, "toolSslServerLatency");
|
|
||||||
this.toolSslServerLatency.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
|
||||||
this.toolSslServerLatency.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
|
||||||
this.toolSslServerLatency.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslServerLatency.IsLink = true;
|
|
||||||
this.toolSslServerLatency.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline;
|
|
||||||
this.toolSslServerLatency.LinkColor = System.Drawing.SystemColors.ControlText;
|
|
||||||
this.toolSslServerLatency.Margin = new System.Windows.Forms.Padding(0, 3, 5, 2);
|
|
||||||
this.toolSslServerLatency.Name = "toolSslServerLatency";
|
|
||||||
this.toolSslServerLatency.Click += new System.EventHandler(this.toolSslServerLatency_Click);
|
|
||||||
//
|
|
||||||
// toolSslServerSpeed
|
// toolSslServerSpeed
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
||||||
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
||||||
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
|
||||||
this.toolSslServerSpeed.Click += new System.EventHandler(this.toolSslServerSpeed_Click);
|
|
||||||
//
|
//
|
||||||
// toolSslBlank4
|
// toolSslBlank4
|
||||||
//
|
//
|
||||||
|
@ -882,7 +819,6 @@
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
||||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||||
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
||||||
this.ResizeEnd += new System.EventHandler(this.MainForm_ResizeEnd);
|
|
||||||
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
||||||
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
||||||
this.scMain.Panel1.ResumeLayout(false);
|
this.scMain.Panel1.ResumeLayout(false);
|
||||||
|
@ -996,11 +932,9 @@
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepPACNothing;
|
private System.Windows.Forms.ToolStripMenuItem menuKeepPACNothing;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuTestMe;
|
private System.Windows.Forms.ToolStripMenuItem tsbTestMe;
|
||||||
private System.Windows.Forms.ToolStripButton tsbReload;
|
private System.Windows.Forms.ToolStripButton tsbReload;
|
||||||
private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch;
|
private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerLatency;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslRouting;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,15 +11,13 @@ using v2rayN.Tool;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class MainForm : BaseForm
|
public partial class MainForm : BaseForm
|
||||||
{
|
{
|
||||||
private V2rayHandler v2rayHandler;
|
private V2rayHandler v2rayHandler;
|
||||||
private List<int> lvSelecteds = new List<int>(); // 使用前需用 GetServerListSelectedConfigIndex 更新
|
private List<int> lvSelecteds = new List<int>();
|
||||||
private StatisticsHandler statistics = null;
|
private StatisticsHandler statistics = null;
|
||||||
|
|
||||||
#region Window 事件
|
#region Window 事件
|
||||||
|
@ -35,7 +33,14 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
Application.ApplicationExit += (sender, args) =>
|
Application.ApplicationExit += (sender, args) =>
|
||||||
{
|
{
|
||||||
Closes();
|
v2rayHandler.V2rayStop();
|
||||||
|
|
||||||
|
HttpProxyHandle.CloseHttpAgent(config);
|
||||||
|
PACServerHandle.Stop();
|
||||||
|
|
||||||
|
ConfigHandler.SaveConfig(ref config);
|
||||||
|
statistics?.SaveToFile();
|
||||||
|
statistics?.Close();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +54,6 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
statistics = new StatisticsHandler(config, UpdateStatisticsHandler);
|
statistics = new StatisticsHandler(config, UpdateStatisticsHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
Microsoft.Win32.SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MainForm_VisibleChanged(object sender, EventArgs e)
|
private void MainForm_VisibleChanged(object sender, EventArgs e)
|
||||||
|
@ -82,6 +85,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
if (e.CloseReason == CloseReason.UserClosing)
|
if (e.CloseReason == CloseReason.UserClosing)
|
||||||
{
|
{
|
||||||
|
StorageUI();
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
HideForm();
|
HideForm();
|
||||||
return;
|
return;
|
||||||
|
@ -119,9 +123,7 @@ namespace v2rayN.Forms
|
||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 窗口大小和列宽等取/存
|
|
||||||
private void RestoreUI()
|
private void RestoreUI()
|
||||||
{
|
{
|
||||||
scMain.Panel2Collapsed = true;
|
scMain.Panel2Collapsed = true;
|
||||||
|
@ -132,21 +134,20 @@ namespace v2rayN.Forms
|
||||||
this.Height = config.uiItem.mainSize.Height;
|
this.Height = config.uiItem.mainSize.Height;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (ColumnHeader c in lvServers.Columns)
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
{
|
{
|
||||||
var width = ConfigHandler.GetformMainLvColWidth(ref config, c.Name, c.Width);
|
var width = ConfigHandler.GetformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
c.Width = width;
|
lvServers.Columns[k].Width = width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated.
|
|
||||||
private void StorageUI()
|
private void StorageUI()
|
||||||
{
|
{
|
||||||
config.uiItem.mainSize = new Size(this.Width, this.Height);
|
config.uiItem.mainSize = new Size(this.Width, this.Height);
|
||||||
|
|
||||||
foreach (ColumnHeader c in lvServers.Columns)
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
{
|
{
|
||||||
ConfigHandler.AddformMainLvColWidth(ref config, c.Name, c.Width);
|
ConfigHandler.AddformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,40 +170,32 @@ namespace v2rayN.Forms
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitServersView()
|
private void InitServersView()
|
||||||
{
|
{
|
||||||
lvServers.ListViewItemSorter = new Sorter();
|
|
||||||
|
|
||||||
lvServers.BeginUpdate();
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
lvServers.Columns.Add(EServerColName.def.ToString(), "", 30);
|
lvServers.GridLines = true;
|
||||||
lvServers.Columns.Add(EServerColName.type.ToString(), UIRes.I18N("LvServiceType"), 80);
|
lvServers.FullRowSelect = true;
|
||||||
lvServers.Columns.Add(EServerColName.remarks.ToString(), UIRes.I18N("LvAlias"), 100);
|
lvServers.View = View.Details;
|
||||||
lvServers.Columns.Add(EServerColName.address.ToString(), UIRes.I18N("LvAddress"), 120);
|
lvServers.Scrollable = true;
|
||||||
lvServers.Columns.Add(EServerColName.port.ToString(), UIRes.I18N("LvPort"), 50);
|
lvServers.MultiSelect = true;
|
||||||
lvServers.Columns.Add(EServerColName.security.ToString(), UIRes.I18N("LvEncryptionMethod"), 90);
|
lvServers.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
||||||
lvServers.Columns.Add(EServerColName.network.ToString(), UIRes.I18N("LvTransportProtocol"), 70);
|
|
||||||
lvServers.Columns.Add(EServerColName.subRemarks.ToString(), UIRes.I18N("LvSubscription"), 50);
|
lvServers.Columns.Add("", 30);
|
||||||
lvServers.Columns.Add(EServerColName.testResult.ToString(), UIRes.I18N("LvTestResults"), 70);
|
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50);
|
||||||
|
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Right);
|
||||||
|
|
||||||
lvServers.Columns[EServerColName.port.ToString()].Tag = Global.sortMode.Numeric.ToString();
|
|
||||||
if (statistics != null && statistics.Enable)
|
if (statistics != null && statistics.Enable)
|
||||||
{
|
{
|
||||||
lvServers.Columns.Add(EServerColName.todayDown.ToString(), UIRes.I18N("LvTodayDownloadDataAmount"), 70);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(EServerColName.todayUp.ToString(), UIRes.I18N("LvTodayUploadDataAmount"), 70);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(EServerColName.totalDown.ToString(), UIRes.I18N("LvTotalDownloadDataAmount"), 70);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(EServerColName.totalUp.ToString(), UIRes.I18N("LvTotalUploadDataAmount"), 70);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70);
|
||||||
|
|
||||||
lvServers.Columns[EServerColName.todayDown.ToString()].Tag = Global.sortMode.Numeric.ToString();
|
|
||||||
lvServers.Columns[EServerColName.todayUp.ToString()].Tag = Global.sortMode.Numeric.ToString();
|
|
||||||
lvServers.Columns[EServerColName.totalDown.ToString()].Tag = Global.sortMode.Numeric.ToString();
|
|
||||||
lvServers.Columns[EServerColName.totalUp.ToString()].Tag = Global.sortMode.Numeric.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (ColumnHeader c in lvServers.Columns)
|
|
||||||
{
|
|
||||||
if (config.uiItem.mainLvColLayout == null) break;
|
|
||||||
int i = config.uiItem.mainLvColLayout.IndexOf(c.Name);
|
|
||||||
if (i >= 0) c.DisplayIndex = i;
|
|
||||||
}
|
}
|
||||||
lvServers.EndUpdate();
|
lvServers.EndUpdate();
|
||||||
}
|
}
|
||||||
|
@ -212,9 +205,9 @@ namespace v2rayN.Forms
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void RefreshServersView()
|
private void RefreshServersView()
|
||||||
{
|
{
|
||||||
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
List<ListViewItem> lst = new List<ListViewItem>();
|
|
||||||
for (int k = 0; k < config.vmess.Count; k++)
|
for (int k = 0; k < config.vmess.Count; k++)
|
||||||
{
|
{
|
||||||
string def = string.Empty;
|
string def = string.Empty;
|
||||||
|
@ -229,23 +222,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
VmessItem item = config.vmess[k];
|
VmessItem item = config.vmess[k];
|
||||||
|
|
||||||
void _addSubItem(ListViewItem i, string name, string text, object tag = null)
|
void _addSubItem(ListViewItem i, string name, string text)
|
||||||
{
|
{
|
||||||
var n = new ListViewItem.ListViewSubItem() { Text = text };
|
i.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = name, Text = text });
|
||||||
n.Name = name; // new don't accept it.
|
|
||||||
n.Tag = tag; // cell's data store.
|
|
||||||
i.SubItems.Add(n);
|
|
||||||
}
|
}
|
||||||
ListViewItem lvItem = new ListViewItem(def);
|
|
||||||
lvItem.Tag = k; // the Tag of line is config's index.
|
|
||||||
_addSubItem(lvItem, EServerColName.type.ToString(), ((EConfigType)item.configType).ToString());
|
|
||||||
_addSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks);
|
|
||||||
_addSubItem(lvItem, EServerColName.address.ToString(), item.address);
|
|
||||||
_addSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString(), item.port);
|
|
||||||
_addSubItem(lvItem, EServerColName.security.ToString(), item.security);
|
|
||||||
_addSubItem(lvItem, EServerColName.network.ToString(), item.network);
|
|
||||||
_addSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config));
|
|
||||||
_addSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult);
|
|
||||||
bool stats = statistics != null && statistics.Enable;
|
bool stats = statistics != null && statistics.Enable;
|
||||||
if (stats)
|
if (stats)
|
||||||
{
|
{
|
||||||
|
@ -257,26 +237,38 @@ namespace v2rayN.Forms
|
||||||
todayUp = Utils.HumanFy(sItem.todayUp);
|
todayUp = Utils.HumanFy(sItem.todayUp);
|
||||||
todayDown = Utils.HumanFy(sItem.todayDown);
|
todayDown = Utils.HumanFy(sItem.todayDown);
|
||||||
}
|
}
|
||||||
_addSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown, sItem?.todayDown);
|
}
|
||||||
_addSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp, sItem?.todayUp);
|
ListViewItem lvItem = new ListViewItem(def);
|
||||||
_addSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown, sItem?.totalDown);
|
_addSubItem(lvItem, EServerColName.type.ToString(), ((EConfigType)item.configType).ToString());
|
||||||
_addSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp, sItem?.totalUp);
|
_addSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks);
|
||||||
|
_addSubItem(lvItem, EServerColName.address.ToString(), item.address);
|
||||||
|
_addSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString());
|
||||||
|
_addSubItem(lvItem, EServerColName.security.ToString(), item.security);
|
||||||
|
_addSubItem(lvItem, EServerColName.network.ToString(), item.network);
|
||||||
|
_addSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config));
|
||||||
|
_addSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult);
|
||||||
|
if (stats)
|
||||||
|
{
|
||||||
|
_addSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown);
|
||||||
|
_addSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp);
|
||||||
|
_addSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown);
|
||||||
|
_addSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.interlaceColoring && k % 2 == 1) // 隔行着色
|
if (k % 2 == 1) // 隔行着色
|
||||||
{
|
{
|
||||||
lvItem.BackColor = SystemColors.Control;
|
lvItem.BackColor = Color.WhiteSmoke;
|
||||||
}
|
}
|
||||||
if (config.index.Equals(k))
|
if (config.index.Equals(k))
|
||||||
{
|
{
|
||||||
//lvItem.Checked = true;
|
//lvItem.Checked = true;
|
||||||
lvItem.ForeColor = SystemColors.MenuHighlight;
|
lvItem.ForeColor = Color.DodgerBlue;
|
||||||
lvItem.Font = new Font(lvItem.Font, FontStyle.Bold);
|
lvItem.Font = new Font(lvItem.Font, FontStyle.Bold);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lvItem != null) lst.Add(lvItem);
|
if (lvItem != null) lvServers.Items.Add(lvItem);
|
||||||
}
|
}
|
||||||
lvServers.Items.AddRange(lst.ToArray());
|
lvServers.EndUpdate();
|
||||||
|
|
||||||
//if (lvServers.Items.Count > 0)
|
//if (lvServers.Items.Count > 0)
|
||||||
//{
|
//{
|
||||||
|
@ -331,24 +323,26 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void lvServers_SelectedIndexChanged(object sender, EventArgs e)
|
private void lvServers_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
RefreshQRCodePanel();
|
int index = -1;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (lvServers.SelectedIndices.Count > 0)
|
||||||
|
{
|
||||||
|
index = lvServers.SelectedIndices[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//qrCodeControl.showQRCode(index, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshQRCodePanel()
|
|
||||||
{
|
|
||||||
if (scMain.Panel2Collapsed) return; // saving cpu.
|
|
||||||
|
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
|
||||||
if (index < 0) return;
|
|
||||||
qrCodeControl.showQRCode(index, config);
|
|
||||||
}
|
|
||||||
private void RefreshTaryIcon()
|
|
||||||
{
|
|
||||||
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
|
||||||
}
|
|
||||||
private void DisplayToolStatus()
|
private void DisplayToolStatus()
|
||||||
{
|
{
|
||||||
ssMain.SuspendLayout();
|
|
||||||
toolSslSocksPort.Text =
|
toolSslSocksPort.Text =
|
||||||
toolSslHttpPort.Text =
|
toolSslHttpPort.Text =
|
||||||
toolSslPacPort.Text = "OFF";
|
toolSslPacPort.Text = "OFF";
|
||||||
|
@ -373,26 +367,7 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string routingStatus = "";
|
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||||
switch (config.routingMode)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
routingStatus = UIRes.I18N("RoutingModeGlobal");
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
routingStatus = UIRes.I18N("RoutingModeBypassLAN");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
routingStatus = UIRes.I18N("RoutingModeBypassCN");
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
routingStatus = UIRes.I18N("RoutingModeBypassLANCN");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
toolSslRouting.Text = routingStatus;
|
|
||||||
ssMain.ResumeLayout();
|
|
||||||
|
|
||||||
RefreshTaryIcon();
|
|
||||||
}
|
}
|
||||||
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -404,33 +379,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static Task autoLatencyRefreshTask;
|
|
||||||
private void autoLatencyRefresh()
|
|
||||||
{
|
|
||||||
if (config.listenerType != ListenerType.noHttpProxy)
|
|
||||||
{
|
|
||||||
if (autoLatencyRefreshTask == null || autoLatencyRefreshTask.IsCompleted)
|
|
||||||
{
|
|
||||||
autoLatencyRefreshTask = Task.Run(async delegate
|
|
||||||
{
|
|
||||||
if (!this.IsHandleCreated) return; // the GUI app is exiting.
|
|
||||||
await Task.Delay(2000);
|
|
||||||
this.Invoke((MethodInvoker)(delegate
|
|
||||||
{
|
|
||||||
toolSslServerLatencyRefresh();
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region v2ray 操作
|
#region v2ray 操作
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 载入V2ray
|
/// 载入V2ray
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async void LoadV2ray()
|
private void LoadV2ray()
|
||||||
{
|
|
||||||
this.Invoke((MethodInvoker)(delegate
|
|
||||||
{
|
{
|
||||||
tsbReload.Enabled = false;
|
tsbReload.Enabled = false;
|
||||||
|
|
||||||
|
@ -438,49 +392,60 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
ClearMsg();
|
ClearMsg();
|
||||||
}
|
}
|
||||||
}));
|
v2rayHandler.LoadV2ray(config);
|
||||||
await v2rayHandler.LoadV2ray(config);
|
|
||||||
Global.reloadV2ray = false;
|
Global.reloadV2ray = false;
|
||||||
ChangePACButtonStatus(config.listenerType);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
//ConfigHandler.SaveConfigToFile(ref config, false); // ChangePACButtonStatus does it.
|
|
||||||
statistics?.SaveToFile();
|
statistics?.SaveToFile();
|
||||||
|
|
||||||
this.Invoke((MethodInvoker)(delegate
|
ChangePACButtonStatus(config.listenerType);
|
||||||
{
|
|
||||||
tsbReload.Enabled = true;
|
|
||||||
|
|
||||||
autoLatencyRefresh();
|
tsbReload.Enabled = true;
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭相关组件
|
/// 关闭V2ray
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void Closes()
|
private void CloseV2ray()
|
||||||
{
|
|
||||||
List<Task> tasks = new List<Task>
|
|
||||||
{
|
|
||||||
Task.Run(() => ConfigHandler.SaveConfigToFile(ref config)),
|
|
||||||
Task.Run(() => HttpProxyHandle.CloseHttpAgent(config)),
|
|
||||||
Task.Run(() => v2rayHandler.V2rayStop()),
|
|
||||||
Task.Run(() => PACServerHandle.Stop()),
|
|
||||||
Task.Run(() =>
|
|
||||||
{
|
{
|
||||||
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
statistics?.SaveToFile();
|
statistics?.SaveToFile();
|
||||||
statistics?.Close();
|
|
||||||
})
|
ChangePACButtonStatus(0);
|
||||||
};
|
|
||||||
Task.WaitAll(tasks.ToArray());
|
v2rayHandler.V2rayStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 功能按钮
|
#region 功能按钮
|
||||||
|
|
||||||
|
private void lvServers_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int index = -1;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (lvServers.SelectedIndices.Count > 0)
|
||||||
|
{
|
||||||
|
index = lvServers.SelectedIndices[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
qrCodeControl.showQRCode(index, config);
|
||||||
|
}
|
||||||
|
|
||||||
private void lvServers_DoubleClick(object sender, EventArgs e)
|
private void lvServers_DoubleClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0) return;
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (config.vmess[index].configType == (int)EConfigType.Vmess)
|
if (config.vmess[index].configType == (int)EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
|
@ -608,9 +573,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuRemoveServer_Click(object sender, EventArgs e)
|
private void menuRemoveServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
|
||||||
if (index < 0) return;
|
|
||||||
|
|
||||||
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (UI.ShowYesNo(UIRes.I18N("RemoveServer")) == DialogResult.No)
|
if (UI.ShowYesNo(UIRes.I18N("RemoveServer")) == DialogResult.No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -627,22 +595,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
VmessItem activeVm = null;
|
|
||||||
if (config.index >= 0) {
|
|
||||||
activeVm = config.vmess[config.index];
|
|
||||||
}
|
|
||||||
Utils.DedupServerList(config.vmess, out List<VmessItem> servers, config.keepOlderDedupl);
|
Utils.DedupServerList(config.vmess, out List<VmessItem> servers, config.keepOlderDedupl);
|
||||||
int oldCount = config.vmess.Count;
|
int oldCount = config.vmess.Count;
|
||||||
int newCount = servers.Count;
|
int newCount = servers.Count;
|
||||||
if (servers != null)
|
if (servers != null)
|
||||||
{
|
{
|
||||||
config.vmess = servers;
|
config.vmess = servers;
|
||||||
|
|
||||||
if (activeVm != null)
|
|
||||||
{
|
|
||||||
int index = Utils.ServerVmIndexof(config.vmess, activeVm);
|
|
||||||
if (index >= 0) config.index = index; // restore to the correct value
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//刷新
|
//刷新
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
|
@ -652,9 +610,11 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuCopyServer_Click(object sender, EventArgs e)
|
private void menuCopyServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0) return;
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (ConfigHandler.CopyServer(ref config, index) == 0)
|
if (ConfigHandler.CopyServer(ref config, index) == 0)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -664,9 +624,11 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuSetDefaultServer_Click(object sender, EventArgs e)
|
private void menuSetDefaultServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0) return;
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
SetDefaultServer(index);
|
SetDefaultServer(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -707,37 +669,37 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
private void Speedtest(string actionType)
|
private void Speedtest(string actionType)
|
||||||
{
|
{
|
||||||
if (GetConfigIndexFromServerListSelected() < 0) return;
|
if (GetLvSelectedIndex() < 0) return;
|
||||||
ClearTestResult();
|
ClearTestResult();
|
||||||
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void menuTestMe_Click(object sender, EventArgs e)
|
private void tsbTestMe_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string result = await httpProxyTest() + "ms";
|
string result = httpProxyTest() + "ms";
|
||||||
AppendText(false, string.Format(UIRes.I18N("TestMeOutput"), result));
|
AppendText(false, string.Format(UIRes.I18N("TestMeOutput"), result));
|
||||||
}
|
}
|
||||||
private async Task<int> httpProxyTest()
|
private int httpProxyTest()
|
||||||
{
|
{
|
||||||
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, "", UpdateSpeedtestHandler);
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, "", UpdateSpeedtestHandler);
|
||||||
return await Task.Run(() => statistics.RunAvailabilityCheck());
|
return statistics.RunAvailabilityCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
MainFormHandler.Instance.Export2ClientConfig(index, config);
|
MainFormHandler.Instance.Export2ClientConfig(index, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ServerConfig_Click(object sender, EventArgs e)
|
private void menuExport2ServerConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
MainFormHandler.Instance.Export2ServerConfig(index, config);
|
MainFormHandler.Instance.Export2ServerConfig(index, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ShareUrl_Click(object sender, EventArgs e)
|
private void menuExport2ShareUrl_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
GetConfigIndexFromServerListSelected();
|
GetLvSelectedIndex();
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
foreach (int v in lvSelecteds)
|
foreach (int v in lvSelecteds)
|
||||||
|
@ -760,7 +722,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuExport2SubContent_Click(object sender, EventArgs e)
|
private void menuExport2SubContent_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
GetConfigIndexFromServerListSelected();
|
GetLvSelectedIndex();
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
foreach (int v in lvSelecteds)
|
foreach (int v in lvSelecteds)
|
||||||
|
@ -782,20 +744,13 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void tsbOptionSetting_Click(object sender, EventArgs e)
|
private void tsbOptionSetting_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string tab = "";
|
OptionSettingForm fm = new OptionSettingForm();
|
||||||
if (sender == toolSslRouting) tab = "tabPreDefinedRules";
|
|
||||||
|
|
||||||
OptionSettingForm fm = new OptionSettingForm(tab);
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
//Application.DoEvents();
|
|
||||||
Task.Run(() =>
|
|
||||||
{
|
|
||||||
LoadV2ray();
|
LoadV2ray();
|
||||||
HttpProxyHandle.RestartHttpAgent(config, true);
|
HttpProxyHandle.RestartHttpAgent(config, true);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -828,19 +783,15 @@ namespace v2rayN.Forms
|
||||||
//刷新
|
//刷新
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
LoadV2ray();
|
LoadV2ray();
|
||||||
toolSslServerLatencySet();
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取服务器列表选中行的配置项(config)索引(index)
|
/// 取得ListView选中的行
|
||||||
///
|
|
||||||
/// 返回值对应首个选中项,无选中或出错时返回-1
|
|
||||||
/// 访问多选请在调用此函数后访问 lvSelecteds
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private int GetConfigIndexFromServerListSelected()
|
private int GetLvSelectedIndex()
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
lvSelecteds.Clear();
|
lvSelecteds.Clear();
|
||||||
|
@ -852,11 +803,9 @@ namespace v2rayN.Forms
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
index = Convert.ToInt32(lvServers.SelectedItems[0].Tag);
|
index = lvServers.SelectedIndices[0];
|
||||||
|
foreach (int i in lvServers.SelectedIndices)
|
||||||
foreach (int item in lvServers.SelectedIndices)
|
|
||||||
{
|
{
|
||||||
int i = Convert.ToInt32(lvServers.Items[item].Tag);
|
|
||||||
lvSelecteds.Add(i);
|
lvSelecteds.Add(i);
|
||||||
}
|
}
|
||||||
return index;
|
return index;
|
||||||
|
@ -866,27 +815,6 @@ namespace v2rayN.Forms
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// 获取服务器列表表示指定配置项的所有行的索引
|
|
||||||
/// 基于列表项的Tag属性
|
|
||||||
///
|
|
||||||
/// 出错时返回空。
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private List<int> GetServerListItemsByConfigIndex(int configIndex)
|
|
||||||
{
|
|
||||||
var l = new List<int>();
|
|
||||||
foreach (ListViewItem item in lvServers.Items)
|
|
||||||
{
|
|
||||||
string tagStr = item.Tag?.ToString();
|
|
||||||
if (int.TryParse(tagStr, out int tagInt)
|
|
||||||
&& tagInt == configIndex)
|
|
||||||
{
|
|
||||||
l.Add(item.Index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuAddCustomServer_Click(object sender, EventArgs e)
|
private void menuAddCustomServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -1119,13 +1047,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
#region 后台测速
|
#region 后台测速
|
||||||
|
|
||||||
private void SetTestResult(int configIndex, string txt)
|
private void SetTestResult(int k, string txt)
|
||||||
{
|
{
|
||||||
var l = GetServerListItemsByConfigIndex(configIndex);
|
if (k < lvServers.Items.Count)
|
||||||
if (l.Count > 0)
|
|
||||||
{
|
{
|
||||||
config.vmess[configIndex].testResult = txt;
|
config.vmess[k].testResult = txt;
|
||||||
l.ForEach((listIndex) => lvServers.Items[listIndex].SubItems["testResult"].Text = txt);
|
lvServers.Items[k].SubItems["testResult"].Text = txt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void ClearTestResult()
|
private void ClearTestResult()
|
||||||
|
@ -1149,28 +1076,22 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
up /= (ulong)(config.statisticsFreshRate / 1000f);
|
up /= (ulong)(config.statisticsFreshRate / 1000f);
|
||||||
down /= (ulong)(config.statisticsFreshRate / 1000f);
|
down /= (ulong)(config.statisticsFreshRate / 1000f);
|
||||||
this.Invoke((MethodInvoker)(delegate
|
|
||||||
{
|
|
||||||
toolSslServerSpeed.Text = string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down));
|
toolSslServerSpeed.Text = string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down));
|
||||||
}));
|
|
||||||
|
List<string[]> datas = new List<string[]>();
|
||||||
for (int i = 0; i < config.vmess.Count; i++)
|
for (int i = 0; i < config.vmess.Count; i++)
|
||||||
{
|
{
|
||||||
int statsIndex = statistics.FindIndex(item_ => item_.itemId == config.vmess[i].getItemId());
|
int index = statistics.FindIndex(item_ => item_.itemId == config.vmess[i].getItemId());
|
||||||
List<int> l = GetServerListItemsByConfigIndex(i);
|
if (index != -1)
|
||||||
|
|
||||||
if (statsIndex != -1 && l.Count > 0)
|
|
||||||
{
|
{
|
||||||
this?.Invoke((MethodInvoker)delegate
|
lvServers.Invoke((MethodInvoker)delegate
|
||||||
{
|
{
|
||||||
lvServers.BeginUpdate();
|
lvServers.BeginUpdate();
|
||||||
|
|
||||||
l.ForEach((listIndex) =>
|
lvServers.Items[i].SubItems["todayDown"].Text = Utils.HumanFy(statistics[index].todayDown);
|
||||||
{
|
lvServers.Items[i].SubItems["todayUp"].Text = Utils.HumanFy(statistics[index].todayUp);
|
||||||
lvServers.Items[listIndex].SubItems["todayDown"].Text = Utils.HumanFy(statistics[statsIndex].todayDown);
|
lvServers.Items[i].SubItems["totalDown"].Text = Utils.HumanFy(statistics[index].totalDown);
|
||||||
lvServers.Items[listIndex].SubItems["todayUp"].Text = Utils.HumanFy(statistics[statsIndex].todayUp);
|
lvServers.Items[i].SubItems["totalUp"].Text = Utils.HumanFy(statistics[index].totalUp);
|
||||||
lvServers.Items[listIndex].SubItems["totalDown"].Text = Utils.HumanFy(statistics[statsIndex].totalDown);
|
|
||||||
lvServers.Items[listIndex].SubItems["totalUp"].Text = Utils.HumanFy(statistics[statsIndex].totalUp);
|
|
||||||
});
|
|
||||||
|
|
||||||
lvServers.EndUpdate();
|
lvServers.EndUpdate();
|
||||||
});
|
});
|
||||||
|
@ -1209,7 +1130,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void MoveServer(EMove eMove)
|
private void MoveServer(EMove eMove)
|
||||||
{
|
{
|
||||||
int index = GetConfigIndexFromServerListSelected();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectServer"));
|
UI.Show(UIRes.I18N("PleaseSelectServer"));
|
||||||
|
@ -1290,13 +1211,8 @@ namespace v2rayN.Forms
|
||||||
item.Checked = ((int)type == k);
|
item.Checked = ((int)type == k);
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.reloadV2ray = false;
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
ConfigHandler.SaveConfigToFile(ref config);
|
|
||||||
|
|
||||||
this.Invoke((MethodInvoker)(delegate
|
|
||||||
{
|
|
||||||
DisplayToolStatus();
|
DisplayToolStatus();
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -1304,11 +1220,11 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
#region CheckUpdate
|
#region CheckUpdate
|
||||||
|
|
||||||
private async void askToDownload(DownloadHandle downloadHandle, string url)
|
private void askToDownload(DownloadHandle downloadHandle, string url)
|
||||||
{
|
{
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes)
|
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
if (await httpProxyTest() > 0)
|
if (httpProxyTest() > 0)
|
||||||
{
|
{
|
||||||
int httpPort = config.GetLocalPort(Global.InboundHttp);
|
int httpPort = config.GetLocalPort(Global.InboundHttp);
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
@ -1411,7 +1327,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Closes();
|
CloseV2ray();
|
||||||
|
|
||||||
string fileName = downloadHandle.DownloadFileName;
|
string fileName = downloadHandle.DownloadFileName;
|
||||||
fileName = Utils.GetPath(fileName);
|
fileName = Utils.GetPath(fileName);
|
||||||
|
@ -1474,8 +1390,7 @@ namespace v2rayN.Forms
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingPAC"));
|
AppendText(false, UIRes.I18N("MsgStartUpdatingPAC"));
|
||||||
string url = Utils.IsNullOrEmpty(config.urlGFWList) ? Global.GFWLIST_URL : config.urlGFWList;
|
pacListHandle.WebDownloadString(config.urlGFWList);
|
||||||
pacListHandle.WebDownloadString(url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckClearPACList_Click(object sender, EventArgs e)
|
private void tsbCheckClearPACList_Click(object sender, EventArgs e)
|
||||||
|
@ -1588,7 +1503,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
//AppendText(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}");
|
AppendText(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}");
|
||||||
string result = Utils.Base64Decode(args.Msg);
|
string result = Utils.Base64Decode(args.Msg);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
|
@ -1627,7 +1542,6 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
bool bShow = tsbQRCodeSwitch.Checked;
|
bool bShow = tsbQRCodeSwitch.Checked;
|
||||||
scMain.Panel2Collapsed = !bShow;
|
scMain.Panel2Collapsed = !bShow;
|
||||||
RefreshQRCodePanel();
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1649,100 +1563,8 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RefreshTaryIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async void toolSslServerLatencyRefresh()
|
|
||||||
{
|
|
||||||
toolSslServerLatencySet(UIRes.I18N("ServerLatencyChecking"));
|
|
||||||
string result = await httpProxyTest() + "ms";
|
|
||||||
toolSslServerLatencySet(result);
|
|
||||||
}
|
|
||||||
private void toolSslServerLatencySet(string text = "")
|
|
||||||
{
|
|
||||||
toolSslServerLatency.Text = string.Format(UIRes.I18N("toolSslServerLatency"), text);
|
|
||||||
}
|
|
||||||
private void toolSslServerLatency_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
toolSslServerLatencyRefresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toolSslServerSpeed_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//toolSslServerLatencyRefresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toolSslRouting_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
tsbOptionSetting_Click(toolSslRouting, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int lastSortedColIndex = -1;
|
|
||||||
private bool lastSortedColDirection = false;
|
|
||||||
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
|
|
||||||
{
|
|
||||||
Sorter s = (Sorter)lvServers.ListViewItemSorter;
|
|
||||||
s.Column = e.Column;
|
|
||||||
|
|
||||||
int doIntSort;
|
|
||||||
bool isNum = lvServers.Columns[e.Column].Tag?.ToString() == Global.sortMode.Numeric.ToString();
|
|
||||||
if (lastSortedColIndex < 0 // 首次
|
|
||||||
|| (lastSortedColIndex >= 0 && lastSortedColIndex != e.Column) // 排序了其他列
|
|
||||||
|| (lastSortedColIndex == e.Column && !lastSortedColDirection) // 已排序
|
|
||||||
)
|
|
||||||
{
|
|
||||||
lastSortedColDirection = true;
|
|
||||||
doIntSort = isNum ? 1 : -1; // 正序
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lastSortedColDirection = false;
|
|
||||||
doIntSort = isNum ? 2 : -2; // 倒序
|
|
||||||
}
|
|
||||||
lastSortedColIndex = e.Column;
|
|
||||||
|
|
||||||
s.Sorting = doIntSort;
|
|
||||||
|
|
||||||
lvServers.Sort();
|
|
||||||
reInterlaceColoring();
|
|
||||||
}
|
|
||||||
private void reInterlaceColoring()
|
|
||||||
{
|
|
||||||
if (!config.interlaceColoring) return;
|
|
||||||
for (int k = 0; k < lvServers.Items.Count; k++)
|
|
||||||
{
|
|
||||||
if (config.interlaceColoring && k % 2 == 1)
|
|
||||||
lvServers.Items[k].BackColor = SystemColors.Control;
|
|
||||||
else
|
|
||||||
lvServers.Items[k].BackColor = lvServers.BackColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvServers_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
|
|
||||||
{
|
|
||||||
ColumnHeader c = lvServers.Columns[e.ColumnIndex];
|
|
||||||
ConfigHandler.AddformMainLvColWidth(ref config, c.Name, c.Width);
|
|
||||||
Task.Run(() => ConfigHandler.SaveConfigToFile(ref config));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainForm_ResizeEnd(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
config.uiItem.mainSize = new Size(this.Width, this.Height);
|
|
||||||
Task.Run(() => ConfigHandler.SaveConfigToFile(ref config));
|
|
||||||
}
|
|
||||||
|
|
||||||
private async void lvServers_ColumnReordered(object sender, ColumnReorderedEventArgs e)
|
|
||||||
{
|
|
||||||
await Task.Delay(500);
|
|
||||||
var names = (from col in lvServers.Columns.Cast<ColumnHeader>()
|
|
||||||
orderby col.DisplayIndex
|
|
||||||
select col.Name).ToList();
|
|
||||||
config.uiItem.mainLvColLayout = names;
|
|
||||||
_ = Task.Run(() => ConfigHandler.SaveConfigToFile(ref config));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -118,52 +118,11 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>301, 534</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 164</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器列表</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
||||||
<value>添加自定义配置服务器</value>
|
<value>添加[VMess]服务器</value>
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -177,17 +136,38 @@
|
||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
||||||
<value>添加[Socks]服务器</value>
|
<value>添加[Socks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
||||||
<value>添加[VMess]服务器</value>
|
<value>添加自定义配置服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
<data name="menuAddServers.Text" xml:space="preserve">
|
||||||
<value>复制本地PAC网址</value>
|
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Text" xml:space="preserve">
|
||||||
|
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Text" xml:space="preserve">
|
||||||
|
<value>移除所选服务器(多选) (Delete)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
||||||
|
<value>移除重复的服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -195,11 +175,74 @@
|
||||||
<data name="menuCopyServer.Text" xml:space="preserve">
|
<data name="menuCopyServer.Text" xml:space="preserve">
|
||||||
<value>克隆所选服务器</value>
|
<value>克隆所选服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
||||||
<value>退出</value>
|
<value>设为活动服务器 (Enter)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
|
<value>上移至顶 (T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
|
<value>上移 (U)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
|
<value>下移 (D)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
|
<value>下移至底 (B)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>全选 (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuTcpingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -225,6 +268,38 @@
|
||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
<value>批量导出订阅内容至剪贴板(多选)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>73, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbServer.Text" xml:space="preserve">
|
||||||
|
<value> 服务器 </value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>301, 534</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||||
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
||||||
|
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
||||||
|
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
||||||
|
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
||||||
|
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
||||||
|
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
||||||
|
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
||||||
|
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
||||||
|
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
||||||
|
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.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>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -243,95 +318,29 @@
|
||||||
<data name="menuKeep.Text" xml:space="preserve">
|
<data name="menuKeep.Text" xml:space="preserve">
|
||||||
<value>仅开启Http代理,并清除系统代理</value>
|
<value>仅开启Http代理,并清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
|
||||||
<value>仅开启Http代理,不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPAC.Text" xml:space="preserve">
|
<data name="menuKeepPAC.Text" xml:space="preserve">
|
||||||
<value>仅开启PAC,并清除系统代理</value>
|
<value>仅开启PAC,并清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuKeepNothing.Text" xml:space="preserve">
|
||||||
|
<value>仅开启Http代理,不改变系统代理</value>
|
||||||
|
</data>
|
||||||
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
||||||
<value>仅开启PAC,不改变系统代理</value>
|
<value>仅开启PAC,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
|
||||||
<value>关闭Http代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
|
||||||
<value>移除重复的服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码</value>
|
<value>Http代理</value>
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
</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>
|
||||||
|
@ -339,32 +348,23 @@
|
||||||
<data name="menuServers.Text" xml:space="preserve">
|
<data name="menuServers.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
|
||||||
<value>设为活动服务器 (Enter)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
<data name="menuAddServers2.Text" xml:space="preserve">
|
||||||
<value>Http代理</value>
|
<value>从剪贴板导入批量URL</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
<data name="menuScanScreen2.Text" xml:space="preserve">
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
<value>扫描屏幕上的二维码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTestMe.Text" xml:space="preserve">
|
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>测试当前服务节点状态</value>
|
<value>195, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
||||||
|
<value>复制本地PAC网址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
|
@ -372,90 +372,44 @@
|
||||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||||
<value>更新订阅</value>
|
<value>更新订阅</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslRouting.Text" xml:space="preserve">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>路由模式</value>
|
<value>192, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslRouting.ToolTipText" xml:space="preserve">
|
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>Core 路由模式(预定义规则)</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerLatency.Text" xml:space="preserve">
|
<data name="menuExit.Text" xml:space="preserve">
|
||||||
<value>延迟:</value>
|
<value>退出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerLatency.ToolTipText" xml:space="preserve">
|
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>当前 HTTP 代理的访问延迟。</value>
|
<value>196, 164</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>服务器列表</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
<value>网速显示未启用</value>
|
<value>网速显示未启用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>297, 6</value>
|
<value>信息</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>220, 6</value>
|
<value>124, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||||
<value>192, 6</value>
|
<value>订阅设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>297, 6</value>
|
<value>124, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
<value>297, 6</value>
|
<value>更新订阅</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>297, 6</value>
|
<value>61, 53</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
<data name="tsbSub.Text" xml:space="preserve">
|
||||||
<value>v2rayN 项目</value>
|
<value> 订阅 </value>
|
||||||
</data>
|
|
||||||
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
|
||||||
<value>将PAC改为直连Core,按路由规则处理</value>
|
|
||||||
</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="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>v2rayCore</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
|
||||||
<value>PAC</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
|
||||||
wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA
|
|
||||||
8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
|
||||||
<value> 关闭窗口 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>69, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Text" xml:space="preserve">
|
|
||||||
<value> 帮助 </value>
|
|
||||||
</data>
|
</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>
|
||||||
|
@ -463,26 +417,17 @@
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
||||||
<value> 参数设置 </value>
|
<value> 参数设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Text" xml:space="preserve">
|
|
||||||
<value> 推广 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
|
||||||
<value> 分享 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>148, 22</value>
|
<value>148, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbReload.Text" xml:space="preserve">
|
<data name="tsbReload.Text" xml:space="preserve">
|
||||||
<value> 重启服务 </value>
|
<value> 重启服务 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>73, 53</value>
|
<value>148, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
<data name="tsbTestMe.Text" xml:space="preserve">
|
||||||
<value> 服务器 </value>
|
<value>测试当前服务状态</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbService.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsbService.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
|
@ -501,31 +446,71 @@
|
||||||
<data name="tsbService.Text" xml:space="preserve">
|
<data name="tsbService.Text" xml:space="preserve">
|
||||||
<value> 当前服务 </value>
|
<value> 当前服务 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>61, 53</value>
|
<value>223, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSub.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
||||||
<value> 订阅 </value>
|
<value>v2rayN</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 22</value>
|
<value>223, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
||||||
<value>订阅设置</value>
|
<value>v2rayCore</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 22</value>
|
<value>223, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
||||||
<value>更新订阅</value>
|
<value>PAC</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>148, 22</value>
|
<value>220, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbTestMe.Text" xml:space="preserve">
|
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>测试当前服务状态</value>
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
||||||
|
<value>简化PAC (请设置Core路由)</value>
|
||||||
|
</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>v2rayN 项目</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
||||||
<value>V2Ray 官网</value>
|
<value>V2Ray 官网</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>69, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbHelp.Text" xml:space="preserve">
|
||||||
|
<value> 帮助 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>68, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbPromotion.Text" xml:space="preserve">
|
||||||
|
<value> 推广 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA
|
||||||
|
8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>76, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Text" xml:space="preserve">
|
||||||
|
<value> 关闭窗口 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
||||||
|
<value> 分享 </value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
175
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
175
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
|
@ -31,7 +31,7 @@
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm));
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabBasic = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
this.cmblistenerType = new System.Windows.Forms.ComboBox();
|
this.cmblistenerType = new System.Windows.Forms.ComboBox();
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.tabRouting = new System.Windows.Forms.TabPage();
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
this.tabControl2 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||||
|
@ -62,14 +62,14 @@
|
||||||
this.txtUserdirect = new System.Windows.Forms.TextBox();
|
this.txtUserdirect = new System.Windows.Forms.TextBox();
|
||||||
this.tabPage5 = new System.Windows.Forms.TabPage();
|
this.tabPage5 = new System.Windows.Forms.TabPage();
|
||||||
this.txtUserblock = new System.Windows.Forms.TextBox();
|
this.txtUserblock = new System.Windows.Forms.TextBox();
|
||||||
this.tabPreDefinedRules = new System.Windows.Forms.TabPage();
|
this.tabPage8 = new System.Windows.Forms.TabPage();
|
||||||
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
|
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
||||||
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
|
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
this.labRoutingTips = new System.Windows.Forms.Label();
|
||||||
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
||||||
this.tabKCP = new System.Windows.Forms.TabPage();
|
this.tabPage6 = new System.Windows.Forms.TabPage();
|
||||||
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
||||||
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.tabGUI = new System.Windows.Forms.TabPage();
|
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||||
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
||||||
this.cbFreshrate = new System.Windows.Forms.ComboBox();
|
this.cbFreshrate = new System.Windows.Forms.ComboBox();
|
||||||
this.lbFreshrate = new System.Windows.Forms.Label();
|
this.lbFreshrate = new System.Windows.Forms.Label();
|
||||||
|
@ -92,28 +92,27 @@
|
||||||
this.txturlGFWList = new System.Windows.Forms.TextBox();
|
this.txturlGFWList = new System.Windows.Forms.TextBox();
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
||||||
this.tabUserPAC = new System.Windows.Forms.TabPage();
|
this.tabPage9 = new System.Windows.Forms.TabPage();
|
||||||
this.txtuserPacRule = new System.Windows.Forms.TextBox();
|
this.txtuserPacRule = new System.Windows.Forms.TextBox();
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
this.chkInterlaceColoring = new System.Windows.Forms.CheckBox();
|
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
this.tabBasic.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.tabRouting.SuspendLayout();
|
this.tabPage2.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
this.tabControl2.SuspendLayout();
|
this.tabControl2.SuspendLayout();
|
||||||
this.tabPage3.SuspendLayout();
|
this.tabPage3.SuspendLayout();
|
||||||
this.tabPage4.SuspendLayout();
|
this.tabPage4.SuspendLayout();
|
||||||
this.tabPage5.SuspendLayout();
|
this.tabPage5.SuspendLayout();
|
||||||
this.tabPreDefinedRules.SuspendLayout();
|
this.tabPage8.SuspendLayout();
|
||||||
this.panel3.SuspendLayout();
|
this.panel3.SuspendLayout();
|
||||||
this.tabKCP.SuspendLayout();
|
this.tabPage6.SuspendLayout();
|
||||||
this.tabGUI.SuspendLayout();
|
this.tabPage7.SuspendLayout();
|
||||||
this.tabUserPAC.SuspendLayout();
|
this.tabPage9.SuspendLayout();
|
||||||
this.panel4.SuspendLayout();
|
this.panel4.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
|
@ -128,21 +127,21 @@
|
||||||
//
|
//
|
||||||
// tabControl1
|
// tabControl1
|
||||||
//
|
//
|
||||||
this.tabControl1.Controls.Add(this.tabBasic);
|
this.tabControl1.Controls.Add(this.tabPage1);
|
||||||
this.tabControl1.Controls.Add(this.tabRouting);
|
this.tabControl1.Controls.Add(this.tabPage2);
|
||||||
this.tabControl1.Controls.Add(this.tabKCP);
|
this.tabControl1.Controls.Add(this.tabPage6);
|
||||||
this.tabControl1.Controls.Add(this.tabGUI);
|
this.tabControl1.Controls.Add(this.tabPage7);
|
||||||
this.tabControl1.Controls.Add(this.tabUserPAC);
|
this.tabControl1.Controls.Add(this.tabPage9);
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||||
this.tabControl1.Name = "tabControl1";
|
this.tabControl1.Name = "tabControl1";
|
||||||
this.tabControl1.SelectedIndex = 0;
|
this.tabControl1.SelectedIndex = 0;
|
||||||
//
|
//
|
||||||
// tabBasic
|
// tabPage1
|
||||||
//
|
//
|
||||||
this.tabBasic.Controls.Add(this.groupBox1);
|
this.tabPage1.Controls.Add(this.groupBox1);
|
||||||
resources.ApplyResources(this.tabBasic, "tabBasic");
|
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||||
this.tabBasic.Name = "tabBasic";
|
this.tabPage1.Name = "tabPage1";
|
||||||
this.tabBasic.UseVisualStyleBackColor = true;
|
this.tabPage1.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
@ -306,12 +305,12 @@
|
||||||
resources.ApplyResources(this.label2, "label2");
|
resources.ApplyResources(this.label2, "label2");
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
//
|
//
|
||||||
// tabRouting
|
// tabPage2
|
||||||
//
|
//
|
||||||
this.tabRouting.Controls.Add(this.groupBox2);
|
this.tabPage2.Controls.Add(this.groupBox2);
|
||||||
resources.ApplyResources(this.tabRouting, "tabRouting");
|
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||||
this.tabRouting.Name = "tabRouting";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabRouting.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
@ -326,7 +325,7 @@
|
||||||
this.tabControl2.Controls.Add(this.tabPage3);
|
this.tabControl2.Controls.Add(this.tabPage3);
|
||||||
this.tabControl2.Controls.Add(this.tabPage4);
|
this.tabControl2.Controls.Add(this.tabPage4);
|
||||||
this.tabControl2.Controls.Add(this.tabPage5);
|
this.tabControl2.Controls.Add(this.tabPage5);
|
||||||
this.tabControl2.Controls.Add(this.tabPreDefinedRules);
|
this.tabControl2.Controls.Add(this.tabPage8);
|
||||||
resources.ApplyResources(this.tabControl2, "tabControl2");
|
resources.ApplyResources(this.tabControl2, "tabControl2");
|
||||||
this.tabControl2.Name = "tabControl2";
|
this.tabControl2.Name = "tabControl2";
|
||||||
this.tabControl2.SelectedIndex = 0;
|
this.tabControl2.SelectedIndex = 0;
|
||||||
|
@ -367,12 +366,12 @@
|
||||||
resources.ApplyResources(this.txtUserblock, "txtUserblock");
|
resources.ApplyResources(this.txtUserblock, "txtUserblock");
|
||||||
this.txtUserblock.Name = "txtUserblock";
|
this.txtUserblock.Name = "txtUserblock";
|
||||||
//
|
//
|
||||||
// tabPreDefinedRules
|
// tabPage8
|
||||||
//
|
//
|
||||||
this.tabPreDefinedRules.Controls.Add(this.cmbroutingMode);
|
this.tabPage8.Controls.Add(this.cmbroutingMode);
|
||||||
resources.ApplyResources(this.tabPreDefinedRules, "tabPreDefinedRules");
|
resources.ApplyResources(this.tabPage8, "tabPage8");
|
||||||
this.tabPreDefinedRules.Name = "tabPreDefinedRules";
|
this.tabPage8.Name = "tabPage8";
|
||||||
this.tabPreDefinedRules.UseVisualStyleBackColor = true;
|
this.tabPage8.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// cmbroutingMode
|
// cmbroutingMode
|
||||||
//
|
//
|
||||||
|
@ -426,24 +425,24 @@
|
||||||
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
||||||
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
||||||
//
|
//
|
||||||
// tabKCP
|
// tabPage6
|
||||||
//
|
//
|
||||||
this.tabKCP.Controls.Add(this.chkKcpcongestion);
|
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
||||||
this.tabKCP.Controls.Add(this.txtKcpwriteBufferSize);
|
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
||||||
this.tabKCP.Controls.Add(this.label10);
|
this.tabPage6.Controls.Add(this.label10);
|
||||||
this.tabKCP.Controls.Add(this.txtKcpreadBufferSize);
|
this.tabPage6.Controls.Add(this.txtKcpreadBufferSize);
|
||||||
this.tabKCP.Controls.Add(this.label11);
|
this.tabPage6.Controls.Add(this.label11);
|
||||||
this.tabKCP.Controls.Add(this.txtKcpdownlinkCapacity);
|
this.tabPage6.Controls.Add(this.txtKcpdownlinkCapacity);
|
||||||
this.tabKCP.Controls.Add(this.label8);
|
this.tabPage6.Controls.Add(this.label8);
|
||||||
this.tabKCP.Controls.Add(this.txtKcpuplinkCapacity);
|
this.tabPage6.Controls.Add(this.txtKcpuplinkCapacity);
|
||||||
this.tabKCP.Controls.Add(this.label9);
|
this.tabPage6.Controls.Add(this.label9);
|
||||||
this.tabKCP.Controls.Add(this.txtKcptti);
|
this.tabPage6.Controls.Add(this.txtKcptti);
|
||||||
this.tabKCP.Controls.Add(this.label7);
|
this.tabPage6.Controls.Add(this.label7);
|
||||||
this.tabKCP.Controls.Add(this.txtKcpmtu);
|
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
||||||
this.tabKCP.Controls.Add(this.label6);
|
this.tabPage6.Controls.Add(this.label6);
|
||||||
resources.ApplyResources(this.tabKCP, "tabKCP");
|
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||||
this.tabKCP.Name = "tabKCP";
|
this.tabPage6.Name = "tabPage6";
|
||||||
this.tabKCP.UseVisualStyleBackColor = true;
|
this.tabPage6.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// chkKcpcongestion
|
// chkKcpcongestion
|
||||||
//
|
//
|
||||||
|
@ -511,20 +510,19 @@
|
||||||
resources.ApplyResources(this.label6, "label6");
|
resources.ApplyResources(this.label6, "label6");
|
||||||
this.label6.Name = "label6";
|
this.label6.Name = "label6";
|
||||||
//
|
//
|
||||||
// tabGUI
|
// tabPage7
|
||||||
//
|
//
|
||||||
this.tabGUI.Controls.Add(this.chkInterlaceColoring);
|
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
||||||
this.tabGUI.Controls.Add(this.chkKeepOlderDedupl);
|
this.tabPage7.Controls.Add(this.cbFreshrate);
|
||||||
this.tabGUI.Controls.Add(this.cbFreshrate);
|
this.tabPage7.Controls.Add(this.lbFreshrate);
|
||||||
this.tabGUI.Controls.Add(this.lbFreshrate);
|
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||||
this.tabGUI.Controls.Add(this.chkEnableStatistics);
|
this.tabPage7.Controls.Add(this.chkAllowLANConn);
|
||||||
this.tabGUI.Controls.Add(this.chkAllowLANConn);
|
this.tabPage7.Controls.Add(this.txturlGFWList);
|
||||||
this.tabGUI.Controls.Add(this.txturlGFWList);
|
this.tabPage7.Controls.Add(this.label13);
|
||||||
this.tabGUI.Controls.Add(this.label13);
|
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||||
this.tabGUI.Controls.Add(this.chkAutoRun);
|
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||||
resources.ApplyResources(this.tabGUI, "tabGUI");
|
this.tabPage7.Name = "tabPage7";
|
||||||
this.tabGUI.Name = "tabGUI";
|
this.tabPage7.UseVisualStyleBackColor = true;
|
||||||
this.tabGUI.UseVisualStyleBackColor = true;
|
|
||||||
//
|
//
|
||||||
// chkKeepOlderDedupl
|
// chkKeepOlderDedupl
|
||||||
//
|
//
|
||||||
|
@ -572,13 +570,13 @@
|
||||||
this.chkAutoRun.Name = "chkAutoRun";
|
this.chkAutoRun.Name = "chkAutoRun";
|
||||||
this.chkAutoRun.UseVisualStyleBackColor = true;
|
this.chkAutoRun.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// tabUserPAC
|
// tabPage9
|
||||||
//
|
//
|
||||||
this.tabUserPAC.Controls.Add(this.txtuserPacRule);
|
this.tabPage9.Controls.Add(this.txtuserPacRule);
|
||||||
this.tabUserPAC.Controls.Add(this.panel4);
|
this.tabPage9.Controls.Add(this.panel4);
|
||||||
resources.ApplyResources(this.tabUserPAC, "tabUserPAC");
|
resources.ApplyResources(this.tabPage9, "tabPage9");
|
||||||
this.tabUserPAC.Name = "tabUserPAC";
|
this.tabPage9.Name = "tabPage9";
|
||||||
this.tabUserPAC.UseVisualStyleBackColor = true;
|
this.tabPage9.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// txtuserPacRule
|
// txtuserPacRule
|
||||||
//
|
//
|
||||||
|
@ -616,12 +614,6 @@
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
//
|
//
|
||||||
// chkInterlaceColoring
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkInterlaceColoring, "chkInterlaceColoring");
|
|
||||||
this.chkInterlaceColoring.Name = "chkInterlaceColoring";
|
|
||||||
this.chkInterlaceColoring.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// OptionSettingForm
|
// OptionSettingForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
|
@ -634,10 +626,10 @@
|
||||||
this.Name = "OptionSettingForm";
|
this.Name = "OptionSettingForm";
|
||||||
this.Load += new System.EventHandler(this.OptionSettingForm_Load);
|
this.Load += new System.EventHandler(this.OptionSettingForm_Load);
|
||||||
this.tabControl1.ResumeLayout(false);
|
this.tabControl1.ResumeLayout(false);
|
||||||
this.tabBasic.ResumeLayout(false);
|
this.tabPage1.ResumeLayout(false);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.groupBox1.PerformLayout();
|
this.groupBox1.PerformLayout();
|
||||||
this.tabRouting.ResumeLayout(false);
|
this.tabPage2.ResumeLayout(false);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.groupBox2.ResumeLayout(false);
|
||||||
this.tabControl2.ResumeLayout(false);
|
this.tabControl2.ResumeLayout(false);
|
||||||
this.tabPage3.ResumeLayout(false);
|
this.tabPage3.ResumeLayout(false);
|
||||||
|
@ -646,15 +638,15 @@
|
||||||
this.tabPage4.PerformLayout();
|
this.tabPage4.PerformLayout();
|
||||||
this.tabPage5.ResumeLayout(false);
|
this.tabPage5.ResumeLayout(false);
|
||||||
this.tabPage5.PerformLayout();
|
this.tabPage5.PerformLayout();
|
||||||
this.tabPreDefinedRules.ResumeLayout(false);
|
this.tabPage8.ResumeLayout(false);
|
||||||
this.panel3.ResumeLayout(false);
|
this.panel3.ResumeLayout(false);
|
||||||
this.panel3.PerformLayout();
|
this.panel3.PerformLayout();
|
||||||
this.tabKCP.ResumeLayout(false);
|
this.tabPage6.ResumeLayout(false);
|
||||||
this.tabKCP.PerformLayout();
|
this.tabPage6.PerformLayout();
|
||||||
this.tabGUI.ResumeLayout(false);
|
this.tabPage7.ResumeLayout(false);
|
||||||
this.tabGUI.PerformLayout();
|
this.tabPage7.PerformLayout();
|
||||||
this.tabUserPAC.ResumeLayout(false);
|
this.tabPage9.ResumeLayout(false);
|
||||||
this.tabUserPAC.PerformLayout();
|
this.tabPage9.PerformLayout();
|
||||||
this.panel4.ResumeLayout(false);
|
this.panel4.ResumeLayout(false);
|
||||||
this.panel2.ResumeLayout(false);
|
this.panel2.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
@ -674,8 +666,8 @@
|
||||||
private System.Windows.Forms.CheckBox chkudpEnabled;
|
private System.Windows.Forms.CheckBox chkudpEnabled;
|
||||||
private System.Windows.Forms.Panel panel1;
|
private System.Windows.Forms.Panel panel1;
|
||||||
private System.Windows.Forms.TabControl tabControl1;
|
private System.Windows.Forms.TabControl tabControl1;
|
||||||
private System.Windows.Forms.TabPage tabBasic;
|
private System.Windows.Forms.TabPage tabPage1;
|
||||||
private System.Windows.Forms.TabPage tabRouting;
|
private System.Windows.Forms.TabPage tabPage2;
|
||||||
private System.Windows.Forms.Panel panel2;
|
private System.Windows.Forms.Panel panel2;
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
private System.Windows.Forms.ComboBox cmbprotocol;
|
private System.Windows.Forms.ComboBox cmbprotocol;
|
||||||
|
@ -694,7 +686,7 @@
|
||||||
private System.Windows.Forms.TabPage tabPage5;
|
private System.Windows.Forms.TabPage tabPage5;
|
||||||
private System.Windows.Forms.TextBox txtUserdirect;
|
private System.Windows.Forms.TextBox txtUserdirect;
|
||||||
private System.Windows.Forms.TextBox txtUserblock;
|
private System.Windows.Forms.TextBox txtUserblock;
|
||||||
private System.Windows.Forms.TabPage tabKCP;
|
private System.Windows.Forms.TabPage tabPage6;
|
||||||
private System.Windows.Forms.TextBox txtKcpmtu;
|
private System.Windows.Forms.TextBox txtKcpmtu;
|
||||||
private System.Windows.Forms.Label label6;
|
private System.Windows.Forms.Label label6;
|
||||||
private System.Windows.Forms.TextBox txtKcptti;
|
private System.Windows.Forms.TextBox txtKcptti;
|
||||||
|
@ -708,7 +700,7 @@
|
||||||
private System.Windows.Forms.TextBox txtKcpuplinkCapacity;
|
private System.Windows.Forms.TextBox txtKcpuplinkCapacity;
|
||||||
private System.Windows.Forms.Label label9;
|
private System.Windows.Forms.Label label9;
|
||||||
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
||||||
private System.Windows.Forms.TabPage tabGUI;
|
private System.Windows.Forms.TabPage tabPage7;
|
||||||
private System.Windows.Forms.CheckBox chkAutoRun;
|
private System.Windows.Forms.CheckBox chkAutoRun;
|
||||||
private System.Windows.Forms.Label label13;
|
private System.Windows.Forms.Label label13;
|
||||||
private System.Windows.Forms.TextBox txturlGFWList;
|
private System.Windows.Forms.TextBox txturlGFWList;
|
||||||
|
@ -726,13 +718,12 @@
|
||||||
private System.Windows.Forms.Label lbFreshrate;
|
private System.Windows.Forms.Label lbFreshrate;
|
||||||
private System.Windows.Forms.Label label16;
|
private System.Windows.Forms.Label label16;
|
||||||
private System.Windows.Forms.ComboBox cmblistenerType;
|
private System.Windows.Forms.ComboBox cmblistenerType;
|
||||||
private System.Windows.Forms.TabPage tabPreDefinedRules;
|
private System.Windows.Forms.TabPage tabPage8;
|
||||||
private System.Windows.Forms.TabPage tabUserPAC;
|
private System.Windows.Forms.TabPage tabPage9;
|
||||||
private System.Windows.Forms.TextBox txtuserPacRule;
|
private System.Windows.Forms.TextBox txtuserPacRule;
|
||||||
private System.Windows.Forms.Panel panel4;
|
private System.Windows.Forms.Panel panel4;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
||||||
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
||||||
private System.Windows.Forms.CheckBox chkInterlaceColoring;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,10 +9,8 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class OptionSettingForm : BaseForm
|
public partial class OptionSettingForm : BaseForm
|
||||||
{
|
{
|
||||||
private string _tabOpened;
|
public OptionSettingForm()
|
||||||
public OptionSettingForm(string tabOpened = "")
|
|
||||||
{
|
{
|
||||||
_tabOpened = tabOpened;
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,18 +25,6 @@ namespace v2rayN.Forms
|
||||||
InitGUI();
|
InitGUI();
|
||||||
|
|
||||||
InitUserPAC();
|
InitUserPAC();
|
||||||
|
|
||||||
var tab = tabControl1.TabPages[_tabOpened];
|
|
||||||
var tab2 = tabControl2.TabPages[_tabOpened];
|
|
||||||
if (tab != null)
|
|
||||||
{
|
|
||||||
tabControl1.SelectedTab = tab;
|
|
||||||
}
|
|
||||||
if (tab2 != null)
|
|
||||||
{
|
|
||||||
tabControl1.SelectedTab = tabRouting;
|
|
||||||
tabControl2.SelectedTab = tab2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -92,7 +78,8 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
//路由
|
//路由
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
cmbdomainStrategy.Text = config.domainStrategy;
|
||||||
cmbroutingMode.SelectedIndex = config.routingMode;
|
int.TryParse(config.routingMode, out int routingMode);
|
||||||
|
cmbroutingMode.SelectedIndex = routingMode;
|
||||||
|
|
||||||
txtUseragent.Text = Utils.List2String(config.useragent, true);
|
txtUseragent.Text = Utils.List2String(config.useragent, true);
|
||||||
txtUserdirect.Text = Utils.List2String(config.userdirect, true);
|
txtUserdirect.Text = Utils.List2String(config.userdirect, true);
|
||||||
|
@ -127,7 +114,9 @@ namespace v2rayN.Forms
|
||||||
chkAllowLANConn.Checked = config.allowLANConn;
|
chkAllowLANConn.Checked = config.allowLANConn;
|
||||||
chkEnableStatistics.Checked = config.enableStatistics;
|
chkEnableStatistics.Checked = config.enableStatistics;
|
||||||
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
||||||
chkInterlaceColoring.Checked = config.interlaceColoring;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ComboItem[] cbSource = new ComboItem[]
|
ComboItem[] cbSource = new ComboItem[]
|
||||||
{
|
{
|
||||||
|
@ -187,7 +176,7 @@ namespace v2rayN.Forms
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ConfigHandler.SaveConfigToFile(ref config) == 0)
|
if (ConfigHandler.SaveConfig(ref config) == 0)
|
||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +276,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
//路由
|
//路由
|
||||||
string domainStrategy = cmbdomainStrategy.Text;
|
string domainStrategy = cmbdomainStrategy.Text;
|
||||||
int routingMode = cmbroutingMode.SelectedIndex;
|
string routingMode = cmbroutingMode.SelectedIndex.ToString();
|
||||||
|
|
||||||
string useragent = txtUseragent.Text.TrimEx();
|
string useragent = txtUseragent.Text.TrimEx();
|
||||||
string userdirect = txtUserdirect.Text.TrimEx();
|
string userdirect = txtUserdirect.Text.TrimEx();
|
||||||
|
@ -356,7 +345,6 @@ namespace v2rayN.Forms
|
||||||
config.enableStatistics = chkEnableStatistics.Checked;
|
config.enableStatistics = chkEnableStatistics.Checked;
|
||||||
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
|
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
|
||||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||||
config.interlaceColoring = chkInterlaceColoring.Checked;
|
|
||||||
|
|
||||||
//if(lastEnableStatistics != config.enableStatistics)
|
//if(lastEnableStatistics != config.enableStatistics)
|
||||||
//{
|
//{
|
||||||
|
@ -373,7 +361,7 @@ namespace v2rayN.Forms
|
||||||
private int SaveUserPAC()
|
private int SaveUserPAC()
|
||||||
{
|
{
|
||||||
string userPacRule = txtuserPacRule.Text.TrimEx();
|
string userPacRule = txtuserPacRule.Text.TrimEx();
|
||||||
userPacRule = userPacRule.Replace("\"", "").Replace("'", "");
|
userPacRule = userPacRule.Replace("\"", "");
|
||||||
|
|
||||||
config.userPacRule = Utils.String2List(userPacRule);
|
config.userPacRule = Utils.String2List(userPacRule);
|
||||||
|
|
||||||
|
@ -458,7 +446,13 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
class ComboItem
|
class ComboItem
|
||||||
{
|
{
|
||||||
public int ID { get; set; }
|
public int ID
|
||||||
public string Text { get; set; }
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -164,9 +164,6 @@
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkInterlaceColoring.Text" xml:space="preserve">
|
|
||||||
<value>隔行着色</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
<value>去重时保留序号较小的项</value>
|
<value>去重时保留序号较小的项</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -252,7 +249,7 @@
|
||||||
<value>227, 12</value>
|
<value>227, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>自定义GFWList地址(留空则使用默认值)</value>
|
<value>自定义GFWList地址(不需自定义请填空白)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>191, 12</value>
|
<value>191, 12</value>
|
||||||
|
@ -282,7 +279,7 @@
|
||||||
<value>协议</value>
|
<value>协议</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="label4.Text" xml:space="preserve">
|
||||||
<value>*用户PAC内的自定条目。用逗号(,)或换行隔开的匹配模式(pattern)。英文单引号、双引号将被忽略。</value>
|
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>53, 12</value>
|
||||||
|
@ -315,20 +312,17 @@
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>642, 72</value>
|
<value>642, 72</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabBasic.Text" xml:space="preserve">
|
|
||||||
<value> Core:基础设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>3, 89</value>
|
<value>3, 89</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>642, 481</value>
|
<value>642, 481</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabGUI.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value> v2rayN设置 </value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabKCP.Text" xml:space="preserve">
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
<value> Core:KCP设置 </value>
|
<value> Core:路由设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>634, 455</value>
|
<value>634, 455</value>
|
||||||
|
@ -348,16 +342,19 @@
|
||||||
<data name="tabPage5.Text" xml:space="preserve">
|
<data name="tabPage5.Text" xml:space="preserve">
|
||||||
<value> 3.阻止的Domain或IP </value>
|
<value> 3.阻止的Domain或IP </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tabPage6.Text" xml:space="preserve">
|
||||||
|
<value> Core:KCP设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage7.Text" xml:space="preserve">
|
||||||
|
<value> v2rayN设置 </value>
|
||||||
|
</data>
|
||||||
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>634, 455</value>
|
<value>634, 455</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPreDefinedRules.Text" xml:space="preserve">
|
<data name="tabPage8.Text" xml:space="preserve">
|
||||||
<value> 4.预定义规则 </value>
|
<value> 4.预定义规则 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabRouting.Text" xml:space="preserve">
|
<data name="tabPage9.Text" xml:space="preserve">
|
||||||
<value> Core:路由设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabUserPAC.Text" xml:space="preserve">
|
|
||||||
<value> 用户PAC设置 </value>
|
<value> 用户PAC设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
|
|
@ -118,22 +118,34 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 371</value>
|
||||||
|
</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" />
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>QRCodeControl</value>
|
<value>356, 70</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>356, 441</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>txtUrl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
|
@ -141,12 +153,6 @@
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
|
||||||
<value>picQRCode</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 371</value>
|
<value>356, 371</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -156,37 +162,31 @@
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>24</value>
|
<value>24</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>picQRCode.Name" xml:space="preserve">
|
||||||
|
<value>picQRCode</value>
|
||||||
|
</data>
|
||||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
<data name=">>picQRCode.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 371</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>txtUrl</value>
|
<value>356, 441</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>QRCodeControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
<value>356, 70</value>
|
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -8,6 +8,8 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class SubSettingForm : BaseForm
|
public partial class SubSettingForm : BaseForm
|
||||||
{
|
{
|
||||||
|
List<SubSettingControl> lstControls = new List<SubSettingControl>();
|
||||||
|
|
||||||
public SubSettingForm()
|
public SubSettingForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
@ -28,8 +30,8 @@ namespace v2rayN.Forms
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void RefreshSubsView()
|
private void RefreshSubsView()
|
||||||
{
|
{
|
||||||
panCon.SuspendLayout();
|
|
||||||
panCon.Controls.Clear();
|
panCon.Controls.Clear();
|
||||||
|
lstControls.Clear();
|
||||||
|
|
||||||
for (int k = config.subItem.Count - 1; k >= 0; k--)
|
for (int k = config.subItem.Count - 1; k >= 0; k--)
|
||||||
{
|
{
|
||||||
|
@ -54,8 +56,9 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
panCon.Controls.Add(control);
|
panCon.Controls.Add(control);
|
||||||
panCon.Controls.SetChildIndex(control, 0);
|
panCon.Controls.SetChildIndex(control, 0);
|
||||||
|
|
||||||
|
lstControls.Add(control);
|
||||||
}
|
}
|
||||||
panCon.ResumeLayout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Control_OnButtonClicked(object sender, EventArgs e)
|
private void Control_OnButtonClicked(object sender, EventArgs e)
|
||||||
|
|
|
@ -156,15 +156,6 @@ namespace v2rayN
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string CustomIconName = "v2rayN.ico";
|
public const string CustomIconName = "v2rayN.ico";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 表格列的排序方式
|
|
||||||
/// </summary>
|
|
||||||
public enum sortMode
|
|
||||||
{
|
|
||||||
Numeric,
|
|
||||||
// More, like natural numbers, string length, visual length, etc.
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum StatisticsFreshRate
|
public enum StatisticsFreshRate
|
||||||
{
|
{
|
||||||
quick = 1000,
|
quick = 1000,
|
||||||
|
@ -180,37 +171,61 @@ namespace v2rayN
|
||||||
#region 全局变量
|
#region 全局变量
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否需要重启服务V2ray。如果为假,LoadV2ray()不做任何事。
|
/// 是否需要重启服务V2ray
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool reloadV2ray { get; set; }
|
public static bool reloadV2ray
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否开启全局代理(http)
|
/// 是否开启全局代理(http)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool sysAgent { get; set; }
|
public static bool sysAgent
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// socks端口
|
/// socks端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int socksPort { get; set; }
|
public static int socksPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// http端口
|
/// http端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int httpPort { get; set; }
|
public static int httpPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// PAC端口
|
/// PAC端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int pacPort { get; set; }
|
public static int pacPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int statePort { get; set; }
|
public static int statePort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public static Job processJob { get; set; }
|
public static Job processJob
|
||||||
public static System.Threading.Mutex mutexObj { get; set; }
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public static System.Threading.Mutex mutexObj
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,10 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
config.domainStrategy = "IPIfNonMatch";
|
config.domainStrategy = "IPIfNonMatch";
|
||||||
}
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(config.routingMode))
|
||||||
|
{
|
||||||
|
config.routingMode = "0";
|
||||||
|
}
|
||||||
if (config.useragent == null)
|
if (config.useragent == null)
|
||||||
{
|
{
|
||||||
config.useragent = new List<string>();
|
config.useragent = new List<string>();
|
||||||
|
@ -133,6 +137,10 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
config.speedPingTestUrl = Global.SpeedPingTestUrl;
|
config.speedPingTestUrl = Global.SpeedPingTestUrl;
|
||||||
}
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(config.urlGFWList))
|
||||||
|
{
|
||||||
|
config.urlGFWList = Global.GFWLIST_URL;
|
||||||
|
}
|
||||||
//if (Utils.IsNullOrEmpty(config.remoteDNS))
|
//if (Utils.IsNullOrEmpty(config.remoteDNS))
|
||||||
//{
|
//{
|
||||||
// config.remoteDNS = "1.1.1.1";
|
// config.remoteDNS = "1.1.1.1";
|
||||||
|
@ -219,7 +227,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -260,7 +268,7 @@ namespace v2rayN.Handler
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -298,7 +306,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -324,22 +332,32 @@ namespace v2rayN.Handler
|
||||||
config.index = index;
|
config.index = index;
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存设置文件
|
/// 保参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
public static int SaveConfigToFile(ref Config config)
|
/// <returns></returns>
|
||||||
|
public static int SaveConfig(ref Config config, bool reload = true)
|
||||||
{
|
{
|
||||||
return Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
Global.reloadV2ray = reload;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
public static int SaveConfigToFile(Config config)
|
|
||||||
|
/// <summary>
|
||||||
|
/// 存储文件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
private static void ToJsonFile(Config config)
|
||||||
{
|
{
|
||||||
return Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -523,7 +541,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -562,7 +580,7 @@ namespace v2rayN.Handler
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -583,7 +601,7 @@ namespace v2rayN.Handler
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -624,7 +642,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -663,7 +681,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -844,7 +862,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -868,7 +886,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConfigToFile(config);
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,11 +97,11 @@ namespace v2rayN.Handler
|
||||||
configCopy.index = index;
|
configCopy.index = index;
|
||||||
if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out string msg) != 0)
|
if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out string msg) != 0)
|
||||||
{
|
{
|
||||||
UI.ShowWarning(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,11 +137,11 @@ namespace v2rayN.Handler
|
||||||
configCopy.index = index;
|
configCopy.index = index;
|
||||||
if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out string msg) != 0)
|
if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out string msg) != 0)
|
||||||
{
|
{
|
||||||
UI.ShowWarning(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,9 @@ namespace v2rayN.Handler
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int httpPort = _config.GetLocalPort(Global.InboundHttp);
|
int httpPort = _config.GetLocalPort(Global.InboundHttp);
|
||||||
|
|
||||||
|
Task<int> t = Task.Run(() =>
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
@ -163,6 +166,8 @@ namespace v2rayN.Handler
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
return t.Result;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,9 +20,15 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
Action<ulong, ulong, List<ServerStatItem>> updateFunc_;
|
Action<ulong, ulong, List<ServerStatItem>> updateFunc_;
|
||||||
|
|
||||||
public bool Enable { get; set; }
|
public bool Enable
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public bool UpdateUI { get; set; }
|
public bool UpdateUI
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public List<ServerStatItem> Statistic
|
public List<ServerStatItem> Statistic
|
||||||
{
|
{
|
||||||
|
|
|
@ -195,15 +195,15 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
switch (config.routingMode)
|
switch (config.routingMode)
|
||||||
{
|
{
|
||||||
case 0:
|
case "0":
|
||||||
break;
|
break;
|
||||||
case 1:
|
case "1":
|
||||||
routingGeo("ip", "private", Global.directTag, ref v2rayConfig);
|
routingGeo("ip", "private", Global.directTag, ref v2rayConfig);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case "2":
|
||||||
routingGeo("", "cn", Global.directTag, ref v2rayConfig);
|
routingGeo("", "cn", Global.directTag, ref v2rayConfig);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case "3":
|
||||||
routingGeo("ip", "private", Global.directTag, ref v2rayConfig);
|
routingGeo("ip", "private", Global.directTag, ref v2rayConfig);
|
||||||
routingGeo("", "cn", Global.directTag, ref v2rayConfig);
|
routingGeo("", "cn", Global.directTag, ref v2rayConfig);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
|
@ -39,18 +38,21 @@ namespace v2rayN.Handler
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 载入V2ray
|
/// 载入V2ray
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Task LoadV2ray(Config config)
|
public void LoadV2ray(Config config)
|
||||||
{
|
{
|
||||||
return Task.Run(() =>
|
if (Global.reloadV2ray)
|
||||||
{
|
{
|
||||||
if (!Global.reloadV2ray) return;
|
|
||||||
|
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
string fileName = Utils.GetPath(v2rayConfigRes);
|
||||||
bool bOk = V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out string msg) == 0;
|
if (V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out string msg) != 0)
|
||||||
ShowMsg(bOk, msg);
|
{
|
||||||
if (bOk)
|
ShowMsg(false, msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowMsg(true, msg);
|
||||||
V2rayRestart();
|
V2rayRestart();
|
||||||
});
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -303,7 +305,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (p.HasExited) return;
|
|
||||||
p.CloseMainWindow();
|
p.CloseMainWindow();
|
||||||
p.WaitForExit(100);
|
p.WaitForExit(100);
|
||||||
if (!p.HasExited)
|
if (!p.HasExited)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.HttpProxyHandler
|
namespace v2rayN.HttpProxyHandler
|
||||||
|
@ -149,9 +148,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
/// <param name="forced"></param>
|
/// <param name="forced"></param>
|
||||||
public static Task RestartHttpAgent(Config config, bool forced)
|
public static void RestartHttpAgent(Config config, bool forced)
|
||||||
{
|
|
||||||
return Task.Run(() =>
|
|
||||||
{
|
{
|
||||||
bool isRestart = false;
|
bool isRestart = false;
|
||||||
if (config.listenerType == ListenerType.noHttpProxy)
|
if (config.listenerType == ListenerType.noHttpProxy)
|
||||||
|
@ -178,7 +175,6 @@ namespace v2rayN.HttpProxyHandler
|
||||||
StartHttpAgent(config);
|
StartHttpAgent(config);
|
||||||
}
|
}
|
||||||
Update(config, false);
|
Update(config, false);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetPacUrl()
|
public static string GetPacUrl()
|
||||||
|
|
|
@ -55,7 +55,10 @@ namespace v2rayN.HttpProxyHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int RunningPort { get; set; }
|
public int RunningPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public void Restart(int localPort, Config config)
|
public void Restart(int localPort, Config config)
|
||||||
{
|
{
|
||||||
|
@ -138,7 +141,6 @@ namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (p.HasExited) return; // someting, while the GUI app is exiting.
|
|
||||||
p.CloseMainWindow();
|
p.CloseMainWindow();
|
||||||
p.WaitForExit(100);
|
p.WaitForExit(100);
|
||||||
if (!p.HasExited)
|
if (!p.HasExited)
|
||||||
|
|
|
@ -15,127 +15,197 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地监听
|
/// 本地监听
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<InItem> inbound { get; set; }
|
public List<InItem> inbound
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 允许日志
|
/// 允许日志
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool logEnabled { get; set; }
|
public bool logEnabled
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 日志等级
|
/// 日志等级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string loglevel { get; set; }
|
public string loglevel
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 活动配置序号
|
/// 活动配置序号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int index { get; set; }
|
public int index
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// vmess服务器信息
|
/// vmess服务器信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<VmessItem> vmess { get; set; }
|
public List<VmessItem> vmess
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 允许Mux多路复用
|
/// 允许Mux多路复用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool muxEnabled { get; set; }
|
public bool muxEnabled
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 域名解析策略
|
/// 域名解析策略
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string domainStrategy { get; set; }
|
public string domainStrategy
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路由模式
|
/// 路由模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int routingMode { get; set; }
|
public string routingMode
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户自定义需代理的网址或ip
|
/// 用户自定义需代理的网址或ip
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> useragent { get; set; }
|
public List<string> useragent
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户自定义直连的网址或ip
|
/// 用户自定义直连的网址或ip
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> userdirect { get; set; }
|
public List<string> userdirect
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户自定义阻止的网址或ip
|
/// 用户自定义阻止的网址或ip
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> userblock { get; set; }
|
public List<string> userblock
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// KcpItem
|
/// KcpItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public KcpItem kcpItem { get; set; }
|
public KcpItem kcpItem
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 监听状态
|
/// 监听状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ListenerType listenerType { get; set; }
|
public ListenerType listenerType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义服务器下载测速url
|
/// 自定义服务器下载测速url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string speedTestUrl { get; set; }
|
public string speedTestUrl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义“服务器真连接延迟”测试url
|
/// 自定义“服务器真连接延迟”测试url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string speedPingTestUrl { get; set; }
|
public string speedPingTestUrl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义GFWList url。空白则使用 Global.GFWLIST_URL
|
/// 自定义GFWList url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string urlGFWList { get; set; }
|
public string urlGFWList
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 允许来自局域网的连接
|
/// 允许来自局域网的连接
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool allowLANConn { get; set; }
|
public bool allowLANConn
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 启用实时网速和流量统计
|
/// 启用实时网速和流量统计
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool enableStatistics { get; set; }
|
public bool enableStatistics
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 去重时优先保留较旧(顶部)节点
|
/// 去重时优先保留较旧(顶部)节点
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool keepOlderDedupl { get; set; }
|
public bool keepOlderDedupl
|
||||||
|
{
|
||||||
/// <summary>
|
get; set;
|
||||||
/// 服务器列表隔行着色
|
}
|
||||||
/// </summary>
|
|
||||||
public bool interlaceColoring { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 视图刷新率
|
/// 视图刷新率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int statisticsFreshRate { get; set; }
|
public int statisticsFreshRate
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义远程DNS
|
/// 自定义远程DNS
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string remoteDNS { get; set; }
|
public string remoteDNS
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否允许不安全连接
|
/// 是否允许不安全连接
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string defaultAllowInsecure { get; set; }
|
public string defaultAllowInsecure
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订阅
|
/// 订阅
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<SubItem> subItem { get; set; }
|
public List<SubItem> subItem
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// UI
|
/// UI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public UIItem uiItem { get; set; }
|
public UIItem uiItem
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public List<string> userPacRule { get; set; }
|
public List<string> userPacRule
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
#region 函数
|
#region 函数
|
||||||
|
|
||||||
|
@ -389,77 +459,125 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 版本(现在=2)
|
/// 版本(现在=2)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int configVersion { get; set; }
|
public int configVersion
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器地址
|
/// 远程服务器地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string address { get; set; }
|
public string address
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器端口
|
/// 远程服务器端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int port { get; set; }
|
public int port
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器ID
|
/// 远程服务器ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string id { get; set; }
|
public string id
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器额外ID
|
/// 远程服务器额外ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int alterId { get; set; }
|
public int alterId
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地安全策略
|
/// 本地安全策略
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string security { get; set; }
|
public string security
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// tcp,kcp,ws,h2,quic
|
/// tcp,kcp,ws,h2,quic
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string network { get; set; }
|
public string network
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 备注或别名
|
/// 备注或别名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string remarks { get; set; }
|
public string remarks
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 伪装类型
|
/// 伪装类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string headerType { get; set; }
|
public string headerType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 伪装的域名
|
/// 伪装的域名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string requestHost { get; set; }
|
public string requestHost
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ws h2 path
|
/// ws h2 path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string path { get; set; }
|
public string path
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 底层传输安全
|
/// 底层传输安全
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string streamSecurity { get; set; }
|
public string streamSecurity
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否允许不安全连接(用于客户端)
|
/// 是否允许不安全连接(用于客户端)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string allowInsecure { get; set; }
|
public string allowInsecure
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// config type(1=normal,2=custom)
|
/// config type(1=normal,2=custom)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int configType { get; set; }
|
public int configType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string testResult { get; set; }
|
public string testResult
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SubItem id
|
/// SubItem id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string subid { get; set; }
|
public string subid
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
@ -468,17 +586,26 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本地监听端口
|
/// 本地监听端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int localPort { get; set; }
|
public int localPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 协议,默认为socks
|
/// 协议,默认为socks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string protocol { get; set; }
|
public string protocol
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 允许udp
|
/// 允许udp
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool udpEnabled { get; set; }
|
public bool udpEnabled
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开启流量探测
|
/// 开启流量探测
|
||||||
|
@ -492,31 +619,52 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int mtu { get; set; }
|
public int mtu
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int tti { get; set; }
|
public int tti
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int uplinkCapacity { get; set; }
|
public int uplinkCapacity
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int downlinkCapacity { get; set; }
|
public int downlinkCapacity
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool congestion { get; set; }
|
public bool congestion
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int readBufferSize { get; set; }
|
public int readBufferSize
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int writeBufferSize { get; set; }
|
public int writeBufferSize
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -526,15 +674,27 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string id { get; set; }
|
public string id
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 备注
|
/// 备注
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string remarks { get; set; }
|
public string remarks
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// url
|
/// url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string url { get; set; }
|
public string url
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// enable
|
/// enable
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -544,8 +704,16 @@ namespace v2rayN.Mode
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class UIItem
|
public class UIItem
|
||||||
{
|
{
|
||||||
public System.Drawing.Size mainSize { get; set; }
|
|
||||||
public Dictionary<string, int> mainLvColWidth { get; set; }
|
|
||||||
public List<string> mainLvColLayout { get; set; }
|
public System.Drawing.Size mainSize
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, int> mainLvColWidth
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,17 +6,38 @@ namespace v2rayN.Mode
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class ServerStatistics
|
public class ServerStatistics
|
||||||
{
|
{
|
||||||
public List<ServerStatItem> server { get; set; }
|
public List<ServerStatItem> server
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class ServerStatItem
|
public class ServerStatItem
|
||||||
{
|
{
|
||||||
public string itemId { get; set; }
|
public string itemId
|
||||||
public ulong totalUp { get; set; }
|
{
|
||||||
public ulong totalDown { get; set; }
|
get; set;
|
||||||
public ulong todayUp { get; set; }
|
}
|
||||||
public ulong todayDown { get; set; }
|
public ulong totalUp
|
||||||
public long dateNow { get; set; }
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public ulong totalDown
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public ulong todayUp
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public ulong todayDown
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public long dateNow
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,46 +8,46 @@ namespace v2rayN.Mode
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 版本
|
/// 版本
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string v { get; set; }
|
public string v { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 备注
|
/// 备注
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ps { get; set; }
|
public string ps { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器地址
|
/// 远程服务器地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string add { get; set; }
|
public string add { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器端口
|
/// 远程服务器端口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string port { get; set; }
|
public string port { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器ID
|
/// 远程服务器ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string id { get; set; }
|
public string id { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 远程服务器额外ID
|
/// 远程服务器额外ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string aid { get; set; }
|
public string aid { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 传输协议tcp,kcp,ws
|
/// 传输协议tcp,kcp,ws
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string net { get; set; }
|
public string net { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 伪装类型
|
/// 伪装类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string type { get; set; }
|
public string type { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 伪装的域名
|
/// 伪装的域名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string host { get; set; }
|
public string host { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// path
|
/// path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string path { get; set; }
|
public string path { get; set; } = string.Empty;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 底层传输安全
|
/// 底层传输安全
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string tls { get; set; }
|
public string tls { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
2
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
|
@ -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", "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 Resources {
|
internal class Resources {
|
||||||
|
|
|
@ -118,55 +118,55 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="privoxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\privoxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="abp_js" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\abp.js.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="checkupdate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<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>
|
|
||||||
</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>
|
||||||
<data name="pac_txt" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\pac.txt.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="privoxy_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
|
||||||
</data>
|
|
||||||
<data name="privoxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\privoxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="promotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="restart" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="restart" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="server" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="sub" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="sysproxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="sysproxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sub" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="server" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</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="checkupdate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="promotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="sysproxy64_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="sysproxy64_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="privoxy_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||||
|
</data>
|
||||||
|
<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>
|
||||||
|
</data>
|
||||||
|
<data name="pac_txt" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pac.txt.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="abp_js" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\abp.js.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
56
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
56
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
|
@ -484,7 +484,7 @@ namespace v2rayN.Resx {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Write PAC success 的本地化字符串。
|
/// 查找类似 Simplify PAC Success 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string MsgSimplifyPAC {
|
internal static string MsgSimplifyPAC {
|
||||||
get {
|
get {
|
||||||
|
@ -690,42 +690,6 @@ namespace v2rayN.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Bypass CN 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string RoutingModeBypassCN {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RoutingModeBypassCN", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Bypass LAN 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string RoutingModeBypassLAN {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RoutingModeBypassLAN", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Bypass LAN+CN 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string RoutingModeBypassLANCN {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RoutingModeBypassLANCN", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Global 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string RoutingModeGlobal {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RoutingModeGlobal", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。
|
/// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -744,15 +708,6 @@ namespace v2rayN.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 ... 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string ServerLatencyChecking {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ServerLatencyChecking", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 SlowFresh 的本地化字符串。
|
/// 查找类似 SlowFresh 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -834,14 +789,5 @@ namespace v2rayN.Resx {
|
||||||
return ResourceManager.GetString("TestMeOutput", resourceCulture);
|
return ResourceManager.GetString("TestMeOutput", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Latency: {0} 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string toolSslServerLatency {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("toolSslServerLatency", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,7 @@
|
||||||
<value>Resolve {0} successfully</value>
|
<value>Resolve {0} successfully</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSimplifyPAC" xml:space="preserve">
|
<data name="MsgSimplifyPAC" xml:space="preserve">
|
||||||
<value>Write PAC success</value>
|
<value>Simplify PAC Success</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
||||||
<value>Start getting subscriptions</value>
|
<value>Start getting subscriptions</value>
|
||||||
|
@ -327,27 +327,12 @@
|
||||||
<data name="RemoveServer" xml:space="preserve">
|
<data name="RemoveServer" xml:space="preserve">
|
||||||
<value>Are you sure to remove the server?</value>
|
<value>Are you sure to remove the server?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingModeBypassCN" xml:space="preserve">
|
|
||||||
<value>Bypass CN</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeBypassLAN" xml:space="preserve">
|
|
||||||
<value>Bypass LAN</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeBypassLANCN" xml:space="preserve">
|
|
||||||
<value>Bypass LAN+CN</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeGlobal" xml:space="preserve">
|
|
||||||
<value>Global</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
||||||
<value>The client configuration file is saved at: {0}</value>
|
<value>The client configuration file is saved at: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
||||||
<value>The server configuration file is saved at: {0}</value>
|
<value>The server configuration file is saved at: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ServerLatencyChecking" xml:space="preserve">
|
|
||||||
<value>...</value>
|
|
||||||
</data>
|
|
||||||
<data name="SlowFresh" xml:space="preserve">
|
<data name="SlowFresh" xml:space="preserve">
|
||||||
<value>SlowFresh</value>
|
<value>SlowFresh</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -376,7 +361,4 @@
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>The ping of current service: {0}</value>
|
<value>The ping of current service: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerLatency" xml:space="preserve">
|
|
||||||
<value>Latency: {0}</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -259,7 +259,7 @@
|
||||||
<value>解析{0}成功</value>
|
<value>解析{0}成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSimplifyPAC" xml:space="preserve">
|
<data name="MsgSimplifyPAC" xml:space="preserve">
|
||||||
<value>成功写入PAC</value>
|
<value>简化PAC成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
||||||
<value>开始获取订阅内容</value>
|
<value>开始获取订阅内容</value>
|
||||||
|
@ -274,13 +274,13 @@
|
||||||
<value>订阅内容解码失败(非BASE64码)</value>
|
<value>订阅内容解码失败(非BASE64码)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUnpacking" xml:space="preserve">
|
<data name="MsgUnpacking" xml:space="preserve">
|
||||||
<value>正在解压...</value>
|
<value>正在解压......</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUpdateSubscriptionEnd" xml:space="preserve">
|
<data name="MsgUpdateSubscriptionEnd" xml:space="preserve">
|
||||||
<value>订阅内容已更新</value>
|
<value>更新订阅结束</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUpdateSubscriptionStart" xml:space="preserve">
|
<data name="MsgUpdateSubscriptionStart" xml:space="preserve">
|
||||||
<value>开始更新订阅</value>
|
<value>更新订阅开始</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUpdateV2rayCoreSuccessfully" xml:space="preserve">
|
<data name="MsgUpdateV2rayCoreSuccessfully" xml:space="preserve">
|
||||||
<value>更新V2rayCore成功</value>
|
<value>更新V2rayCore成功</value>
|
||||||
|
@ -327,27 +327,12 @@
|
||||||
<data name="RemoveServer" xml:space="preserve">
|
<data name="RemoveServer" xml:space="preserve">
|
||||||
<value>是否确定移除服务器?</value>
|
<value>是否确定移除服务器?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingModeBypassCN" xml:space="preserve">
|
|
||||||
<value>绕过大陆</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeBypassLAN" xml:space="preserve">
|
|
||||||
<value>绕过局域网</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeBypassLANCN" xml:space="preserve">
|
|
||||||
<value>绕过局域网和大陆</value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingModeGlobal" xml:space="preserve">
|
|
||||||
<value>路由: 全局</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
||||||
<value>客户端配置文件保存在:{0}</value>
|
<value>客户端配置文件保存在:{0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
||||||
<value>服务端配置文件保存在:{0}</value>
|
<value>服务端配置文件保存在:{0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ServerLatencyChecking" xml:space="preserve">
|
|
||||||
<value>...</value>
|
|
||||||
</data>
|
|
||||||
<data name="SlowFresh" xml:space="preserve">
|
<data name="SlowFresh" xml:space="preserve">
|
||||||
<value>慢</value>
|
<value>慢</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -376,7 +361,4 @@
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>当前服务的真连接延迟: {0}</value>
|
<value>当前服务的真连接延迟: {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerLatency" xml:space="preserve">
|
|
||||||
<value>延迟: {0}</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -168,7 +168,7 @@ namespace v2rayN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 换行或逗号分隔的字符串,转List<string>
|
/// 逗号分隔的字符串,转List<string>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="str"></param>
|
/// <param name="str"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -176,7 +176,7 @@ namespace v2rayN
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
str = str.Replace("\r", ",").Replace("\n", ","); // 用户复制的可能是\r、\n或\r\n
|
str = str.Replace(Environment.NewLine, "");
|
||||||
return new List<string>(str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
|
return new List<string>(str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -318,10 +318,6 @@ namespace v2rayN
|
||||||
return $"{string.Format("{0:f1}", result)} {unit}";
|
return $"{string.Format("{0:f1}", result)} {unit}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int ServerVmIndexof(List<Mode.VmessItem> source, Mode.VmessItem findIt)
|
|
||||||
{
|
|
||||||
return source.IndexOf(findIt);
|
|
||||||
}
|
|
||||||
public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result, bool keepOlder)
|
public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result, bool keepOlder)
|
||||||
{
|
{
|
||||||
List<Mode.VmessItem> list = new List<Mode.VmessItem>();
|
List<Mode.VmessItem> list = new List<Mode.VmessItem>();
|
||||||
|
|
|
@ -97,7 +97,6 @@
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Base\ListViewSort.cs" />
|
|
||||||
<Compile Include="Forms\AddServer4Form.cs">
|
<Compile Include="Forms\AddServer4Form.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 66 KiB |
2
v2rayN/v2rayUpgrade/MainForm.Designer.cs
generated
2
v2rayN/v2rayUpgrade/MainForm.Designer.cs
generated
|
@ -60,6 +60,7 @@
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.label1.Location = new System.Drawing.Point(79, 64);
|
this.label1.Location = new System.Drawing.Point(79, 64);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(205, 15);
|
this.label1.Size = new System.Drawing.Size(205, 15);
|
||||||
|
@ -69,6 +70,7 @@
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.label2.Location = new System.Drawing.Point(79, 37);
|
this.label2.Location = new System.Drawing.Point(79, 37);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(471, 15);
|
this.label2.Size = new System.Drawing.Size(471, 15);
|
||||||
|
|
Loading…
Reference in a new issue