"actix-web",
"askama",
"cached",
+ "chrono",
"common",
"futures",
"itertools",
ron = "0.6" # Rust object notation, to load configuration files.
itertools = "0.10"
+chrono = "0.4"
+
sysinfo = "0.16"
cached = "0.23"
uptime: String,
world_size: String,
nb_of_players: u32,
+ last_backup: String,
}
const VALUE_UNKNOWN: &str = "-";
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() }
}
}
}
#[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("") }
}
}
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
}
use sysinfo::{ ProcessExt, SystemExt };\r
+use chrono::{ DateTime, Datelike, Timelike, Utc };\r
\r
#[cfg(target_os = "unix")]\r
use systemd::journal;\r
uptime: u64, // [s].\r
world_size: u64, // [B].\r
nb_of_players: u32,\r
+ last_backup: DateTime,\r
}\r
\r
impl ValheimExe {\r
pub fn get_nb_of_player(&self) -> u32 {\r
self.nb_of_players\r
}\r
+\r
+ pub fn format_last_backup(&self) -> String {\r
+ string::from("")\r
+ }\r
}\r
\r
const BINARY_PREFIXES: [&str; 8] = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"];\r
0\r
}\r
\r
-pub fn get_valheim_executable_information(world_path : &str) -> Option<ValheimExe> {\r
+fn get_last_backup_datetime(backup_path: &str) -> DateTime {\r
+\r
+}\r
+\r
+pub fn get_valheim_executable_information(world_path: &str, backup_path: &str) -> Option<ValheimExe> {\r
let mut system = sysinfo::System::new_all();\r
system.refresh_system();\r
let processes = system.get_process_by_name(VALHEIM_PROCESS_NAME);\r
load_average_5min: system.get_load_average().five / system.get_processors().len() as f64 * 100.,\r
uptime: std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs() - process.start_time(),\r
world_size,\r
- nb_of_players: get_number_of_players()\r
+ nb_of_players: get_number_of_players(),\r
+ last_backup: get_last_backup_datetime(backup_path)\r
}\r
)\r
} else {\r
font-family: Fira Code, Helvetica Neue, Helvetica, Arial, sans-serif;
text-shadow: 2px 2px 2px #DDD;
text-align: center;
- color: #5b5b5b;
- background-color: #ededed;
+ color: #ededed;
+ background-color: #5b5b5b;
}
h1 {
<p>Memory used: {{ memory }}</p>\r
<p>Load average (5 min): {{ load_average }}</p>\r
<p>Uptime: {{ uptime }}</p>\r
+ <p>Last backup: {{ last_backup }}</p>\r
</div>\r
</body>\r
</html>
\ No newline at end of file