Avançar para o conteúdo
Home » Faz um buraco: Adiciona entradas à lista branca sem acesso de administrador

Faz um buraco: Adiciona entradas à lista branca sem acesso de administrador

Advertisements

Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.


O Pi-hole é um bloqueador de anúncios para toda a rede que actua como um sinkhole DNS para bloquear anúncios e rastreio em todos os dispositivos de uma rede. O Pi-hole funciona ao nível do DNS e pode ser instalado num pequeno computador, como o Raspberry Pi ou outro servidor Linux.

O problema: falsos positivos com outros membros da família

Se usares as listas de bloqueio oficiais, devem existir apenas alguns falsos positivos. No entanto, se usares mais listas de bloqueio para a Pihole, pode acontecer rapidamente que alguns sites não funcionem corretamente ou não estejam acessíveis. Como administrador do Pihole, só tens de colocar o domínio na lista branca, as outras pessoas do agregado familiar que utilizam o Pihole têm de esperar que o administrador o faça por elas. Felizmente, há uma solução para isso:

Pihole Simple Whitelist

Imagem: Github.com/zigzag1001

Instala o Pihole Simple Whitelist

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

Determina e copia o valor hash da tua palavra-passe do Pihole Webui:

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

Define $auth na linha 16 como o hash da palavra-passe.

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.";
        }
    }
}
?>

Guardar: CTRL + O e Fechar: CTRL + X

Agora podes aceder a http://pi.hole/whitelist/ no teu browser.

Pihole: Simple Whitelist é um projeto de zigzag1001 no Github.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Mastodon