diff --git a/Netch/Resources/zh-CN b/Netch/Resources/zh-CN
index 12a0eb6c..7e97dce7 100644
--- a/Netch/Resources/zh-CN
+++ b/Netch/Resources/zh-CN
@@ -48,7 +48,7 @@
"Transfer Protocol": "传输协议",
"Fake Type": "伪装类型",
"Host": "主机",
- "Path": "路径",
+ "Path": "路径/服务名称",
"QUIC Security": "QUIC 加密方式",
"QUIC Secret": "QUIC 加密密钥",
"GRPC Mode": "QUIC 模式",
diff --git a/Netch/Servers/V2ray/Models/V2rayConfig.cs b/Netch/Servers/V2ray/Models/V2rayConfig.cs
index e0c813c5..dd7827cd 100644
--- a/Netch/Servers/V2ray/Models/V2rayConfig.cs
+++ b/Netch/Servers/V2ray/Models/V2rayConfig.cs
@@ -284,5 +284,7 @@ namespace Netch.Servers.Models
public class GrpcSettings
{
public string serviceName { get; set; }
+
+ public bool multiMode { get; set; }
}
}
\ No newline at end of file
diff --git a/Netch/Servers/V2ray/Models/V2rayNSharing.cs b/Netch/Servers/V2ray/Models/V2rayNSharing.cs
index 8a162e4f..a5af695a 100644
--- a/Netch/Servers/V2ray/Models/V2rayNSharing.cs
+++ b/Netch/Servers/V2ray/Models/V2rayNSharing.cs
@@ -31,7 +31,7 @@
public string net { get; set; } = string.Empty;
///
- /// 伪装路径
+ /// 伪装路径/服务名称
///
public string? path { get; set; } = string.Empty;
diff --git a/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs b/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs
index 790cda26..c668a42c 100644
--- a/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs
+++ b/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs
@@ -313,9 +313,15 @@ namespace Netch.Servers.Utils
case "grpc":
var grpcSettings = new GrpcSettings
{
- serviceName = server.GRPCServiceName
+ serviceName = server.Path,
+ multiMode = false
};
+ if (server.FakeType == "multi")
+ {
+ grpcSettings.multiMode = true;
+ }
+
streamSettings.grpcSettings = grpcSettings;
break;
default:
diff --git a/Netch/Servers/V2ray/V2rayUtils.cs b/Netch/Servers/V2ray/V2rayUtils.cs
index 4f2962b6..4f8b6636 100644
--- a/Netch/Servers/V2ray/V2rayUtils.cs
+++ b/Netch/Servers/V2ray/V2rayUtils.cs
@@ -47,6 +47,10 @@ namespace Netch.Servers
server.QUICSecret = parameter.Get("key") ?? "";
server.FakeType = parameter.Get("headerType") ?? "none";
break;
+ case "grpc":
+ server.FakeType = parameter.Get("mode") ?? "gun";
+ server.Path = parameter.Get("serviceName") ?? "";
+ break;
}
server.TLSSecureType = parameter.Get("security") ?? "none";
@@ -115,6 +119,14 @@ namespace Netch.Servers
if (server.FakeType != "none")
parameter.Add("headerType", server.FakeType);
+ break;
+ case "grpc":
+ if (!string.IsNullOrEmpty(server.Path))
+ parameter.Add("serviceName", server.Path);
+
+ if (server.FakeType == "gun" || server.FakeType == "multi")
+ parameter.Add("mode", server.FakeType);
+
break;
}
diff --git a/Netch/Servers/VLESS/VLESS.cs b/Netch/Servers/VLESS/VLESS.cs
index 8cb4468d..5464e826 100644
--- a/Netch/Servers/VLESS/VLESS.cs
+++ b/Netch/Servers/VLESS/VLESS.cs
@@ -41,7 +41,5 @@ namespace Netch.Servers
public static List TransferProtocols => VMessGlobal.TransferProtocols;
public static List QUIC => VMessGlobal.QUIC;
-
- public static List GRPCModes => VMessGlobal.GRPCModes;
}
}
\ No newline at end of file
diff --git a/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs b/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs
index e82c1cd8..f2f05d38 100644
--- a/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs
+++ b/Netch/Servers/VLESS/VLESSForm/VLESSForm.cs
@@ -28,8 +28,6 @@ namespace Netch.Servers.VLESSForm
CreateTextBox("Path", "Path", s => true, s => server.Path = s, server.Path);
CreateComboBox("QUICSecurity", "QUIC Security", VLESSGlobal.QUIC, s => server.QUICSecure = s, server.QUICSecure);
CreateTextBox("QUICSecret", "QUIC Secret", s => true, s => server.QUICSecret = s, server.QUICSecret);
- CreateComboBox("GRPCMode", "GRPC Mode", VLESSGlobal.GRPCModes, s => server.GRPCMode = s, server.GRPCMode);
- CreateTextBox("GRPCServiceName", "GRPC ServiceName", s => true, s => server.GRPCServiceName = s, server.GRPCServiceName);
CreateComboBox("UseMux",
"Use Mux",
new List { "", "true", "false" },
diff --git a/Netch/Servers/VMess/Form/VMessForm.cs b/Netch/Servers/VMess/Form/VMessForm.cs
index 041a0b27..9e133d97 100644
--- a/Netch/Servers/VMess/Form/VMessForm.cs
+++ b/Netch/Servers/VMess/Form/VMessForm.cs
@@ -23,8 +23,6 @@ namespace Netch.Servers.VMess.Form
CreateTextBox("Path", "Path", s => true, s => server.Path = s, server.Path);
CreateComboBox("QUICSecurity", "QUIC Security", VMessGlobal.QUIC, s => server.QUICSecure = s, server.QUICSecure);
CreateTextBox("QUICSecret", "QUIC Secret", s => true, s => server.QUICSecret = s, server.QUICSecret);
- CreateComboBox("GRPCMode", "GRPC Mode", VMessGlobal.GRPCModes, s => server.GRPCMode = s, server.GRPCMode);
- CreateTextBox("GRPCServiceName", "GRPC ServiceName", s => true, s => server.GRPCServiceName = s, server.GRPCServiceName);
CreateComboBox("UseMux",
"Use Mux",
new List { "", "true", "false" },
diff --git a/Netch/Servers/VMess/VMess.cs b/Netch/Servers/VMess/VMess.cs
index 76e2cbce..1e88f53b 100644
--- a/Netch/Servers/VMess/VMess.cs
+++ b/Netch/Servers/VMess/VMess.cs
@@ -54,16 +54,6 @@ namespace Netch.Servers.VMess
///
public string? QUICSecret { get; set; } = string.Empty;
- ///
- /// GRPC 服务名称
- ///
- public string? GRPCServiceName { get; set; }
-
- ///
- /// GRPC 模式
- ///
- public string? GRPCMode { get; set; } = VMessGlobal.GRPCModes[0];
-
///
/// TLS 底层传输安全
///
@@ -102,12 +92,6 @@ namespace Netch.Servers.VMess
"chacha20-poly1305"
};
- public static readonly List GRPCModes = new List()
- {
- "gun",
- "multi"
- };
-
///
/// V2Ray 传输协议
///
@@ -132,7 +116,9 @@ namespace Netch.Servers.VMess
"utp",
"wechat-video",
"dtls",
- "wireguard"
+ "wireguard",
+ "gun",
+ "multi"
};
///