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 -