diff --git a/src/config_models/mod.rs b/src/config_models/mod.rs index 71d05aa..7a4acae 100644 --- a/src/config_models/mod.rs +++ b/src/config_models/mod.rs @@ -47,6 +47,19 @@ pub struct GRPCSettings { pub serviceName: Option, } +#[allow(non_snake_case)] +#[derive(Serialize, Deserialize)] +pub struct KCPSettings { + pub mtu: Option, + pub tti: Option, + pub uplinkCapacity: Option, + pub downlinkCapacity: Option, + pub congestion: Option, + pub readBufferSize: Option, + pub writeBufferSize: Option, + pub seed: Option, +} + #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct RealitySettings { @@ -110,6 +123,7 @@ pub struct StreamSettings { pub realitySettings: Option, pub grpcSettings: Option, pub quicSettings: Option, + pub kcpSettings: Option, } #[allow(non_snake_case)] diff --git a/src/parser/vless/mod.rs b/src/parser/vless/mod.rs index e9128bb..1e1355a 100644 --- a/src/parser/vless/mod.rs +++ b/src/parser/vless/mod.rs @@ -79,6 +79,20 @@ pub fn create_outbound_object(data: models::VlessData) -> Outbound { } else { None }, + kcpSettings: if network_type == String::from("kcp") { + Some(KCPSettings { + mtu: None, + tti: None, + congestion: None, + uplinkCapacity: None, + readBufferSize: None, + writeBufferSize: None, + downlinkCapacity: None, + seed: data.query.seed, + }) + } else { + None + }, }, settings: OutboundSettings::Vless(VlessOutboundSettings { vnext: vec![VlessServerObject {