From 10d153817369d5208a0d40e0738088690149e26a Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Thu, 26 Oct 2023 17:31:33 +0330 Subject: [PATCH] Generate full conifg for vless --- src/main.rs | 5 ++--- src/parser/config_models/mod.rs | 5 +++++ src/parser/mod.rs | 23 +++++++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1bc622c..aafaaf6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ fn main() { } }; println!("the uri is: {}", cli.uri); - // let args: Vec = std::env::args().collect(); - // let uri = args.get(1).unwrap(); - // parser::parse(uri); + let json_config = parser::create_json_config(&cli.uri); + println!("The json config is: {}" , json_config); } diff --git a/src/parser/config_models/mod.rs b/src/parser/config_models/mod.rs index e8a6fa4..8d43b81 100644 --- a/src/parser/config_models/mod.rs +++ b/src/parser/config_models/mod.rs @@ -107,3 +107,8 @@ pub struct Outbound { pub protocol: String, pub tag: String, } + +#[derive(Serialize, Deserialize)] +pub struct Config { + pub outbounds: Vec, +} diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 296fc44..5815c7f 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -1,16 +1,32 @@ use std::process::exit; + +use self::config_models::{Config, Outbound}; pub mod config_models; mod uri_identifier; mod vless; -pub fn parse(uri: &str) { + +pub fn create_json_config(uri: &str) -> String { + let config = create_config(uri); + let serialized = serde_json::to_string(&config).unwrap(); + return serialized; +} + +pub fn create_config(uri: &str) -> Config { + let outbound_object = create_outbound_object(uri); + let config = Config { + outbounds: vec![outbound_object], + }; + return config; +} + +pub fn create_outbound_object(uri: &str) -> Outbound { let protocol = uri_identifier::get_uri_protocol(uri); - let mut serialized: String = String::from(""); match protocol { 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); - serialized = serde_json::to_string(&outbound_object).unwrap(); + return outbound_object; } Some(_) => { println!("The protocol was recognized but is not supported yet"); @@ -21,5 +37,4 @@ pub fn parse(uri: &str) { exit(0); } } - println!("The parsed config is :\n{}", serialized); }