From a36163a78bb336e03349c66ebb2bf1016feb3daf Mon Sep 17 00:00:00 2001 From: Simon Yen Date: Tue, 26 Nov 2024 23:18:18 +0800 Subject: [PATCH] =?UTF-8?q?OK,=E9=A1=B9=E7=9B=AE=E5=AE=8C=E7=BB=93?= =?UTF-8?q?=EF=BC=81=E6=92=92=E8=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 32 ++++++++++++++++++++++ Cargo.toml | 3 ++- src/main.rs | 66 ++++++++++++++++++++++++++++++--------------- templates/home.html | 12 ++++----- 4 files changed, 85 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d032890..6e59974 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -76,6 +76,37 @@ dependencies = [ "libc", ] +[[package]] +name = "argh" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219" +dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a" +dependencies = [ + "argh_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "argh_shared" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531" +dependencies = [ + "serde", +] + [[package]] name = "async-trait" version = "0.1.83" @@ -2063,6 +2094,7 @@ dependencies = [ name = "system_monitor" version = "0.1.0" dependencies = [ + "argh", "lazy_static", "salvo", "serde", diff --git a/Cargo.toml b/Cargo.toml index 5fb0098..6e97d60 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,4 +11,5 @@ tracing-subscriber = "0.3" sysinfo = "0.32.0" serde = "1.0.213" lazy_static = "1.5.0" -tera = "1" \ No newline at end of file +tera = "1" +argh = "0.1.12" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index aa3a973..7968ea0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,34 +1,58 @@ -mod router; mod handler; +mod router; -use tera::Tera; -use salvo::prelude::*; -use salvo::logging::Logger; -use sysinfo::{System,Disks,Networks}; use lazy_static::lazy_static; -use std::sync::{Arc,Mutex}; +use salvo::logging::Logger; +use salvo::prelude::*; +use std::sync::{Arc, Mutex}; +use sysinfo::{Disks, Networks, System}; +use tera::Tera; -lazy_static!{ - static ref SYSTEM:Arc> = Arc::new(Mutex::new(System::new())); - static ref DISKS:Arc> = Arc::new(Mutex::new(Disks::new())); - static ref NETWORKS:Arc> = Arc::new(Mutex::new(Networks::new())); - static ref TEMPLATES:Tera={ - let mut tera=Tera::new("templates/**/*.html").unwrap(); +lazy_static! { + static ref SYSTEM: Arc> = Arc::new(Mutex::new(System::new())); + static ref DISKS: Arc> = Arc::new(Mutex::new(Disks::new())); + static ref NETWORKS: Arc> = Arc::new(Mutex::new(Networks::new())); + static ref TEMPLATES: Tera = { + let mut tera = Tera::new("templates/**/*.html").unwrap(); tera.full_reload().unwrap(); tera }; } - - +//解析命令行参数 +use argh::FromArgs; + +#[derive(FromArgs)] +/// A System monitor written in Rust! +struct Args { + /// enable logging + #[argh(switch, short = 'l')] + log: bool, + /// address + #[argh(option, short = 'a')] + address: Option, + /// port + #[argh(option, short = 'p')] + port: Option, +} #[tokio::main] async fn main() { - tracing_subscriber::fmt().init(); - + //获取命令行参数 + let args: Args = argh::from_env(); let router = router::get_router(); - let service=Service::new(router).hoop(Logger::new()); - let acceptor = TcpListener::new("0.0.0.0:19999").bind().await; - - Server::new(acceptor).serve(service).await; -} \ No newline at end of file + let ip = format!( + "{}:{}", + args.address.unwrap_or("127.0.0.1".to_string()), + args.port.unwrap_or(9999) + ); + if args.log { + tracing_subscriber::fmt().init(); + let service = Service::new(router).hoop(Logger::new()); + let acceptor = TcpListener::new(&ip).bind().await; + Server::new(acceptor).serve(service).await; + } else { + let acceptor = TcpListener::new(&ip).bind().await; + Server::new(acceptor).serve(router).await; + } +} diff --git a/templates/home.html b/templates/home.html index 45837e0..a234a53 100644 --- a/templates/home.html +++ b/templates/home.html @@ -39,12 +39,12 @@ {% block side_content %}
-

System Name: {{system_name}}

-

Hostname: {{hostname}}

-

OS Version: {{os_version}}

-

Kernel Version: {{kernel_version}}

-

Distribution ID: {{distribution_id}}

-

CPU Architecture: {{cpu_arch}}

+

System Name: {{system_name}}

+

Hostname: {{hostname}}

+

OS Version: {{os_version}}

+

Kernel Version: {{kernel_version}}

+

Distribution ID: {{distribution_id}}

+

CPU Architecture: {{cpu_arch}}