From 20554587e583a960456026163d8929603da94201 Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Sun, 27 Jul 2025 15:56:47 +0330 Subject: [PATCH] Add remarks to raw data --- src/config_models/mod.rs | 1 + src/parser/vless/data.rs | 6 +++--- src/parser/vmess/data.rs | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/config_models/mod.rs b/src/config_models/mod.rs index d277953..bea63b6 100644 --- a/src/config_models/mod.rs +++ b/src/config_models/mod.rs @@ -186,6 +186,7 @@ pub struct Config { #[derive(Serialize, Deserialize)] #[allow(non_snake_case)] pub struct RawData { + pub remarks: String, pub security: Option, pub vnext_security: Option, pub sni: Option, diff --git a/src/parser/vless/data.rs b/src/parser/vless/data.rs index 42b01ee..a1c3fa3 100644 --- a/src/parser/vless/data.rs +++ b/src/parser/vless/data.rs @@ -6,14 +6,14 @@ use http::Uri; pub fn get_data(uri: &str) -> RawData { let data = uri.split_once("vless://").unwrap().1; let query_and_name = uri.split_once("?").unwrap().1; - let raw_query = query_and_name + let (raw_query, name) = query_and_name .split_once("#") - .unwrap_or((query_and_name, "")) - .0; + .unwrap_or((query_and_name, "")); let parsed_address = parse_vless_address(data.split_once("?").unwrap().0); let query: Vec<(&str, &str)> = querystring::querify(raw_query); return RawData { + remarks: String::from(name), uuid: Some(parsed_address.uuid), port: Some(parsed_address.port), address: Some(parsed_address.address), diff --git a/src/parser/vmess/data.rs b/src/parser/vmess/data.rs index 1877f14..ef68feb 100644 --- a/src/parser/vmess/data.rs +++ b/src/parser/vmess/data.rs @@ -19,6 +19,7 @@ fn get_raw_data_from_base64(decoded_base64: &Vec) -> RawData { let json = serde_json::from_str::(json_str).unwrap(); return RawData { + remarks: get_str_field(&json, "id").unwrap_or(String::from("")), uuid: get_str_field(&json, "id"), port: get_str_field(&json, "port") .and_then(|s| Some(s.parse::().expect("port is not a number"))), @@ -65,14 +66,14 @@ fn get_raw_data_from_uri(uri: &str) -> RawData { let data = uri.split_once("vmess://").unwrap().1; let query_and_name = uri.split_once("?").unwrap().1; - let raw_query = query_and_name + let (raw_query, name) = query_and_name .split_once("#") - .unwrap_or((query_and_name, "")) - .0; + .unwrap_or((query_and_name, "")); let parsed_address = parse_vmess_address(data.split_once("?").unwrap().0); let query: Vec<(&str, &str)> = querystring::querify(raw_query); return RawData { + remarks: String::from(name), uuid: Some(parsed_address.uuid), port: Some(parsed_address.port), address: Some(parsed_address.address),