From 9deef63b608b62780a4dfed031410c25e10e477a Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Tue, 16 Mar 2021 19:13:02 +0100 Subject: [PATCH] Adding information about backup (WIP) --- Cargo.lock | 1 + backend/Cargo.toml | 2 ++ backend/src/main.rs | 14 ++++++++++---- backend/src/valheim_controller.rs | 15 +++++++++++++-- backend/style.scss | 4 ++-- backend/templates/main.html | 1 + 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f9f90f..d013294 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2035,6 +2035,7 @@ dependencies = [ "actix-web", "askama", "cached", + "chrono", "common", "futures", "itertools", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 351f710..2dbae9f 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -13,6 +13,8 @@ serde = { version = "1.0", features = ["derive"] } ron = "0.6" # Rust object notation, to load configuration files. itertools = "0.10" +chrono = "0.4" + sysinfo = "0.16" cached = "0.23" diff --git a/backend/src/main.rs b/backend/src/main.rs index 03963c1..a2201d4 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -22,6 +22,7 @@ struct MainTemplate { uptime: String, world_size: String, nb_of_players: u32, + last_backup: String, } const VALUE_UNKNOWN: &str = "-"; @@ -43,11 +44,12 @@ async fn main_page(config_shared: web::Data>) -> impl Responder { load_average: info.format_load_average(), uptime: info.format_uptime(), world_size: info.format_world_size(), - nb_of_players: info.get_nb_of_player() + nb_of_players: info.get_nb_of_player(), + last_backup: info.format_last_backup() }, None => { let value_unknown = String::from(VALUE_UNKNOWN); - MainTemplate { text_status: String::from("Valheim server is down :("), memory: value_unknown.clone(), load_average: value_unknown.clone(), uptime: value_unknown.clone(), world_size: value_unknown.clone(), nb_of_players: 0 } + MainTemplate { text_status: String::from("Valheim server is down :("), memory: value_unknown.clone(), load_average: value_unknown.clone(), uptime: value_unknown.clone(), world_size: value_unknown.clone(), nb_of_players: 0, last_backup: value_unknown.clone() } } } } @@ -55,15 +57,19 @@ async fn main_page(config_shared: web::Data>) -> impl Responder { #[derive(Debug, Deserialize, Serialize)] struct Config { port: u16, + #[serde(default = "empty_string")] world_path: String, + + #[serde(default = "empty_string")] + backup_path: String, } fn empty_string() -> String { "".to_owned() } impl Config { fn default() -> Self { - Config { port: 8082, world_path: String::from("") } + Config { port: 8082, world_path: String::from(""), backup_path: String::from("") } } } @@ -128,7 +134,7 @@ fn process_args(config: &Config) -> bool { print_usage(); return true } else if args.iter().any(|arg| arg == "--status") { - println!("{:?}", valheim_controller::get_valheim_executable_information(&config.world_path)); + println!("{:?}", valheim_controller::get_valheim_executable_information(&config.world_path, &config.backup_path)); return true } diff --git a/backend/src/valheim_controller.rs b/backend/src/valheim_controller.rs index 3c2bab6..3d99033 100644 --- a/backend/src/valheim_controller.rs +++ b/backend/src/valheim_controller.rs @@ -1,4 +1,5 @@ use sysinfo::{ ProcessExt, SystemExt }; +use chrono::{ DateTime, Datelike, Timelike, Utc }; #[cfg(target_os = "unix")] use systemd::journal; @@ -10,6 +11,7 @@ pub struct ValheimExe { uptime: u64, // [s]. world_size: u64, // [B]. nb_of_players: u32, + last_backup: DateTime, } impl ValheimExe { @@ -35,6 +37,10 @@ impl ValheimExe { pub fn get_nb_of_player(&self) -> u32 { self.nb_of_players } + + pub fn format_last_backup(&self) -> String { + string::from("") + } } const BINARY_PREFIXES: [&str; 8] = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"]; @@ -90,7 +96,11 @@ fn get_number_of_players() -> u32 { 0 } -pub fn get_valheim_executable_information(world_path : &str) -> Option { +fn get_last_backup_datetime(backup_path: &str) -> DateTime { + +} + +pub fn get_valheim_executable_information(world_path: &str, backup_path: &str) -> Option { let mut system = sysinfo::System::new_all(); system.refresh_system(); let processes = system.get_process_by_name(VALHEIM_PROCESS_NAME); @@ -106,7 +116,8 @@ pub fn get_valheim_executable_information(world_path : &str) -> OptionMemory used: {{ memory }}

Load average (5 min): {{ load_average }}

Uptime: {{ uptime }}

+

Last backup: {{ last_backup }}

\ No newline at end of file -- 2.43.0