diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs index f290e0d9..2e457125 100644 --- a/v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs +++ b/v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs @@ -31,6 +31,8 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer5Form)); this.btnClose = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cmbFlow = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); this.btnGUID = new System.Windows.Forms.Button(); this.label13 = new System.Windows.Forms.Label(); this.groupBox2 = new System.Windows.Forms.GroupBox(); @@ -94,6 +96,8 @@ // groupBox1 // resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.cmbFlow); + this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.btnGUID); this.groupBox1.Controls.Add(this.label13); this.groupBox1.Controls.Add(this.groupBox2); @@ -111,6 +115,22 @@ this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // + // cmbFlow + // + resources.ApplyResources(this.cmbFlow, "cmbFlow"); + this.cmbFlow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbFlow.FormattingEnabled = true; + this.cmbFlow.Items.AddRange(new object[] { + resources.GetString("cmbFlow.Items"), + resources.GetString("cmbFlow.Items1"), + resources.GetString("cmbFlow.Items2")}); + this.cmbFlow.Name = "cmbFlow"; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // // btnGUID // resources.ApplyResources(this.btnGUID, "btnGUID"); @@ -253,7 +273,8 @@ this.cmbStreamSecurity.FormattingEnabled = true; this.cmbStreamSecurity.Items.AddRange(new object[] { resources.GetString("cmbStreamSecurity.Items"), - resources.GetString("cmbStreamSecurity.Items1")}); + resources.GetString("cmbStreamSecurity.Items1"), + resources.GetString("cmbStreamSecurity.Items2")}); this.cmbStreamSecurity.Name = "cmbStreamSecurity"; this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged); // @@ -485,5 +506,7 @@ private System.Windows.Forms.Panel panTlsMore; private System.Windows.Forms.Label label24; private System.Windows.Forms.Label label23; + private System.Windows.Forms.ComboBox cmbFlow; + private System.Windows.Forms.Label label4; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.cs b/v2rayN/v2rayN/Forms/AddServer5Form.cs index b11974e5..43ef11ea 100644 --- a/v2rayN/v2rayN/Forms/AddServer5Form.cs +++ b/v2rayN/v2rayN/Forms/AddServer5Form.cs @@ -36,7 +36,8 @@ namespace v2rayN.Forms { txtAddress.Text = vmessItem.address; txtPort.Text = vmessItem.port.ToString(); - txtId.Text = vmessItem.id; + txtId.Text = vmessItem.id; + cmbFlow.Text = vmessItem.flow; cmbSecurity.Text = vmessItem.security; cmbNetwork.Text = vmessItem.network; txtRemarks.Text = vmessItem.remarks; @@ -57,6 +58,7 @@ namespace v2rayN.Forms txtAddress.Text = ""; txtPort.Text = ""; txtId.Text = ""; + cmbFlow.Text = ""; cmbSecurity.Text = Global.None; cmbNetwork.Text = Global.DefaultNetwork; txtRemarks.Text = ""; @@ -112,6 +114,7 @@ namespace v2rayN.Forms string address = txtAddress.Text; string port = txtPort.Text; string id = txtId.Text; + string flow = cmbFlow.Text; string security = cmbSecurity.Text; string network = cmbNetwork.Text; string remarks = txtRemarks.Text; @@ -137,11 +140,12 @@ namespace v2rayN.Forms UI.Show(UIRes.I18N("FillUUID")); return; } - + vmessItem.address = address; vmessItem.port = Utils.ToInt(port); vmessItem.id = id; + vmessItem.flow = flow; vmessItem.security = security; vmessItem.network = network; vmessItem.remarks = remarks; diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.resx b/v2rayN/v2rayN/Forms/AddServer5Form.resx index 3c01ce5a..e83bbdee 100644 --- a/v2rayN/v2rayN/Forms/AddServer5Form.resx +++ b/v2rayN/v2rayN/Forms/AddServer5Form.resx @@ -118,12 +118,15 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 4 + 6 113, 12 + + 1 + 285, 179 @@ -131,7 +134,7 @@ 124, 62 - 6 + 8 Path @@ -143,16 +146,16 @@ Transport protocol(network) - 7 + 9 panTlsMore - - groupBox1 + + 4 - - 1 + + 6, 12 label15 @@ -166,9 +169,6 @@ 3)h2 host Separated by commas (,) - - none - Top @@ -198,6 +198,9 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 127, 117 + 6 @@ -262,10 +265,13 @@ panTlsMore - 8 + 10 - - cmbAllowInsecure + + none + + + groupBox1 127, 85 @@ -273,6 +279,9 @@ 16 + + utp + 12, 179 @@ -318,6 +327,9 @@ 158, 90 + + 0 + 2 @@ -333,6 +345,12 @@ 237, 22 + + 12 + + + TLS + 3)QUIC key/Kcp seed @@ -346,7 +364,7 @@ txtPort - 2 + 4 groupBox2 @@ -382,19 +400,19 @@ ws - 11 + 13 9, 66 - 13 + 15 Import server configuration - - 6, 12 + + 137, 12 1 @@ -405,6 +423,9 @@ 15 + + xtls-rprx-origin-udp443 + label17 @@ -417,6 +438,9 @@ groupBox2 + + 5 + 215, 12 @@ -447,6 +471,9 @@ txtRemarks + + 29, 12 + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null @@ -471,8 +498,8 @@ 95, 12 - - NoControl + + 1 350, 32 @@ -480,15 +507,21 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 22 - - groupBox1 + + 526, 179 + + + 211, 20 True + + groupBox2 + groupBox2 @@ -498,6 +531,9 @@ label12 + + Flow + True @@ -513,8 +549,8 @@ label23 - - groupBox1 + + allowInsecure 143, 20 @@ -543,11 +579,11 @@ 0 - - 2 + + xtls - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 47, 12 label8 @@ -562,7 +598,7 @@ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 0 + 2 35 @@ -585,6 +621,9 @@ label9 + + cmbFlow + label20 @@ -600,24 +639,27 @@ MenuItem1 - - label1 + + groupBox1 13 - - 34 - - - 22 + + label7 177, 20 + + groupBox1 + groupBox2 + + True + btnClose @@ -645,9 +687,6 @@ 729, 60 - - allowInsecure - True @@ -672,6 +711,9 @@ 7 + + NoControl + 143, 21 @@ -705,6 +747,9 @@ 119, 12 + + 278, 21 + True @@ -739,7 +784,7 @@ Fill - 10 + 12 groupBox2 @@ -780,9 +825,6 @@ 161, 143 - - 4 - groupBox1 @@ -798,9 +840,6 @@ 1 - - 6 - 10 @@ -828,6 +867,9 @@ 729, 10 + + 107, 7 + 470, 131 @@ -840,8 +882,8 @@ 22 - - 396, 54 + + 300, 53 @@ -861,12 +903,12 @@ dtls - - 47, 12 - MenuItemImportServer + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + groupBox2 @@ -894,6 +936,9 @@ + + 124, 242 + Server @@ -909,8 +954,8 @@ groupBox1 - - txtAddress + + 6 True @@ -945,8 +990,8 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 12 + + 396, 54 True @@ -958,7 +1003,7 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 1 + 3 119, 12 @@ -984,9 +1029,6 @@ groupBox2 - - label7 - 4 @@ -1005,11 +1047,14 @@ http + + label1 + True - - 526, 179 + + 34 9 @@ -1026,14 +1071,14 @@ 20 - - TLS + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 1 - 3 + 5 UUID(id) @@ -1053,6 +1098,9 @@ groupBox1 + + cmbAllowInsecure + 237, 22 @@ -1065,8 +1113,11 @@ 8 - - Camouflage domain(host) + + 24 + + + 15 0 @@ -1086,29 +1137,32 @@ 203, 12 - - utp + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 124, 242 + + txtAddress 30 - 12 + 14 System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 469, 100 + 359, 21 29 - - 469, 100 + + groupBox1 2 @@ -1123,7 +1177,7 @@ srtp - 5 + 7 System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -1137,8 +1191,8 @@ 75, 23 - - 137, 12 + + Camouflage domain(host) *Default value tcp @@ -1149,8 +1203,8 @@ 729, 594 - - 5 + + label4 31 @@ -1197,17 +1251,20 @@ 28 - - 107, 7 + + groupBox1 groupBox2 + + xtls-rprx-origin + Import client configuration - - 15 + + 12, 121 4)QUIC securty @@ -1215,14 +1272,17 @@ 0, 25 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + cmbSecurity tcp - - groupBox2 + + 25 btnGUID @@ -1248,8 +1308,8 @@ groupBox2 - - 278, 21 + + NoControl 9, 32 @@ -1264,7 +1324,7 @@ panel2 - 9 + 11 groupBox2 @@ -1296,6 +1356,9 @@ 526, 197 + + 2 + 53, 12 diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx index 4e3deccf..61459587 100644 --- a/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx @@ -123,6 +123,13 @@ 服务器 + + + 65, 12 + + + 流控(Flow) + 生成(&G) @@ -132,7 +139,6 @@ 底层传输方式(transport) - 149, 12 diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index 487b307d..bc7c5d8d 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -103,6 +103,7 @@ namespace v2rayN /// /// public const string StreamSecurity = "tls"; + public const string StreamSecurityX = "xtls"; public const string InboundSocks = "socks"; public const string InboundHttp = "http"; diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs index 356acb8e..fb9d53ce 100644 --- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs @@ -467,6 +467,7 @@ namespace v2rayN.Handler //远程服务器用户ID usersItem.id = config.id(); usersItem.alterId = 0; + usersItem.flow = config.flow(); usersItem.email = Global.userEMail; usersItem.encryption = config.security(); @@ -518,6 +519,22 @@ namespace v2rayN.Handler streamSettings.tlsSettings = tlsSettings; } + //if xtls + if (config.streamSecurity() == Global.StreamSecurityX) + { + streamSettings.security = config.streamSecurity(); + + TlsSettings xtlsSettings = new TlsSettings + { + allowInsecure = config.allowInsecure() + }; + if (!string.IsNullOrWhiteSpace(host)) + { + xtlsSettings.serverName = host; + } + streamSettings.xtlsSettings = xtlsSettings; + } + //streamSettings switch (config.network()) { @@ -905,6 +922,7 @@ namespace v2rayN.Handler { inbound.protocol = Global.vlessProtocolLite; usersItem.alterId = 0; + usersItem.flow = config.flow(); inbound.settings.decryption = config.security(); } diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs index 90d4eb9c..eac745fd 100644 --- a/v2rayN/v2rayN/Mode/Config.cs +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -365,7 +365,14 @@ namespace v2rayN.Mode return vmess[index].getItemId(); } - + public string flow() + { + if (index < 0) + { + return string.Empty; + } + return vmess[index].flow.TrimEx(); + } #endregion } @@ -391,6 +398,7 @@ namespace v2rayN.Mode configType = (int)EConfigType.Vmess; testResult = string.Empty; subid = string.Empty; + flow = string.Empty; } public string getSummary() @@ -582,6 +590,14 @@ namespace v2rayN.Mode { get; set; } + + /// + /// VLESS flow + /// + public string flow + { + get; set; + } } [Serializable] diff --git a/v2rayN/v2rayN/Mode/V2rayConfig.cs b/v2rayN/v2rayN/Mode/V2rayConfig.cs index dd0bc7ca..9f0cbf1f 100644 --- a/v2rayN/v2rayN/Mode/V2rayConfig.cs +++ b/v2rayN/v2rayN/Mode/V2rayConfig.cs @@ -164,6 +164,11 @@ namespace v2rayN.Mode /// VLESS /// public string encryption { get; set; } + + /// + /// VLESS + /// + public string flow { get; set; } } public class Sniffing { @@ -393,7 +398,12 @@ namespace v2rayN.Mode /// QUIC /// public QuicSettings quicSettings { get; set; } - + + /// + /// VLESS xtls + /// + public TlsSettings xtlsSettings { get; set; } + } public class TlsSettings diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs index c68ef520..275106c7 100644 --- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs +++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ using System.Runtime.InteropServices; // 方法是按如下所示使用“*”: //[assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyVersion("1.0.0")] -[assembly: AssemblyFileVersion("3.23")] +[assembly: AssemblyFileVersion("3.24")]