From 70ded295a1899554b5d485f55e146bb1146b8a33 Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Mon, 23 Oct 2023 19:13:16 +0330 Subject: [PATCH] Add quic settings to stream settings --- src/parser/config_models/mod.rs | 9 +++++++++ src/parser/vless/mod.rs | 13 ++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/parser/config_models/mod.rs b/src/parser/config_models/mod.rs index ceff53e..e8a6fa4 100644 --- a/src/parser/config_models/mod.rs +++ b/src/parser/config_models/mod.rs @@ -31,6 +31,14 @@ pub struct NonHeaderObject { pub r#type: String, } +#[allow(non_snake_case)] +#[derive(Serialize, Deserialize)] +pub struct QuicSettings { + pub header: Option, + pub security: String, + pub key: String, +} + #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct GRPCSettings { @@ -88,6 +96,7 @@ pub struct StreamSettings { pub tcpSettings: Option, pub realitySettings: Option, pub grpcSettings: Option, + pub quicSettings: Option, } #[allow(non_snake_case)] diff --git a/src/parser/vless/mod.rs b/src/parser/vless/mod.rs index bfcc74e..7735083 100644 --- a/src/parser/vless/mod.rs +++ b/src/parser/vless/mod.rs @@ -63,6 +63,17 @@ pub fn create_outbound_object(data: models::VlessData) -> Outbound { } else { None }, + quicSettings: if data.query.r#type == String::from("quic") { + Some(QuicSettings { + header: Some(NonHeaderObject { + r#type: String::from("none"), + }), + security: String::from("none"), + key: String::from(""), + }) + } else { + None + }, }, settings: OutboundSettings::Vless(VlessOutboundSettings { vnext: vec![VlessServerObject { @@ -247,7 +258,7 @@ mod tests { assert_eq!( serialized, - r#"{"settings":{"vnext":[{"address":"tr.deet23ngdell.com","port":1818,"users":[{"id":"3d2c2r05-y739-51e3-bd86-3f3f4950c183","encryption":"none","flow":"xtls-rprx-vision","level":0}]}]},"streamSettings":{"network":"tcp","security":"reality","tlsSettings":null,"wsSettings":null,"tcpSettings":{"header":{"type":"none"},"acceptProxyProtocol":null},"realitySettings":{"fingerprint":"chrome","serverName":"bench.sh","publicKey":"7xhH8b_VkliBxgulljcyPOH-bYoA2dl-XAdZAsfhk04","shortId":"6bt85979e30d4fc2","spiderX":""}},"protocol":"vless","tag":"proxy"}"# + r#"{"settings":{"vnext":[{"address":"tr.deet23ngdell.com","port":1818,"users":[{"id":"3d2c2r05-y739-51e3-bd86-3f3f4950c183","encryption":"none","flow":"xtls-rprx-vision","level":0}]}]},"streamSettings":{"network":"tcp","security":"reality","tlsSettings":null,"wsSettings":null,"tcpSettings":{"header":{"type":"none"},"acceptProxyProtocol":null},"realitySettings":{"fingerprint":"chrome","serverName":"bench.sh","publicKey":"7xhH8b_VkliBxgulljcyPOH-bYoA2dl-XAdZAsfhk04","shortId":"6bt85979e30d4fc2","spiderX":""},"grpcSettings":null,"quicSettings":null},"protocol":"vless","tag":"proxy"}"# ); } }