Add gRPC support

This commit is contained in:
Shaojun Yang
2021-06-29 17:57:35 +08:00
parent 29b003bacd
commit 7636b0ed27
7 changed files with 41 additions and 1 deletions

View File

@@ -51,6 +51,8 @@
"Path": "路径",
"QUIC Security": "QUIC 加密方式",
"QUIC Secret": "QUIC 加密密钥",
"GRPC Mode": "QUIC 模式",
"GRPC ServiceName": "QUIC 服务名称",
"TLS Secure": "TLS 底层传输安全",
"Use Mux": "Mux 多路复用",
"Encrypt Method": "加密方式",

View File

@@ -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,9 @@ namespace Netch.Servers.Models
public Header header { get; set; }
}
public class GrpcSettings
{
public string serviceName { get; set; }
}
}

View File

@@ -310,6 +310,14 @@ namespace Netch.Servers.Utils
streamSettings.quicSettings = quicSettings;
break;
case "grpc":
var grpcSettings = new GrpcSettings
{
serviceName = server.GRPCServiceName
};
streamSettings.grpcSettings = grpcSettings;
break;
default:
if (server.FakeType == "http")
{

View File

@@ -41,5 +41,7 @@ namespace Netch.Servers
public static List<string> TransferProtocols => VMessGlobal.TransferProtocols;
public static List<string> QUIC => VMessGlobal.QUIC;
public static List<string> GRPCModes => VMessGlobal.GRPCModes;
}
}

View File

@@ -28,6 +28,8 @@ 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<string> { "", "true", "false" },

View File

@@ -23,6 +23,8 @@ 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<string> { "", "true", "false" },

View File

@@ -54,6 +54,16 @@ namespace Netch.Servers.VMess
/// </summary>
public string? QUICSecret { get; set; } = string.Empty;
/// <summary>
/// GRPC 服务名称
/// </summary>
public string? GRPCServiceName { get; set; }
/// <summary>
/// GRPC 模式
/// </summary>
public string? GRPCMode { get; set; } = VMessGlobal.GRPCModes[0];
/// <summary>
/// TLS 底层传输安全
/// </summary>
@@ -92,6 +102,12 @@ namespace Netch.Servers.VMess
"chacha20-poly1305"
};
public static readonly List<string> GRPCModes = new List<string>()
{
"gun",
"multi"
};
/// <summary>
/// V2Ray 传输协议
/// </summary>
@@ -101,7 +117,8 @@ namespace Netch.Servers.VMess
"kcp",
"ws",
"h2",
"quic"
"quic",
"grpc"
};
/// <summary>