mirror of https://github.com/MedzikUser/servers
chore: update logger and save logs to file
This commit is contained in:
parent
47d6bc47cf
commit
ab60315350
|
@ -8,3 +8,6 @@
|
|||
# IDEs
|
||||
.vscode
|
||||
.idea
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
|
|
@ -107,24 +107,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_lex"
|
||||
version = "0.2.2"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
|
||||
checksum = "87eba3c8c7f42ef17f6c659fc7416d0f4758cd3e58861ee63c5fa4a4dde649e4"
|
||||
dependencies = [
|
||||
"os_str_bytes",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "colored"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"lazy_static",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.2"
|
||||
|
@ -225,9 +214,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.11.2"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
||||
checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
|
@ -274,9 +263,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.8.2"
|
||||
version = "1.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
|
||||
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown",
|
||||
|
@ -288,12 +277,6 @@ version = "1.0.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.126"
|
||||
|
@ -353,6 +336,15 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_threads"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.12.0"
|
||||
|
@ -479,7 +471,7 @@ dependencies = [
|
|||
"futures-util",
|
||||
"libloading",
|
||||
"log",
|
||||
"simple_logger",
|
||||
"simplelog",
|
||||
"tokio",
|
||||
"tokio-tungstenite",
|
||||
"tungstenite",
|
||||
|
@ -497,15 +489,14 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "simple_logger"
|
||||
version = "2.1.0"
|
||||
name = "simplelog"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c75a9723083573ace81ad0cdfc50b858aa3c366c48636edb4109d73122a0c0ea"
|
||||
checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"colored",
|
||||
"log",
|
||||
"winapi",
|
||||
"termcolor",
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -576,6 +567,24 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.3.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"libc",
|
||||
"num_threads",
|
||||
"time-macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time-macros"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.6.0"
|
||||
|
|
10
Cargo.toml
10
Cargo.toml
|
@ -19,11 +19,11 @@ codegen-units = 1
|
|||
[dependencies]
|
||||
anyhow = "1.0.58"
|
||||
async-trait = "0.1.56"
|
||||
clap = { version = "3.2.6", features = ["derive"] }
|
||||
futures-util = { version = "0.3", default-features = false, features = ["sink", "std"] }
|
||||
libloading = "0.7.3"
|
||||
log = { version = "0.4.17", features = ["release_max_level_info", "max_level_debug"] }
|
||||
simple_logger = { version = "2.1.0", default-features = false, features = ["colors"] }
|
||||
tokio = { version = "1.19.2", features = ["rt-multi-thread", "macros", "net"] }
|
||||
simplelog = "0.12.0"
|
||||
tokio-tungstenite = "0.17.1"
|
||||
tungstenite = "0.17.2"
|
||||
clap = { version = "3.2.6", features = ["derive"] }
|
||||
futures-util = { version = "0.3", default-features = false, features = ["sink", "std"] }
|
||||
log = { version = "0.4.17", features = ["release_max_level_info", "max_level_debug"] }
|
||||
tokio = { version = "1.19.2", features = ["rt-multi-thread", "macros", "net"] }
|
||||
|
|
41
src/main.rs
41
src/main.rs
|
@ -1,11 +1,12 @@
|
|||
use std::net::TcpListener;
|
||||
use std::{net::TcpListener, fs::File};
|
||||
|
||||
use clap::Parser;
|
||||
use log::{LevelFilter, info};
|
||||
use servers::{
|
||||
plugins::loader,
|
||||
tcp::{handle_connection, handle_websocket, Client},
|
||||
};
|
||||
use simple_logger::SimpleLogger;
|
||||
use simplelog::{CombinedLogger, TermLogger, WriteLogger, Config, TerminalMode, ColorChoice};
|
||||
|
||||
#[derive(Parser)]
|
||||
#[clap(
|
||||
|
@ -34,26 +35,42 @@ struct Cli {
|
|||
short = 'w',
|
||||
long = "ws-port",
|
||||
default_value = "9998",
|
||||
help = "Websocket server port [set 0 to random]",
|
||||
display_order = 2
|
||||
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,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
// init logger
|
||||
SimpleLogger::new().init()?;
|
||||
CombinedLogger::init(
|
||||
vec![
|
||||
TermLogger::new(LevelFilter::Trace, Config::default(), TerminalMode::Mixed, ColorChoice::Auto),
|
||||
WriteLogger::new(LevelFilter::Debug, Config::default(), File::create("server.log").unwrap()),
|
||||
]
|
||||
)?;
|
||||
|
||||
// parse cli args
|
||||
let cli = Cli::parse();
|
||||
|
||||
// if enabled start WebSocket server
|
||||
if !cli.ws_disable {
|
||||
tokio::spawn(start_ws_server(
|
||||
cli.host.clone(),
|
||||
cli.ws_port,
|
||||
cli.port.clone(),
|
||||
));
|
||||
}
|
||||
|
||||
// start tcp server
|
||||
tokio::spawn(start_ws_server(
|
||||
cli.host.clone(),
|
||||
cli.ws_port,
|
||||
cli.port.clone(),
|
||||
));
|
||||
start_tcp_server(cli.host, cli.port).await?;
|
||||
|
||||
Ok(())
|
||||
|
@ -64,7 +81,7 @@ async fn start_tcp_server(host: String, port: String) -> anyhow::Result<()> {
|
|||
// listen Tcp server
|
||||
let listener = TcpListener::bind(format!("{host}:{port}"))?;
|
||||
|
||||
println!("Tcp server started at: {}", listener.local_addr()?);
|
||||
info!("Tcp server started at: {}", listener.local_addr()?);
|
||||
|
||||
// load plugins, commands and events
|
||||
let plugin_manager = loader()?;
|
||||
|
@ -86,7 +103,7 @@ async fn start_ws_server(host: String, port: String, tcp_port: String) -> anyhow
|
|||
// listen Tcp server
|
||||
let listener = tokio::net::TcpListener::bind(format!("{host}:{port}")).await?;
|
||||
|
||||
println!("WebSocket server started at: {}", listener.local_addr()?);
|
||||
info!("WebSocket server started at: {}", listener.local_addr()?);
|
||||
|
||||
// Accepts a new incoming connection from this listener.
|
||||
while let Ok((stream, _address)) = listener.accept().await {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::io::Write;
|
||||
|
||||
use log::{error, trace};
|
||||
use log::{error, trace, info};
|
||||
|
||||
use crate::plugins::PluginManagerType;
|
||||
|
||||
|
@ -11,7 +11,7 @@ pub async fn handle_connection(
|
|||
mut client: Client,
|
||||
plugin_manager: PluginManagerType,
|
||||
) -> anyhow::Result<()> {
|
||||
println!("New Client: {}", client.stream.peer_addr()?);
|
||||
info!("New Client: {}", client.stream.peer_addr()?);
|
||||
|
||||
// run `onConnect` events from plugins
|
||||
check_event(&mut client, &plugin_manager, "onConnect").await?;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#![allow(clippy::unused_io_amount)]
|
||||
|
||||
use futures_util::{SinkExt, StreamExt};
|
||||
use log::info;
|
||||
use tokio::{
|
||||
io::{AsyncReadExt, AsyncWriteExt},
|
||||
net::TcpStream,
|
||||
|
@ -11,6 +12,8 @@ use super::MAX_PACKET_LEN;
|
|||
|
||||
/// Handle WebSocket connection
|
||||
pub async fn handle_websocket(stream: TcpStream, tcp_port: String) -> anyhow::Result<()> {
|
||||
info!("New WebSocket Client: {}", stream.peer_addr()?);
|
||||
|
||||
// accept connection as WebSocket
|
||||
let ws_stream = tokio_tungstenite::accept_async(stream).await?;
|
||||
|
||||
|
|
Loading…
Reference in New Issue