Zum Inhalt springen
Home » Pi-hole: Whitelist Einträge hinzufügen ohne Admin Zugang

Pi-hole: Whitelist Einträge hinzufügen ohne Admin Zugang

Advertisements

Einige der in diesem Beitrag geteilten Links sind Affiliate-Links. Wenn du auf den Link klickst und etwas kaufst, erhalten wir eine Affiliate-Provision ohne zusätzliche Kosten für dich.


Pi-hole ist ein netzwerkweiter Werbeblocker, der als DNS-Sinkhole fungiert, um Werbung und Tracking auf allen Geräten in einem Netzwerk zu blockieren. Pi-hole arbeitet auf DNS-Ebene und kann auf einem kleinen Computer wie dem Raspberry Pi oder einem anderen Linux-Server installiert werden.

Das Problem: False-Positives bei anderen Familienmitgliedern

Wenn man die Offiziellen Blocklisten nutzt dürften nur wenige False-Positives vorkommen. Nutzt man aber mehr Blocklisten für Pihole, kann es schnell vorkommen das manche Webseiten nicht richtig funktionieren oder überhaupt nicht erreichbar sind. Als Pihole Admin Whitelistet man die Domain mal eben kurz, die anderen Personen im Haushalt die Pihole nutzten müssen warten bis der Admin dies für Sie erledigt hat. Zum Glück gibt es dafür eine Lösung:

Pihole Simple Whitelist

Bild: Github.com/zigzag1001

Pihole Simple Whitelist installieren

sudo su
cd /var/www/html/
mkdir whitelist
cd whitelist
curl -O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/whitelist-add.php \
     -O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/style.css \
     -O https://raw.githubusercontent.com/zigzag1001/pihole-Simple-Whitelist/main/index.html

Ermittel und kopiere den Hashwert deines Pihole-Webui-Passworts:

cat /etc/pihole/setupVars.conf | grep WEBPASSWORD

Setzte $auth in Zeile 16 auf den Passworthash.

nano whitelist-add.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['action']) && $_POST['action'] === 'list') {
        // List whitelisted domains
        $command = "sudo pihole -w -l | awk '{print $1, $2}'";
        
        $output = [];
        exec("$command 2>&1", $output);
        
        echo "<pre>" . implode("\n", $output) . "</pre>";
    } elseif (isset($_POST['action']) && $_POST['action'] === 'disable') {
        // https://www.crosstalksolutions.com/the-worlds-greatest-pi-hole-and-unbound-tutorial-2023/
        
        $XMin = 5; // Minutes to disable blocking
        $XSec = $XMin * 60;
        $auth = "YOUR_PASSWORD_HASH"; // `cat /etc/pihole/setupVars.conf | grep WEBPASSWORD`
        
        $command = "curl -s \"http://localhost/admin/api.php?disable={$XSec}&auth={$auth}\"";
        
        $output = [];
        $returnVar = 0;
        exec("$command 2>&1", $output, $returnVar);
        
        if ($returnVar === 0) {
            echo "Disabled blocking for $XMin minutes. ". implode(' ', $output);
            $t=time();
            $d=date("M-d H:i e",$t);
            error_log("Disabled by {$_SERVER['REMOTE_ADDR']} - {$d}\n", 3, "/var/log/pihole_disabled.log");
        } else {
            echo "Failed. Blocking not disabled. Output: " . implode(' ', $output);
        }
    } else {
        // Whitelist a domain
        $t=time();
        $d=date("M-d H:i e",$t);
        $domain = escapeshellarg($_POST['domain']);
        $regex_domain = "/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,6}/";
        $is_match = preg_match($regex_domain, $domain);
        if ($is_match == 1) {
            $command = "sudo pihole -w $domain --comment \"{$_SERVER['REMOTE_ADDR']} - {$d}\"";
            
            $output = [];
            $returnVar = 0;
            exec("$command 2>&1", $output, $returnVar);
            
            if ($returnVar === 0) {
                echo "Domain $domain has been successfully whitelisted.";
            } else {
                echo "Failed to whitelist domain $domain. Output: " . implode(' ', $output);
            }
        } else {
            echo "Domain input is wrong.";
        }
    }
}
?>

Speichern: STRG + O und Schließen: STRG + X

Jetzt kannst du http://pi.hole/whitelist/ im Browser aufrufen.

Pihole: Simple Whitelist ist ein Projekt von zigzag1001 auf Github.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mastodon