add alpn/userAgent/

This commit is contained in:
2dust 2022-01-08 20:27:36 +08:00
parent f7f23e7980
commit fec47d4b72
26 changed files with 901 additions and 613 deletions

View file

@ -541,7 +541,7 @@
<value>0, 10</value> <value>0, 10</value>
</data> </data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 226</value> <value>729, 221</value>
</data> </data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib"> <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
@ -589,7 +589,7 @@
<value>Bottom</value> <value>Bottom</value>
</data> </data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 456</value> <value>0, 461</value>
</data> </data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 60</value> <value>729, 60</value>
@ -640,7 +640,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing"> <data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 220</value> <value>729, 230</value>
</data> </data>
<data name="transportControl.TabIndex" type="System.Int32, mscorlib"> <data name="transportControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -661,10 +661,10 @@
<value>Bottom</value> <value>Bottom</value>
</data> </data>
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing"> <data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 236</value> <value>0, 231</value>
</data> </data>
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing"> <data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 220</value> <value>729, 230</value>
</data> </data>
<data name="panel3.TabIndex" type="System.Int32, mscorlib"> <data name="panel3.TabIndex" type="System.Int32, mscorlib">
<value>9</value> <value>9</value>
@ -691,7 +691,7 @@
<value>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>729, 516</value> <value>729, 521</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Edit or add a [VLESS] server</value> <value>Edit or add a [VLESS] server</value>

View file

@ -54,15 +54,14 @@
// //
// btnClose // btnClose
// //
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.Name = "btnClose"; this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true; this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click); this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
// //
// groupBox1 // groupBox1
// //
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.cmbFlow); this.groupBox1.Controls.Add(this.cmbFlow);
this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label13); this.groupBox1.Controls.Add(this.label13);
@ -74,12 +73,12 @@
this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.txtAddress); this.groupBox1.Controls.Add(this.txtAddress);
this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.label1);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
// //
// cmbFlow // cmbFlow
// //
resources.ApplyResources(this.cmbFlow, "cmbFlow");
this.cmbFlow.FormattingEnabled = true; this.cmbFlow.FormattingEnabled = true;
this.cmbFlow.Items.AddRange(new object[] { this.cmbFlow.Items.AddRange(new object[] {
resources.GetString("cmbFlow.Items"), resources.GetString("cmbFlow.Items"),
@ -87,6 +86,7 @@
resources.GetString("cmbFlow.Items2"), resources.GetString("cmbFlow.Items2"),
resources.GetString("cmbFlow.Items3"), resources.GetString("cmbFlow.Items3"),
resources.GetString("cmbFlow.Items4")}); resources.GetString("cmbFlow.Items4")});
resources.ApplyResources(this.cmbFlow, "cmbFlow");
this.cmbFlow.Name = "cmbFlow"; this.cmbFlow.Name = "cmbFlow";
// //
// label4 // label4
@ -141,21 +141,21 @@
// //
// panel3 // panel3
// //
resources.ApplyResources(this.panel3, "panel3");
this.panel3.Controls.Add(this.transportControl); this.panel3.Controls.Add(this.transportControl);
resources.ApplyResources(this.panel3, "panel3");
this.panel3.Name = "panel3"; this.panel3.Name = "panel3";
// //
// transportControl // transportControl
// //
resources.ApplyResources(this.transportControl, "transportControl");
this.transportControl.AllowXtls = false; this.transportControl.AllowXtls = false;
resources.ApplyResources(this.transportControl, "transportControl");
this.transportControl.Name = "transportControl"; this.transportControl.Name = "transportControl";
// //
// panel2 // panel2
// //
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose); this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK); this.panel2.Controls.Add(this.btnOK);
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2"; this.panel2.Name = "panel2";
// //
// btnOK // btnOK

View file

