From d5902ab926eaf39c8c53b9466697160df2acd3df Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Fri, 20 Oct 2023 17:14:56 +0330 Subject: [PATCH] Parse uri from cmd args --- src/main.rs | 5 ++++- src/parser/mod.rs | 9 ++++++++- src/parser/vless/mod.rs | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index c0c239b..a04f362 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,8 @@ mod parser; fn main() { - parser::parse("vmess://test"); + let args: Vec = std::env::args().collect(); + let uri = args.get(1).unwrap(); + dbg!(uri); + parser::parse(uri); } diff --git a/src/parser/mod.rs b/src/parser/mod.rs index d21f404..883af22 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -1,13 +1,20 @@ use std::process::exit; +pub mod config_models; mod uri_identifier; mod vless; -pub mod config_models; pub fn parse(uri: &str) { let protocol = uri_identifier::get_uri_protocol(uri); match protocol { Some(uri_identifier::Protocols::Vmess) => { println!("The protocol was vmess"); } + Some(uri_identifier::Protocols::Vless) => { + println!("The protocol is Vless"); + let vless_data = vless::get_vless_data(uri); + let outbound_object = vless::create_outbound_object(vless_data); + let serialized = serde_json::to_string(&outbound_object).unwrap(); + println!("The parsed config is :\n{}", serialized); + } Some(_) => { println!("The protocol was recognized"); } diff --git a/src/parser/vless/mod.rs b/src/parser/vless/mod.rs index c13e36a..21784f6 100644 --- a/src/parser/vless/mod.rs +++ b/src/parser/vless/mod.rs @@ -3,7 +3,7 @@ mod models; use crate::parser::config_models::*; use std::process::exit; -fn create_outbound_object(data: models::VlessData) -> Outbound { +pub fn create_outbound_object(data: models::VlessData) -> Outbound { return Outbound { protocol: String::from("vless"), tag: String::from("proxy"),