pi hole settings

This commit is contained in:
2026-03-09 02:08:40 +01:00
parent b999c2cf15
commit c144d9bcd2
4 changed files with 35 additions and 35 deletions

View File

@@ -4,10 +4,7 @@
"description": "Pi-hole Monitoring, Listen und Steuerung fuer zwei Instanzen.", "description": "Pi-hole Monitoring, Listen und Steuerung fuer zwei Instanzen.",
"menu": [ "menu": [
{ "label": "Dashboard", "href": "/module/pihole" }, { "label": "Dashboard", "href": "/module/pihole" },
{ "label": "Instanzen", "href": "/module/pihole/instances" }, { "label": "Instanzen", "href": "/module/pihole/instances" }
{ "label": "Listen", "href": "/module/pihole/lists" },
{ "label": "Zugriffe", "href": "/module/pihole/queries" },
{ "label": "Setup", "href": "/modules/setup/pihole" }
], ],
"sidebar": { "sidebar": {
"enabled": true, "enabled": true,
@@ -15,26 +12,8 @@
"default": "collapsed", "default": "collapsed",
"items": [ "items": [
{ "label": "Dashboard", "href": "/module/pihole" }, { "label": "Dashboard", "href": "/module/pihole" },
{ "label": "Instanzen", "href": "/module/pihole/instances" }, { "label": "Instanzen", "href": "/module/pihole/instances" }
{ "label": "Listen", "href": "/module/pihole/lists" },
{ "label": "Zugriffe", "href": "/module/pihole/queries" },
{ "label": "Setup", "href": "/modules/setup/pihole" }
] ]
}, },
"setup": { "setup": { "fields": [] }
"fields": [
{ "name": "instances_json", "label": "Instanzen (JSON)", "type": "textarea", "required": false, "help": "Mehrere Instanzen als JSON-Array. Beispiel: [{\"id\":\"pihole-main\",\"name\":\"Pi-hole Main\",\"url\":\"http://pi-hole.local\",\"token\":\"TOKEN\",\"is_primary\":true},{\"id\":\"pihole-backup\",\"name\":\"Pi-hole Backup\",\"url\":\"http://pi-hole-2.local\",\"token\":\"TOKEN2\"}]" },
{ "name": "primary_id", "label": "Primaer-ID (optional)", "type": "text", "required": false, "help": "Wenn gesetzt, wird diese Instanz als Primaer fuer Listen-Updates genutzt." },
{ "name": "primary_name", "label": "Primaer-Name (Legacy)", "type": "text", "required": false, "help": "Anzeige-Name (z.B. Pi-hole Main)" },
{ "name": "primary_url", "label": "Primaer-URL (Legacy)", "type": "text", "required": false, "help": "Basis-URL der Instanz, z.B. http://pi-hole.local" },
{ "name": "primary_token", "label": "Primaer-API Token (Legacy)", "type": "password", "required": false, "help": "Token aus dem Pi-hole Admin (API Token)." },
{ "name": "secondary_name", "label": "Sekundaer-Name (Legacy)", "type": "text", "required": false, "help": "Anzeige-Name (z.B. Pi-hole Backup)" },
{ "name": "secondary_url", "label": "Sekundaer-URL (Legacy)", "type": "text", "required": false, "help": "Basis-URL der zweiten Instanz" },
{ "name": "secondary_token", "label": "Sekundaer-API Token (Legacy)", "type": "password", "required": false },
{ "name": "api_path", "label": "API Pfad", "type": "text", "required": false, "help": "Standard: /admin/api.php" },
{ "name": "api_timeout_sec", "label": "API Timeout (Sek.)", "type": "number", "required": false, "help": "Standard 8" },
{ "name": "verify_tls", "label": "TLS Verifikation aktiv", "type": "checkbox", "required": false, "help": "Deaktivieren nur wenn das Zertifikat unsicher ist." },
{ "name": "lists_primary_only", "label": "Listen nur auf Primaer", "type": "checkbox", "required": false, "help": "Listen-Updates und neue Listen nur auf der Primaer-Instanz ausfuehren." }
]
}
} }

View File