@ -117,137 +117,494 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label13.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
<value>113, 12</value> <value>396, 17</value>
</data> </data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 12</value> <value>75, 23</value>
</data>
<data name="&gt;&gt;cmbFlow.Name" xml:space="preserve">
<value>cmbFlow</value>
</data>
<data name="&gt;&gt;label6.Name" xml:space="preserve">
<value>label6</value>
</data>
<data name="cmbFlow.Items1" xml:space="preserve">
<value>xtls-rprx-origin</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label6.AutoSize" type="System.Boolean, mscorlib"> <data name="btnClose.TabIndex" type="System.Int32, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>27</value>
</data>
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="btnClose.Text" xml:space="preserve">
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <value>&amp;Cancel</value>
<value>NoControl</value>
</data> </data>
<data name="&gt;&gt;transportControl.Parent" xml:space="preserve"> <data name="&gt;&gt;btnClose.Name" xml:space="preserve">
<value>panel3</value> <value>btnClose</value>
</data> </data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="&gt;&gt;btnClose.Type" xml:space="preserve">
<value>Bottom</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="cmbFlow.Items" xml:space="preserve"> <data name="&gt;&gt;btnClose.Parent" xml:space="preserve">
<value /> <value>panel2</value>
</data>
<data name="cmbFlow.Items2" xml:space="preserve">
<value>xtls-rprx-origin-udp443</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Password</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="transportControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;label6.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;transportControl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 12</value>
</data>
<data name="cmbFlow.Items3" xml:space="preserve">
<value>xtls-rprx-direct</value>
</data>
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 27</value>
</data>
<data name="&gt;&gt;label13.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Edit or add a [Trojan] server</value>
</data>
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="cmbFlow.Items4" xml:space="preserve">
<value>xtls-rprx-direct-udp443</value>
</data>
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
<value>303, 17</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data> </data>
<data name="&gt;&gt;btnClose.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnClose.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<data name="cmbFlow.Items" xml:space="preserve">
<value />
</data>
<data name="cmbFlow.Items1" xml:space="preserve">
<value>xtls-rprx-origin</value>
</data>
<data name="cmbFlow.Items2" xml:space="preserve">
<value>xtls-rprx-origin-udp443</value>
</data>
<data name="cmbFlow.Items3" xml:space="preserve">
<value>xtls-rprx-direct</value>
</data>
<data name="cmbFlow.Items4" xml:space="preserve">
<value>xtls-rprx-direct-udp443</value>
</data>
<data name="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 123</value>
</data>
<data name="cmbFlow.Size" type="System.Drawing.Size, System.Drawing">
<value>211, 20</value>
</data>
<data name="cmbFlow.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;cmbFlow.Name" xml:space="preserve">
<value>cmbFlow</value>
</data>
<data name="&gt;&gt;cmbFlow.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cmbFlow.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;cmbFlow.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 127</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 12</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>27</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Flow</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
<value>428, 158</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 12</value>
</data>
<data name="label13.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>* Fill in manually</value>
</data>
<data name="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
<data name="&gt;&gt;label13.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label13.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label13.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 155</value>
</data>
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 21</value>
</data>
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;txtRemarks.Name" xml:space="preserve">
<value>txtRemarks</value>
</data>
<data name="&gt;&gt;txtRemarks.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtRemarks.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 159</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 12</value>
</data>
<data name="label6.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Alias (remarks)</value>
</data>
<data name="&gt;&gt;label6.Name" xml:space="preserve">
<value>label6</value>
</data>
<data name="&gt;&gt;label6.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label6.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 91</value>
</data>
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 21</value>
</data>
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;txtId.Name" xml:space="preserve">
<value>txtId</value>
</data>
<data name="&gt;&gt;txtId.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtId.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtId.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 93</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 12</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Password</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 59</value>
</data>
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
<value>194, 21</value>
</data>
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;txtPort.Name" xml:space="preserve">
<value>txtPort</value>
</data>
<data name="&gt;&gt;txtPort.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtPort.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtPort.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 62</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 12</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Server port</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 27</value>
</data>
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
<value>359, 21</value> <value>359, 21</value>
</data> </data>
<data name="&gt;&gt;panel3.Parent" xml:space="preserve"> <data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
<value>$this</value> <value>0</value>
</data>
<data name="&gt;&gt;txtAddress.Name" xml:space="preserve">
<value>txtAddress</value>
</data> </data>
<data name="&gt;&gt;txtAddress.Type" xml:space="preserve"> <data name="&gt;&gt;txtAddress.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing"> <data name="&gt;&gt;txtAddress.Parent" xml:space="preserve">
<value>396, 17</value> <value>groupBox1</value>
</data>
<data name="&gt;&gt;txtAddress.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 31</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 12</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Server address</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 10</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 191</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Server</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="transportControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="transportControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 230</value>
</data>
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;transportControl.Name" xml:space="preserve">
<value>transportControl</value>
</data>
<data name="&gt;&gt;transportControl.Type" xml:space="preserve">
<value>v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;transportControl.Parent" xml:space="preserve">
<value>panel3</value>
</data>
<data name="&gt;&gt;transportControl.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 201</value>
</data>
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 230</value>
</data>
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;panel3.Name" xml:space="preserve">
<value>panel3</value>
</data>
<data name="&gt;&gt;panel3.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panel3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
<value>303, 17</value>
</data>
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
</data>
<data name="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
</data>
<data name="&gt;&gt;btnOK.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnOK.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;btnOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 431</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 60</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 10</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 12</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>707, 491</value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@ -422,370 +779,13 @@
wf+0BQAAgAUAAIAFAACAAQAAgAHB/4ABAACAAQAAgAEAALwBAAC8AQAAvAHB/4ABbP///5H/ wf+0BQAAgAUAAIAFAACAAQAAgAHB/4ABAACAAQAAgAEAALwBAAC8AQAAvAHB/4ABbP///5H/
</value> </value>
</data> </data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>8</value> <value>Edit or add a [Trojan] server</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 60</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;transportControl.Type" xml:space="preserve">
<value>v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label13.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;panel3.Name" xml:space="preserve">
<value>panel3</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 91</value>
</data>
<data name="&gt;&gt;btnOK.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Alias (remarks)</value>
</data>
<data name="&gt;&gt;panel3.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtId.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 220</value>
</data>
<data name="&gt;&gt;label13.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtRemarks.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtId.Name" xml:space="preserve">
<value>txtId</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 127</value>
</data>
<data name="&gt;&gt;txtId.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtRemarks.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 31</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;btnOK.ZOrder" xml:space="preserve">
<value>1</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AddServer6Form</value> <value>AddServer6Form</value>
</data> </data>
<data name="&gt;&gt;cmbFlow.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtPort.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="cmbFlow.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 59</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;btnOK.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="transportControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;txtPort.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 12</value>
</data>
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 123</value>
</data>
<data name="&gt;&gt;txtPort.Name" xml:space="preserve">
<value>txtPort</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 10</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 10</value>
</data>
<data name="&gt;&gt;txtId.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
</data>
<data name="&gt;&gt;btnClose.Name" xml:space="preserve">
<value>btnClose</value>
</data>
<data name="&gt;&gt;btnClose.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;cmbFlow.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 93</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;cmbFlow.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="label6.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;label13.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
<value>194, 21</value>
</data>
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;panel3.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
<data name="&gt;&gt;label6.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value> <value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Server port</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 425</value>
</data>
<data name="&gt;&gt;txtAddress.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 220</value>
</data>
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 12</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Server address</value>
</data>
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 205</value>
</data>
<data name="&gt;&gt;txtAddress.Name" xml:space="preserve">
<value>txtAddress</value>
</data>
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 155</value>
</data>
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 12</value>
</data>
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
<value>428, 158</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>* Fill in manually</value>
</data>
<data name="&gt;&gt;txtPort.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 62</value>
</data>
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>707, 485</value>
</data>
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 21</value>
</data>
<data name="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>707, 195</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;transportControl.Name" xml:space="preserve">
<value>transportControl</value>
</data>
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="cmbFlow.Size" type="System.Drawing.Size, System.Drawing">
<value>211, 20</value>
</data>
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;btnClose.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 12</value>
</data>
<data name="&gt;&gt;txtAddress.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Server</value>
</data>
<data name="&gt;&gt;txtRemarks.Name" xml:space="preserve">
<value>txtRemarks</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 159</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Flow</value>
</data>
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 21</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View file

@ -532,7 +532,7 @@
<value>0, 35</value> <value>0, 35</value>
</data> </data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 219</value> <value>729, 216</value>
</data> </data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib"> <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
@ -580,7 +580,7 @@
<value>Bottom</value> <value>Bottom</value>
</data> </data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 474</value> <value>0, 481</value>
</data> </data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 60</value> <value>729, 60</value>
@ -682,7 +682,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing"> <data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 220</value> <value>729, 230</value>
</data> </data>
<data name="transportControl.TabIndex" type="System.Int32, mscorlib"> <data name="transportControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -703,10 +703,10 @@
<value>Bottom</value> <value>Bottom</value>
</data> </data>
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing"> <data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 254</value> <value>0, 251</value>
</data> </data>
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing"> <data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
<value>729, 220</value> <value>729, 230</value>
</data> </data>
<data name="panel3.TabIndex" type="System.Int32, mscorlib"> <data name="panel3.TabIndex" type="System.Int32, mscorlib">
<value>9</value> <value>9</value>
@ -733,7 +733,7 @@
<value>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>729, 534</value> <value>729, 541</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Edit or add a [VMess] server</value> <value>Edit or add a [VMess] server</value>

