50 lines
1.4 KiB
Rust
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,
|
|
}))
|
|
}
|