Files
HBMonv2/html/sysinfo.php
T
Shane Daley c4610e855c Show System Info services as named up/down ticks.
Drop port numbers, mark HTTP or HTTPS from the current request, and keep HBlink and HBMonitor as local checks.
2026-09-05 22:30:45 +01:00

118 lines
5.7 KiB
PHP

<?php
include_once 'include/config.php';
include_once 'include/version.php';
include_once 'include/seo.php';
include_once 'include/sysinfo_stats.php';
$sys = hbmon_sys_snapshot();
function hbmon_sys_h($value) {
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
}
function hbmon_sys_bar($percent, $level) {
$percent = max(0, min(100, (int)$percent));
$level = in_array($level, array('ok', 'warn', 'crit'), true) ? $level : 'ok';
echo '<div class="hbmon-sys-bar" role="meter" aria-valuemin="0" aria-valuemax="100" aria-valuenow="'.$percent.'">';
echo '<span class="hbmon-sys-bar-fill is-'.$level.'" style="width:'.$percent.'%"></span>';
echo '</div>';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="refresh" content="30">
<?php hbmon_seo_head('System Info'); ?>
<link rel="stylesheet" type="text/css" href="css/styles.php" />
</head>
<body style="background-color: #d0d0d0;font: 10pt arial, sans-serif;">
<div class="hbmon-page">
<div class="hbmon-shell hbmon-header">
<p class="hbmon-header-version" style="font-size: 10px; text-align: right; margin-right: 16px">Dashboard Version: <?php echo hbmon_sys_h(DASH); ?></p>
<img class="hbmon-logo" src="img/HBLINK_logoV2.png?v=<?php echo hbmon_sys_h(rawurlencode(DASH)); ?>" alt="HBlink Logo" />
</div>
<div class="hbmon-shell">
<p class="hbmon-report-name" style="text-align:center;"><span style="color:#000;font-size: 18px; font-weight:bold;"><?php echo hbmon_sys_h(REPORT_NAME);?></span></p>
</div>
<?php include_once 'buttons.html'; ?>
<main class="hbmon-shell">
<fieldset class="hbmon-panel hbmon-system-info" style="background-color:#e0e0e0; font-size:14px; border-radius: 10px;">
<legend><b><span style="color:#000;">&nbsp;.: System Info :.&nbsp;</span></b></legend>
<p class="hbmon-sys-status"><?php echo hbmon_sys_h($sys['host']['hostname']); ?> · up <?php echo hbmon_sys_h($sys['uptime']['human']); ?> · sampled <?php echo hbmon_sys_h($sys['host']['sampled']); ?></p>
<div class="hbmon-sys-grid">
<article class="hbmon-sys-card">
<h3>CPU</h3>
<p class="hbmon-sys-value"><?php echo hbmon_sys_h(number_format($sys['cpu']['load1'], 2)); ?></p>
<p class="hbmon-sys-meta"><?php echo hbmon_sys_h($sys['cpu']['cores']); ?> cores · load <?php echo hbmon_sys_h(number_format($sys['cpu']['load1'], 2).' / '.number_format($sys['cpu']['load5'], 2).' / '.number_format($sys['cpu']['load15'], 2)); ?></p>
<?php hbmon_sys_bar($sys['cpu']['percent'], $sys['cpu']['level']); ?>
</article>
<article class="hbmon-sys-card">
<h3>Memory</h3>
<p class="hbmon-sys-value"><?php echo (int)$sys['memory']['percent']; ?>%</p>
<p class="hbmon-sys-meta"><?php echo hbmon_sys_h($sys['memory']['human']); ?></p>
<?php hbmon_sys_bar($sys['memory']['percent'], $sys['memory']['level']); ?>
</article>
<article class="hbmon-sys-card">
<h3>Disk</h3>
<p class="hbmon-sys-value"><?php echo (int)$sys['disk']['percent']; ?>%</p>
<p class="hbmon-sys-meta"><?php echo hbmon_sys_h($sys['disk']['human']); ?> · <?php echo hbmon_sys_h($sys['disk']['path']); ?></p>
<?php hbmon_sys_bar($sys['disk']['percent'], $sys['disk']['level']); ?>
</article>
<article class="hbmon-sys-card">
<h3>Temperature</h3>
<?php if ($sys['temp'] !== null) { ?>
<p class="hbmon-sys-value"><?php echo hbmon_sys_h($sys['temp']['human']); ?></p>
<p class="hbmon-sys-meta">CPU thermal zone</p>
<?php hbmon_sys_bar($sys['temp']['percent'], $sys['temp']['level']); ?>
<?php } else { ?>
<p class="hbmon-sys-value hbmon-sys-muted">N/A</p>
<p class="hbmon-sys-meta">No thermal sensor reported</p>
<?php } ?>
</article>
</div>
<div class="hbmon-sys-services">
<?php foreach ($sys['services'] as $svc) {
$up = !empty($svc['up']);
$state = $up ? 'up' : 'down';
$mark = $up ? '✓' : '✕';
?>
<span class="hbmon-sys-chip is-<?php echo $state; ?>">
<?php echo hbmon_sys_h($svc['name']); ?>: <?php echo $state; ?>
<span class="hbmon-sys-mark" aria-hidden="true"><?php echo $mark; ?></span>
</span>
<?php } ?>
</div>
<table class="hbmon-sys-table">
<tbody>
<tr><th>Operating system</th><td><?php echo hbmon_sys_h($sys['host']['os']); ?></td></tr>
<tr><th>Kernel</th><td><?php echo hbmon_sys_h($sys['host']['kernel'].' / '.$sys['host']['arch']); ?></td></tr>
<tr><th>CPU</th><td><?php echo hbmon_sys_h($sys['cpu']['model']); ?></td></tr>
<tr><th>Swap</th><td><?php echo $sys['memory']['swap_total'] > 0 ? hbmon_sys_h(hbmon_sys_bytes($sys['memory']['swap_used']).' / '.hbmon_sys_bytes($sys['memory']['swap_total']).' ('.$sys['memory']['swap_percent'].'%)') : 'None'; ?></td></tr>
</tbody>
</table>
<?php if ($sys['network']) { ?>
<table class="hbmon-sys-table hbmon-sys-net">
<thead>
<tr><th>Interface</th><th>Received</th><th>Transmitted</th></tr>
</thead>
<tbody>
<?php foreach ($sys['network'] as $iface) { ?>
<tr>
<td><?php echo hbmon_sys_h($iface['name']); ?></td>
<td><?php echo hbmon_sys_h($iface['rx_human']); ?></td>
<td><?php echo hbmon_sys_h($iface['tx_human']); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
</fieldset>
</main>
<br>
<?php include_once 'elements/footer.php'; ?>
</div>
</body>
</html>