87 lines
2.6 KiB
Swift
87 lines
2.6 KiB
Swift
//
|
|
// ServerInfo.swift
|
|
// iKeyMon
|
|
//
|
|
// Created by tracer on 30.03.25.
|
|
//
|
|
|
|
struct ServerInfo: Decodable {
|
|
var hostname: String
|
|
var ipAddresses: [String]
|
|
// var processor: String
|
|
var cpuCores: Int
|
|
// var virtualization: String
|
|
var serverTime: String
|
|
var uptime: String
|
|
// var sshFingerprint: String
|
|
var processCount: Int
|
|
var apacheVersion: String
|
|
var phpVersion: String
|
|
var mysqlVersion: String?
|
|
var mariadbVersion: String?
|
|
var ports: [ServicePort]?
|
|
var load: Load
|
|
var memory: Memory
|
|
var swap: Memory
|
|
var diskSpace: DiskSpace
|
|
}
|
|
|
|
extension ServerInfo {
|
|
static let placeholder = ServerInfo(
|
|
hostname: "keyhelp.lab.24unix.net",
|
|
ipAddresses: ["192.168.99.44", "2a03:..."],
|
|
// processor: "Common processor (arm64)",
|
|
cpuCores: 8,
|
|
// virtualization: "QEMU",
|
|
serverTime: "Sunday, March 30, 2025 at 08:01 PM (Europe/Berlin)",
|
|
uptime: "6 Days / 7 Hours / 16 Minutes",
|
|
// sshFingerprint: "Ed25519 / ECDSA / RSA",
|
|
processCount: 123,
|
|
apacheVersion: "2.4",
|
|
phpVersion: "8.4",
|
|
ports: [],
|
|
load: Load(
|
|
minute1: 0.42,
|
|
minute5: 0.31,
|
|
minute15: 0.29,
|
|
percent: 10.5,
|
|
cpuCount: 4,
|
|
level: "low"
|
|
),
|
|
memory: Memory(free: 1234, used: 4567, total: 123456, percent: 23.45),
|
|
swap: Memory(free: 1234, used: 4567, total: 123456, percent: 23.45),
|
|
diskSpace: DiskSpace(free: 1234, used: 4567, total: 123456, percent: 23.45)
|
|
)
|
|
|
|
var cpuLoadDetail: String {
|
|
"1min: \(load.minute1), 5min: \(load.minute5), 15min: \(load.minute15) (\(load.level))"
|
|
}
|
|
}
|
|
|
|
extension ServerInfo {
|
|
init(from response: ServerResponse) {
|
|
self.hostname = response.meta.hostname
|
|
self.ipAddresses = response.meta.ipAddresses
|
|
self.serverTime = response.meta.serverTime
|
|
|
|
let u = response.meta.uptime
|
|
self.uptime = "\(u.days) Days / \(u.hours) Hours / \(u.minutes) Minutes"
|
|
|
|
self.cpuCores = response.utilization.load.cpuCount
|
|
self.processCount = response.utilization.processCount
|
|
|
|
self.apacheVersion = response.components.apache
|
|
self.phpVersion = response.components.php
|
|
|
|
self.mysqlVersion = response.components.mysql ?? ""
|
|
self.mariadbVersion = response.components.mariadb ?? ""
|
|
|
|
self.ports = response.ports
|
|
|
|
self.load = response.utilization.load
|
|
self.memory = response.utilization.memory
|
|
self.swap = response.utilization.swap
|
|
self.diskSpace = response.utilization.diskSpace
|
|
}
|
|
}
|