Files
nexus/modules/pihole/pages/lists.php
2026-03-09 01:32:39 +01:00

87 lines
3.4 KiB
PHP

<?php
$assets = app()->assets();
$assets->addStyle('/module/pihole/asset?file=pihole.css');
$assets->addScript('/module/pihole/asset?file=pihole.js', 'footer', true);
$instances = module_fn('pihole', 'instances');
$hasConfig = !empty($instances);
?>
<div class="card pihole-page" data-pihole-page="lists">
<div class="pill">Pi-hole</div>
<h1 style="margin-top:.75rem;">Listen &amp; Domains</h1>
<p class="muted">Top-Domains, Listen-Updates und neue Eintraege (Primaer-Instanz).</p>
<?php if (!$hasConfig): ?>
<div class="card" style="margin-top:1rem; border-color:var(--accent);">
<strong>Setup erforderlich</strong>
<div class="muted" style="margin-top:.35rem;">Bitte zuerst die Pi-hole Instanzen im Setup konfigurieren.</div>
<div style="margin-top:.75rem;"><a class="nav-link" href="/modules/setup/pihole">Setup oeffnen</a></div>
</div>
<?php else: ?>
<div class="card" style="margin-top:1rem;">
<div class="pihole-section-header">
<strong>Listen-Updates</strong>
<span class="muted">Gravity / Blocklisten neu laden</span>
</div>
<div class="pihole-actions" data-list-actions>
<button class="cta-button" data-action="gravity" data-instance="primary">Listen aktualisieren (Primaer)</button>
</div>
<div class="pihole-update" data-list-update-status></div>
</div>
<div class="pihole-split" style="margin-top:1.25rem;">
<div class="card">
<div class="pihole-section-header">
<strong>Top geblockte Domains (Aggregiert)</strong>
<span class="muted">Letzte Statistiken</span>
</div>
<div class="pihole-list" data-top-ads></div>
</div>
<div class="card">
<div class="pihole-section-header">
<strong>Top erlaubte Domains (Aggregiert)</strong>
<span class="muted">Letzte Statistiken</span>
</div>
<div class="pihole-list" data-top-queries></div>
</div>
</div>
<div class="card" style="margin-top:1.25rem;">
<div class="pihole-section-header">
<strong>Domainlisten erweitern</strong>
<span class="muted">Eintraege werden auf der Primaer-Instanz gesetzt</span>
</div>
<form class="pihole-form" data-domain-form>
<label>
<span class="muted">Typ</span>
<select name="type">
<option value="block">Blacklist (Blocken)</option>
<option value="allow">Whitelist (Erlauben)</option>
</select>
</label>
<label>
<span class="muted">Domain</span>
<input type="text" name="domain" placeholder="example.com" required>
</label>
<button class="cta-button" type="submit">Hinzufuegen</button>
</form>
<div class="pihole-update" data-domain-status></div>
</div>
<div class="card" style="margin-top:1.25rem;">
<div class="pihole-section-header">
<strong>Adlist-URL hinzufuegen</strong>
<span class="muted">Optional: unterstuetzt nur wenn die API den Endpunkt anbietet.</span>
</div>
<form class="pihole-form" data-adlist-form>
<label>
<span class="muted">Adlist URL</span>
<input type="text" name="url" placeholder="https://example.com/list.txt" required>
</label>
<button class="nav-link" type="submit">Adlist hinzufuegen</button>
</form>
<div class="pihole-update" data-adlist-status></div>
</div>
<?php endif; ?>
</div>