From 422549ece6205de4609c5680ad09a8987ee131c5 Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Sat, 21 Oct 2023 11:42:12 +0330 Subject: [PATCH] Add grpc stream settings --- src/parser/config_models/mod.rs | 8 ++++++++ src/parser/vless/mod.rs | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/parser/config_models/mod.rs b/src/parser/config_models/mod.rs index 2c76269..ceff53e 100644 --- a/src/parser/config_models/mod.rs +++ b/src/parser/config_models/mod.rs @@ -31,6 +31,13 @@ pub struct NonHeaderObject { pub r#type: String, } +#[allow(non_snake_case)] +#[derive(Serialize, Deserialize)] +pub struct GRPCSettings { + pub multiMode: bool, + pub serviceName: String, +} + #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct RealitySettings { @@ -80,6 +87,7 @@ pub struct StreamSettings { pub wsSettings: Option, pub tcpSettings: Option, pub realitySettings: Option, + pub grpcSettings: Option, } #[allow(non_snake_case)] diff --git a/src/parser/vless/mod.rs b/src/parser/vless/mod.rs index 21784f6..bfcc74e 100644 --- a/src/parser/vless/mod.rs +++ b/src/parser/vless/mod.rs @@ -55,6 +55,14 @@ pub fn create_outbound_object(data: models::VlessData) -> Outbound { } else { None }, + grpcSettings: if data.query.r#type == String::from("grpc") { + Some(GRPCSettings { + multiMode: false, + serviceName: data.query.service_name, + }) + } else { + None + }, }, settings: OutboundSettings::Vless(VlessOutboundSettings { vnext: vec![VlessServerObject {