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}; pub async fn root_index() -> impl Responder { HttpResponse::Ok().body("Hello world!") } #[derive(serde::Serialize)] struct StaticConfig { 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 { 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, } pub async fn server_info(client: LibVirtReq) -> HttpResult { Ok(HttpResponse::Ok().json(ServerInfo { hypervisor: client.get_info().await?, })) }