mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 15:07:53 +00:00
feat: parse vless uuid and host
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
use std::process::exit;
|
||||||
|
|
||||||
use querystring;
|
use querystring;
|
||||||
|
|
||||||
#[derive(PartialEq, Eq)]
|
#[derive(PartialEq, Eq)]
|
||||||
@@ -12,6 +14,12 @@ pub struct VlessQuery {
|
|||||||
path: String,
|
path: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct VlessUUIDAndHost {
|
||||||
|
uuid: String,
|
||||||
|
host: String,
|
||||||
|
port: u16,
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_vless_data(uri: &str) {
|
pub fn get_vless_data(uri: &str) {
|
||||||
let data = uri.split_once("vless://").unwrap().1;
|
let data = uri.split_once("vless://").unwrap().1;
|
||||||
let query_and_name = uri.split_once("?").unwrap().1;
|
let query_and_name = uri.split_once("?").unwrap().1;
|
||||||
@@ -23,6 +31,27 @@ pub fn get_vless_data(uri: &str) {
|
|||||||
println!("{0}", parsed_query.flow);
|
println!("{0}", parsed_query.flow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn parse_vless_uui_and_host(raw_data: &str) -> VlessUUIDAndHost {
|
||||||
|
let (uuid, address): (String, &str) = match raw_data.split_once("@") {
|
||||||
|
None => {
|
||||||
|
println!("Wrong vless format, no `@` in the authentication");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
Some(data) => (String::from(data.0), data.1),
|
||||||
|
};
|
||||||
|
let (host, port): (String, u16) = match address.split_once(":") {
|
||||||
|
None => {
|
||||||
|
println!("Wrong vless format, no `:` found in the address");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
Some(data) => (
|
||||||
|
String::from(data.0),
|
||||||
|
data.1.parse::<u16>().expect("Port is not a number"),
|
||||||
|
),
|
||||||
|
};
|
||||||
|
return VlessUUIDAndHost { uuid, host, port };
|
||||||
|
}
|
||||||
|
|
||||||
pub fn parse_vless_query_data(raw_query: &str) -> VlessQuery {
|
pub fn parse_vless_query_data(raw_query: &str) -> VlessQuery {
|
||||||
let query = querystring::querify(raw_query);
|
let query = querystring::querify(raw_query);
|
||||||
let a = VlessQuery {
|
let a = VlessQuery {
|
||||||
@@ -115,4 +144,12 @@ mod tests {
|
|||||||
assert_eq!(parsed_query.r#flow, "");
|
assert_eq!(parsed_query.r#flow, "");
|
||||||
assert_eq!(parsed_query.path, "");
|
assert_eq!(parsed_query.path, "");
|
||||||
}
|
}
|
||||||
|
#[test]
|
||||||
|
fn parse_vless_host() {
|
||||||
|
let raw_host = "uu0id@127.0.0.1:3012";
|
||||||
|
let parsed = parse_vless_uui_and_host(raw_host);
|
||||||
|
assert_eq!(parsed.host, "127.0.0.1");
|
||||||
|
assert_eq!(parsed.port, 3012);
|
||||||
|
assert_eq!(parsed.uuid, "uu0id");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user