View file

@ -31,6 +31,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerTransportControl)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerTransportControl));
this.gbTransport = new System.Windows.Forms.GroupBox(); this.gbTransport = new System.Windows.Forms.GroupBox();
this.panTlsMore = new System.Windows.Forms.Panel(); this.panTlsMore = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.txtSNI = new System.Windows.Forms.TextBox(); this.txtSNI = new System.Windows.Forms.TextBox();
this.labSNI = new System.Windows.Forms.Label(); this.labSNI = new System.Windows.Forms.Label();
this.labAllowInsecure = new System.Windows.Forms.Label(); this.labAllowInsecure = new System.Windows.Forms.Label();
@ -49,6 +50,7 @@
this.labHeaderType = new System.Windows.Forms.Label(); this.labHeaderType = new System.Windows.Forms.Label();
this.labRequestHost = new System.Windows.Forms.Label(); this.labRequestHost = new System.Windows.Forms.Label();
this.cmbHeaderType = new System.Windows.Forms.ComboBox(); this.cmbHeaderType = new System.Windows.Forms.ComboBox();
this.clbAlpn = new System.Windows.Forms.CheckedListBox();
this.gbTransport.SuspendLayout(); this.gbTransport.SuspendLayout();
this.panTlsMore.SuspendLayout(); this.panTlsMore.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@ -76,6 +78,8 @@
// //
// panTlsMore // panTlsMore
// //
this.panTlsMore.Controls.Add(this.clbAlpn);
this.panTlsMore.Controls.Add(this.label1);
this.panTlsMore.Controls.Add(this.txtSNI); this.panTlsMore.Controls.Add(this.txtSNI);
this.panTlsMore.Controls.Add(this.labSNI); this.panTlsMore.Controls.Add(this.labSNI);
this.panTlsMore.Controls.Add(this.labAllowInsecure); this.panTlsMore.Controls.Add(this.labAllowInsecure);
@ -83,6 +87,11 @@
resources.ApplyResources(this.panTlsMore, "panTlsMore"); resources.ApplyResources(this.panTlsMore, "panTlsMore");
this.panTlsMore.Name = "panTlsMore"; this.panTlsMore.Name = "panTlsMore";
// //
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// txtSNI // txtSNI
// //
resources.ApplyResources(this.txtSNI, "txtSNI"); resources.ApplyResources(this.txtSNI, "txtSNI");
@ -202,6 +211,17 @@
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType"); resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
this.cmbHeaderType.Name = "cmbHeaderType"; this.cmbHeaderType.Name = "cmbHeaderType";
// //
// clbAlpn
//
this.clbAlpn.CheckOnClick = true;
resources.ApplyResources(this.clbAlpn, "clbAlpn");
this.clbAlpn.FormattingEnabled = true;
this.clbAlpn.Items.AddRange(new object[] {
resources.GetString("clbAlpn.Items"),
resources.GetString("clbAlpn.Items1")});
this.clbAlpn.MultiColumn = true;
this.clbAlpn.Name = "clbAlpn";
//
// ServerTransportControl // ServerTransportControl
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -239,5 +259,7 @@
private System.Windows.Forms.Label labHeaderType; private System.Windows.Forms.Label labHeaderType;
private System.Windows.Forms.Label labRequestHost; private System.Windows.Forms.Label labRequestHost;
private System.Windows.Forms.ComboBox cmbHeaderType; private System.Windows.Forms.ComboBox cmbHeaderType;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.CheckedListBox clbAlpn;
} }
} }

View file

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Windows.Forms; using System.Windows.Forms;
using v2rayN.Mode; using v2rayN.Mode;
@ -41,6 +42,17 @@ namespace v2rayN.Forms
cmbStreamSecurity.Text = vmessItem.streamSecurity; cmbStreamSecurity.Text = vmessItem.streamSecurity;
cmbAllowInsecure.Text = vmessItem.allowInsecure; cmbAllowInsecure.Text = vmessItem.allowInsecure;
txtSNI.Text = vmessItem.sni; txtSNI.Text = vmessItem.sni;
if (vmessItem.alpn != null)
{
for (int i = 0; i < clbAlpn.Items.Count; i++)
{
if (vmessItem.alpn.Contains(clbAlpn.Items[i].ToString()))
{
clbAlpn.SetItemChecked(i, true);
}
}
}
} }
public void ClearServer(VmessItem item) public void ClearServer(VmessItem item)
@ -54,6 +66,10 @@ namespace v2rayN.Forms
cmbAllowInsecure.Text = ""; cmbAllowInsecure.Text = "";
txtPath.Text = ""; txtPath.Text = "";
txtSNI.Text = ""; txtSNI.Text = "";
for (int i = 0; i < clbAlpn.Items.Count; i++)
{
clbAlpn.SetItemChecked(i, false);
}
} }
public void EndBindingServer() public void EndBindingServer()
@ -73,6 +89,16 @@ namespace v2rayN.Forms
vmessItem.streamSecurity = streamSecurity; vmessItem.streamSecurity = streamSecurity;
vmessItem.allowInsecure = allowInsecure; vmessItem.allowInsecure = allowInsecure;
vmessItem.sni = sni; vmessItem.sni = sni;
var alpn = new List<string>();
for (int i = 0; i < clbAlpn.Items.Count; i++)
{
if (clbAlpn.GetItemChecked(i))
{
alpn.Add(clbAlpn.Items[i].ToString());
}
}
vmessItem.alpn = alpn;
} }
private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e) private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e)

View file

