diff --git a/scripts/pi-hole/php/queryads.php b/scripts/pi-hole/php/queryads.php index 457e235c..62196763 100644 --- a/scripts/pi-hole/php/queryads.php +++ b/scripts/pi-hole/php/queryads.php @@ -9,52 +9,31 @@ ob_end_flush(); ini_set("output_buffering", "0"); ob_implicit_flush(true); -header('Content-Type: text/event-stream'); -header('Cache-Control: no-cache'); +header("Content-Type: text/event-stream"); +header("Cache-Control: no-cache"); +ini_set("pcre.recursion_limit", 1500); -function echoEvent($datatext) { - if(!isset($_GET["IE"])) - echo "data: ".implode("\ndata: ", explode("\n", $datatext))."\n\n"; - else - echo $datatext; +function validate_domain($domain) { // Cr: http://stackoverflow.com/a/4694816 + return (preg_match("/^([a-z\d]((-|_)*[a-z\d])*)(\.([a-z\d]((-|_)*[a-z\d])*))*$/i", $domain) // Valid chars check + && preg_match("/^.{1,253}$/", $domain) // Overall length check + && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain)); // Length of each label } -// Credit: http://stackoverflow.com/a/4694816/2087442 -function is_valid_domain_name($domain_name) -{ - return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check - && preg_match("/^.{1,253}$/", $domain_name) //overall length check - && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); //length of each label -} - -// Test if domain is set -if(isset($_GET["domain"])) -{ - // Is this a valid domain? - $url = $_GET["domain"]; - if(!is_valid_domain_name($url)) - { - echoEvent("Invalid domain!"); - die(); +// Validate domain, if set +if(isset($_GET["domain"])) { + if(validate_domain($_GET["domain"])) { + $domain = $_GET["domain"]; + } else { + die("::: Invalid domain"); } -} -else -{ - echoEvent("No domain provided"); - die(); +} else { + die("::: Domain query not specified"); } -if(isset($_GET["exact"])) -{ - $exact = "-exact"; -} -else -{ - $exact = ""; -} +$exact = isset($_GET["exact"]) ? "-exact" : ""; -$proc = popen("sudo pihole -q ".$url." ".$exact, 'r'); +$proc = popen("sudo pihole -q ".escapeshellarg($domain)." $exact", "r"); while (!feof($proc)) { - echoEvent(fread($proc, 4096)); + echo fread($proc, 4096); } ?>