diff --git a/Cargo.lock b/Cargo.lock index 020fbc0..a1a8cba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -236,6 +236,12 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8parse" version = "0.2.1" @@ -251,6 +257,7 @@ dependencies = [ "regex", "serde", "serde_json", + "urlencoding", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5e01af5..7898550 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,4 @@ querystring = "1.1.0" regex = "1.9.6" serde = { version = "1.0.189", features = ["derive"] } serde_json = "1.0.107" +urlencoding = "2" diff --git a/src/parser/vless/mod.rs b/src/parser/vless/mod.rs index ba9e632..a08b5b3 100644 --- a/src/parser/vless/mod.rs +++ b/src/parser/vless/mod.rs @@ -31,7 +31,11 @@ pub fn create_outbound_object(data: models::VlessData) -> Outbound { headers: Some(HeaderSetting { Host: Some(data.query.host), }), - path: Some(data.query.path), + path: Some( + urlencoding::decode(data.query.path.as_str()) + .unwrap() + .into_owned(), + ), acceptProxyProtocol: None, }) } else {