From 567b0bbc2a12bcda0e382c0c8a560de59f5405a9 Mon Sep 17 00:00:00 2001 From: glyph Date: Tue, 4 Jan 2022 14:55:17 +0200 Subject: [PATCH] replace network rpc client calls with direct calls to peach_network --- peach-web/src/routes/status/network.rs | 178 ++++++++++++------------- 1 file changed, 88 insertions(+), 90 deletions(-) diff --git a/peach-web/src/routes/status/network.rs b/peach-web/src/routes/status/network.rs index ff6c6af..a5c8606 100644 --- a/peach-web/src/routes/status/network.rs +++ b/peach-web/src/routes/status/network.rs @@ -2,25 +2,77 @@ use rocket::{get, request::FlashMessage}; use rocket_dyn_templates::Template; use serde::Serialize; -use peach_lib::network_client; -use peach_lib::stats_client::Traffic; +use peach_network::{ + network, + network::{Status, Traffic}, +}; use crate::routes::authentication::Authenticated; // HELPERS AND ROUTES FOR /status/network +#[derive(Debug, Serialize)] +pub struct IfaceTraffic { + pub rx: u64, + pub rx_unit: Option, + pub tx: u64, + pub tx_unit: Option, +} + +impl IfaceTraffic { + fn default() -> Self { + IfaceTraffic { + rx: 0, + rx_unit: None, + tx: 0, + tx_unit: None, + } + } +} + +fn convert_traffic(traffic: Traffic) -> Option { + let mut t = IfaceTraffic::default(); + // modify traffic values & assign measurement unit + // based on received and transmitted values + // if received > 999 MB, convert it to GB + if traffic.received > 1_047_527_424 { + t.rx = traffic.received / 1_073_741_824; + t.rx_unit = Some("GB".to_string()); + } else if traffic.received > 0 { + // otherwise, convert it to MB + t.rx = (traffic.received / 1024) / 1024; + t.rx_unit = Some("MB".to_string()); + } else { + t.rx = 0; + t.rx_unit = Some("MB".to_string()); + } + + if traffic.transmitted > 1_047_527_424 { + t.tx = traffic.transmitted / 1_073_741_824; + t.tx_unit = Some("GB".to_string()); + } else if traffic.transmitted > 0 { + t.tx = (traffic.transmitted / 1024) / 1024; + t.tx_unit = Some("MB".to_string()); + } else { + t.tx = 0; + t.tx_unit = Some("MB".to_string()); + } + + Some(t) +} + #[derive(Debug, Serialize)] pub struct NetworkContext { pub ap_ip: String, pub ap_ssid: String, pub ap_state: String, - pub ap_traffic: Option, + pub ap_traffic: Option, pub wlan_ip: String, pub wlan_rssi: Option, pub wlan_ssid: String, pub wlan_state: String, - pub wlan_status: String, - pub wlan_traffic: Option, + pub wlan_status: Option, + pub wlan_traffic: Option, pub flash_name: Option, pub flash_msg: Option, // page title for header in navbar @@ -31,101 +83,47 @@ pub struct NetworkContext { impl NetworkContext { pub fn build() -> NetworkContext { - let ap_ip = match network_client::ip("ap0") { - Ok(ip) => ip, - Err(_) => "x.x.x.x".to_string(), + let ap_ip = match network::ip("ap0") { + Ok(Some(ip)) => ip, + _ => "x.x.x.x".to_string(), }; - let ap_ssid = match network_client::ssid("ap0") { - Ok(ssid) => ssid, - Err(_) => "Not currently activated".to_string(), + let ap_ssid = match network::ssid("ap0") { + Ok(Some(ssid)) => ssid, + _ => "Not currently activated".to_string(), }; - let ap_state = match network_client::state("ap0") { - Ok(state) => state, - Err(_) => "Interface unavailable".to_string(), + let ap_state = match network::state("ap0") { + Ok(Some(state)) => state, + _ => "Interface unavailable".to_string(), }; - let ap_traffic = match network_client::traffic("ap0") { - Ok(traffic) => { - let mut t = traffic; - // modify traffic values & assign measurement unit - // based on received and transmitted values - // if received > 999 MB, convert it to GB - if t.received > 1_047_527_424 { - t.received /= 1_073_741_824; - t.rx_unit = Some("GB".to_string()); - } else if t.received > 0 { - // otherwise, convert it to MB - t.received = (t.received / 1024) / 1024; - t.rx_unit = Some("MB".to_string()); - } else { - t.received = 0; - t.rx_unit = Some("MB".to_string()); - } - - if t.transmitted > 1_047_527_424 { - t.transmitted /= 1_073_741_824; - t.tx_unit = Some("GB".to_string()); - } else if t.transmitted > 0 { - t.transmitted = (t.transmitted / 1024) / 1024; - t.tx_unit = Some("MB".to_string()); - } else { - t.transmitted = 0; - t.tx_unit = Some("MB".to_string()); - } - Some(t) - } - Err(_) => None, + let ap_traffic = match network::traffic("ap0") { + // convert bytes to mb or gb and add appropriate units + Ok(Some(traffic)) => convert_traffic(traffic), + _ => None, }; - let wlan_ip = match network_client::ip("wlan0") { - Ok(ip) => ip, - Err(_) => "x.x.x.x".to_string(), + let wlan_ip = match network::ip("wlan0") { + Ok(Some(ip)) => ip, + _ => "x.x.x.x".to_string(), }; - let wlan_rssi = match network_client::rssi_percent("wlan0") { - Ok(rssi) => Some(rssi), - Err(_) => None, + let wlan_rssi = match network::rssi_percent("wlan0") { + Ok(rssi) => rssi, + _ => None, }; - let wlan_ssid = match network_client::ssid("wlan0") { - Ok(ssid) => ssid, - Err(_) => "Not connected".to_string(), + let wlan_ssid = match network::ssid("wlan0") { + Ok(Some(ssid)) => ssid, + _ => "Not connected".to_string(), }; - let wlan_state = match network_client::state("wlan0") { - Ok(state) => state, - Err(_) => "Interface unavailable".to_string(), + let wlan_state = match network::state("wlan0") { + Ok(Some(state)) => state, + _ => "Interface unavailable".to_string(), }; - let wlan_status = match network_client::status("wlan0") { + let wlan_status = match network::status("wlan0") { Ok(status) => status, - Err(_) => "Interface unavailable".to_string(), + _ => None, }; - let wlan_traffic = match network_client::traffic("wlan0") { - Ok(traffic) => { - let mut t = traffic; - // modify traffic values & assign measurement unit - // based on received and transmitted values - // if received > 999 MB, convert it to GB - if t.received > 1_047_527_424 { - t.received /= 1_073_741_824; - t.rx_unit = Some("GB".to_string()); - } else if t.received > 0 { - // otherwise, convert it to MB - t.received = (t.received / 1024) / 1024; - t.rx_unit = Some("MB".to_string()); - } else { - t.received = 0; - t.rx_unit = Some("MB".to_string()); - } - - if t.transmitted > 1_047_527_424 { - t.transmitted /= 1_073_741_824; - t.tx_unit = Some("GB".to_string()); - } else if t.transmitted > 0 { - t.transmitted = (t.transmitted / 1024) / 1024; - t.tx_unit = Some("MB".to_string()); - } else { - t.transmitted = 0; - t.tx_unit = Some("MB".to_string()); - } - Some(t) - } - Err(_) => None, + let wlan_traffic = match network::traffic("wlan0") { + // convert bytes to mb or gb and add appropriate units + Ok(Some(traffic)) => convert_traffic(traffic), + _ => None, }; NetworkContext {