use crate::actors::libvirt_actor::HypervisorInfo; use crate::app_config::AppConfig; use crate::constants; use crate::controllers::{HttpResult, LibVirtReq}; use crate::extractors::local_auth_extractor::LocalAuthEnabled; use actix_web::{HttpResponse, Responder}; use sysinfo::{System, SystemExt}; pub async fn root_index() -> impl Responder { HttpResponse::Ok().body("Hello world!") } #[derive(serde::Serialize)] struct StaticConfig { auth_disabled: bool, local_auth_enabled: bool, oidc_auth_enabled: bool, iso_mimetypes: &'static [&'static str], iso_max_size: usize, } pub async fn static_config(local_auth: LocalAuthEnabled) -> impl Responder { HttpResponse::Ok().json(StaticConfig { auth_disabled: AppConfig::get().unsecure_disable_auth, local_auth_enabled: *local_auth, oidc_auth_enabled: !AppConfig::get().disable_oidc, iso_mimetypes: &constants::ALLOWED_ISO_MIME_TYPES, iso_max_size: constants::ISO_MAX_SIZE, }) } #[derive(serde::Serialize)] struct ServerInfo { hypervisor: HypervisorInfo, system: System, } pub async fn server_info(client: LibVirtReq) -> HttpResult { let mut system = System::new(); system.refresh_disks_list(); system.refresh_components_list(); system.refresh_networks_list(); system.refresh_all(); Ok(HttpResponse::Ok().json(ServerInfo { hypervisor: client.get_info().await?, system, })) }