@ -117,14 +117,75 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="clbAlpn.ColumnWidth" type="System.Int32, mscorlib">
<value>70</value>
</data>
<data name="clbAlpn.Items" xml:space="preserve">
<value>h2</value>
</data>
<data name="clbAlpn.Items1" xml:space="preserve">
<value>http/1.1</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
<value>313, 7</value>
</data>
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 20</value>
</data>
<data name="clbAlpn.TabIndex" type="System.Int32, mscorlib">
<value>44</value>
</data>
<data name="&gt;&gt;clbAlpn.Name" xml:space="preserve">
<value>clbAlpn</value>
</data>
<data name="&gt;&gt;clbAlpn.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;clbAlpn.Parent" xml:space="preserve">
<value>panTlsMore</value>
</data>
<data name="&gt;&gt;clbAlpn.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>241, 11</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 12</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>43</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>alpn</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panTlsMore</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="txtSNI.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtSNI.Location" type="System.Drawing.Point, System.Drawing">
<value>300, 7</value> <value>100, 39</value>
</data> </data>
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 21</value> <value>385, 21</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="txtSNI.TabIndex" type="System.Int32, mscorlib"> <data name="txtSNI.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
@ -138,17 +199,16 @@
<value>panTlsMore</value> <value>panTlsMore</value>
</data> </data>
<data name="&gt;&gt;txtSNI.ZOrder" xml:space="preserve"> <data name="&gt;&gt;txtSNI.ZOrder" xml:space="preserve">
<value>0</value> <value>2</value>
</data> </data>
<data name="labSNI.AutoSize" type="System.Boolean, mscorlib"> <data name="labSNI.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labSNI.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="labSNI.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labSNI.Location" type="System.Drawing.Point, System.Drawing"> <data name="labSNI.Location" type="System.Drawing.Point, System.Drawing">
<value>270, 11</value> <value>12, 43</value>
</data> </data>
<data name="labSNI.Size" type="System.Drawing.Size, System.Drawing"> <data name="labSNI.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 12</value> <value>23, 12</value>
@ -169,7 +229,7 @@
<value>panTlsMore</value> <value>panTlsMore</value>
</data> </data>
<data name="&gt;&gt;labSNI.ZOrder" xml:space="preserve"> <data name="&gt;&gt;labSNI.ZOrder" xml:space="preserve">
<value>1</value> <value>3</value>
</data> </data>
<data name="labAllowInsecure.AutoSize" type="System.Boolean, mscorlib"> <data name="labAllowInsecure.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -199,7 +259,7 @@
<value>panTlsMore</value> <value>panTlsMore</value>
</data> </data>
<data name="&gt;&gt;labAllowInsecure.ZOrder" xml:space="preserve"> <data name="&gt;&gt;labAllowInsecure.ZOrder" xml:space="preserve">
<value>2</value> <value>4</value>
</data> </data>
<data name="cmbAllowInsecure.Items" xml:space="preserve"> <data name="cmbAllowInsecure.Items" xml:space="preserve">
<value /> <value />
@ -229,13 +289,13 @@
<value>panTlsMore</value> <value>panTlsMore</value>
</data> </data>
<data name="&gt;&gt;cmbAllowInsecure.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cmbAllowInsecure.ZOrder" xml:space="preserve">
<value>3</value> <value>5</value>
</data> </data>
<data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing"> <data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing">
<value>200, 171</value> <value>200, 149</value>
</data> </data>
<data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing"> <data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 35</value> <value>500, 71</value>
</data> </data>
<data name="panTlsMore.TabIndex" type="System.Int32, mscorlib"> <data name="panTlsMore.TabIndex" type="System.Int32, mscorlib">
<value>33</value> <value>33</value>
@ -283,7 +343,7 @@
<value>1</value> <value>1</value>
</data> </data>
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 136</value> <value>127, 124</value>
</data> </data>
<data name="txtPath.Multiline" type="System.Boolean, mscorlib"> <data name="txtPath.Multiline" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -382,7 +442,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labPath.Location" type="System.Drawing.Point, System.Drawing"> <data name="labPath.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 140</value> <value>9, 128</value>
</data> </data>
<data name="labPath.Size" type="System.Drawing.Size, System.Drawing"> <data name="labPath.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 12</value> <value>29, 12</value>
@ -412,7 +472,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="tipPath.Location" type="System.Drawing.Point, System.Drawing"> <data name="tipPath.Location" type="System.Drawing.Point, System.Drawing">
<value>529, 140</value> <value>529, 128</value>
</data> </data>
<data name="tipPath.Size" type="System.Drawing.Size, System.Drawing"> <data name="tipPath.Size" type="System.Drawing.Size, System.Drawing">
<value>11, 12</value> <value>11, 12</value>
@ -442,7 +502,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="tipRequestHost.Location" type="System.Drawing.Point, System.Drawing"> <data name="tipRequestHost.Location" type="System.Drawing.Point, System.Drawing">
<value>464, 104</value> <value>464, 96</value>
</data> </data>
<data name="tipRequestHost.Size" type="System.Drawing.Size, System.Drawing"> <data name="tipRequestHost.Size" type="System.Drawing.Size, System.Drawing">
<value>11, 12</value> <value>11, 12</value>
@ -472,7 +532,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labStreamSecurity.Location" type="System.Drawing.Point, System.Drawing"> <data name="labStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 182</value> <value>9, 160</value>
</data> </data>
<data name="labStreamSecurity.Size" type="System.Drawing.Size, System.Drawing"> <data name="labStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 12</value> <value>23, 12</value>
@ -496,7 +556,7 @@
<value>8</value> <value>8</value>
</data> </data>
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing"> <data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 178</value> <value>127, 156</value>
</data> </data>
<data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing"> <data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 20</value> <value>60, 20</value>
@ -523,7 +583,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="tipHeaderType.Location" type="System.Drawing.Point, System.Drawing"> <data name="tipHeaderType.Location" type="System.Drawing.Point, System.Drawing">
<value>282, 66</value> <value>282, 64</value>
</data> </data>
<data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing"> <data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing">
<value>11, 12</value> <value>11, 12</value>
@ -547,7 +607,7 @@
<value>10</value> <value>10</value>
</data> </data>
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
<value>158, 100</value> <value>158, 92</value>
</data> </data>
<data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib"> <data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -577,7 +637,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labHeaderType.Location" type="System.Drawing.Point, System.Drawing"> <data name="labHeaderType.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 66</value> <value>9, 64</value>
</data> </data>
<data name="labHeaderType.Size" type="System.Drawing.Size, System.Drawing"> <data name="labHeaderType.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 12</value> <value>95, 12</value>
@ -607,7 +667,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labRequestHost.Location" type="System.Drawing.Point, System.Drawing"> <data name="labRequestHost.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 104</value> <value>9, 96</value>
</data> </data>
<data name="labRequestHost.Size" type="System.Drawing.Size, System.Drawing"> <data name="labRequestHost.Size" type="System.Drawing.Size, System.Drawing">
<value>143, 12</value> <value>143, 12</value>
@ -652,7 +712,7 @@
<value>wireguard</value> <value>wireguard</value>
</data> </data>
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing"> <data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 64</value> <value>127, 60</value>
</data> </data>
<data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing"> <data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing">
<value>143, 20</value> <value>143, 20</value>
@ -679,7 +739,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="gbTransport.Size" type="System.Drawing.Size, System.Drawing"> <data name="gbTransport.Size" type="System.Drawing.Size, System.Drawing">
<value>723, 220</value> <value>723, 223</value>
</data> </data>
<data name="gbTransport.TabIndex" type="System.Int32, mscorlib"> <data name="gbTransport.TabIndex" type="System.Int32, mscorlib">
<value>22</value> <value>22</value>
@ -706,7 +766,7 @@
<value>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing"> <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>723, 220</value> <value>723, 223</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ServerTransportControl</value> <value>ServerTransportControl</value>

