Files
nexus/modules/kea/partials/dashboard.php
Lars Gebhardt-Kusche 04ec9dc227
All checks were successful
Deploy / deploy-staging (push) Successful in 5s
Deploy / deploy-production (push) Has been skipped
kea groups
2026-04-15 02:54:47 +02:00

123 lines
4.9 KiB
PHP

<?php
/**
* @var array $hosts Die Liste der KEA-Hosts.
* @var string|null $error Eine Fehlermeldung, falls vorhanden.
* @var array $warnings Hinweise, falls Zusatzdaten nicht geladen werden konnten.
* @var array $stats Kennzahlen fuer die Uebersicht.
*/
?>
<section class="kea-page">
<div class="section-head">
<div>
<h2 class="section-title">KEA DHCP Hosts</h2>
<p>Reservierungen und aktuelle Leases aus der KEA-Datenbank.</p>
</div>
<div class="setup-actions">
<a class="cta-button" href="/module/kea/groups">Gruppen verwalten</a>
<a class="nav-link" href="/modules/setup/kea">Setup</a>
</div>
</div>
<?php if ($error): ?>
<div class="kea-message kea-message--error" role="alert">
<strong>Fehler</strong>
<p><?= e($error) ?></p>
</div>
<?php endif; ?>
<?php foreach (($warnings ?? []) as $warning): ?>
<div class="kea-message kea-message--warning" role="alert">
<p><?= e((string)$warning) ?></p>
</div>
<?php endforeach; ?>
<div class="stats">
<div class="stat-card">
<span class="stat-label">Einträge</span>
<span class="stat-value"><?= e((string)($stats['total'] ?? 0)) ?></span>
</div>
<div class="stat-card">
<span class="stat-label">Reservierungen</span>
<span class="stat-value"><?= e((string)($stats['reservations'] ?? 0)) ?></span>
</div>
<div class="stat-card">
<span class="stat-label">Leases</span>
<span class="stat-value"><?= e((string)($stats['leases'] ?? 0)) ?></span>
</div>
<div class="stat-card">
<span class="stat-label">Gruppen</span>
<span class="stat-value"><?= e((string)count($stats['groups'] ?? [])) ?></span>
</div>
<div class="stat-card">
<span class="stat-label">Freie Gruppen-IPs</span>
<span class="stat-value"><?= e((string)array_sum($stats['free_ips'] ?? [])) ?></span>
</div>
</div>
<div class="kea-panel">
<div class="kea-panel__head">
<div>
<span class="pill">Inventar</span>
<h3>Registrierte Geräte</h3>
<p class="muted">Zusatzdaten werden in der separaten Nexus-DHCP-Datenbank gespeichert.</p>
</div>
</div>
<div class="kea-table-wrap">
<table class="kea-table">
<thead>
<tr>
<th>Quelle</th>
<th>Hostname</th>
<th>IP Adresse</th>
<th>MAC Adresse</th>
<th>Echter Name</th>
<th>Standort</th>
<th>Gruppe</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
<?php if (empty($hosts)): ?>
<tr>
<td colspan="8" class="kea-empty">
Keine Reservierungen oder aktiven Leases gefunden.
</td>
</tr>
<?php else: ?>
<?php foreach ($hosts as $host): ?>
<tr>
<td>
<span class="pill"><?= ($host['source'] ?? '') === 'lease' ? 'Lease' : 'Reservierung' ?></span>
</td>
<td>
<?= e((string)($host['metadata']['device_name'] ?? $host['metadata']['real_name'] ?? $host['display_name'] ?? $host['hostname'] ?? 'Unbekannt')) ?>
</td>
<td class="mono">
<?= e($host['ipv4_address']) ?>
</td>
<td class="mono">
<?= e($host['dhcp_identifier']) ?>
</td>
<td>
<?= e((string)($host['metadata']['real_name'] ?? '-')) ?>
</td>
<td>
<?= e((string)($host['metadata']['location'] ?? '-')) ?>
</td>
<td>
<?= e((string)($host['metadata']['group_name'] ?? '-')) ?>
</td>
<td>
<a class="nav-link" href="/module/kea/edit?source=<?= e((string)($host['source'] ?? 'reservation')) ?>&id=<?= e((string)($host['host_id'] ?? '0')) ?>">
Bearbeiten
</a>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</section>