From 9a92facb18cd3d87d0ad2f70369d90001ec71ea4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 27 May 2024 18:05:47 +0100 Subject: [PATCH] Added disk filtering Updated the Rocket.toml example --- Rocket.toml.example | 2 ++ src/main.rs | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Rocket.toml.example b/Rocket.toml.example index d4c0305..fa66167 100644 --- a/Rocket.toml.example +++ b/Rocket.toml.example @@ -2,3 +2,5 @@ template_dir = "templates" address = "0.0.0.0" network_interface = [ "eth0", "eth1" ] +mount_names = [] # All disks and mount points +json_rpc_url = "http://127.0.0.1:18081/json_rpc" diff --git a/src/main.rs b/src/main.rs index 139b128..a635531 100644 --- a/src/main.rs +++ b/src/main.rs @@ -67,7 +67,7 @@ struct SysInfo { restart_needed: bool, } -fn get_system_info(network_if_names: &Vec) -> SysInfo { +fn get_system_info(network_if_names: &Vec, mount_names: &Vec) -> SysInfo { let mut sys = System::new_all(); sys.refresh_all(); let cpu_load = System::load_average(); @@ -80,6 +80,10 @@ fn get_system_info(network_if_names: &Vec) -> SysInfo { let disks = Disks::new_with_refreshed_list(); let mut disks_context = Vec::new(); for disk in disks.list() { + let mount_point = disk.mount_point().display().to_string(); + if mount_names.len() != 0 && !mount_names.contains(&mount_point) { + continue; + } let ts = disk.total_space(); let ass = disk.available_space(); disks_context.push(DiskInfo { @@ -89,7 +93,7 @@ fn get_system_info(network_if_names: &Vec) -> SysInfo { available_space: Byte::from(ass).to_string(), available_space_bytes: ass, consumed_space_bytes: ts - ass, - mount_point: disk.mount_point().display().to_string(), + mount_point: mount_point, }); } @@ -217,6 +221,7 @@ fn get_latest_twenty_blocks(json_rpc_url: &str, current_height: u64) -> Vec, + mount_names: Vec, json_rpc_url: String, } @@ -226,6 +231,7 @@ impl Default for Config { fn default() -> Self { Self { network_interfaces: Vec::new(), + mount_names: Vec::new(), json_rpc_url: "http://127.0.0.1:18081/json_rpc".to_string(), } } @@ -235,7 +241,7 @@ impl Default for Config { fn index(config: &State) -> Template { let node_info = get_node_info(&config.json_rpc_url); let latest_twenty_blocks = get_latest_twenty_blocks(&config.json_rpc_url, node_info.height); - let system_context = get_system_info(&config.network_interfaces); + let system_context = get_system_info(&config.network_interfaces, &config.mount_names); let context = context! { system: system_context, node_info: node_info,