@@ -11,12 +11,33 @@ $hasConfig = !empty($instances);
<h1 style="margin-top:.75rem;">Pi-hole Dashboard</h1> <h1 style="margin-top:.75rem;">Pi-hole Dashboard</h1>
<p class="muted">Status, Blockings, Usage und Steuerung fuer beide Instanzen.</p> <p class="muted">Status, Blockings, Usage und Steuerung fuer beide Instanzen.</p>
<?php if (!$hasConfig): ?> <div class="card" style="margin-top:1rem;">
<div class="card" style="margin-top:1rem; border-color:var(--accent);"> <div class="pihole-section-header">
<strong>Setup erforderlich</strong> <strong>Hosts</strong>
<div class="muted" style="margin-top:.35rem;">Bitte zuerst die Pi-hole Instanzen im Setup konfigurieren.</div> <a class="nav-link" href="/module/pihole/instances">Instanzen verwalten</a>
<div style="margin-top:.75rem;"><a class="nav-link" href="/modules/setup/pihole">Setup oeffnen</a></div>
</div> </div>
<?php if (!$instances): ?>
<div class="muted" style="margin-top:.75rem;">Keine Pi-hole Instanzen vorhanden. Bitte zuerst hinzufuegen.</div>
<div style="margin-top:.75rem;"><a class="cta-button" href="/module/pihole/instances">+ Neue Instanz</a></div>
<?php else: ?>
<div class="pihole-list" style="margin-top:1rem;">
<?php foreach ($instances as $instance): ?>
<div class="pihole-list-row">
<div>
<strong><?= e((string)($instance['name'] ?? $instance['id'] ?? '')) ?></strong>
<div class="muted"><?= e((string)($instance['url'] ?? '')) ?></div>
</div>
<?php if (!empty($instance['is_primary'])): ?>
<span class="pihole-status">Primaer</span>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<?php if (!$hasConfig): ?>
<?php return; ?>
<?php else: ?> <?php else: ?>
<div class="pihole-grid" style="margin-top:1rem;"> <div class="pihole-grid" style="margin-top:1rem;">
<div class="card pihole-stat"> <div class="card pihole-stat">

View File

@@ -13,9 +13,9 @@ $hasConfig = !empty($instances);
<?php if (!$hasConfig): ?> <?php if (!$hasConfig): ?>
<div class="card" style="margin-top:1rem; border-color:var(--accent);"> <div class="card" style="margin-top:1rem; border-color:var(--accent);">
<strong>Setup erforderlich</strong> <strong>Keine Instanzen konfiguriert</strong>
<div class="muted" style="margin-top:.35rem;">Bitte zuerst die Pi-hole Instanzen im Setup konfigurieren.</div> <div class="muted" style="margin-top:.35rem;">Bitte zuerst eine Pi-hole Instanz hinzufuegen.</div>
<div style="margin-top:.75rem;"><a class="nav-link" href="/modules/setup/pihole">Setup oeffnen</a></div> <div style="margin-top:.75rem;"><a class="nav-link" href="/module/pihole/instances">Instanzen verwalten</a></div>
</div> </div>
<?php else: ?> <?php else: ?>
<div class="card" style="margin-top:1rem;"> <div class="card" style="margin-top:1rem;">

View File

@@ -13,9 +13,9 @@ $hasConfig = !empty($instances);
<?php if (!$hasConfig): ?> <?php if (!$hasConfig): ?>
<div class="card" style="margin-top:1rem; border-color:var(--accent);"> <div class="card" style="margin-top:1rem; border-color:var(--accent);">
<strong>Setup erforderlich</strong> <strong>Keine Instanzen konfiguriert</strong>
<div class="muted" style="margin-top:.35rem;">Bitte zuerst die Pi-hole Instanzen im Setup konfigurieren.</div> <div class="muted" style="margin-top:.35rem;">Bitte zuerst eine Pi-hole Instanz hinzufuegen.</div>
<div style="margin-top:.75rem;"><a class="nav-link" href="/modules/setup/pihole">Setup oeffnen</a></div> <div style="margin-top:.75rem;"><a class="nav-link" href="/module/pihole/instances">Instanzen verwalten</a></div>
</div> </div>
<?php else: ?> <?php else: ?>
<div class="pihole-split" style="margin-top:1rem;"> <div class="pihole-split" style="margin-top:1rem;">