get('kea'); $settings = modules()->settings('kea'); $fallback = $module['db_defaults'] ?? []; $metadataFallback = is_array($module['metadata_db_defaults'] ?? null) ? $module['metadata_db_defaults'] : []; $metadataConfig = is_array($settings['metadata_db'] ?? null) ? array_replace($metadataFallback, $settings['metadata_db']) : $metadataFallback; $source = (string)($_GET['source'] ?? $_POST['source'] ?? 'reservation'); $source = $source === 'lease' ? 'lease' : 'reservation'; $id = (int)($_GET['id'] ?? $_POST['id'] ?? 0); $error = null; $notice = null; $host = null; $metadataRepo = null; try { $pdo = modules()->modulePdo('kea', $fallback); if (empty($metadataConfig['driver']) || empty($metadataConfig['dbname'])) { throw new RuntimeException('Nexus DHCP Zusatzdatenbank ist nicht konfiguriert.'); } $metadataRepo = new KeaHostMetadataRepository(Database::createFromArray($metadataConfig)); $metadataRepo->ensureSchema(); $repo = new KeaHostRepository($pdo, $metadataRepo); $host = $repo->findDisplayByKey($source, $id); if (!$host) { throw new RuntimeException('KEA Eintrag wurde nicht gefunden.'); } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $metadata = [ 'real_name' => $_POST['real_name'] ?? '', 'device_name' => $_POST['device_name'] ?? '', 'owner' => $_POST['owner'] ?? '', 'location' => $_POST['location'] ?? '', 'device_type' => $_POST['device_type'] ?? '', 'notes' => $_POST['notes'] ?? '', 'tags' => [], ]; $metadataRepo->saveForHost( $id, (string)($host['dhcp_identifier'] ?? ''), (string)($host['ipv4_address'] ?? ''), $metadata ); $notice = 'Zusatzdaten gespeichert.'; $host = $repo->findDisplayByKey($source, $id) ?: $host; } } catch (Throwable $e) { $error = $e->getMessage(); } $metadata = is_array($host['metadata'] ?? null) ? $host['metadata'] : []; ?>

KEA Eintrag bearbeiten

Zusatzdaten werden separat von der KEA-Datenbank gespeichert.

Zurueck

IP · MAC

Abbrechen