From 8b63a19161f5057d2d041494548733720c064899 Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Sun, 23 May 2021 20:25:22 +0800
Subject: [PATCH] add grpc mode
---
v2rayN/v2rayN/Forms/AddServer5Form.cs | 12 +-
v2rayN/v2rayN/Forms/AddServer5Form.resx | 4 +-
.../v2rayN/Forms/AddServer5Form.zh-Hans.resx | 2 +-
v2rayN/v2rayN/Forms/AddServerForm.cs | 13 +-
v2rayN/v2rayN/Forms/AddServerForm.resx | 741 +++---------------
.../v2rayN/Forms/AddServerForm.zh-Hans.resx | 2 +-
v2rayN/v2rayN/Global.cs | 4 +
v2rayN/v2rayN/Handler/ShareHandler.cs | 5 +
v2rayN/v2rayN/Handler/V2rayConfigHandler.cs | 1 +
v2rayN/v2rayN/Mode/V2rayConfig.cs | 4 +
10 files changed, 155 insertions(+), 633 deletions(-)
diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.cs b/v2rayN/v2rayN/Forms/AddServer5Form.cs
index 6fd71ad6..9c2f350a 100644
--- a/v2rayN/v2rayN/Forms/AddServer5Form.cs
+++ b/v2rayN/v2rayN/Forms/AddServer5Form.cs
@@ -76,6 +76,7 @@ namespace v2rayN.Forms
SetHeaderType();
}
+
///
/// 设置伪装选项
///
@@ -90,23 +91,30 @@ namespace v2rayN.Forms
return;
}
- cmbHeaderType.Items.Add(Global.None);
if (network.Equals(Global.DefaultNetwork))
{
+ cmbHeaderType.Items.Add(Global.None);
cmbHeaderType.Items.Add(Global.TcpHeaderHttp);
}
else if (network.Equals("kcp") || network.Equals("quic"))
{
+ cmbHeaderType.Items.Add(Global.None);
cmbHeaderType.Items.Add("srtp");
cmbHeaderType.Items.Add("utp");
cmbHeaderType.Items.Add("wechat-video");
cmbHeaderType.Items.Add("dtls");
cmbHeaderType.Items.Add("wireguard");
}
+ else if (network.Equals("grpc"))
+ {
+ cmbHeaderType.Items.Add(Global.GrpcgunMode);
+ cmbHeaderType.Items.Add(Global.GrpcmultiMode);
+ }
else
{
+ cmbHeaderType.Items.Add(Global.None);
}
- cmbHeaderType.Text = Global.None;
+ cmbHeaderType.SelectedIndex = 0;
}
private void btnOK_Click(object sender, EventArgs e)
diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.resx b/v2rayN/v2rayN/Forms/AddServer5Form.resx
index 0bd3ebb9..b86110a6 100644
--- a/v2rayN/v2rayN/Forms/AddServer5Form.resx
+++ b/v2rayN/v2rayN/Forms/AddServer5Form.resx
@@ -826,13 +826,13 @@
282, 68
- 299, 12
+ 293, 12
20
- *tcp or kcp or QUIC camouflage type, default none
+ *tcp or kcp or QUIC camouflage type or grpc mode
label12
diff --git a/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx
index 841c0bd2..bd048332 100644
--- a/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx
@@ -224,7 +224,7 @@
197, 12
- *tcp或kcp或QUIC伪装类型,默认none
+ *tcp或kcp或QUIC伪装类型或grpc模式
127, 102
diff --git a/v2rayN/v2rayN/Forms/AddServerForm.cs b/v2rayN/v2rayN/Forms/AddServerForm.cs
index 99eb4916..a7de10ad 100644
--- a/v2rayN/v2rayN/Forms/AddServerForm.cs
+++ b/v2rayN/v2rayN/Forms/AddServerForm.cs
@@ -6,7 +6,7 @@ using v2rayN.Mode;
namespace v2rayN.Forms
{
public partial class AddServerForm : BaseServerForm
- {
+ {
public AddServerForm()
{
@@ -90,23 +90,30 @@ namespace v2rayN.Forms
return;
}
- cmbHeaderType.Items.Add(Global.None);
if (network.Equals(Global.DefaultNetwork))
{
+ cmbHeaderType.Items.Add(Global.None);
cmbHeaderType.Items.Add(Global.TcpHeaderHttp);
}
else if (network.Equals("kcp") || network.Equals("quic"))
{
+ cmbHeaderType.Items.Add(Global.None);
cmbHeaderType.Items.Add("srtp");
cmbHeaderType.Items.Add("utp");
cmbHeaderType.Items.Add("wechat-video");
cmbHeaderType.Items.Add("dtls");
cmbHeaderType.Items.Add("wireguard");
}
+ else if (network.Equals("grpc"))
+ {
+ cmbHeaderType.Items.Add(Global.GrpcgunMode);
+ cmbHeaderType.Items.Add(Global.GrpcmultiMode);
+ }
else
{
+ cmbHeaderType.Items.Add(Global.None);
}
- cmbHeaderType.Text = Global.None;
+ cmbHeaderType.SelectedIndex = 0;
}
private void btnOK_Click(object sender, EventArgs e)
diff --git a/v2rayN/v2rayN/Forms/AddServerForm.resx b/v2rayN/v2rayN/Forms/AddServerForm.resx
index 8289c639..a13e5ab4 100644
--- a/v2rayN/v2rayN/Forms/AddServerForm.resx
+++ b/v2rayN/v2rayN/Forms/AddServerForm.resx
@@ -143,226 +143,6 @@
0
-
- btnGUID
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 0
-
-
- label13
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 1
-
-
- groupBox2
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 2
-
-
- label8
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 3
-
-
- cmbSecurity
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 4
-
-
- txtRemarks
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 5
-
-
- label6
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 6
-
-
- label5
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 7
-
-
- txtAlterId
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 8
-
-
- label4
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 9
-
-
- txtId
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 10
-
-
- label3
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 11
-
-
- txtPort
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 12
-
-
- label2
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 13
-
-
- txtAddress
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 14
-
-
- label1
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 15
-
-
-
- Fill
-
-
- 0, 35
-
-
- 729, 499
-
-
- 3
-
-
- Server
-
-
- groupBox1
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 0
-
411, 83
@@ -414,288 +194,10 @@
1
-
- label25
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 0
-
-
- label24
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 1
-
-
- label23
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 2
-
-
- panTlsMore
-
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 3
-
-
- label9
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 4
-
-
- label20
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 5
-
-
- txtPath
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 6
-
-
- cmbNetwork
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 7
-
-
- label7
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 8
-
-
- label19
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 9
-
-
- label18
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 10
-
-
- label17
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 11
-
-
- label16
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 12
-
-
- label14
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 13
-
-
- label15
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 14
-
-
- cmbStreamSecurity
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 15
-
-
- label12
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 16
-
-
- txtRequestHost
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 17
-
-
- label11
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 18
-
-
- label10
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 19
-
-
- cmbHeaderType
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 20
-
-
- Bottom
-
-
- 3, 215
-
-
- 723, 281
-
-
- 21
-
-
- Transport
-
-
- groupBox2
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- 2
-
True
+
NoControl
@@ -783,75 +285,6 @@
2
-
- txtSNI
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panTlsMore
-
-
- 0
-
-
- label22
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panTlsMore
-
-
- 1
-
-
- label21
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panTlsMore
-
-
- 2
-
-
- cmbAllowInsecure
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panTlsMore
-
-
- 3
-
-
- 200, 234
-
-
- 500, 35
-
-
- 33
-
-
- panTlsMore
-
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox2
-
-
- 3
-
300, 7
@@ -960,6 +393,27 @@
3
+
+ 200, 234
+
+
+ 500, 35
+
+
+ 33
+
+
+ panTlsMore
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox2
+
+
+ 3
+
True
@@ -1300,13 +754,13 @@
282, 66
- 299, 12
+ 293, 12
20
- *tcp or kcp or QUIC camouflage type, default none
+ *tcp or kcp or QUIC camouflage type or grpc mode
label12
@@ -1440,6 +894,33 @@
20
+
+ Bottom
+
+
+ 3, 215
+
+
+ 723, 281
+
+
+ 21
+
+
+ Transport
+
+
+ groupBox2
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 2
+
True
@@ -1770,6 +1251,45 @@
15
+
+ Fill
+
+
+ 0, 35
+
+
+ 729, 499
+
+
+ 3
+
+
+ Server
+
+
+ groupBox1
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ 303, 17
+
+
+ 75, 23
+
+
+ 5
+
+
+ &OK
+
btnOK
@@ -1806,30 +1326,6 @@
1
-
- 303, 17
-
-
- 75, 23
-
-
- 5
-
-
- &OK
-
-
- btnOK
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 1
-
Top
@@ -1857,33 +1353,6 @@
17, 17
-
- 0, 0
-
-
- 729, 25
-
-
- 8
-
-
- menuServer
-
-
- System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 3
-
-
- 162, 21
-
-
- Import configuration file
-
237, 22
@@ -1905,9 +1374,33 @@
Import URL from clipboard
-
- zh-CN
-
+
+ 162, 21
+
+
+ Import configuration file
+
+
+ 0, 0
+
+
+ 729, 25
+
+
+ 8
+
+
+ menuServer
+
+
+ System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 3
+
True
diff --git a/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx
index 4bbfcc1f..a8f9b0ae 100644
--- a/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/AddServerForm.zh-Hans.resx
@@ -215,7 +215,7 @@
197, 12
- *tcp或kcp或QUIC伪装类型,默认none
+ *tcp或kcp或QUIC伪装类型或grpc模式
127, 102
diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs
index e5c50c12..a44cc1ee 100644
--- a/v2rayN/v2rayN/Global.cs
+++ b/v2rayN/v2rayN/Global.cs
@@ -194,6 +194,10 @@ namespace v2rayN
public const string RoutingRuleComma = "";
public static readonly IEnumerable ssSecuritys = new HashSet { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
+
+ public const string GrpcgunMode = "gun";
+ public const string GrpcmultiMode = "multi";
+
#endregion
#region 全局变量
diff --git a/v2rayN/v2rayN/Handler/ShareHandler.cs b/v2rayN/v2rayN/Handler/ShareHandler.cs
index 03fdb0c2..325b6654 100644
--- a/v2rayN/v2rayN/Handler/ShareHandler.cs
+++ b/v2rayN/v2rayN/Handler/ShareHandler.cs
@@ -214,6 +214,10 @@ namespace v2rayN.Handler
if (!Utils.IsNullOrEmpty(item.path))
{
dicQuery.Add("serviceName", Utils.UrlEncode(item.path));
+ if (item.headerType == Global.GrpcgunMode || item.headerType == Global.GrpcmultiMode)
+ {
+ dicQuery.Add("mode", Utils.UrlEncode(item.headerType));
+ }
}
break;
}
@@ -698,6 +702,7 @@ namespace v2rayN.Handler
break;
case "grpc":
item.path = Utils.UrlDecode(query["serviceName"] ?? "");
+ item.headerType= Utils.UrlDecode(query["mode"] ?? Global.GrpcgunMode);
break;
default:
return null;
diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
index 0e9ba524..28893b9d 100644
--- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
@@ -710,6 +710,7 @@ namespace v2rayN.Handler
var grpcSettings = new GrpcSettings();
grpcSettings.serviceName = config.path();
+ grpcSettings.multiMode = (config.headerType() == Global.GrpcmultiMode ? true : false);
streamSettings.grpcSettings = grpcSettings;
break;
default:
diff --git a/v2rayN/v2rayN/Mode/V2rayConfig.cs b/v2rayN/v2rayN/Mode/V2rayConfig.cs
index c52957e9..d86b587b 100644
--- a/v2rayN/v2rayN/Mode/V2rayConfig.cs
+++ b/v2rayN/v2rayN/Mode/V2rayConfig.cs
@@ -518,6 +518,10 @@ namespace v2rayN.Mode
///
///
public string serviceName { get; set; }
+ ///
+ ///
+ ///
+ public bool multiMode { get; set; }
}
}