mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 15:07:53 +00:00
Parse alpn
This commit is contained in:
@@ -85,6 +85,7 @@ pub struct WsSettings {
|
|||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct TlsSettings {
|
pub struct TlsSettings {
|
||||||
|
pub alpn: Option<Vec<String>>,
|
||||||
pub allowInsecure: Option<bool>,
|
pub allowInsecure: Option<bool>,
|
||||||
pub serverName: Option<String>,
|
pub serverName: Option<String>,
|
||||||
pub enableSessionResumption: Option<bool>,
|
pub enableSessionResumption: Option<bool>,
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ pub fn create_outbound_object(data: models::VlessData) -> Outbound {
|
|||||||
security: data.query.security.clone(),
|
security: data.query.security.clone(),
|
||||||
tlsSettings: if data.query.security == String::from("tls") {
|
tlsSettings: if data.query.security == String::from("tls") {
|
||||||
Some(TlsSettings {
|
Some(TlsSettings {
|
||||||
|
alpn: if data.query.alpn.len() > 1 {
|
||||||
|
Some(vec![data.query.alpn])
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
},
|
||||||
rejectUnknownSni: None,
|
rejectUnknownSni: None,
|
||||||
enableSessionResumption: None,
|
enableSessionResumption: None,
|
||||||
minVersion: None,
|
minVersion: None,
|
||||||
@@ -140,7 +145,12 @@ 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 {
|
||||||
path: get_parameter_value(&query, "path"),
|
alpn: urlencoding::decode(get_parameter_value(&query, "alpn").as_str())
|
||||||
|
.unwrap()
|
||||||
|
.into_owned(),
|
||||||
|
path: urlencoding::decode(get_parameter_value(&query, "path").as_str())
|
||||||
|
.unwrap()
|
||||||
|
.into_owned(),
|
||||||
pbk: get_parameter_value(&query, "pbk"),
|
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: get_parameter_value(&query, "sid"),
|
||||||
@@ -218,7 +228,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_vless_query_data() {
|
fn parse_vless_query_data() {
|
||||||
let query = "security=reality&sni=bench.sh&fp=chrome&pbk=7xhH4b_VkliBxGulljcyPOH-bYUA2dl-XAdZAsfhk04&sid=6ba85179e30d4fc2&type=tcp&flow=xtls-rprx-vision&path=/";
|
let query = "security=reality&sni=bench.sh&fp=chrome&pbk=7xhH4b_VkliBxGulljcyPOH-bYUA2dl-XAdZAsfhk04&sid=6ba85179e30d4fc2&type=tcp&flow=xtls-rprx-vision&alpn=http%2F1.1&path=/";
|
||||||
let parsed_query = parse_vless_query(query);
|
let parsed_query = parse_vless_query(query);
|
||||||
assert_eq!(parsed_query.sni, "bench.sh");
|
assert_eq!(parsed_query.sni, "bench.sh");
|
||||||
assert_eq!(parsed_query.security, "reality");
|
assert_eq!(parsed_query.security, "reality");
|
||||||
@@ -230,6 +240,7 @@ mod tests {
|
|||||||
assert_eq!(parsed_query.sid, "6ba85179e30d4fc2");
|
assert_eq!(parsed_query.sid, "6ba85179e30d4fc2");
|
||||||
assert_eq!(parsed_query.r#type, "tcp");
|
assert_eq!(parsed_query.r#type, "tcp");
|
||||||
assert_eq!(parsed_query.flow, "xtls-rprx-vision");
|
assert_eq!(parsed_query.flow, "xtls-rprx-vision");
|
||||||
|
assert_eq!(parsed_query.alpn, "http/1.1");
|
||||||
assert_eq!(parsed_query.path, "/");
|
assert_eq!(parsed_query.path, "/");
|
||||||
assert_eq!(parsed_query.encryption, "");
|
assert_eq!(parsed_query.encryption, "");
|
||||||
assert_eq!(parsed_query.header_type, "");
|
assert_eq!(parsed_query.header_type, "");
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ pub struct VlessQuery {
|
|||||||
pub service_name: String,
|
pub service_name: String,
|
||||||
pub slpn: String,
|
pub slpn: String,
|
||||||
pub spx: String,
|
pub spx: String,
|
||||||
|
pub alpn: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct VlessAddress {
|
pub struct VlessAddress {
|
||||||
|
|||||||
Reference in New Issue
Block a user