View file

@ -118,15 +118,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 12</value>
</data>
<data name="labAllowInsecure.Text" xml:space="preserve">
<value>跳过证书验证(allowInsecure)</value>
</data>
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
<value>183, 7</value>
</data>
<data name="tipNetwork.Size" type="System.Drawing.Size, System.Drawing"> <data name="tipNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>143, 12</value> <value>143, 12</value>
</data> </data>
@ -157,11 +148,8 @@
<data name="labStreamSecurity.Text" xml:space="preserve"> <data name="labStreamSecurity.Text" xml:space="preserve">
<value>底层传输安全(tls)</value> <value>底层传输安全(tls)</value>
</data> </data>
<data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 12</value>
</data>
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 100</value> <value>127, 92</value>
</data> </data>
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing"> <data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
<value>331, 20</value> <value>331, 20</value>
@ -181,4 +169,25 @@
<data name="gbTransport.Text" xml:space="preserve"> <data name="gbTransport.Text" xml:space="preserve">
<value>底层传输方式(transport)</value> <value>底层传输方式(transport)</value>
</data> </data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>282, 11</value>
</data>
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
<value>331, 7</value>
</data>
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 20</value>
</data>
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
<value>391, 21</value>
</data>
<data name="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 12</value>
</data>
<data name="labAllowInsecure.Text" xml:space="preserve">
<value>跳过证书验证(allowInsecure)</value>
</data>
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
<value>183, 7</value>
</data>
</root> </root>

View file

@ -30,6 +30,8 @@
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl));
this.grbMain = new System.Windows.Forms.GroupBox(); this.grbMain = new System.Windows.Forms.GroupBox();
this.txtUserAgent = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.btnShare = new System.Windows.Forms.Button(); this.btnShare = new System.Windows.Forms.Button();
this.chkEnabled = new System.Windows.Forms.CheckBox(); this.chkEnabled = new System.Windows.Forms.CheckBox();
this.btnRemove = new System.Windows.Forms.Button(); this.btnRemove = new System.Windows.Forms.Button();
@ -44,6 +46,8 @@
// //
// grbMain // grbMain
// //
this.grbMain.Controls.Add(this.txtUserAgent);
this.grbMain.Controls.Add(this.label1);
this.grbMain.Controls.Add(this.btnShare); this.grbMain.Controls.Add(this.btnShare);
this.grbMain.Controls.Add(this.chkEnabled); this.grbMain.Controls.Add(this.chkEnabled);
this.grbMain.Controls.Add(this.btnRemove); this.grbMain.Controls.Add(this.btnRemove);
@ -55,6 +59,17 @@
this.grbMain.Name = "grbMain"; this.grbMain.Name = "grbMain";
this.grbMain.TabStop = false; this.grbMain.TabStop = false;
// //
// txtUserAgent
//
resources.ApplyResources(this.txtUserAgent, "txtUserAgent");
this.txtUserAgent.Name = "txtUserAgent";
this.txtUserAgent.Leave += new System.EventHandler(this.txtRemarks_Leave);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// btnShare // btnShare
// //
resources.ApplyResources(this.btnShare, "btnShare"); resources.ApplyResources(this.btnShare, "btnShare");
@ -130,5 +145,7 @@
private System.Windows.Forms.CheckBox chkEnabled; private System.Windows.Forms.CheckBox chkEnabled;
private System.Windows.Forms.Button btnShare; private System.Windows.Forms.Button btnShare;
private System.Windows.Forms.PictureBox picQRCode; private System.Windows.Forms.PictureBox picQRCode;
private System.Windows.Forms.TextBox txtUserAgent;
private System.Windows.Forms.Label label1;
} }
} }

View file

@ -35,6 +35,7 @@ namespace v2rayN.Forms
txtRemarks.Text = subItem.remarks.ToString(); txtRemarks.Text = subItem.remarks.ToString();
txtUrl.Text = subItem.url.ToString(); txtUrl.Text = subItem.url.ToString();
chkEnabled.Checked = subItem.enabled; chkEnabled.Checked = subItem.enabled;
txtUserAgent.Text = subItem.userAgent;
} }
} }
private void EndBindingSub() private void EndBindingSub()
@ -44,6 +45,7 @@ namespace v2rayN.Forms
subItem.remarks = txtRemarks.Text.TrimEx(); subItem.remarks = txtRemarks.Text.TrimEx();
subItem.url = txtUrl.Text.TrimEx(); subItem.url = txtUrl.Text.TrimEx();
subItem.enabled = chkEnabled.Checked; subItem.enabled = chkEnabled.Checked;
subItem.userAgent = txtUserAgent.Text.TrimEx();
} }
} }
private void txtRemarks_Leave(object sender, EventArgs e) private void txtRemarks_Leave(object sender, EventArgs e)

View file

