diff --git a/v2rayN/v2rayN/Base/HttpWebServer.cs b/v2rayN/v2rayN/Base/HttpWebServer.cs
index 152dcab9..bbf26c53 100644
--- a/v2rayN/v2rayN/Base/HttpWebServer.cs
+++ b/v2rayN/v2rayN/Base/HttpWebServer.cs
@@ -61,6 +61,7 @@ namespace v2rayN.Base
try
{
string address = ctx.Request.LocalEndPoint.Address.ToString();
+ Utils.SaveLog("Webserver Request " + address);
string rstr = _responderMethod(address);
byte[] buf = Encoding.UTF8.GetBytes(rstr);
ctx.Response.StatusCode = 200;
diff --git a/v2rayN/v2rayN/Base/HttpWebServerB.cs b/v2rayN/v2rayN/Base/HttpWebServerB.cs
index 0aef834b..a440efec 100644
--- a/v2rayN/v2rayN/Base/HttpWebServerB.cs
+++ b/v2rayN/v2rayN/Base/HttpWebServerB.cs
@@ -39,8 +39,15 @@ namespace v2rayN.Base
while (true)
{
+ if (!listener.Pending())
+ {
+ Thread.Sleep(100);
+ continue;
+ }
+
TcpClient socket = listener.AcceptTcpClient();
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
+ thread.IsBackground = true;
thread.Start(socket);
Thread.Sleep(1);
}
@@ -62,6 +69,7 @@ namespace v2rayN.Base
if (_responderMethod != null)
{
var address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
+ Utils.SaveLog("WebserverB Request " + address);
string pac = _responderMethod(address);
if (inputStream.CanWrite)
diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs
index 2fd4953c..ae49c6ef 100644
--- a/v2rayN/v2rayN/Forms/MainForm.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.cs
@@ -33,6 +33,14 @@ namespace v2rayN.Forms
Application.ApplicationExit += (sender, args) =>
{
Utils.ClearTempPath();
+
+ v2rayHandler.V2rayStop();
+ HttpProxyHandle.Update(config, true);
+ HttpProxyHandle.CloseHttpAgent(config);
+ PACServerHandle.Stop();
+
+ ConfigHandler.SaveConfig(ref config);
+ statistics?.SaveToFile();
statistics?.Close();
};
}
@@ -79,18 +87,9 @@ namespace v2rayN.Forms
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
-
- statistics?.SaveToFile();
-
HideForm();
return;
- }
- if (e.CloseReason == CloseReason.ApplicationExitCall)
- {
- ConfigHandler.SaveConfig(ref config);
- statistics?.SaveToFile();
- statistics?.Close();
- }
+ }
}
private void MainForm_Resize(object sender, EventArgs e)
@@ -117,7 +116,7 @@ namespace v2rayN.Forms
{
case WM_QUERYENDSESSION:
Utils.SaveLog("Windows shutdown UnsetProxy");
- //CloseV2ray();
+
ConfigHandler.ToJsonFile(config);
statistics?.SaveToFile();
ProxySetting.UnsetProxy();
@@ -329,7 +328,7 @@ namespace v2rayN.Forms
if (config.sysAgentEnabled)
{
- toolSslHttpPort.Text = $"{Global.Loopback}:{Global.sysAgentPort}";
+ toolSslHttpPort.Text = $"{Global.Loopback}:{Global.httpPort}";
if (config.listenerType == 2 || config.listenerType == 4)
{
if (PACServerHandle.IsRunning)
@@ -1007,16 +1006,11 @@ namespace v2rayN.Forms
}
private void menuExit_Click(object sender, EventArgs e)
- {
- CloseV2ray();
+ {
this.Visible = false;
- this.Close();
-
- statistics?.Close();
-
- //this.Dispose();
- //System.Environment.Exit(System.Environment.ExitCode);
+ this.Close();
+
Application.Exit();
}
@@ -1253,7 +1247,7 @@ namespace v2rayN.Forms
{
if (isChecked)
{
- if (HttpProxyHandle.RestartHttpAgent(config, true))
+ if (HttpProxyHandle.RestartHttpAgent(config, false))
{
ChangePACButtonStatus(config.listenerType);
}
@@ -1300,7 +1294,7 @@ namespace v2rayN.Forms
}
else
{
- downloadHandle.DownloadFileAsync(config, url, false);
+ downloadHandle.DownloadFileAsync(config, url, null);
}
}));
}
diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
index d44d446a..3226c21f 100644
--- a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
+++ b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
@@ -28,7 +28,6 @@
///
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm));
this.btnClose = new System.Windows.Forms.Button();
this.tabControl1 = new System.Windows.Forms.TabControl();
@@ -63,8 +62,9 @@
this.txtUserblock = new System.Windows.Forms.TextBox();
this.panel3 = new System.Windows.Forms.Panel();
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
- this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
this.labRoutingTips = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
this.label15 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
@@ -95,7 +95,6 @@
this.panel2 = new System.Windows.Forms.Panel();
this.btnOK = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
- this.configBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox1.SuspendLayout();
@@ -109,36 +108,36 @@
this.tabPage6.SuspendLayout();
this.tabPage7.SuspendLayout();
this.panel2.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.configBindingSource)).BeginInit();
this.SuspendLayout();
//
// btnClose
//
- this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
+ this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// tabControl1
//
+ resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage6);
this.tabControl1.Controls.Add(this.tabPage7);
- resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
//
// tabPage1
//
- this.tabPage1.Controls.Add(this.groupBox1);
resources.ApplyResources(this.tabPage1, "tabPage1");
+ this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox1
//
+ resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
this.groupBox1.Controls.Add(this.chksniffingEnabled);
this.groupBox1.Controls.Add(this.txtremoteDNS);
@@ -157,7 +156,6 @@
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.txtlocalPort);
this.groupBox1.Controls.Add(this.label2);
- resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
@@ -204,12 +202,12 @@
//
// cmbprotocol2
//
+ resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2");
this.cmbprotocol2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbprotocol2.FormattingEnabled = true;
this.cmbprotocol2.Items.AddRange(new object[] {
resources.GetString("cmbprotocol2.Items"),
resources.GetString("cmbprotocol2.Items1")});
- resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2");
this.cmbprotocol2.Name = "cmbprotocol2";
//
// label3
@@ -224,8 +222,8 @@
//
// cmbprotocol
//
- this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
+ this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbprotocol.FormattingEnabled = true;
this.cmbprotocol.Items.AddRange(new object[] {
resources.GetString("cmbprotocol.Items"),
@@ -251,6 +249,7 @@
//
// cmbloglevel
//
+ resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbloglevel.FormattingEnabled = true;
this.cmbloglevel.Items.AddRange(new object[] {
@@ -259,7 +258,6 @@
resources.GetString("cmbloglevel.Items2"),
resources.GetString("cmbloglevel.Items3"),
resources.GetString("cmbloglevel.Items4")});
- resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.Name = "cmbloglevel";
//
// label5
@@ -279,32 +277,32 @@
//
// tabPage2
//
- this.tabPage2.Controls.Add(this.groupBox2);
resources.ApplyResources(this.tabPage2, "tabPage2");
+ this.tabPage2.Controls.Add(this.groupBox2);
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
// groupBox2
//
+ resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.tabControl2);
this.groupBox2.Controls.Add(this.panel3);
- resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
// tabControl2
//
+ resources.ApplyResources(this.tabControl2, "tabControl2");
this.tabControl2.Controls.Add(this.tabPage3);
this.tabControl2.Controls.Add(this.tabPage4);
this.tabControl2.Controls.Add(this.tabPage5);
- resources.ApplyResources(this.tabControl2, "tabControl2");
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
//
// tabPage3
//
- this.tabPage3.Controls.Add(this.txtUseragent);
resources.ApplyResources(this.tabPage3, "tabPage3");
+ this.tabPage3.Controls.Add(this.txtUseragent);
this.tabPage3.Name = "tabPage3";
this.tabPage3.UseVisualStyleBackColor = true;
//
@@ -315,8 +313,8 @@
//
// tabPage4
//
- this.tabPage4.Controls.Add(this.txtUserdirect);
resources.ApplyResources(this.tabPage4, "tabPage4");
+ this.tabPage4.Controls.Add(this.txtUserdirect);
this.tabPage4.Name = "tabPage4";
this.tabPage4.UseVisualStyleBackColor = true;
//
@@ -327,8 +325,8 @@
//
// tabPage5
//
- this.tabPage5.Controls.Add(this.txtUserblock);
resources.ApplyResources(this.tabPage5, "tabPage5");
+ this.tabPage5.Controls.Add(this.txtUserblock);
this.tabPage5.Name = "tabPage5";
this.tabPage5.UseVisualStyleBackColor = true;
//
@@ -339,13 +337,14 @@
//
// panel3
//
+ resources.ApplyResources(this.panel3, "panel3");
this.panel3.Controls.Add(this.btnSetDefRountingRule);
- this.panel3.Controls.Add(this.cmbdomainStrategy);
this.panel3.Controls.Add(this.labRoutingTips);
+ this.panel3.Controls.Add(this.label4);
+ this.panel3.Controls.Add(this.cmbdomainStrategy);
this.panel3.Controls.Add(this.label15);
this.panel3.Controls.Add(this.label12);
this.panel3.Controls.Add(this.cmbroutingMode);
- resources.ApplyResources(this.panel3, "panel3");
this.panel3.Name = "panel3";
//
// btnSetDefRountingRule
@@ -355,23 +354,29 @@
this.btnSetDefRountingRule.UseVisualStyleBackColor = true;
this.btnSetDefRountingRule.Click += new System.EventHandler(this.btnSetDefRountingRule_Click);
//
+ // labRoutingTips
+ //
+ resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
+ this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
+ this.labRoutingTips.Name = "labRoutingTips";
+ //
+ // label4
+ //
+ resources.ApplyResources(this.label4, "label4");
+ this.label4.ForeColor = System.Drawing.Color.Brown;
+ this.label4.Name = "label4";
+ //
// cmbdomainStrategy
//
+ resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbdomainStrategy.FormattingEnabled = true;
this.cmbdomainStrategy.Items.AddRange(new object[] {
resources.GetString("cmbdomainStrategy.Items"),
resources.GetString("cmbdomainStrategy.Items1"),
resources.GetString("cmbdomainStrategy.Items2")});
- resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
//
- // labRoutingTips
- //
- this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
- resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
- this.labRoutingTips.Name = "labRoutingTips";
- //
// label15
//
resources.ApplyResources(this.label15, "label15");
@@ -384,6 +389,7 @@
//
// cmbroutingMode
//
+ resources.ApplyResources(this.cmbroutingMode, "cmbroutingMode");
this.cmbroutingMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbroutingMode.FormattingEnabled = true;
this.cmbroutingMode.Items.AddRange(new object[] {
@@ -391,11 +397,11 @@
resources.GetString("cmbroutingMode.Items1"),
resources.GetString("cmbroutingMode.Items2"),
resources.GetString("cmbroutingMode.Items3")});
- resources.ApplyResources(this.cmbroutingMode, "cmbroutingMode");
this.cmbroutingMode.Name = "cmbroutingMode";
//
// tabPage6
//
+ resources.ApplyResources(this.tabPage6, "tabPage6");
this.tabPage6.Controls.Add(this.chkKcpcongestion);
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
this.tabPage6.Controls.Add(this.label10);
@@ -409,7 +415,6 @@
this.tabPage6.Controls.Add(this.label7);
this.tabPage6.Controls.Add(this.txtKcpmtu);
this.tabPage6.Controls.Add(this.label6);
- resources.ApplyResources(this.tabPage6, "tabPage6");
this.tabPage6.Name = "tabPage6";
this.tabPage6.UseVisualStyleBackColor = true;
//
@@ -481,6 +486,7 @@
//
// tabPage7
//
+ resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Controls.Add(this.cbFreshrate);
this.tabPage7.Controls.Add(this.tbCacheDays);
this.tabPage7.Controls.Add(this.lbFreshrate);
@@ -490,15 +496,14 @@
this.tabPage7.Controls.Add(this.txturlGFWList);
this.tabPage7.Controls.Add(this.label13);
this.tabPage7.Controls.Add(this.chkAutoRun);
- resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Name = "tabPage7";
this.tabPage7.UseVisualStyleBackColor = true;
//
// cbFreshrate
//
+ resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbFreshrate.FormattingEnabled = true;
- resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
this.cbFreshrate.Name = "cbFreshrate";
//
// tbCacheDays
@@ -546,9 +551,9 @@
//
// panel2
//
+ resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
- resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -563,10 +568,6 @@
resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
//
- // configBindingSource
- //
- this.configBindingSource.DataSource = typeof(v2rayN.Mode.Config);
- //
// OptionSettingForm
//
resources.ApplyResources(this, "$this");
@@ -598,7 +599,6 @@
this.tabPage7.ResumeLayout(false);
this.tabPage7.PerformLayout();
this.panel2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.configBindingSource)).EndInit();
this.ResumeLayout(false);
}
@@ -670,6 +670,6 @@
private System.Windows.Forms.Label lbCacheDays;
private System.Windows.Forms.ComboBox cbFreshrate;
private System.Windows.Forms.Label lbFreshrate;
- private System.Windows.Forms.BindingSource configBindingSource;
+ private System.Windows.Forms.Label label4;
}
}
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.cs
index b6cd232e..83dc9f30 100644
--- a/v2rayN/v2rayN/Forms/OptionSettingForm.cs
+++ b/v2rayN/v2rayN/Forms/OptionSettingForm.cs
@@ -45,7 +45,7 @@ namespace v2rayN.Forms
chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled;
txtlocalPort2.Text = "socks + 1";
- cmbprotocol2.Text = "http";
+ cmbprotocol2.Text = Global.InboundHttp;
if (config.inbound.Count > 1)
{
diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.resx
index e5c266e3..179856b4 100644
--- a/v2rayN/v2rayN/Forms/OptionSettingForm.resx
+++ b/v2rayN/v2rayN/Forms/OptionSettingForm.resx
@@ -117,575 +117,35 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 355, 16
-
-
- 75, 23
-
-
- 7
-
-
- &Cancel
-
-
- btnClose
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 0
-
-
- groupBox1
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage1
-
-
- 0
-
-
- 4, 22
+
+ True
-
- 3, 3, 3, 3
+
+ NoControl
-
- 630, 579
+
+ 11
-
- 0
-
-
- Core: basic settings
-
-
- tabPage1
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl1
-
-
- 0
-
-
- Fill
-
-
- 3, 3
-
-
- 0
-
-
- True
-
-
- Vertical
-
-
- 604, 414
-
-
- 0
-
-
- txtUseragent
-
-
+
System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- tabPage3
-
-
- 0
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 610, 420
-
-
- 0
-
-
- Proxy's Domain or IP
-
-
- tabPage3
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl2
-
-
- 0
-
-
- Fill
-
-
- 3, 3
-
-
- 0
-
-
- True
-
-
- Vertical
-
-
- 604, 414
-
-
- 1
-
-
- txtUserdirect
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage4
-
-
- 0
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 610, 420
-
-
- 1
-
-
- Directly connected Domain or IP
-
-
- tabPage4
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl2
-
-
- 1
-
-
- Fill
-
-
- 3, 3
-
-
- 0
-
-
- True
-
-
- Vertical
-
-
- 604, 414
-
-
- 1
-
-
- txtUserblock
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage5
-
-
- 0
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 610, 420
-
-
- 2
-
-
- Blocked Domain or IP
-
-
- tabPage5
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl2
-
-
- 2
-
-
- Fill
-
-
- 3, 124
-
-
- 618, 446
-
-
- 12
-
-
- tabControl2
-
-
- System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
groupBox2
-
- 0
-
-
- btnSetDefRountingRule
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 0
-
-
- cmbdomainStrategy
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 1
-
-
- labRoutingTips
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
- 2
-
-
- label15
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 3
-
-
- label12
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 4
-
-
- cmbroutingMode
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 5
-
-
- Top
-
-
- 3, 17
-
-
- 618, 107
-
-
- 19
-
-
- panel3
-
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
1
-
- Fill
+
+
+ 30, 176
-
- 3, 3
+
+ Record local logs
-
- 624, 573
-
-
- 12
-
-
- groupBox2
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage2
-
-
- 0
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 630, 579
-
-
- 1
-
-
- Core: Routing settings
-
-
- tabPage2
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl1
-
-
- 1
-
-
- chkKcpcongestion
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 0
-
-
- txtKcpwriteBufferSize
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 1
-
-
- label10
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 2
-
-
- txtKcpreadBufferSize
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 3
-
-
- label11
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 4
-
-
- txtKcpdownlinkCapacity
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 5
-
-
- label8
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 6
-
-
- txtKcpuplinkCapacity
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 7
-
-
- label9
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 8
-
-
- txtKcptti
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 9
-
-
- label7
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 10
-
-
- txtKcpmtu
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 11
-
-
- label6
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
+
+ 634, 396
12
@@ -693,1753 +153,1735 @@
4, 22
-
- 3, 3, 3, 3
-
-
- 630, 579
-
-
- 2
-
-
- Core: KCP settings
-
-
- tabPage6
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl1
-
-
- 2
-
-
- cbFreshrate
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 0
-
-
- tbCacheDays
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 1
-
-
- lbFreshrate
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 2
-
-
- lbCacheDays
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 3
-
-
- chkEnableStatistics
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 4
-
-
- chkAllowLANConn
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 5
-
-
- txturlGFWList
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 6
-
-
- label13
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 7
-
-
- chkAutoRun
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 8
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 630, 579
-
-
- 3
-
-
- v2rayN settings
-
-
- tabPage7
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl1
-
-
- 3
-
-
- Fill
-
-
- 0, 10
-
-
- 638, 605
-
-
- 10
-
-
- tabControl1
-
-
- System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 0
-
-
- chksniffingEnabled2
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 0
-
-
- chksniffingEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 1
-
-
- txtremoteDNS
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 2
-
-
- label14
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 3
-
-
- chkmuxEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 4
-
-
- chkAllowIn2
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 5
-
-
- chkudpEnabled2
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 6
-
-
- cmbprotocol2
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 7
-
-
- label3
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 8
-
-
- txtlocalPort2
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 9
-
-
- cmbprotocol
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 10
-
-
- label1
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 11
-
-
- chkudpEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 12
-
-
- chklogEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 13
-
-
- cmbloglevel
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 14
-
-
- label5
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 15
-
-
- txtlocalPort
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ txtKcpwriteBufferSize
groupBox1
-
- 16
+
+ 2
-
- label2
+
+ tti
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 15
-
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControl1
+
+
groupBox1
-
- 17
+
+ 5
-
- Fill
+
+ 9
-
- 3, 3
-
-
- 624, 573
-
-
- 6
-
-
+
groupBox1
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ label15
-
- tabPage1
+
+ 2
-
- 0
+
+ 18
-
- True
-
-
- NoControl
+
+ 111, 24
468, 60
-
- 120, 16
+
+ Top
-
- 32
+
+ 15, 16
-
- Turn on Sniffing
+
+ 3, 3
-
- False
+
+ 6
-
- chksniffingEnabled2
+
+ 14
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ tabPage3
-
- groupBox1
-
-
+
0
-
+
+ 634, 396
+
+
+ 0
+
+
+ 111, 100
+
+
True
-
- NoControl
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 468, 27
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 3, 3
+
+
+ 598, 16
+
+
+ True
120, 16
-
+
+ 281, 12
+
+
+ panel3
+
+
+ True
+
+
+ tabPage6
+
+
+ tabPage6
+
+
+ Cache days(between 0 to 30, 0 disable cache indivitual days statistic data)
+
+
+ 84, 16
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 628, 390
+
+
+ tabPage7
+
+
+ 12
+
+
+ 662, 60
+
+
+ Fill
+
+
+ 7
+
+
+ label5
+
+
+ True
+
+
+ 648, 573
+
+
+ 18
+
+
+ 206, 64
+
+
+ 95, 12
+
+
+ tabPage6
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 77, 12
+
+
+ 15, 63
+
+
+ tabControl2
+
+
+ 16
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 2
+
+
+ Enable UDP
+
+
+ 94, 21
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Fill
+
+
+ &Cancel
+
+
+ label10
+
+
+ 648, 573
+
+
+ Vertical
+
+
+ 654, 579
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Settings
+
+
31
+
+ Bypassing the LAN address
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Bypassing LAN and mainland address
+
+
+ Bypass mainland address
+
+
+ Top
+
+
+ 12
+
+
+ txtKcpmtu
+
+
+ lbFreshrate
+
+
+ 1
+
+
+ label11
+
+
+ 29
+
+
+ 8
+
+
+ tabPage6
+
+
+ 0, 10
+
+
+ tabPage6
+
+
+ False
+
+
+ tabControl2
+
+
+ 0
+
+
+ $this
+
+
+ 4
+
+
+ True
+
+
+ 3
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ NoControl
+
+
+ 0
+
+
+ tabPage6
+
+
+ groupBox1
+
+
+ 558, 16
+
+
+ 18
+
+
+ True
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ congestion
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel3
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 89, 12
+
+
+ NoControl
+
+
+ txtUseragent
+
+
+ 0
+
+
+ tabPage7
+
+
+ v2rayN settings
+
+
+ 17
+
+
+ 13
+
+
+ 11
+
+
+ 32
+
+
+ 628, 390
+
+
+ 6, 12
+
+
+ 16
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ txtKcpdownlinkCapacity
+
+
+ 516, 109
+
+
+ Boot automatically
+
+
+ 654, 579
+
+
+ 3, 3, 3, 3
+
+
+ 1
+
+
+ txtKcptti
+
+
+ Turn on Sniffing
+
+
+ tabPage6
+
+
+ 355, 16
+
+
+ 3, 3, 3, 3
+
+
+ 3
+
+
+ 5, 34
+
+
+ 662, 605
+
+
+ 33, 29
+
+
+ 124, 60
+
+
+ 78, 21
+
+
+ 5, 91
+
+
+ Custom DNS (multiple, separated by commas (,))
+
+
+ tabControl1
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 598, 16
+
+
+ v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
+ warning
+
+
+ groupBox1
+
+
+ 0
+
+
+ tabPage7
+
+
+ Statistics freshrate
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 120, 16
+
+
+ 89, 12
+
+
+ 120, 16
+
+
+ 18, 66
+
+
+ 20, 143
+
+
+ 11
+
+
+ 4, 4, 4, 4
+
+
+ tabPage6
+
+
+ btnClose
+
Turn on Sniffing
+
+ groupBox1
+
+
+ 18, 28
+
+
+ panel3
+
+
+ 20
+
+
+ 29
+
+
+ 0
+
+
+ 399, 30
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 14
+
+
+ 19
+
+
+ label12
+
+
+ Rule loading order: custom proxy/direct/block, selected routing mode
+
+
+ True
+
+
+ 305, 34
+
chksniffingEnabled
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 3
-
+
+ 174, 16
+
+
+ 30, 90
+
+
groupBox1
-
- 1
+
+ groupBox1
-
- 33, 192
+
+ 18, 104
-
- 402, 21
+
+ tabPage2
-
- 30
-
-
- txtremoteDNS
-
-
+
System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- groupBox1
+
+ socks
-
- 2
+
+ tabPage5
-
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 1
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPage6
+
+
+ *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP
+
+
+ tabPage3
+
+
+ 30
+
+
+ 53, 12
+
+
+ 14
+
+
+ label8
+
+
+ 468, 27
+
+
+ label13
+
+
+ chkAutoRun
+
+
+ 94, 21
+
+
+ 4
+
+
+ 12
+
+
+ 12
+
+
+ chkudpEnabled
+
+
+ NoControl
+
+
True
33, 168
-
- 281, 12
-
-
- 29
-
-
- Custom DNS (multiple, separated by commas (,))
-
-
- label14
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 3
-
-
- True
-
-
- 15, 93
-
-
- 174, 16
-
-
- 20
-
-
- Turn on Mux Multiplexing
-
-
- chkmuxEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 4
-
-
- True
-
-
- 15, 63
-
-
- 120, 16
-
-
- 19
-
-
- listening port 2
-
-
- False
-
-
- chkAllowIn2
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 5
-
-
- True
-
-
- 369, 62
-
-
- 84, 16
-
-
- 18
-
-
- Enable UDP
-
-
- False
-
-
- chkudpEnabled2
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 6
-
-
- socks
-
-
- http
-
-
- 257, 60
-
-
- 97, 20
-
-
- 17
-
-
- cmbprotocol2
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 7
-
-
- True
-
-
- 206, 64
-
-
- 53, 12
-
-
- 16
-
-
- protocol
-
-
- label3
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 8
-
-
- 124, 60
-
-
- 78, 21
-
-
- 14
-
-
- txtlocalPort2
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 9
-
-
- False
-
-
- socks
-
-
- http
-
-
- 257, 25
-
-
- 97, 20
-
-
- 12
-
-
- cmbprotocol
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 10
-
-
- True
-
-
- 206, 29
-
-
- 53, 12
-
-
- 11
-
-
- protocol
-
-
- label1
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 11
-
-
- True
-
-
- 369, 27
-
-
- 84, 16
-
-
- 10
-
-
- Enable UDP
-
-
- chkudpEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 12
-
-
- True
-
-
- 15, 124
-
-
- 126, 16
-
-
- 9
-
-
- Record local logs
-
-
- chklogEnabled
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 13
-
-
- debug
-
-
- info
-
-
- warning
-
-
- error
-
-
- none
-
-
- 257, 122
-
-
- 97, 20
-
-
- 6
-
-
- cmbloglevel
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 14
-
-
- True
-
-
- 193, 126
-
-
- 59, 12
-
-
- 8
-
-
- Log level
-
-
- label5
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 15
-
-
- 124, 25
-
-
- 78, 21
-
-
- 3
-
-
- txtlocalPort
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 16
-
-
- True
-
-
- 33, 29
-
-
- 89, 12
-
-
- 2
-
-
- Listening port
-
-
- label2
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 17
-
-
- 356, 43
-
-
- 229, 23
-
-
- 18
-
-
- Set default custom routing rules
-
-
- btnSetDefRountingRule
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 0
-
-
- AsIs
-
-
- IPIfNonMatch
-
-
- IPOnDemand
-
-
- 123, 13
-
-
- 209, 20
-
-
- 16
-
-
- cmbdomainStrategy
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 1
-
-
- 5, 83
-
-
- 598, 16
-
-
- 13
-
-
- *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP
-
-
- labRoutingTips
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 2
-
-
- True
-
-
- NoControl
-
-
- 13, 17
-
-
- 95, 12
-
-
- 17
-
-
- Domain strategy
-
-
- label15
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 3
-
-
- True
-
-
- NoControl
-
-
- 13, 50
-
-
- 77, 12
-
-
- 15
-
-
- Routing mode
-
-
- label12
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 4
-
-
- Global
-
-
- Bypassing the LAN address
-
-
- Bypass mainland address
-
-
- Bypassing LAN and mainland address
-
-
- 123, 46
-
-
- 209, 20
-
-
- 14
-
-
- cmbroutingMode
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel3
-
-
- 5
-
-
- True
-
-
- 20, 143
-
-
- 84, 16
-
-
- 20
-
-
- congestion
-
-
- chkKcpcongestion
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 0
-
-
- 345, 100
-
-
- 94, 21
-
-
- 15
-
-
- txtKcpwriteBufferSize
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 1
-
-
- True
-
-
- 236, 104
-
-
- 95, 12
-
-
- 14
-
-
- writeBufferSize
-
-
- label10
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 2
-
-
- 111, 100
-
-
- 94, 21
-
-
- 13
-
-
- txtKcpreadBufferSize
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 3
-
-
- True
-
-
- 18, 104
-
-
- 89, 12
-
-
- 12
-
-
- readBufferSize
-
-
- label11
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 4
-
-
- 345, 62
-
-
- 94, 21
-
-
- 11
-
-
- txtKcpdownlinkCapacity
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
+
+ tabPage1
5
-
- True
-
-
- 236, 66
-
-
- 101, 12
-
-
- 10
-
-
- downlinkCapacity
-
-
- label8
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
tabPage6
-
- 6
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 111, 62
+
+ 2
-
- 94, 21
+
+ btnSetDefRountingRule
-
- 9
+
+ True
-
- txtKcpuplinkCapacity
-
-
+
System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- tabPage6
+
+ label1
-
- 7
+
+ 84, 16
-
+
+ 15
+
+
True
-
- 18, 66
-
-
- 89, 12
-
-
- 8
-
-
- uplinkCapacity
-
-
- label9
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 8
-
-
- 345, 24
-
-
- 94, 21
-
-
- 7
-
-
- txtKcptti
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 9
-
-
- True
-
-
- 236, 28
-
-
- 23, 12
-
-
- 6
-
-
- tti
-
label7
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 4, 22
-
- tabPage6
+
+ txtlocalPort
-
- 10
-
-
- 111, 24
-
-
- 94, 21
-
-
- 5
-
-
- txtKcpmtu
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 11
-
-
- True
-
-
- 18, 28
-
-
- 23, 12
-
-
- 4
-
-
- mtu
-
-
- label6
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage6
-
-
- 12
-
-
- 161, 82
-
-
- 58, 20
-
-
- 32
-
-
- cbFreshrate
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ txturlGFWList
tabPage7
-
- 0
+
+ 3, 17
-
- 516, 109
+
+ 4, 22
-
- 60, 21
+
+ labRoutingTips
-
- 31
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 3, 3, 3, 3
+
+
+ 124, 25
+
+
+ protocol
+
+
+ tabControl2
tbCacheDays
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Turn on Mux Multiplexing
-
+
+ 23, 12
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 97, 20
+
+
+ 402, 21
+
+
+ socks
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
tabPage7
-
- 1
+
+ chkAllowLANConn
-
+
+ 84, 16
+
+
+ Direct Domain or IP
+
+
True
-
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 15, 38
+
+
+ 0
+
+
+ 10
+
+
+ 369, 62
+
+
+ 10
+
+
+ Proxy Domain or IP
+
+
+ panel3
+
+
+ 5, 65
+
+
+ 5, 8
+
+
+ Fill
+
+
+ 13
+
+
+ 654, 579
+
+
+ chkEnableStatistics
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 5
+
+
+ 7
+
+
+ 97, 20
+
+
+ 53, 12
+
+
+ 193, 126
+
+
+ 369, 27
+
+
+ 0
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 6
+
+
+ label2
+
+
+ 165, 20
+
+
+ 0
+
+
+ 3, 3
+
+
+ 9
+
+
+ 9
+
+
+ 0
+
+
+ 101, 12
+
+
+ 4
+
+
+ 12
+
+
+ 20
+
+
+ cmbprotocol
+
+
+ True
+
+
+ Enable Statistics(Realtime net speed and traffic data amount. Need restart v2rayN client)
+
+
+ 431, 12
+
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 4
+
+
+ Listening port
+
+
+ cmbroutingMode
+
+
+ 1
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Vertical
+
+
+ 60, 21
+
+
+ 28
+
+
+ 257, 60
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControl1
+
+
+ True
+
+
+ cmbprotocol2
+
+
NoControl
-
- 30, 90
+
+ groupBox2
-
- 125, 12
+
+ 15, 93
-
+
+ mtu
+
+
+ 5
+
+
+ panel3
+
+
+ True
+
+
+ chkKcpcongestion
+
+
+ 30, 118
+
+
+ 0
+
+
+ 257, 25
+
+
+ 3, 134
+
+
+ True
+
+
+ listening port 2
+
+
+ 11
+
+
+ chkAllowIn2
+
+
+ tabPage2
+
+
+ 14
+
+
+ True
+
+
+ 19
+
+
+ 29
+
+
+ tabPage4
+
+
+ 4, 22
+
+
+ http
+
+
+ 9
+
+
+ 544, 21
+
+
+ Core: KCP settings
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ error
+
+
+ 15, 124
+
+
+ groupBox1
+
+
+ 59, 12
+
+
+ groupBox1
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 634, 410
+
+
+ downlinkCapacity
+
+
+ tabControl1
+
+
+ 662, 10
+
+
+ txtlocalPort2
+
+
+ True
+
+
+ tabControl2
+
+
+ True
+
+
+ Fill
+
+
+ 654, 579
+
+
+ 7
+
+
+ 27
+
+
+ 10
+
+
+ False
+
+
+ Vertical
+
+
+ 206, 29
+
+
+ txtUserdirect
+
+
+ chkudpEnabled2
+
+
+ 0
+
+
+ info
+
+
+ 0
+
+
+ Allow connections from the LAN
+
+
+ 161, 82
+
+
+ panel3
+
+
+ tabPage6
+
+
+ groupBox1
+
+
+ txtKcpreadBufferSize
+
+
+ 1
+
+
+ panel3
+
+
+ panel2
+
+
30
-
- Statistics freshrate
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- lbFreshrate
-
-
+
System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
tabPage7
-
+
+ 7
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Log level
+
+
+ tabControl1
+
+
+ protocol
+
+
+ 6
+
+
+ tabPage4
+
+
+ OptionSettingForm
+
+
2
-
- True
+
+ 95, 12
-
- 30, 118
+
+ AsIs
-
- 455, 12
+
+ 8
-
- 30
+
+ tabPage7
-
- Cache days(between 0 to 30, 0 disable cache indivitual days statistic data)
+
+ 642, 436
+
+
+ 58, 20
+
+
+ 1
+
+
+ 15
+
+
+ 13
+
+
+ panel3
lbCacheDays
+
+ 2
+
+
+ 78, 21
+
+
+ True
+
+
+ True
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ 3
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 1
+
+
+ 23, 12
+
+
+ True
+
+
+ 8
+
+
+ 3, 3, 3, 3
+
+
+ 17
+
+
+ 345, 100
+
+
+ 94, 21
+
+
+ 75, 23
+
+
+ True
+
+
+ 10
+
+
+ 204, 16
+
+
+ 17
+
+
+ 628, 404
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 7
+
+
+ 0, 615
+
+
+ txtUserblock
+
+
+ 229, 23
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPage1
+
+
+ Routing mode
+
+
+ 2
+
+
+ 4, 22
+
+
+ http
+
+
+ 0
+
+
+ Custom GFWList address (please fill in the blank without customization)
+
+
+ 97, 20
+
+
+ 126, 16
+
+
+ 209, 20
+
+
+ tabPage6
+
+
+ 30
+
+
+ cmbdomainStrategy
+
+
+ False
+
+
+ 257, 122
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ &OK
+
+
+ 10
+
+
+ 1
+
+
+ 94, 21
+
+
+ txtKcpuplinkCapacity
+
+
+ 115, 30
+
+
+ groupBox1
+
+
+ chklogEnabled
+
+
+ chksniffingEnabled2
+
+
+ 1
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 642, 117
+
+
+ groupBox2
+
+
+ 4, 22
+
+
+ Domain strategy
+
+
+ tabPage5
+
+
+ 6
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ IPIfNonMatch
+
+
+ groupBox1
+
+
+ 23
+
+
+ Block Domain or IP
+
+
+ label3
+
+
+ 6
+
+
+ 236, 66
+
+
+ tabPage7
+
+
+ $this
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ $this
+
+
+ 8
+
+
+ txtremoteDNS
+
+
+ 3, 3
+
+
+ True
+
+
+ True
+
+
+ 3
+
+
+ 5
+
+
+ 11
+
+
+ True
+
+
+ 89, 12
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0
+
+
+ 31
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Fill
+
+
+ groupBox1
+
+
+ groupBox1
+
+
+ 32
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Core: Routing settings
+
+
+ 345, 24
+
+
+ Fill
+
+
+ 3, 3
+
+
+ 2
+
+
+ 236, 104
+
+
+ 6
+
+
+ 455, 12
+
+
+ Core: basic settings
+
+
+ NoControl
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 94, 21
+
+
+ 75, 23
+
+
+ writeBufferSize
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 33, 192
+
+
+ 345, 62
+
+
+ uplinkCapacity
+
+
+ 662, 675
+
+
+ label4
+
+
+ IPOnDemand
+
+
+ NoControl
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 6
+
+
+ 0
+
+
+ 2
+
+
+ 3, 3, 3, 3
+
+
+ 32, 205
+
+
+ cmbloglevel
+
+
+ 111, 62
+
+
+ 1
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ btnOK
+
+
+ Set default custom routing rules
+
+
+ debug
+
+
+ True
+
+
+ chkmuxEnabled
+
+
+ none
+
+
+ tabPage6
+
+
+ False
+
+
+ 4, 22
+
+
+ 8
+
+
+ 0
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0, 0
+
+
+ Enable UDP
+
+
+ 15, 60
+
+
+ 3, 3, 3, 3
+
+
+ groupBox1
+
+
+ 16
+
System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 267, 16
+
+
+ Global
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
tabPage7
-
+
+ groupBox1
+
+
+ Fill
+
+
+ readBufferSize
+
+
+ 9
+
+
+ 0
+
+
+ tabPage7
+
+
+ groupBox1
+
+
+ 0
+
+
+ 94, 21
+
+
3
-
- True
+
+ 3
-
- NoControl
+
+ 3, 3, 3, 3
-
- 15, 60
-
-
- 558, 16
-
-
- 29
-
-
- Enable Statistics(Realtime net speed and traffic data amount. Need restart v2rayN client)
-
-
- chkEnableStatistics
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 4
-
-
- True
-
-
- 15, 38
-
-
- 204, 16
-
-
- 29
-
-
- Allow connections from the LAN
-
-
- chkAllowLANConn
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 5
-
-
- 32, 205
-
-
- 544, 21
-
-
- 28
-
-
- txturlGFWList
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 6
-
-
- True
-
-
- 30, 176
-
-
- 431, 12
-
-
- 27
-
-
- Custom GFWList address (please fill in the blank without customization)
-
-
- label13
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 7
-
-
- True
-
-
- 15, 16
-
-
- 132, 16
-
-
- 23
-
-
- Boot automatically
-
-
- chkAutoRun
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabPage7
-
-
- 8
-
-
- btnOK
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 1
+
+ 236, 28
Bottom
-
- 0, 615
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 638, 60
+
+ groupBox1
-
- 11
+
+ 125, 12
panel2
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 1
-
-
- 267, 16
-
-
- 75, 23
-
-
+
8
-
- &OK
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- btnOK
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ cbFreshrate
+
+
+ label6
+
+
+ 132, 16
+
+
+ tabPage6
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 1
panel2
-
+
+ 4
+
+
1
-
- Top
-
-
- 0, 0
-
-
- 638, 10
-
-
- 9
+
+ label9
panel1
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
+
+ True
2
-
- 17, 17
-
+
+ label14
+
True
-
- 6, 12
-
-
- 638, 675
-
-
- 4, 4, 4, 4
-
-
- Settings
-
-
- configBindingSource
-
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- OptionSettingForm
-
-
- v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx
index cef4cd5a..09b16e2d 100644
--- a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx
@@ -196,9 +196,21 @@
代理的Domain或IP
+
+ 628, 404
+
+
+ 634, 410
+
直连的Domain或IP
+
+ 628, 404
+
+
+ 634, 410
+
阻止的Domain或IP
@@ -207,7 +219,7 @@
NoControl
- 381, 43
+ 7, 60
201, 23
@@ -215,25 +227,37 @@
一键设置默认自定义路由规则
-
- 232, 20
-
True
+
+ 5, 96
+
383, 12
*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP
+
+ 规则加载次序:自定义的代理/直连/阻止,选择的路由模式
+
+
+ 81, 30
+
+
+ 186, 20
+
53, 12
域名策略
+
+ 295, 34
+
53, 12
@@ -252,8 +276,11 @@
绕过局域网及大陆地址
+
+ 372, 30
+
- 232, 20
+ 244, 20
Core:路由设置
@@ -261,6 +288,24 @@
Core:KCP设置
+
+ 77, 12
+
+
+ 统计刷新频率
+
+
+ 305, 12
+
+
+ 缓存天数(0-30, 0关闭缓存单独每天的数据使用情况)
+
+
+ 384, 16
+
+
+ 启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)
+
144, 16
@@ -288,13 +333,4 @@
参数设置
-
- 启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)
-
-
- 缓存天数(0-30, 0关闭缓存单独每天的数据使用情况)
-
-
- 统计刷新频率
-
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs
index 94534f20..23ff973d 100644
--- a/v2rayN/v2rayN/Global.cs
+++ b/v2rayN/v2rayN/Global.cs
@@ -102,6 +102,13 @@ namespace v2rayN
///
public const string StreamSecurity = "tls";
+ public const string InboundSocks = "socks";
+ public const string InboundHttp = "http";
+ public const string Loopback = "127.0.0.1";
+ public const string InboundAPITagName = "api";
+ public const string InboundAPIProtocal = "dokodemo-door";
+
+
///
/// vmess
///
@@ -147,12 +154,6 @@ namespace v2rayN
///
public const string CustomIconName = "v2rayN.ico";
- public const string Loopback = "127.0.0.1";
-
- public const string InboundAPITagName = "api";
- public const string InboundProxyTagName = "proxy";
- public const string InboundAPIProtocal = "dokodemo-door";
-
public enum StatisticsFreshRate
{
quick = 1000,
@@ -177,17 +178,17 @@ namespace v2rayN
public static bool sysAgent { get; set; }
///
- /// socks端口号
+ /// socks端口
///
public static int socksPort { get; set; }
///
- /// 全局代理端口(http)
+ /// http端口
///
- public static int sysAgentPort { get; set; }
+ public static int httpPort { get; set; }
///
- /// PAC监听端口号
+ /// PAC端口
///
public static int pacPort { get; set; }
diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs
index e4f48d0e..ddf14123 100644
--- a/v2rayN/v2rayN/Handler/ConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs
@@ -57,7 +57,7 @@ namespace v2rayN.Handler
{
config.inbound = new List();
InItem inItem = new InItem();
- inItem.protocol = "socks";
+ inItem.protocol = Global.InboundSocks;
inItem.localPort = 10808;
inItem.udpEnabled = true;
inItem.sniffingEnabled = true;
@@ -76,7 +76,7 @@ namespace v2rayN.Handler
//http协议不由core提供,只保留socks
if (config.inbound.Count > 0)
{
- config.inbound[0].protocol = "socks";
+ config.inbound[0].protocol = Global.InboundSocks;
}
}
//路由规则
diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs
index 38b402a0..df26cc70 100644
--- a/v2rayN/v2rayN/Handler/DownloadHandle.cs
+++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs
@@ -87,7 +87,7 @@ namespace v2rayN.Handler
}
- public void DownloadFileAsync(Config config, string url, bool blProxy)
+ public void DownloadFileAsync(Config config, string url, WebProxy webProxy)
{
try
{
@@ -101,9 +101,9 @@ namespace v2rayN.Handler
progressPercentage = -1;
WebClientEx ws = new WebClientEx();
- if (blProxy)
+ if (webProxy != null)
{
- ws.Proxy = new WebProxy(Global.Loopback, Global.sysAgentPort);
+ ws.Proxy = webProxy;// new WebProxy(Global.Loopback, Global.httpPort);
}
ws.DownloadFileCompleted += ws_DownloadFileCompleted;
diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
index 6254107d..f5d82f50 100644
--- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
+++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
@@ -37,16 +37,19 @@ namespace v2rayN.Handler
if (actionType == "ping")
{
_workThread = new Thread(new ThreadStart(RunPing));
+ _workThread.IsBackground = true;
_workThread.Start();
}
if (actionType == "tcping")
{
_workThread = new Thread(new ThreadStart(RunTcping));
+ _workThread.IsBackground = true;
_workThread.Start();
}
else if (actionType == "realping")
{
_workThread = new Thread(new ThreadStart(RunRealPing));
+ _workThread.IsBackground = true;
_workThread.Start();
}
else if (actionType == "speedtest")
@@ -88,7 +91,7 @@ namespace v2rayN.Handler
}
}
- Thread.Sleep(1);
+ Thread.Sleep(100);
}
catch (Exception ex)
@@ -119,7 +122,7 @@ namespace v2rayN.Handler
}
}
- Thread.Sleep(1);
+ Thread.Sleep(100);
}
catch (Exception ex)
@@ -132,6 +135,12 @@ namespace v2rayN.Handler
{
try
{
+ string msg = string.Empty;
+
+ Global.reloadV2ray = true;
+ _v2rayHandler.LoadV2ray(_config, _selecteds);
+
+ var httpPort = _config.GetLocalPort("speedtest");
for (int k = 0; k < _selecteds.Count; k++)
{
int index = _selecteds[k];
@@ -139,20 +148,12 @@ namespace v2rayN.Handler
{
continue;
}
+
try
{
- if (ConfigHandler.SetDefaultServer(ref _config, index) == 0)
- {
- _v2rayHandler.LoadV2ray(_config);
- }
- else
- {
- return;
- }
- Thread.Sleep(1000 * 5);
-
+ var webProxy = new WebProxy(Global.Loopback, httpPort + index);
int responseTime = -1;
- var status = GetRealPingTime(Global.SpeedPingTestUrl, out responseTime);
+ var status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out responseTime);
if (!Utils.IsNullOrEmpty(status))
{
_updateFunc(index, string.Format("{0}", status));
@@ -166,9 +167,12 @@ namespace v2rayN.Handler
{
Utils.SaveLog(ex.Message, ex);
}
+ Thread.Sleep(100);
}
- Thread.Sleep(1);
+ Global.reloadV2ray = true;
+ _v2rayHandler.LoadV2ray(_config);
+ Thread.Sleep(100);
}
catch (Exception ex)
@@ -184,6 +188,9 @@ namespace v2rayN.Handler
return;
}
+ Global.reloadV2ray = true;
+ _v2rayHandler.LoadV2ray(_config, _selecteds);
+
string url = Global.SpeedTestUrl;
testCounter = 0;
if (downloadHandle2 == null)
@@ -213,6 +220,7 @@ namespace v2rayN.Handler
}
};
}
+
if (ServerSpeedTestSub(testCounter, url) != 0)
{
return;
@@ -223,23 +231,19 @@ namespace v2rayN.Handler
{
if (index >= _selecteds.Count)
{
- return -1;
- }
-
- if (ConfigHandler.SetDefaultServer(ref _config, _selecteds[index]) == 0)
- {
+ Global.reloadV2ray = true;
_v2rayHandler.LoadV2ray(_config);
-
- testCounter++;
-
- downloadHandle2.DownloadFileAsync(_config, url,true);
-
- return 0;
- }
- else
- {
return -1;
}
+
+ var httpPort = _config.GetLocalPort("speedtest");
+ index = _selecteds[index];
+
+ testCounter++;
+ var webProxy = new WebProxy(Global.Loopback, httpPort + index);
+ downloadHandle2.DownloadFileAsync(_config, url, webProxy);
+
+ return 0;
}
private int GetTcpingTime(string url, int port)
@@ -267,7 +271,7 @@ namespace v2rayN.Handler
return responseTime;
}
- private string GetRealPingTime(string url, out int responseTime)
+ private string GetRealPingTime(string url, WebProxy webProxy, out int responseTime)
{
string msg = string.Empty;
responseTime = -1;
@@ -276,7 +280,7 @@ namespace v2rayN.Handler
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.Timeout = 5000;
- myHttpWebRequest.Proxy = new WebProxy(Global.Loopback, Global.sysAgentPort);
+ myHttpWebRequest.Proxy = webProxy;//new WebProxy(Global.Loopback, Global.httpPort);
var timer = new Stopwatch();
timer.Start();
diff --git a/v2rayN/v2rayN/Handler/StatisticsHandler.cs b/v2rayN/v2rayN/Handler/StatisticsHandler.cs
index c6074b66..a61f634a 100644
--- a/v2rayN/v2rayN/Handler/StatisticsHandler.cs
+++ b/v2rayN/v2rayN/Handler/StatisticsHandler.cs
@@ -6,7 +6,9 @@ using System.Net;
using System.Net.Sockets;
using System.Threading;
using v2rayN.Mode;
+using v2rayN.Properties;
using v2rayN.Protos.Statistics;
+using v2rayN.Tool;
namespace v2rayN.Handler
{
@@ -66,6 +68,23 @@ namespace v2rayN.Handler
public StatisticsHandler(Mode.Config config, Action> update)
{
+ try
+ {
+ if (Environment.Is64BitOperatingSystem)
+ {
+ FileManager.UncompressFile(Utils.GetPath("grpc_csharp_ext.x64.dll"), Resources.grpc_csharp_ext_x64_dll);
+ }
+ else
+ {
+ FileManager.UncompressFile(Utils.GetPath("grpc_csharp_ext.x86.dll"), Resources.grpc_csharp_ext_x86_dll);
+ }
+ }
+ catch (IOException ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+
+ }
+
config_ = config;
enabled_ = config.enableStatistics;
UpdateUI = false;
@@ -86,6 +105,7 @@ namespace v2rayN.Handler
GrpcInit();
workThread_ = new Thread(new ThreadStart(Run));
+ workThread_.IsBackground = true;
workThread_.Start();
}
@@ -192,7 +212,7 @@ namespace v2rayN.Handler
name = nStr[1];
type = nStr[3];
- if (name == Global.InboundProxyTagName)
+ if (name == Global.agentTag)
{
if (type == "uplink")
{
diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
index 6aadec52..bb518a36 100644
--- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
@@ -1365,5 +1365,90 @@ namespace v2rayN.Handler
#endregion
+ #region Gen speedtest config
+
+
+ public static int GenerateClientSpeedtestConfig(Config config, List selecteds, string fileName, out string msg)
+ {
+ msg = string.Empty;
+
+ try
+ {
+ if (config == null
+ || config.index < 0
+ || config.vmess.Count <= 0
+ || config.index > config.vmess.Count - 1
+ )
+ {
+ msg = UIRes.I18N("CheckServerSettings");
+ return -1;
+ }
+
+ msg = UIRes.I18N("InitialConfiguration");
+
+ string result = Utils.GetEmbedText(SampleClient);
+ if (Utils.IsNullOrEmpty(result))
+ {
+ msg = UIRes.I18N("FailedGetDefaultConfiguration");
+ return -1;
+ }
+
+ V2rayConfig v2rayConfig = Utils.FromJson(result);
+ if (v2rayConfig == null)
+ {
+ msg = UIRes.I18N("FailedGenDefaultConfiguration");
+ return -1;
+ }
+
+ log(config, ref v2rayConfig, false);
+ //routing(config, ref v2rayConfig);
+ dns(config, ref v2rayConfig);
+
+
+ var httpPort = config.GetLocalPort("speedtest");
+ for (int k = 0; k < selecteds.Count; k++)
+ {
+ int index = selecteds[k];
+ if (config.vmess[index].configType == (int)EConfigType.Custom)
+ {
+ continue;
+ }
+
+ config.index = index;
+
+ var inbound = new Inbounds();
+ inbound.listen = Global.Loopback;
+ inbound.port = httpPort + index;
+ inbound.protocol = Global.InboundHttp;
+ inbound.tag = Global.InboundHttp + inbound.port.ToString();
+ v2rayConfig.inbounds.Add(inbound);
+
+
+ var v2rayConfigCopy = Utils.FromJson(result);
+ outbound(config, ref v2rayConfigCopy);
+ v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
+ v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
+
+ var rule = new Mode.RulesItem();
+ rule.inboundTag = inbound.tag;
+ rule.outboundTag = v2rayConfigCopy.outbounds[0].tag;
+ rule.type = "field";
+ v2rayConfig.routing.rules.Add(rule);
+ }
+
+ Utils.ToJsonFile(v2rayConfig, fileName);
+
+ msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), config.getSummary());
+ }
+ catch (Exception ex)
+ {
+ msg = UIRes.I18N("FailedGenDefaultConfiguration");
+ return -1;
+ }
+ return 0;
+ }
+
+ #endregion
+
}
}
diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs
index 244892c8..a8209775 100644
--- a/v2rayN/v2rayN/Handler/V2rayHandler.cs
+++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs
@@ -52,6 +52,27 @@ namespace v2rayN.Handler
}
}
+ ///
+ /// 载入V2ray
+ ///
+ public void LoadV2ray(Config config, List _selecteds)
+ {
+ if (Global.reloadV2ray)
+ {
+ string msg = string.Empty;
+ string fileName = Utils.GetPath(v2rayConfigRes);
+ if (V2rayConfigHandler.GenerateClientSpeedtestConfig(config, _selecteds, fileName, out msg) != 0)
+ {
+ ShowMsg(false, msg);
+ }
+ else
+ {
+ ShowMsg(true, msg);
+ V2rayRestart();
+ }
+ }
+ }
+
///
/// V2ray重启
///
@@ -118,7 +139,7 @@ namespace v2rayN.Handler
}
}
if (Utils.IsNullOrEmpty(fileName))
- {
+ {
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases");
ShowMsg(true, msg);
return;
diff --git a/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs
index 8195e1e1..4f1eca5f 100644
--- a/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs
+++ b/v2rayN/v2rayN/HttpProxyHandler/HttpProxyHandle.cs
@@ -23,40 +23,40 @@ namespace v2rayN.HttpProxyHandler
{
if (type != 0)
{
- var port = Global.sysAgentPort;
+ var port = Global.httpPort;
if (port <= 0)
{
return false;
}
if (type == 1)
{
- PACServerHandle.Stop();
+ //PACServerHandle.Stop();
SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}", null);
}
else if (type == 2)
{
string pacUrl = GetPacUrl();
SysProxyHandle.SetIEProxy(true, false, null, pacUrl);
- PACServerHandle.Stop();
+ //PACServerHandle.Stop();
PACServerHandle.Init(config);
}
else if (type == 3)
{
- PACServerHandle.Stop();
+ //PACServerHandle.Stop();
SysProxyHandle.SetIEProxy(false, false, null, null);
}
else if (type == 4)
{
string pacUrl = GetPacUrl();
SysProxyHandle.SetIEProxy(false, false, null, null);
- PACServerHandle.Stop();
+ //PACServerHandle.Stop();
PACServerHandle.Init(config);
}
}
else
{
SysProxyHandle.SetIEProxy(false, false, null, null);
- PACServerHandle.Stop();
+ //PACServerHandle.Stop();
}
}
catch (Exception ex)
@@ -74,7 +74,7 @@ namespace v2rayN.HttpProxyHandler
{
try
{
- int localPort = config.GetLocalPort("socks");
+ int localPort = config.GetLocalPort(Global.InboundSocks);
if (localPort > 0)
{
PrivoxyHandler.Instance.Start(localPort, config);
@@ -82,8 +82,8 @@ namespace v2rayN.HttpProxyHandler
{
Global.sysAgent = true;
Global.socksPort = localPort;
- Global.sysAgentPort = PrivoxyHandler.Instance.RunningPort;
- Global.pacPort = Global.sysAgentPort + 1;
+ Global.httpPort = PrivoxyHandler.Instance.RunningPort;
+ Global.pacPort = config.GetLocalPort("pac");
}
}
}
@@ -100,16 +100,11 @@ namespace v2rayN.HttpProxyHandler
{
try
{
- ////开启全局代理则关闭
- //if (Global.sysAgent)
- //{
PrivoxyHandler.Instance.Stop();
Global.sysAgent = false;
Global.socksPort = 0;
- Global.sysAgentPort = 0;
- Global.pacPort = 0;
- //}
+ Global.httpPort = 0;
}
catch
{
@@ -131,7 +126,7 @@ namespace v2rayN.HttpProxyHandler
}
else
{
- int localPort = config.GetLocalPort("socks");
+ int localPort = config.GetLocalPort(Global.InboundSocks);
if (localPort != Global.socksPort)
{
isRestart = true;
diff --git a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
index cc2a033b..d3902d7f 100644
--- a/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
+++ b/v2rayN/v2rayN/HttpProxyHandler/PACServerHandle.cs
@@ -28,14 +28,16 @@ namespace v2rayN.HttpProxyHandler
public static void Init(Config config)
{
- //if (InitServer("*"))
- //{
- // pacPort = Global.pacPort;
- //}
- if (InitServer(Global.Loopback))
+ Global.pacPort = config.GetLocalPort("pac");
+
+ if (InitServer("*"))
{
pacPort = Global.pacPort;
}
+ //else if (InitServer(Global.Loopback))
+ //{
+ // pacPort = Global.pacPort;
+ //}
else if (InitServerB(Global.Loopback))
{
pacPort = Global.pacPort;
@@ -67,7 +69,6 @@ namespace v2rayN.HttpProxyHandler
server = new HttpWebServer(SendResponse, prefixes);
server.Run();
- //pacPort = Global.pacPort;
}
}
Utils.SaveLog("Webserver at " + address);
@@ -95,7 +96,6 @@ namespace v2rayN.HttpProxyHandler
if (serverB == null)
{
serverB = new HttpWebServerB(Global.pacPort, SendResponse);
- //pacPort = Global.pacPort;
}
}
Utils.SaveLog("WebserverB at " + address);
@@ -124,18 +124,23 @@ namespace v2rayN.HttpProxyHandler
public static void Stop()
{
- //try
- //{
- // if (server != null)
- // {
- // server.Stop();
- // server = null;
- // }
- //}
- //catch (Exception ex)
- //{
- // Utils.SaveLog("Webserver Stop " + ex.Message);
- //}
+ try
+ {
+ if (server != null)
+ {
+ server.Stop();
+ server = null;
+ }
+ if (serverB != null)
+ {
+ serverB.Stop();
+ serverB = null;
+ }
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog("Webserver Stop " + ex.Message);
+ }
//try
//{
@@ -159,7 +164,7 @@ namespace v2rayN.HttpProxyHandler
private static string GetPacList(string address)
{
- var port = Global.sysAgentPort;
+ var port = Global.httpPort;
if (port <= 0)
{
return "No port";
diff --git a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs
index 939f1415..6dc229d3 100644
--- a/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs
+++ b/v2rayN/v2rayN/HttpProxyHandler/PrivoxyHandler.cs
@@ -24,8 +24,6 @@ namespace v2rayN.HttpProxyHandler
private static string _uniqueConfigFile;
private static Job _privoxyJob;
private Process _process;
- private int _runningPort;
- private bool _isRunning;
static PrivoxyHandler()
{
@@ -36,7 +34,6 @@ namespace v2rayN.HttpProxyHandler
_privoxyJob = new Job();
FileManager.UncompressFile(Utils.GetTempPath("v2ray_privoxy.exe"), Resources.privoxy_exe);
- FileManager.UncompressFile(Utils.GetTempPath("mgwz.dll"), Resources.mgwz_dll);
}
catch (IOException ex)
{
@@ -66,18 +63,7 @@ namespace v2rayN.HttpProxyHandler
public int RunningPort
{
- get
- {
- return _runningPort;
- }
- }
-
- public bool IsRunning
- {
- get
- {
- return _isRunning;
- }
+ get; set;
}
public void Start(int localPort, Config config)
@@ -90,9 +76,9 @@ namespace v2rayN.HttpProxyHandler
KillProcess(p);
}
string privoxyConfig = Resources.privoxy_conf;
- _runningPort = GetFreePort(localPort);
+ RunningPort = config.GetLocalPort(Global.InboundHttp);
privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", localPort.ToString());
- privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", _runningPort.ToString());
+ privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", RunningPort.ToString());
if (config.allowLANConn)
{
privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_IP__", "0.0.0.0");
@@ -123,7 +109,7 @@ namespace v2rayN.HttpProxyHandler
* when ss exit unexpectedly, this process will be forced killed by system.
*/
_privoxyJob.AddProcess(_process.Handle);
- _isRunning = true;
+
}
}
@@ -134,7 +120,7 @@ namespace v2rayN.HttpProxyHandler
KillProcess(_process);
_process.Dispose();
_process = null;
- _isRunning = false;
+ RunningPort = 0;
}
}
@@ -191,25 +177,5 @@ namespace v2rayN.HttpProxyHandler
}
}
- private int GetFreePort(int localPort)
- {
- int defaultPort = 8123;
- try
- {
- //// TCP stack please do me a favor
- //TcpListener l = new TcpListener(IPAddress.Loopback, 0);
- //l.Start();
- //var port = ((IPEndPoint)l.LocalEndpoint).Port;
- //l.Stop();
- //return port;
- return localPort + 1;
- }
- catch (Exception ex)
- {
- // in case access denied
- Utils.SaveLog(ex.Message, ex);
- return defaultPort;
- }
- }
}
}
diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs
index 1586f621..dc714d6e 100644
--- a/v2rayN/v2rayN/Mode/Config.cs
+++ b/v2rayN/v2rayN/Mode/Config.cs
@@ -13,93 +13,147 @@ namespace v2rayN.Mode
///
/// 本地监听
///
- public List inbound { get; set; }
+ public List inbound
+ {
+ get; set;
+ }
///
/// 允许日志
///
- public bool logEnabled { get; set; }
+ public bool logEnabled
+ {
+ get; set;
+ }
///
/// 日志等级
///
- public string loglevel { get; set; }
+ public string loglevel
+ {
+ get; set;
+ }
///
/// 活动配置序号
///
- public int index { get; set; }
+ public int index
+ {
+ get; set;
+ }
///
/// vmess服务器信息
///
- public List vmess { get; set; }
+ public List vmess
+ {
+ get; set;
+ }
///
/// 允许Mux多路复用
///
- public bool muxEnabled { get; set; }
+ public bool muxEnabled
+ {
+ get; set;
+ }
///
/// 域名解析策略
///
- public string domainStrategy { get; set; }
+ public string domainStrategy
+ {
+ get; set;
+ }
///
/// 路由模式
///
- public string routingMode { get; set; }
+ public string routingMode
+ {
+ get; set;
+ }
///
/// 用户自定义需代理的网址或ip
///
- public List useragent { get; set; }
+ public List useragent
+ {
+ get; set;
+ }
///
/// 用户自定义直连的网址或ip
///
- public List userdirect { get; set; }
+ public List userdirect
+ {
+ get; set;
+ }
///
/// 用户自定义阻止的网址或ip
///
- public List userblock { get; set; }
+ public List userblock
+ {
+ get; set;
+ }
///
/// KcpItem
///
- public KcpItem kcpItem { get; set; }
+ public KcpItem kcpItem
+ {
+ get; set;
+ }
///
/// 启用Http代理
///
- public bool sysAgentEnabled { get; set; }
+ public bool sysAgentEnabled
+ {
+ get; set;
+ }
///
/// 监听状态 0-不改变 1-全局 2-PAC
///
- public int listenerType { get; set; }
+ public int listenerType
+ {
+ get; set;
+ }
///
/// 自定义GFWList url
///
- public string urlGFWList { get; set; }
+ public string urlGFWList
+ {
+ get; set;
+ }
///
/// 允许来自局域网的连接
///
- public bool allowLANConn { get; set; }
+ public bool allowLANConn
+ {
+ get; set;
+ }
///
/// 启用实时网速和流量统计
///
- public bool enableStatistics { get; set; }
+ public bool enableStatistics
+ {
+ get; set;
+ }
///
/// 视图刷新率
///
- public int statisticsFreshRate { get; set; }
+ public int statisticsFreshRate
+ {
+ get; set;
+ }
///
/// 统计数据缓存天数 [0, 30]
@@ -107,9 +161,13 @@ namespace v2rayN.Mode
/// * 无论如何不会关闭总流量的缓存
///
private uint cacheDays;
- public uint CacheDays {
- get { return cacheDays; }
- set
+ public uint CacheDays
+ {
+ get
+ {
+ return cacheDays;
+ }
+ set
{
if (value < 0) cacheDays = 0;
else if (value > 30) cacheDays = 30;
@@ -120,15 +178,24 @@ namespace v2rayN.Mode
///
/// 自定义远程DNS
///
- public string remoteDNS { get; set; }
+ public string remoteDNS
+ {
+ get; set;
+ }
///
/// 订阅
///
- public List subItem { get; set; }
+ public List subItem
+ {
+ get; set;
+ }
///
/// UI
///
- public UIItem uiItem { get; set; }
+ public UIItem uiItem
+ {
+ get; set;
+ }
#region 函数
@@ -236,6 +303,19 @@ namespace v2rayN.Mode
public int GetLocalPort(string protocol)
{
+ if (protocol == Global.InboundHttp)
+ {
+ return GetLocalPort(Global.InboundSocks) + 1;
+ }
+ else if (protocol == "pac")
+ {
+ return GetLocalPort(Global.InboundSocks) + 2;
+ }
+ else if (protocol == "speedtest")
+ {
+ return GetLocalPort(Global.InboundSocks) + 103;
+ }
+
int localPort = 0;
foreach (InItem inItem in inbound)
{
@@ -352,77 +432,125 @@ namespace v2rayN.Mode
///
/// 版本(现在=2)
///
- public int configVersion { get; set; }
+ public int configVersion
+ {
+ get; set;
+ }
///
/// 远程服务器地址
///
- public string address { get; set; }
+ public string address
+ {
+ get; set;
+ }
///
/// 远程服务器端口
///
- public int port { get; set; }
+ public int port
+ {
+ get; set;
+ }
///
/// 远程服务器ID
///
- public string id { get; set; }
+ public string id
+ {
+ get; set;
+ }
///
/// 远程服务器额外ID
///
- public int alterId { get; set; }
+ public int alterId
+ {
+ get; set;
+ }
///
/// 本地安全策略
///
- public string security { get; set; }
+ public string security
+ {
+ get; set;
+ }
///
/// tcp,kcp,ws
///
- public string network { get; set; }
+ public string network
+ {
+ get; set;
+ }
///
/// 备注或别名
///
- public string remarks { get; set; }
+ public string remarks
+ {
+ get; set;
+ }
///
/// 伪装类型
///
- public string headerType { get; set; }
+ public string headerType
+ {
+ get; set;
+ }
///
/// 伪装的域名
///
- public string requestHost { get; set; }
+ public string requestHost
+ {
+ get; set;
+ }
///
/// ws h2 path
///
- public string path { get; set; }
+ public string path
+ {
+ get; set;
+ }
///
/// 底层传输安全
///
- public string streamSecurity { get; set; }
+ public string streamSecurity
+ {
+ get; set;
+ }
///
/// 是否允许不安全连接(用于客户端)
///
- public string allowInsecure { get; set; }
+ public string allowInsecure
+ {
+ get; set;
+ }
///
/// config type(1=normal,2=custom)
///
- public int configType { get; set; }
+ public int configType
+ {
+ get; set;
+ }
///
///
///
- public string testResult { get; set; }
+ public string testResult
+ {
+ get; set;
+ }
///
/// SubItem id
///
- public string subid { get; set; }
+ public string subid
+ {
+ get; set;
+ }
}
[Serializable]
@@ -431,17 +559,26 @@ namespace v2rayN.Mode
///
/// 本地监听端口
///
- public int localPort { get; set; }
+ public int localPort
+ {
+ get; set;
+ }
///
/// 协议,默认为socks
///
- public string protocol { get; set; }
+ public string protocol
+ {
+ get; set;
+ }
///
/// 允许udp
///
- public bool udpEnabled { get; set; }
+ public bool udpEnabled
+ {
+ get; set;
+ }
///
/// 开启流量探测
@@ -455,31 +592,52 @@ namespace v2rayN.Mode
///
///
///
- public int mtu { get; set; }
+ public int mtu
+ {
+ get; set;
+ }
///
///
///
- public int tti { get; set; }
+ public int tti
+ {
+ get; set;
+ }
///
///
///
- public int uplinkCapacity { get; set; }
+ public int uplinkCapacity
+ {
+ get; set;
+ }
///
///
///
- public int downlinkCapacity { get; set; }
+ public int downlinkCapacity
+ {
+ get; set;
+ }
///
///
///
- public bool congestion { get; set; }
+ public bool congestion
+ {
+ get; set;
+ }
///
///
///
- public int readBufferSize { get; set; }
+ public int readBufferSize
+ {
+ get; set;
+ }
///
///
///
- public int writeBufferSize { get; set; }
+ public int writeBufferSize
+ {
+ get; set;
+ }
}
@@ -489,17 +647,26 @@ namespace v2rayN.Mode
///
///
///
- public string id { get; set; }
+ public string id
+ {
+ get; set;
+ }
///
/// 备注
///
- public string remarks { get; set; }
+ public string remarks
+ {
+ get; set;
+ }
///
/// url
///
- public string url { get; set; }
+ public string url
+ {
+ get; set;
+ }
///
/// enable
diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs
index ec178c4d..2ae7cde9 100644
--- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs
+++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
-[assembly: AssemblyFileVersion("2.45")]
+[assembly: AssemblyFileVersion("2.47")]
diff --git a/v2rayN/v2rayN/Properties/Resources.Designer.cs b/v2rayN/v2rayN/Properties/Resources.Designer.cs
index 3935f663..f2d8f030 100644
--- a/v2rayN/v2rayN/Properties/Resources.Designer.cs
+++ b/v2rayN/v2rayN/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace v2rayN.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /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.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -91,25 +91,35 @@ namespace v2rayN.Properties {
}
///
- /// 查找 System.Drawing.Bitmap 类型的本地化资源。
+ /// 查找 System.Byte[] 类型的本地化资源。
///
- internal static System.Drawing.Bitmap help {
+ internal static byte[] grpc_csharp_ext_x64_dll {
get {
- object obj = ResourceManager.GetObject("help", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
+ object obj = ResourceManager.GetObject("grpc_csharp_ext_x64_dll", resourceCulture);
+ return ((byte[])(obj));
}
}
///
/// 查找 System.Byte[] 类型的本地化资源。
///
- internal static byte[] mgwz_dll {
+ internal static byte[] grpc_csharp_ext_x86_dll {
get {
- object obj = ResourceManager.GetObject("mgwz_dll", resourceCulture);
+ object obj = ResourceManager.GetObject("grpc_csharp_ext_x86_dll", resourceCulture);
return ((byte[])(obj));
}
}
+ ///
+ /// 查找 System.Drawing.Bitmap 类型的本地化资源。
+ ///
+ internal static System.Drawing.Bitmap help {
+ get {
+ object obj = ResourceManager.GetObject("help", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
///
@@ -157,6 +167,7 @@ namespace v2rayN.Properties {
///show-on-task-bar 0
///activity-animation 0
///forward-socks5 / 127.0.0.1:__SOCKS_PORT__ .
+ ///max-client-connections 2048
///hide-console
/// 的本地化字符串。
///
diff --git a/v2rayN/v2rayN/Properties/Resources.resx b/v2rayN/v2rayN/Properties/Resources.resx
index f69a06b9..2488ee55 100644
--- a/v2rayN/v2rayN/Properties/Resources.resx
+++ b/v2rayN/v2rayN/Properties/Resources.resx
@@ -127,12 +127,15 @@
..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\resources\grpc_csharp_ext.x64.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\resources\grpc_csharp_ext.x86.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\resources\mgwz.dll.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz
new file mode 100644
index 00000000..b69a16bd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz differ
diff --git a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz
new file mode 100644
index 00000000..d56025ca
Binary files /dev/null and b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz differ
diff --git a/v2rayN/v2rayN/Resources/mgwz.dll.gz b/v2rayN/v2rayN/Resources/mgwz.dll.gz
deleted file mode 100644
index 40a33e5d..00000000
Binary files a/v2rayN/v2rayN/Resources/mgwz.dll.gz and /dev/null differ
diff --git a/v2rayN/v2rayN/grpc_csharp_ext.x64.dll b/v2rayN/v2rayN/grpc_csharp_ext.x64.dll
deleted file mode 100644
index 8c10df69..00000000
Binary files a/v2rayN/v2rayN/grpc_csharp_ext.x64.dll and /dev/null differ
diff --git a/v2rayN/v2rayN/grpc_csharp_ext.x86.dll b/v2rayN/v2rayN/grpc_csharp_ext.x86.dll
deleted file mode 100644
index dd3876df..00000000
Binary files a/v2rayN/v2rayN/grpc_csharp_ext.x86.dll and /dev/null differ
diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj
index 53b582b3..d11b4a76 100644
--- a/v2rayN/v2rayN/v2rayN.csproj
+++ b/v2rayN/v2rayN/v2rayN.csproj
@@ -198,6 +198,11 @@
+
+ True
+ True
+ Resources.resx
+
True
True
@@ -319,14 +324,9 @@
ResXFileCodeGenerator
- Resources.Designer.cs
Designer
+ Resources.Designer.cs
-
- True
- Resources.resx
- True
-
Designer
@@ -342,6 +342,8 @@
+
+
@@ -392,7 +394,6 @@
-
@@ -420,12 +421,6 @@
-
- Always
-
-
- Always
-