diff --git a/src/main.rs b/src/main.rs index e1ab690..13a25af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use clap::{value_parser, Arg, Command}; +use clap::{Arg, Command, value_parser}; pub mod config_models; mod parser; pub mod utils; @@ -54,7 +54,10 @@ async fn main() { let httpport = matches.get_one::("httpport").copied(); let get_metadata = matches.get_flag("get_metadata"); let run_mode = matches.get_flag("run"); - let xray_binary = matches.get_one::("xray_binary").map(|s| s.as_str()).unwrap_or("xray-core"); + let xray_binary = matches + .get_one::("xray_binary") + .map(|s| s.as_str()) + .unwrap_or("xray-core"); if get_metadata { print!("{}", parser::get_metadata(uri)); diff --git a/src/parser/shadow_socks/data.rs b/src/parser/shadow_socks/data.rs index 2eea67b..b389d38 100644 --- a/src/parser/shadow_socks/data.rs +++ b/src/parser/shadow_socks/data.rs @@ -5,7 +5,7 @@ use crate::{ parser::shadow_socks::models, utils::{url_decode, url_decode_str}, }; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; pub fn get_data(uri: &str) -> RawData { let data = uri.split_once("ss://").unwrap().1; diff --git a/src/parser/socks/data.rs b/src/parser/socks/data.rs index 6a99713..9404d39 100644 --- a/src/parser/socks/data.rs +++ b/src/parser/socks/data.rs @@ -5,7 +5,7 @@ use crate::{ parser::socks::models, utils::{url_decode, url_decode_str}, }; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; pub fn get_data(uri: &str) -> RawData { let data = uri.split_once("://").unwrap().1; diff --git a/src/parser/uri_identifier.rs b/src/parser/uri_identifier.rs index 941408b..111ff4c 100644 --- a/src/parser/uri_identifier.rs +++ b/src/parser/uri_identifier.rs @@ -34,7 +34,9 @@ mod tests { use super::*; #[test] fn return_none_for_invalid_uri() { - let protocol = get_uri_protocol("123-vless://3d1c3f04-729d-59d3-bdb6-3f3f4352e173@root.ii.one:2083?security=reality&sni=www.spamhaus.org&fp=safari&pbk=7xhH4b_VkliBxGulljcyPOH-bYUA2dl-XAdZAsfhk04&sid=6ba85179e30d4fc2&type=tcp&flow=xtls-rprx-vision#Ha-ac"); + let protocol = get_uri_protocol( + "123-vless://3d1c3f04-729d-59d3-bdb6-3f3f4352e173@root.ii.one:2083?security=reality&sni=www.spamhaus.org&fp=safari&pbk=7xhH4b_VkliBxGulljcyPOH-bYUA2dl-XAdZAsfhk04&sid=6ba85179e30d4fc2&type=tcp&flow=xtls-rprx-vision#Ha-ac", + ); assert!(matches!(protocol, None)); } #[test] diff --git a/src/parser/vless/data.rs b/src/parser/vless/data.rs index 69b4cf8..cf18a1d 100644 --- a/src/parser/vless/data.rs +++ b/src/parser/vless/data.rs @@ -41,7 +41,7 @@ pub fn get_data(uri: &str) -> RawData { extra: url_decode(get_parameter_value(&query, "extra")), allowInsecure: get_parameter_value(&query, "allowInsecure"), server_method: None, - username:None, + username: None, }; } diff --git a/src/parser/vmess/data.rs b/src/parser/vmess/data.rs index 22e68f7..88c07db 100644 --- a/src/parser/vmess/data.rs +++ b/src/parser/vmess/data.rs @@ -1,7 +1,7 @@ use crate::config_models::RawData; use crate::parser::vmess::models::VmessAddress; use crate::utils::{get_parameter_value, url_decode, url_decode_str}; -use base64::{engine::general_purpose, Engine}; +use base64::{Engine, engine::general_purpose}; use http::Uri; use serde_json::Value; diff --git a/src/xray_runner.rs b/src/xray_runner.rs index 552ceb9..f064b67 100644 --- a/src/xray_runner.rs +++ b/src/xray_runner.rs @@ -1,7 +1,7 @@ -use std::process::Stdio; -use tokio::process::{Child, Command}; -use tempfile::NamedTempFile; use std::io::Write; +use std::process::Stdio; +use tempfile::NamedTempFile; +use tokio::process::{Child, Command}; pub struct XrayRunner { process: Option, @@ -16,7 +16,11 @@ impl XrayRunner { } } - pub async fn start(&mut self, config_json: &str, xray_binary: &str) -> Result<(), Box> { + pub async fn start( + &mut self, + config_json: &str, + xray_binary: &str, + ) -> Result<(), Box> { // Create temporary config file with .json extension let mut temp_file = NamedTempFile::with_suffix(".json")?; temp_file.write_all(config_json.as_bytes())?; @@ -27,10 +31,10 @@ impl XrayRunner { // Start xray-core process let mut cmd = Command::new(xray_binary); cmd.arg("-config") - .arg(&config_path) - .stdin(Stdio::null()) - .stdout(Stdio::inherit()) - .stderr(Stdio::inherit()); + .arg(&config_path) + .stdin(Stdio::null()) + .stdout(Stdio::inherit()) + .stderr(Stdio::inherit()); let child = cmd.spawn()?; @@ -89,9 +93,9 @@ impl Drop for XrayRunner { pub async fn wait_for_shutdown_signal() { #[cfg(unix)] { + use futures::stream::StreamExt; use signal_hook::consts::signal::*; use signal_hook_tokio::Signals; - use futures::stream::StreamExt; let mut signals = Signals::new(&[SIGINT, SIGTERM]).expect("Failed to create signals");