@ -117,18 +117,69 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="txtUserAgent.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 111</value>
</data>
<data name="txtUserAgent.Size" type="System.Drawing.Size, System.Drawing">
<value>473, 21</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="txtUserAgent.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;txtUserAgent.Name" xml:space="preserve">
<value>txtUserAgent</value>
</data>
<data name="&gt;&gt;txtUserAgent.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtUserAgent.Parent" xml:space="preserve">
<value>grbMain</value>
</data>
<data name="&gt;&gt;txtUserAgent.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 115</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 12</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>27</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>User Agent</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>grbMain</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnShare.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnShare.Location" type="System.Drawing.Point, System.Drawing">
<value>434, 21</value> <value>434, 21</value>
</data> </data>
<data name="btnShare.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnShare.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value> <value>75, 23</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnShare.TabIndex" type="System.Int32, mscorlib"> <data name="btnShare.TabIndex" type="System.Int32, mscorlib">
<value>26</value> <value>26</value>
</data> </data>
@ -145,7 +196,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;btnShare.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnShare.ZOrder" xml:space="preserve">
<value>0</value> <value>2</value>
</data> </data>
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib"> <data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -175,7 +226,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;chkEnabled.ZOrder" xml:space="preserve"> <data name="&gt;&gt;chkEnabled.ZOrder" xml:space="preserve">
<value>1</value> <value>3</value>
</data> </data>
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@ -202,10 +253,10 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;btnRemove.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnRemove.ZOrder" xml:space="preserve">
<value>2</value> <value>4</value>
</data> </data>
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 55</value> <value>127, 53</value>
</data> </data>
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib"> <data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -217,7 +268,7 @@
<value>473, 46</value> <value>473, 46</value>
</data> </data>
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib"> <data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
<value>23</value> <value>2</value>
</data> </data>
<data name="&gt;&gt;txtUrl.Name" xml:space="preserve"> <data name="&gt;&gt;txtUrl.Name" xml:space="preserve">
<value>txtUrl</value> <value>txtUrl</value>
@ -229,7 +280,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;txtUrl.ZOrder" xml:space="preserve"> <data name="&gt;&gt;txtUrl.ZOrder" xml:space="preserve">
<value>3</value> <value>5</value>
</data> </data>
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing"> <data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 21</value> <value>127, 21</value>
@ -238,7 +289,7 @@
<value>232, 21</value> <value>232, 21</value>
</data> </data>
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib"> <data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
<value>11</value> <value>1</value>
</data> </data>
<data name="&gt;&gt;txtRemarks.Name" xml:space="preserve"> <data name="&gt;&gt;txtRemarks.Name" xml:space="preserve">
<value>txtRemarks</value> <value>txtRemarks</value>
@ -250,7 +301,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve"> <data name="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve">
<value>4</value> <value>6</value>
</data> </data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib"> <data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -280,7 +331,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>5</value> <value>7</value>
</data> </data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib"> <data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -289,7 +340,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing"> <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 55</value> <value>12, 53</value>
</data> </data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing"> <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 12</value> <value>83, 12</value>
@ -310,7 +361,7 @@
<value>grbMain</value> <value>grbMain</value>
</data> </data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>6</value> <value>8</value>
</data> </data>
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value> <value>Top</value>
@ -319,7 +370,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing"> <data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
<value>619, 110</value> <value>619, 148</value>
</data> </data>
<data name="grbMain.TabIndex" type="System.Int32, mscorlib"> <data name="grbMain.TabIndex" type="System.Int32, mscorlib">
<value>10</value> <value>10</value>
@ -346,10 +397,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing"> <data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 110</value> <value>0, 148</value>
</data> </data>
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing"> <data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
<value>619, 200</value> <value>619, 162</value>
</data> </data>
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms"> <data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value> <value>Zoom</value>

View file

@ -21,7 +21,6 @@ namespace v2rayN
/// </summary> /// </summary>
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test"; public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204"; public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
public const string AvailabilityTestUrl = @"https://www.google.com/generate_204";
/// <summary> /// <summary>
/// CustomRoutingListUrl /// CustomRoutingListUrl

View file

@ -128,18 +128,22 @@ namespace v2rayN.Handler
config.uiItem.mainLvColWidth = new Dictionary<string, int>(); config.uiItem.mainLvColWidth = new Dictionary<string, int>();
} }
//// 如果是用户升级首次会有端口号为0的情况不可用这里处理
//if (config.pacPort == 0) if (config.constItem == null)
//{
// config.pacPort = 8888;
//}
if (Utils.IsNullOrEmpty(config.speedTestUrl))
{ {
config.speedTestUrl = Global.SpeedTestUrl; config.constItem = new ConstItem();
} }
if (Utils.IsNullOrEmpty(config.speedPingTestUrl)) if (Utils.IsNullOrEmpty(config.constItem.speedTestUrl))
{ {
config.speedPingTestUrl = Global.SpeedPingTestUrl; config.constItem.speedTestUrl = Global.SpeedTestUrl;
}
if (Utils.IsNullOrEmpty(config.constItem.speedPingTestUrl))
{
config.constItem.speedPingTestUrl = Global.SpeedPingTestUrl;
}
if (Utils.IsNullOrEmpty(config.constItem.defIEProxyExceptions))
{
config.constItem.defIEProxyExceptions = Global.IEProxyExceptions;
} }
//if (Utils.IsNullOrEmpty(config.remoteDNS)) //if (Utils.IsNullOrEmpty(config.remoteDNS))
//{ //{

View file

