From 5189853c19435a7e70cf7a9cfe756f5f0c7ae260 Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 19 Sep 2020 22:24:15 +0100 Subject: [PATCH 1/8] Added validate_host() --- includes/functions.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/includes/functions.php b/includes/functions.php index 4d299314..1304d61f 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -452,3 +452,8 @@ function getBridgedState() return $arrHostapdConf['BridgedEnable']; } +// Validates a host or FQDN +function validate_host($host) { + return preg_match('/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i', $host); +} + From b533b7ab985c1dff0bccaca9145006e48408c904 Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 19 Sep 2020 22:24:58 +0100 Subject: [PATCH 2/8] Update cp dnsmasq_custom --- installers/raspap.sudoers | 1 + 1 file changed, 1 insertion(+) diff --git a/installers/raspap.sudoers b/installers/raspap.sudoers index 4d40eaa9..ae42393c 100644 --- a/installers/raspap.sudoers +++ b/installers/raspap.sudoers @@ -36,5 +36,6 @@ www-data ALL=(ALL) NOPASSWD:/etc/raspap/openvpn/configauth.sh www-data ALL=(ALL) NOPASSWD:/bin/chmod o+r /tmp/hostapd.log www-data ALL=(ALL) NOPASSWD:/bin/chmod o+r /tmp/dnsmasq.log www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dnsmasqdata /etc/dnsmasq.d/090_adblock.conf +www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/dnsmasq_custom /etc/raspap/adblock/custom.txt www-data ALL=(ALL) NOPASSWD:/etc/raspap/adblock/update_blocklist.sh From 3644109cec313cf6344bb5221da122497e156680 Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 19 Sep 2020 22:26:52 +0100 Subject: [PATCH 3/8] Validate/handle custom hosts input --- includes/adblock.php | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/includes/adblock.php b/includes/adblock.php index 64bfdc84..be61549e 100755 --- a/includes/adblock.php +++ b/includes/adblock.php @@ -11,6 +11,7 @@ function DisplayAdBlockConfig() { $status = new StatusMessages(); $enabled = false; + $custom_enabled = false; if (!RASPI_MONITOR_ENABLED) { if (isset($_POST['saveadblocksettings'])) { @@ -20,13 +21,38 @@ function DisplayAdBlockConfig() } elseif ($_POST['adblock-enable'] == "0") { $config = null; } - file_put_contents("/tmp/dnsmasqdata", $config); - system('sudo cp /tmp/dnsmasqdata '.RASPI_ADBLOCK_CONFIG, $return); + if ($_POST['adblock-custom-enable'] == "1") { + // validate custom hosts input + $lines = preg_split('/\r\n|\n|\r/', trim($_POST['adblock-custom-hosts'])); + foreach ($lines as $line) { + $ip_host = preg_split('/\s+/', $line); + $index++; + //echo $host[1] . '
'; + if (!filter_var($ip_host[0], FILTER_VALIDATE_IP)) { + $errors .= _('Invalid custom IP address found on line '.$index); + break; + } + if (!validate_host($ip_host[1])) { + $errors .= _('Invalid custom host found on line '.$index); + break; + } + } + file_put_contents("/tmp/dnsmasq_custom", $_POST['adblock-custom-hosts']); + system("sudo cp /tmp/dnsmasq_custom " .RASPI_ADBLOCK_LISTPATH .'custom.txt', $return); + $config.= 'addn-hosts=' .RASPI_ADBLOCK_LISTPATH .'custom.txt'.PHP_EOL; + $custom_enabled = true; + } - if ($return == 0) { - $status->addMessage('Adblock configuration updated successfully', 'success'); + if (empty($errors)) { + file_put_contents("/tmp/dnsmasqdata", $config); + system('sudo cp /tmp/dnsmasqdata '.RASPI_ADBLOCK_CONFIG, $return); + if ($return == 0) { + $status->addMessage('Adblock configuration updated successfully', 'success'); + } else { + $status->addMessage('Adblock configuration failed to be updated.', 'danger'); + } } else { - $status->addMessage('Adblock configuration failed to be updated.', 'danger'); + $status->addMessage($errors, 'danger'); } } elseif (isset($_POST['restartadblock']) || isset($_POST['startadblock'])) { exec('sudo /bin/systemctl restart dnsmasq.service', $dnsmasq, $return); @@ -53,7 +79,8 @@ function DisplayAdBlockConfig() "status", "serviceStatus", "dnsmasq_state", - "enabled" + "enabled", + "custom_enabled" ) ); } From 656e5d83ad6d6e0287f8cef18485869985b0b8fd Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 19 Sep 2020 22:27:32 +0100 Subject: [PATCH 4/8] Template updates for custom blocklists --- templates/adblock.php | 4 +++- templates/adblock/custom.php | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 templates/adblock/custom.php diff --git a/templates/adblock.php b/templates/adblock.php index 34ad4ebe..103620e2 100755 --- a/templates/adblock.php +++ b/templates/adblock.php @@ -31,7 +31,8 @@ @@ -39,6 +40,7 @@
+
diff --git a/templates/adblock/custom.php b/templates/adblock/custom.php new file mode 100644 index 00000000..8701cdb0 --- /dev/null +++ b/templates/adblock/custom.php @@ -0,0 +1,33 @@ + +
+

+
+
+
+ +
+ aria-describedby="adblock-description"> + +
+
+

