sysmonk/routes/
monitor.rs1use crate::{constant, legacy, resources, routes, squire};
2use actix_web::http::StatusCode;
3use actix_web::{web, HttpRequest, HttpResponse};
4use fernet::Fernet;
5use std::sync::Arc;
6use sysinfo::Disks;
7
8#[get("/monitor")]
23pub async fn monitor(request: HttpRequest,
24 fernet: web::Data<Arc<Fernet>>,
25 session: web::Data<Arc<constant::Session>>,
26 metadata: web::Data<Arc<constant::MetaData>>,
27 config: web::Data<Arc<squire::settings::Config>>,
28 template: web::Data<Arc<minijinja::Environment<'static>>>) -> HttpResponse {
29 let auth_response = squire::authenticator::verify_token(&request, &config, &fernet, &session);
30 if !auth_response.ok {
31 return routes::auth::failed_auth(auth_response);
32 }
33 let monitor_template = template.get_template("monitor").unwrap();
34 let mut response = HttpResponse::build(StatusCode::OK);
35 response.content_type("text/html; charset=utf-8");
36 log::debug!("Session Validation Response: {}", auth_response.detail);
37
38 let disks = Disks::new_with_refreshed_list();
40
41 let sys_info_map = resources::info::get_sys_info(&disks);
42 let legacy_disk_info = legacy::disks::get_all_disks();
43
44 let has_name_and_size = !legacy_disk_info.is_empty() &&
46 legacy_disk_info.iter().all(|disk| {
47 disk.contains_key("Name") && disk.contains_key("Size")
48 });
49 let sys_info_disks = if has_name_and_size {
50 log::debug!("Using legacy methods for disks!");
51 legacy_disk_info
52 } else {
53 resources::info::get_disks(&disks)
54 };
55
56 let sys_info_network = resources::network::get_network_info().await;
57
58 let sys_info_basic = sys_info_map.get("basic").unwrap();
59 let sys_info_mem_storage = sys_info_map.get("mem_storage").unwrap();
60
61 let rendered = monitor_template.render(minijinja::context!(
62 version => metadata.pkg_version,
63 logout => "/logout",
64 sys_info_basic => sys_info_basic,
65 sys_info_mem_storage => sys_info_mem_storage,
66 sys_info_network => sys_info_network,
67 sys_info_disks => sys_info_disks
68 )).unwrap();
69 response.body(rendered)
70}