@ -13,7 +13,7 @@ namespace v2rayN.Handler
public event EventHandler<ResultEventArgs> UpdateCompleted; public event EventHandler<ResultEventArgs> UpdateCompleted;
public event ErrorEventHandler Error; public event ErrorEventHandler Error;
public class ResultEventArgs : EventArgs public class ResultEventArgs : EventArgs
{ {
@ -31,7 +31,7 @@ namespace v2rayN.Handler
private long totalBytesToReceive = 0; private long totalBytesToReceive = 0;
private DateTime totalDatetime = new DateTime(); private DateTime totalDatetime = new DateTime();
private int DownloadTimeout = -1; private int DownloadTimeout = -1;
public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout) public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout)
{ {
WebClientEx ws = new WebClientEx(); WebClientEx ws = new WebClientEx();
@ -62,7 +62,7 @@ namespace v2rayN.Handler
} }
return ws; return ws;
} }
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{ {
if (UpdateCompleted != null) if (UpdateCompleted != null)
@ -131,7 +131,7 @@ namespace v2rayN.Handler
/// DownloadString /// DownloadString
/// </summary> /// </summary>
/// <param name="url"></param> /// <param name="url"></param>
public void WebDownloadString(string url) public void WebDownloadString(string url, string userAgent)
{ {
string source = string.Empty; string source = string.Empty;
try try
@ -139,6 +139,11 @@ namespace v2rayN.Handler
Utils.SetSecurityProtocol(); Utils.SetSecurityProtocol();
WebClientEx ws = new WebClientEx(); WebClientEx ws = new WebClientEx();
if (!Utils.IsNullOrEmpty(userAgent))
{
ws.Headers.Add("user-agent", userAgent);
}
ws.DownloadStringCompleted += Ws_DownloadStringCompleted; ws.DownloadStringCompleted += Ws_DownloadStringCompleted;
ws.DownloadStringAsync(new Uri(url)); ws.DownloadStringAsync(new Uri(url));
} }

View file

@ -76,7 +76,8 @@ namespace v2rayN.Handler
host = item.requestHost, host = item.requestHost,
path = item.path, path = item.path,
tls = item.streamSecurity, tls = item.streamSecurity,
sni = item.sni sni = item.sni,
alpn = Utils.List2String(item.alpn)
}; };
url = Utils.ToJson(vmessQRCode); url = Utils.ToJson(vmessQRCode);
@ -180,6 +181,10 @@ namespace v2rayN.Handler
{ {
dicQuery.Add("sni", item.sni); dicQuery.Add("sni", item.sni);
} }
if (item.alpn != null && item.alpn.Count > 0)
{
dicQuery.Add("alpn", Utils.UrlEncode(Utils.List2String(item.alpn)));
}
if (!Utils.IsNullOrEmpty(item.network)) if (!Utils.IsNullOrEmpty(item.network))
{ {
dicQuery.Add("type", item.network); dicQuery.Add("type", item.network);
@ -422,8 +427,9 @@ namespace v2rayN.Handler
vmessItem.path = Utils.ToString(vmessQRCode.path); vmessItem.path = Utils.ToString(vmessQRCode.path);
vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls); vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls);
vmessItem.sni = Utils.ToString(vmessQRCode.sni); vmessItem.sni = Utils.ToString(vmessQRCode.sni);
vmessItem.alpn = Utils.String2List(vmessQRCode.alpn);
return vmessItem; return vmessItem;
} }
private static VmessItem ResolveVmess4Kitsunebi(string result) private static VmessItem ResolveVmess4Kitsunebi(string result)
@ -730,6 +736,7 @@ namespace v2rayN.Handler
item.security = query["encryption"] ?? "none"; item.security = query["encryption"] ?? "none";
item.streamSecurity = query["security"] ?? ""; item.streamSecurity = query["security"] ?? "";
item.sni = query["sni"] ?? ""; item.sni = query["sni"] ?? "";
item.alpn = Utils.String2List(Utils.UrlDecode(query["alpn"] ?? ""));
item.network = query["type"] ?? "tcp"; item.network = query["type"] ?? "tcp";
switch (item.network) switch (item.network)
{ {

View file

@ -122,7 +122,7 @@ namespace v2rayN.Handler
{ {
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex); WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
int responseTime = -1; int responseTime = -1;
string status = GetRealPingTime(_config.speedPingTestUrl, webProxy, out responseTime); string status = GetRealPingTime(_config.constItem.speedPingTestUrl, webProxy, out responseTime);
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : FormatOut(status, ""); string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : FormatOut(status, "");
_updateFunc(itemIndex, output); _updateFunc(itemIndex, output);
} }
@ -157,7 +157,7 @@ namespace v2rayN.Handler
{ {
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort); WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
int responseTime = -1; int responseTime = -1;
string status = GetRealPingTime(Global.AvailabilityTestUrl, webProxy, out responseTime); string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out responseTime);
bool noError = Utils.IsNullOrEmpty(status); bool noError = Utils.IsNullOrEmpty(status);
return noError ? responseTime : -1; return noError ? responseTime : -1;
} }
@ -193,7 +193,7 @@ namespace v2rayN.Handler
return; return;
} }
string url = _config.speedTestUrl; string url = _config.constItem.speedTestUrl;
DownloadHandle downloadHandle2 = new DownloadHandle(); DownloadHandle downloadHandle2 = new DownloadHandle();
downloadHandle2.UpdateCompleted += (sender2, args) => downloadHandle2.UpdateCompleted += (sender2, args) =>
{ {

View file

@ -179,6 +179,7 @@ namespace v2rayN.Handler
{ {
string id = config.subItem[k - 1].id.Trim(); string id = config.subItem[k - 1].id.Trim();
string url = config.subItem[k - 1].url.Trim(); string url = config.subItem[k - 1].url.Trim();
string userAgent = config.subItem[k - 1].userAgent.Trim();
string hashCode = $"{k}->"; string hashCode = $"{k}->";
if (config.subItem[k - 1].enabled == false) if (config.subItem[k - 1].enabled == false)
{ {
@ -227,7 +228,7 @@ namespace v2rayN.Handler
_updateFunc(false, args.GetException().Message); _updateFunc(false, args.GetException().Message);
}; };
downloadHandle3.WebDownloadString(url); downloadHandle3.WebDownloadString(url, userAgent);
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}"); _updateFunc(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}");
} }

View file

@ -587,7 +587,8 @@ namespace v2rayN.Handler
TlsSettings tlsSettings = new TlsSettings TlsSettings tlsSettings = new TlsSettings
{ {
allowInsecure = config.allowInsecure() allowInsecure = config.allowInsecure(),
alpn = config.alpn()
}; };
if (!string.IsNullOrWhiteSpace(sni)) if (!string.IsNullOrWhiteSpace(sni))
{ {
@ -607,7 +608,8 @@ namespace v2rayN.Handler
TlsSettings xtlsSettings = new TlsSettings TlsSettings xtlsSettings = new TlsSettings
{ {
allowInsecure = config.allowInsecure() allowInsecure = config.allowInsecure(),
alpn = config.alpn()
}; };
if (!string.IsNullOrWhiteSpace(sni)) if (!string.IsNullOrWhiteSpace(sni))
{ {

View file

@ -166,7 +166,8 @@ namespace v2rayN.HttpProxyHandler
} }
if (type == ESysProxyType.ForcedChange) if (type == ESysProxyType.ForcedChange)
{ {
SysProxyHandle.SetIEProxy(true, $"{Global.Loopback}:{port}", config.systemProxyExceptions); var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
SysProxyHandle.SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions);
} }
else if (type == ESysProxyType.ForcedClear) else if (type == ESysProxyType.ForcedClear)
{ {

View file

@ -85,15 +85,6 @@ namespace v2rayN.HttpProxyHandler
public static void SetIEProxy(bool global, string strProxy, string strExceptions) public static void SetIEProxy(bool global, string strProxy, string strExceptions)
{ {
if (Utils.IsNullOrEmpty(strExceptions))
{
strExceptions = Global.IEProxyExceptions;
}
else
{
strExceptions = $"{Global.IEProxyExceptions};{strExceptions}";
}
string arguments = global string arguments = global
? $"global {strProxy} {strExceptions}" ? $"global {strProxy} {strExceptions}"
: $"pac {strProxy}"; : $"pac {strProxy}";

View file

@ -76,21 +76,6 @@ namespace v2rayN.Mode
get; set; get; set;
} }
/// <summary>
/// 自定义服务器下载测速url
/// </summary>
public string speedTestUrl
{
get; set;
}
/// <summary>
/// 自定义“服务器真连接延迟”测试url
/// </summary>
public string speedPingTestUrl
{
get; set;
}
/// <summary> /// <summary>
/// 允许来自局域网的连接 /// 允许来自局域网的连接
/// </summary> /// </summary>
@ -200,6 +185,10 @@ namespace v2rayN.Mode
get; set; get; set;
} = 0; } = 0;
public ConstItem constItem
{
get; set;
}
#region #region
public string address() public string address()
@ -371,6 +360,21 @@ namespace v2rayN.Mode
} }
return vmess[index].sni.TrimEx(); return vmess[index].sni.TrimEx();
} }
public List<string> alpn()
{
if (index < 0)
{
return null;
}
if (vmess[index].alpn != null && vmess[index].alpn.Count > 0)
{
return vmess[index].alpn;
}
else
{
return null;
}
}
#endregion #endregion
} }
@ -604,6 +608,13 @@ namespace v2rayN.Mode
{ {
get; set; get; set;
} }
/// <summary>
/// tls alpn
/// </summary>
public List<string> alpn
{
get; set;
}
} }
[Serializable] [Serializable]
@ -725,6 +736,14 @@ namespace v2rayN.Mode
/// enable /// enable
/// </summary> /// </summary>
public bool enabled { get; set; } = true; public bool enabled { get; set; } = true;
/// <summary>
///
/// </summary>
public string userAgent
{
get; set;
} = string.Empty;
} }
[Serializable] [Serializable]
@ -742,4 +761,27 @@ namespace v2rayN.Mode
get; set; get; set;
} }
} }
[Serializable]
public class ConstItem
{
/// <summary>
/// 自定义服务器下载测速url
/// </summary>
public string speedTestUrl
{
get; set;
}
/// <summary>
/// 自定义“服务器真连接延迟”测试url
/// </summary>
public string speedPingTestUrl
{
get; set;
}
public string defIEProxyExceptions
{
get; set;
}
}
} }

