mirror of https://github.com/MedzikUser/servers
chore: move struct Cli to other module
This commit is contained in:
parent
796084d13e
commit
e83a8360c2
|
@ -564,7 +564,7 @@ checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
|
|||
|
||||
[[package]]
|
||||
name = "servers"
|
||||
version = "0.2.0"
|
||||
version = "0.3.0-pre"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
|
|
@ -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 <nivua1fn@duck.com>"]
|
||||
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"
|
||||
|
|
|
@ -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,
|
||||
}
|
61
src/main.rs
61
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!")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue