From e83a8360c2b6f88abe2135f576bb0798038ae8fd Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Fri, 29 Jul 2022 12:12:13 +0200 Subject: [PATCH] chore: move struct Cli to other module --- Cargo.lock | 2 +- Cargo.toml | 6 +++--- src/cli.rs | 43 +++++++++++++++++++++++++++++++++++++ src/main.rs | 61 +++++++++++------------------------------------------ 4 files changed, 59 insertions(+), 53 deletions(-) create mode 100644 src/cli.rs diff --git a/Cargo.lock b/Cargo.lock index 4d37bff..c622f1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -564,7 +564,7 @@ checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "servers" -version = "0.2.0" +version = "0.3.0-pre" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 3fb2364..a2a5a5c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = ["plugin_test"] [package] name = "servers" description = "Simple TCP server for clients written in Rust with plugins support" -version = "0.2.0" +version = "0.3.0-pre" license = "MIT" authors = ["MedzikUser "] homepage = "https://github.com/MedzikUser/servers" @@ -24,8 +24,8 @@ better-panic = "0.3.0" libloading = "0.7.3" tokio-tungstenite = "0.17.2" tungstenite = "0.17.3" +tracing-subscriber = "0.3.15" +tracing = "0.1.35" clap = { version = "3.2.15", features = ["derive"] } futures-util = { version = "0.3", default-features = false, features = ["sink", "std"] } tokio = { version = "1.20.1", features = ["rt-multi-thread", "macros", "net"] } -tracing-subscriber = "0.3.15" -tracing = "0.1.35" diff --git a/src/cli.rs b/src/cli.rs new file mode 100644 index 0000000..fd2b8f3 --- /dev/null +++ b/src/cli.rs @@ -0,0 +1,43 @@ +use clap::Parser; + +#[derive(Parser)] +#[clap( + name = "servers", + version = env!("CARGO_PKG_VERSION"), + about = "A simple TCP server for client which can be extended with plugins." +)] +pub struct Cli { + #[clap( + short = 'h', + long = "host", + default_value = "0.0.0.0", + help = "Tcp server host", + display_order = 1 + )] + pub host: String, + + #[clap( + short = 'p', + long = "port", + default_value = "9999", + help = "Tcp server port [set 0 to random]", + display_order = 2 + )] + pub port: String, + + #[clap( + short = 'w', + long = "ws-port", + default_value = "9998", + help = "WebSocket server port [set 0 to random]", + display_order = 3 + )] + pub ws_port: String, + + #[clap( + long = "disable-websocket", + help = "Disable WebSocket proxy to Tcp", + display_order = 4 + )] + pub ws_disable: bool, +} diff --git a/src/main.rs b/src/main.rs index bf95d45..e954c4b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,50 +1,13 @@ use clap::Parser; +use cli::Cli; use servers::{ plugins::loader, tcp::{handle_connection, handle_websocket, Client}, }; use tokio::net::TcpListener; -use tracing::{info, error}; +use tracing::{error, info}; -#[derive(Parser)] -#[clap( - name = "servers", - about = "A simple TCP server for client which can be extended with plugins." -)] -struct Cli { - #[clap( - short = 'h', - long = "host", - default_value = "0.0.0.0", - help = "Tcp server host", - display_order = 1 - )] - host: String, - #[clap( - short = 'p', - long = "port", - default_value = "9999", - help = "Tcp server port [set 0 to random]", - display_order = 2 - )] - port: String, - - #[clap( - short = 'w', - long = "ws-port", - default_value = "9998", - help = "WebSocket server port [set 0 to random]", - display_order = 3 - )] - ws_port: String, - - #[clap( - long = "disable-websocket", - help = "Disable WebSocket proxy to Tcp", - display_order = 4 - )] - ws_disable: bool, -} +mod cli; #[tokio::main] async fn main() -> anyhow::Result<()> { @@ -54,25 +17,25 @@ async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt().init(); // parse cli args - let cli = Cli::parse(); + let args = Cli::parse(); // if enabled start WebSocket server - if !cli.ws_disable { + if !args.ws_disable { tokio::spawn(start_ws_server( - cli.host.clone(), - cli.ws_port, - cli.port.clone(), + args.host.clone(), + args.ws_port, + args.port.clone(), )); } // start tcp server - start_tcp_server(cli.host, cli.port).await?; + start_tcp_server(&args.host, &args.port).await?; Ok(()) } /// Start tcp server -async fn start_tcp_server(host: String, port: String) -> anyhow::Result<()> { +async fn start_tcp_server(host: &str, port: &str) -> anyhow::Result<()> { // listen Tcp server let listener = TcpListener::bind(format!("{host}:{port}")).await?; @@ -98,7 +61,7 @@ async fn start_tcp_server(host: String, port: String) -> anyhow::Result<()> { } // server for a unexpectedly reason be terminated - panic!("Server unexpectedly terminated!") + panic!("TCP server unexpectedly terminated!") } /// Start WebSocket server @@ -122,5 +85,5 @@ async fn start_ws_server(host: String, port: String, tcp_port: String) -> anyhow } // server for a unexpectedly reason be terminated - panic!("Server unexpectedly terminated!") + panic!("WebSocket server unexpectedly terminated!") }