mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 15:07:53 +00:00
@@ -123,7 +123,7 @@ fn parse_vless_address(raw_data: &str) -> models::VlessAddress {
|
|||||||
let parsed = address_wo_slash.parse::<Uri>().unwrap();
|
let parsed = address_wo_slash.parse::<Uri>().unwrap();
|
||||||
|
|
||||||
return models::VlessAddress {
|
return models::VlessAddress {
|
||||||
uuid,
|
uuid: url_decode(Some(uuid)).unwrap(),
|
||||||
address: parsed.host().unwrap().to_string(),
|
address: parsed.host().unwrap().to_string(),
|
||||||
port: parsed.port().unwrap().as_u16(),
|
port: parsed.port().unwrap().as_u16(),
|
||||||
};
|
};
|
||||||
@@ -133,42 +133,38 @@ fn parse_vless_query(raw_query: &str) -> models::VlessQuery {
|
|||||||
let query: Vec<(&str, &str)> = querystring::querify(raw_query);
|
let query: Vec<(&str, &str)> = querystring::querify(raw_query);
|
||||||
|
|
||||||
let a = models::VlessQuery {
|
let a = models::VlessQuery {
|
||||||
alpn: get_parameter_value(&query, "alpn").and_then(|s| {
|
alpn: url_decode(get_parameter_value(&query, "alpn")),
|
||||||
urlencoding::decode(&s)
|
path: url_decode(get_parameter_value(&query, "path")),
|
||||||
.ok()
|
authority: url_decode(get_parameter_value(&query, "authority")),
|
||||||
.map(|decoded| decoded.into_owned())
|
pbk: url_decode(get_parameter_value(&query, "pbk")),
|
||||||
}),
|
|
||||||
path: get_parameter_value(&query, "path").and_then(|s| {
|
|
||||||
urlencoding::decode(&s)
|
|
||||||
.ok()
|
|
||||||
.map(|decoded| decoded.into_owned())
|
|
||||||
}),
|
|
||||||
authority: get_parameter_value(&query, "authority").and_then(|s| {
|
|
||||||
urlencoding::decode(&s)
|
|
||||||
.ok()
|
|
||||||
.map(|decoded| decoded.into_owned())
|
|
||||||
}),
|
|
||||||
pbk: get_parameter_value(&query, "pbk"),
|
|
||||||
security: get_parameter_value(&query, "security"),
|
security: get_parameter_value(&query, "security"),
|
||||||
sid: get_parameter_value(&query, "sid"),
|
sid: url_decode(get_parameter_value(&query, "sid")),
|
||||||
flow: get_parameter_value(&query, "flow"),
|
flow: get_parameter_value(&query, "flow"),
|
||||||
sni: get_parameter_value(&query, "sni"),
|
sni: get_parameter_value(&query, "sni"),
|
||||||
fp: get_parameter_value(&query, "fp"),
|
fp: url_decode(get_parameter_value(&query, "fp")),
|
||||||
r#type: get_parameter_value(&query, "type"),
|
r#type: get_parameter_value(&query, "type"),
|
||||||
encryption: get_parameter_value(&query, "encryption"),
|
encryption: get_parameter_value(&query, "encryption"),
|
||||||
header_type: get_parameter_value(&query, "headerType"),
|
header_type: get_parameter_value(&query, "headerType"),
|
||||||
host: get_parameter_value(&query, "host"),
|
host: url_decode(get_parameter_value(&query, "host")),
|
||||||
seed: get_parameter_value(&query, "seed"),
|
seed: url_decode(get_parameter_value(&query, "seed")),
|
||||||
quic_security: get_parameter_value(&query, "quicSecurity"),
|
quic_security: get_parameter_value(&query, "quicSecurity"),
|
||||||
key: get_parameter_value(&query, "key"),
|
key: get_parameter_value(&query, "key"),
|
||||||
mode: get_parameter_value(&query, "mode"),
|
mode: url_decode(get_parameter_value(&query, "mode")),
|
||||||
service_name: get_parameter_value(&query, "serviceName"),
|
service_name: url_decode(get_parameter_value(&query, "serviceName")),
|
||||||
slpn: get_parameter_value(&query, "slpn"),
|
slpn: get_parameter_value(&query, "slpn"),
|
||||||
spx: get_parameter_value(&query, "spx"),
|
spx: url_decode(get_parameter_value(&query, "spx")),
|
||||||
};
|
};
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn url_decode(value: Option<String>) -> Option<String> {
|
||||||
|
return value.and_then(|s| {
|
||||||
|
urlencoding::decode(&s)
|
||||||
|
.ok()
|
||||||
|
.map(|decoded| decoded.into_owned())
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
fn get_parameter_value(query: &Vec<(&str, &str)>, param: &str) -> Option<String> {
|
fn get_parameter_value(query: &Vec<(&str, &str)>, param: &str) -> Option<String> {
|
||||||
return query
|
return query
|
||||||
.iter()
|
.iter()
|
||||||
|
|||||||
Reference in New Issue
Block a user