VirtWeb/virtweb_backend/src/controllers/server_controller.rs

50 lines
1.4 KiB
Rust

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,
}))
}