Ignore trailing slash on vless address

This commit is contained in:
Keivan-sf
2025-06-27 02:27:26 +03:30
parent 5296b6a413
commit 737e0b50e8

View File

@@ -124,7 +124,8 @@ fn parse_vless_address(raw_data: &str) -> models::VlessAddress {
}
Some(data) => (String::from(data.0), data.1),
};
let (address, port): (String, u16) = match raw_address.split_once(":") {
let address_wo_slash = raw_address.strip_suffix("/").unwrap_or(raw_address);
let (address, port): (String, u16) = match address_wo_slash.split_once(":") {
None => {
println!("Wrong vless format, no `:` found in the address");
exit(0);
@@ -182,6 +183,15 @@ fn get_parameter_value(query: &Vec<(&str, &str)>, param: &str) -> String {
mod tests {
use super::*;
#[test]
fn vless_test_2() {
let v = "vless://2dc56709-sdfs-sdfs-2234-128904@nwarne.fast-ip.com:80/?type=ws&encryption=none&host=Shuposipet.com&path=%2Fde%3Fed%3D1048#[test]@test";
let data = get_vless_data(v);
assert_eq!(data.address_data.address, "nwarne.fast-ip.com");
assert_eq!(data.address_data.uuid, "2dc56709-sdfs-sdfs-2234-128904");
assert_eq!(data.address_data.port, 80);
assert_eq!(data.query.encryption, "none");
assert_eq!(data.query.r#type, "ws");
}
fn vless_test() {
let v = "vless://4d2c3e35-749d-52e3-bdb6-3f3f4950c183@tre.test.one:2053?security=reality&type=tcp&flow=xtls-rprx-vision#test-name";
let data = get_vless_data(v);