120 lines
4.8 KiB
PHP
120 lines
4.8 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>
|
|
<a class="cta-button" href="/modules/setup/kea">Setup</a>
|
|
</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>
|