import { APIClient } from "./ApiClient"; export interface ServerConfig { auth_disabled: boolean; local_auth_enabled: boolean; oidc_auth_enabled: boolean; iso_mimetypes: string[]; iso_max_size: number; } let config: ServerConfig | null = null; export interface ServerSystemInfo { hypervisor: HypervisorInfo; system: SystemInfo; } interface HypervisorInfo { type: string; hyp_version: number; lib_version: number; capabilities: string; free_memory: number; hostname: string; node: { cpu_model: string; memory_size: number; number_of_active_cpus: number; cpu_frequency_mhz: number; number_of_numa_cell: number; number_of_cpu_socket_per_node: number; number_of_core_per_sockets: number; number_of_threads_per_sockets: number; }; } interface SystemInfo { IS_SUPPORTED: boolean; SUPPORTED_SIGNALS: string[]; MINIMUM_CPU_UPDATE_INTERVAL: { secs: number; nanos: number; }; global_cpu_info: GlobalCPUInfo; cpus: CpuCore[]; physical_core_count: number; total_memory: number; free_memory: number; available_memory: number; used_memory: number; total_swap: number; free_swap: number; used_swap: number; components: SysComponent; users: []; disks: DiskInfo[]; networks: []; uptime: number; boot_time: number; load_average: SysLoadAverage; name: string; kernel_version: string; os_version: string; long_os_version: string; distribution_id: string; host_name: string; } interface GlobalCPUInfo { cpu_usage: number; name: string; vendor_id: string; brand: string; frequency: number; } interface CpuCore { cpu_usage: number; name: string; vendor_id: string; brand: string; frequency: number; } interface SysComponent { temperature: number; max: number; critical: number; label: string; } interface DiskInfo { DiskKind: "HDD" | "SSD"; name: string; file_system: number[]; mount_point: string; total_space: number; available_space: number; is_removable: boolean; } interface SysLoadAverage { one: number; five: number; fifteen: number; } export class ServerApi { /** * Get server configuration */ static async LoadConfig(): Promise { config = ( await APIClient.exec({ uri: "/server/static_config", method: "GET", }) ).data; } /** * Get cached configuration */ static get Config(): ServerConfig { if (config === null) throw new Error("Missing configuration!"); return config; } /** * Get server information */ static async SystemInfo(): Promise { return ( await APIClient.exec({ method: "GET", uri: "/server/info", }) ).data; } }