+ + IPv4 example: 0.0.0.0 badhost.com") ?> +

+ addn-hosts directive to the dnsmasq configuration.") ?> +
+

+
+
+
+
+ '.htmlspecialchars($adblock_custom, ENT_QUOTES).''; + ?> +
+
+
From 5a62436d84cc2c3b2a472a35cad979f44b66a660 Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 19 Sep 2020 22:50:33 +0100 Subject: [PATCH 5/8] Update en_US messages, compile .mo --- locale/en_US/LC_MESSAGES/messages.mo | Bin 15763 -> 16673 bytes locale/en_US/LC_MESSAGES/messages.po | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/locale/en_US/LC_MESSAGES/messages.mo b/locale/en_US/LC_MESSAGES/messages.mo index f7562e1c0610dd071eafea1040ac084f7ea5d220..54e887d87808db6009bd27ec62bd42a2fef903c1 100644 GIT binary patch literal 16673 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 pq@&+SN57M%-$t`IPv4 example: 0.0.0.0 badhost.com" +msgstr "IPv4 example: 0.0.0.0 badhost.com" + +msgid "This option adds an addn-hosts directive to the dnsmasq configuration." +msgstr "This option adds an addn-hosts directive to the dnsmasq configuration." + +msgid "Custom blocklist not defined" +msgstr "Custom blocklist not defined" + +msgid "Invalid custom IP address found on line " +msgstr "Invalid custom IP address found on line " + +msgid "Invalid custom host found on line " +msgstr "Invalid custom host found on line " + From 9b02fc5b2770bfdc6762ff89e3be34dc1eb2e9ca Mon Sep 17 00:00:00 2001 From: billz Date: Sun, 20 Sep 2020 07:38:21 +0100 Subject: [PATCH 6/8] Remove debug output --- includes/adblock.php | 1 - 1 file changed, 1 deletion(-) diff --git a/includes/adblock.php b/includes/adblock.php index be61549e..ead21f0f 100755 --- a/includes/adblock.php +++ b/includes/adblock.php @@ -27,7 +27,6 @@ function DisplayAdBlockConfig() foreach ($lines as $line) { $ip_host = preg_split('/\s+/', $line); $index++; - //echo $host[1] . '
'; if (!filter_var($ip_host[0], FILTER_VALIDATE_IP)) { $errors .= _('Invalid custom IP address found on line '.$index); break; From 3c5737224eeb4fa409b0eac9845993283ddffdef Mon Sep 17 00:00:00 2001 From: billz Date: Sun, 20 Sep 2020 09:42:13 +0100 Subject: [PATCH 7/8] Check for empty strings --- includes/adblock.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/includes/adblock.php b/includes/adblock.php index ead21f0f..74f94e51 100755 --- a/includes/adblock.php +++ b/includes/adblock.php @@ -24,19 +24,21 @@ function DisplayAdBlockConfig() if ($_POST['adblock-custom-enable'] == "1") { // validate custom hosts input $lines = preg_split('/\r\n|\n|\r/', trim($_POST['adblock-custom-hosts'])); - foreach ($lines as $line) { - $ip_host = preg_split('/\s+/', $line); - $index++; - if (!filter_var($ip_host[0], FILTER_VALIDATE_IP)) { - $errors .= _('Invalid custom IP address found on line '.$index); - break; - } - if (!validate_host($ip_host[1])) { - $errors .= _('Invalid custom host found on line '.$index); - break; + if (!in_array("", $lines, true)) { + foreach ($lines as $line) { + $ip_host = preg_split('/\s+/', $line); + $index++; + if (!filter_var($ip_host[0], FILTER_VALIDATE_IP)) { + $errors .= _('Invalid custom IP address found on line '.$index); + break; + } + if (!validate_host($ip_host[1])) { + $errors .= _('Invalid custom host found on line '.$index); + break; + } } } - file_put_contents("/tmp/dnsmasq_custom", $_POST['adblock-custom-hosts']); + file_put_contents("/tmp/dnsmasq_custom", $_POST['adblock-custom-hosts'].PHP_EOL); system("sudo cp /tmp/dnsmasq_custom " .RASPI_ADBLOCK_LISTPATH .'custom.txt', $return); $config.= 'addn-hosts=' .RASPI_ADBLOCK_LISTPATH .'custom.txt'.PHP_EOL; $custom_enabled = true; From d437eac1dfd5e566dfb234fc155d4df58f2dfe2d Mon Sep 17 00:00:00 2001 From: DArcy Rush Date: Sun, 20 Sep 2020 11:11:55 +0200 Subject: [PATCH 8/8] Update README Adblock wiki link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e6f65833..f2a8fe5a 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Please [read this](https://github.com/billz/raspap-webgui/wiki/Reporting-issues) ## Ad Blocking This feature uses DNS blacklisting to block requests for ads, trackers and other undesirable hosts. To enable ad blocking, simply respond to the prompt during the installation. As a beta release, we encourage testing and feedback from users of RaspAP. -Details are [provided here](https://github.com/billz/raspap-webgui/wiki/Ad-blocking-(Beta)). +Details are [provided here](https://github.com/billz/raspap-webgui/wiki/Ad-blocking). ## Bridged AP By default RaspAP configures a routed AP for your clients to connect to. A bridged AP configuration is also possible. Slide the **Bridged AP mode** toggle under the **Advanced** tab of **Configure hotspot**, then save and restart the hotspot.