diff --git a/Netch/Resources/zh-CN b/Netch/Resources/zh-CN index 42b828fa..7e97dce7 100644 --- a/Netch/Resources/zh-CN +++ b/Netch/Resources/zh-CN @@ -48,9 +48,11 @@ "Transfer Protocol": "传输协议", "Fake Type": "伪装类型", "Host": "主机", - "Path": "路径", + "Path": "路径/服务名称", "QUIC Security": "QUIC 加密方式", "QUIC Secret": "QUIC 加密密钥", + "GRPC Mode": "QUIC 模式", + "GRPC ServiceName": "QUIC 服务名称", "TLS Secure": "TLS 底层传输安全", "Use Mux": "Mux 多路复用", "Encrypt Method": "加密方式", diff --git a/Netch/Servers/V2ray/Models/V2rayConfig.cs b/Netch/Servers/V2ray/Models/V2rayConfig.cs index 09659933..dd7827cd 100644 --- a/Netch/Servers/V2ray/Models/V2rayConfig.cs +++ b/Netch/Servers/V2ray/Models/V2rayConfig.cs @@ -183,6 +183,8 @@ namespace Netch.Servers.Models public QuicSettings quicSettings { get; set; } public TlsSettings xtlsSettings { get; set; } + + public GrpcSettings grpcSettings { get; set; } } public class TlsSettings @@ -278,4 +280,11 @@ namespace Netch.Servers.Models public Header header { get; set; } } + + 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 5ec34dfc..c668a42c 100644 --- a/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs +++ b/Netch/Servers/V2ray/Utils/V2rayConfigUtils.cs @@ -310,6 +310,20 @@ namespace Netch.Servers.Utils streamSettings.quicSettings = quicSettings; break; + case "grpc": + var grpcSettings = new GrpcSettings + { + serviceName = server.Path, + multiMode = false + }; + + if (server.FakeType == "multi") + { + grpcSettings.multiMode = true; + } + + streamSettings.grpcSettings = grpcSettings; + break; default: if (server.FakeType == "http") { 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/VMess/VMess.cs b/Netch/Servers/VMess/VMess.cs index 9e9f2743..1e88f53b 100644 --- a/Netch/Servers/VMess/VMess.cs +++ b/Netch/Servers/VMess/VMess.cs @@ -101,7 +101,8 @@ namespace Netch.Servers.VMess "kcp", "ws", "h2", - "quic" + "quic", + "grpc" }; /// @@ -115,7 +116,9 @@ namespace Netch.Servers.VMess "utp", "wechat-video", "dtls", - "wireguard" + "wireguard", + "gun", + "multi" }; ///