View file

@ -404,6 +404,13 @@ namespace v2rayN.Mode
/// ///
/// </summary> /// </summary>
public string serverName { get; set; } public string serverName { get; set; }
/// <summary>
///
/// </summary>
public List<string> alpn
{
get; set;
}
} }
public class TcpSettings public class TcpSettings

View file

@ -2,61 +2,68 @@
namespace v2rayN.Mode namespace v2rayN.Mode
{ {
/// <summary>
/// https://github.com/2dust/v2rayN/wiki/
/// </summary>
[Serializable] [Serializable]
class VmessQRCode class VmessQRCode
{ {
/// <summary> /// <summary>
/// 版本 ///
/// </summary> /// </summary>
public string v { get; set; } = string.Empty; public string v { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 备注 ///
/// </summary> /// </summary>
public string ps { get; set; } = string.Empty; public string ps { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VMess 远程服务器地址 ///
/// </summary> /// </summary>
public string add { get; set; } = string.Empty; public string add { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VMess 远程服务器端口 ///
/// </summary> /// </summary>
public string port { get; set; } = string.Empty; public string port { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VMess 远程服务器ID ///
/// </summary> /// </summary>
public string id { get; set; } = string.Empty; public string id { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VMess 远程服务器额外ID ///
/// </summary> /// </summary>
public string aid { get; set; } = string.Empty; public string aid { get; set; } = string.Empty;
/// <summary> /// <summary>
/// VMess Security ///
/// </summary> /// </summary>
public string scy { get; set; } = string.Empty; public string scy { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 传输协议tcp,kcp,ws ///
/// </summary> /// </summary>
public string net { get; set; } = string.Empty; public string net { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 伪装类型 ///
/// </summary> /// </summary>
public string type { get; set; } = string.Empty; public string type { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 伪装的域名 ///
/// </summary> /// </summary>
public string host { get; set; } = string.Empty; public string host { get; set; } = string.Empty;
/// <summary> /// <summary>
/// path ///
/// </summary> /// </summary>
public string path { get; set; } = string.Empty; public string path { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 底层传输安全 /// TLS
/// </summary> /// </summary>
public string tls { get; set; } = string.Empty; public string tls { get; set; } = string.Empty;
/// <summary> /// <summary>
/// SNI /// TLS SNI
/// </summary> /// </summary>
public string sni { get; set; } = string.Empty; public string sni { get; set; } = string.Empty;
/// <summary>
/// TLS alpn
/// </summary>
public string alpn { get; set; } = string.Empty;
} }
} }

View file

@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”: // 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")] //[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("4.27")] [assembly: AssemblyFileVersion("4.28")]

View file

@ -180,6 +180,10 @@ namespace v2rayN
{ {
try try
{ {
if (lst == null)
{
return string.Empty;
}
if (wrap) if (wrap)
{ {
return string.Join("," + Environment.NewLine, lst.ToArray()); return string.Join("," + Environment.NewLine, lst.ToArray());
@ -627,6 +631,26 @@ namespace v2rayN
regKey?.Close(); regKey?.Close();
} }
} }
/// <summary>
/// 判断.Net Framework的Release是否符合
/// (.Net Framework 版本在4.0及以上)
/// </summary>
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
/// <returns></returns>
public static bool GetDotNetRelease(int release)
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null)
{
return (int)ndpKey.GetValue("Release") >= release ? true : false;
}
return false;
}
}
#endregion #endregion
#region #region
@ -693,11 +717,22 @@ namespace v2rayN
public static void SetSecurityProtocol() public static void SetSecurityProtocol()
{ {
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 //.NET Framework 4.8
| SecurityProtocolType.Tls if (GetDotNetRelease(528040))
| SecurityProtocolType.Tls11 {
| SecurityProtocolType.Tls12 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls13; | SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Tls13;
}
else
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12;
}
ServicePointManager.DefaultConnectionLimit = 256; ServicePointManager.DefaultConnectionLimit = 256;
} }
#endregion #endregion

View file

@ -487,24 +487,24 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Google.Protobuf"> <PackageReference Include="Google.Protobuf">
<Version>3.11.4</Version> <Version>3.19.1</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Grpc.Core"> <PackageReference Include="Grpc.Core">
<Version>2.27.0</Version> <Version>2.42.0</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Grpc.Tools"> <PackageReference Include="Grpc.Tools">
<Version>2.27.0</Version> <Version>2.42.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="log4net"> <PackageReference Include="log4net">
<Version>2.0.13</Version> <Version>2.0.14</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Newtonsoft.Json"> <PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version> <Version>13.0.1</Version>
</PackageReference> </PackageReference>
<PackageReference Include="ZXing.Net"> <PackageReference Include="ZXing.Net">
<Version>0.16.5</Version> <Version>0.16.7</Version>
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />