From dbbc1a770b683a2387a57b23367468c26039b3f5 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 16 Dec 2016 17:32:44 +0100 Subject: [PATCH 1/5] Add privacy mode --- data.php | 24 ++++++++++++++++++++---- js/pihole/index.js | 7 ++++++- php/savesettings.php | 9 +++++++++ settings.php | 13 +++++++++++++ 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/data.php b/data.php index 333907c02..064c5453f 100644 --- a/data.php +++ b/data.php @@ -5,6 +5,13 @@ $log = new \SplFileObject('/var/log/pihole.log'); $gravity = new \SplFileObject('/etc/pihole/list.preEventHorizon'); + if(isset($setupVars["API_PRIVACY_MODE"])) + { + $privacyMode = $setupVars["API_PRIVACY_MODE"]; + } else { + $privacyMode = false; + } + /******* Public Members ********/ function getSummaryData() { $domains_being_blocked = gravityCount(); @@ -52,12 +59,19 @@ function getOverTimeData10mins() { } function getTopItems() { - global $log; + global $log,$privacyMode; $dns_queries = getDnsQueries($log); $ads_blocked = getBlockedQueries($log); $topAds = topItems($ads_blocked); - $topQueries = topItems($dns_queries, $topAds); + if(!$privacyMode) + { + $topQueries = topItems($dns_queries, $topAds); + } + else + { + $topQueries = []; + } return Array( 'top_queries' => $topQueries, @@ -182,7 +196,7 @@ function setShowBlockedPermitted() } function getAllQueries($orderBy) { - global $log,$gravity,$showBlocked,$showPermitted; + global $log,$gravity,$showBlocked,$showPermitted,$privacyMode; $allQueries = array("data" => array()); $dns_queries = getDnsQueriesAll($log); $gravity_domains = getGravityDomains($gravity); @@ -198,7 +212,9 @@ function getAllQueries($orderBy) { if (substr($tmp, 0, 5) == "query") { $status = isset($gravity_domains[$domain]) ? "Pi-holed" : "OK"; - if(($status === "Pi-holed" && $showBlocked) || ($status === "OK" && $showPermitted)) + // Display blocked queries if $showBlocked is set + // Display permitted queries if $showPermitted is set and $privacyMode is disabled + if(($status === "Pi-holed" && $showBlocked) || ($status === "OK" && $showPermitted && !$privacyMode)) { $type = substr($exploded[count($exploded)-4], 6, -1); $client = $exploded[count($exploded)-1]; diff --git a/js/pihole/index.js b/js/pihole/index.js index 5d7dba0e9..b010e0707 100644 --- a/js/pihole/index.js +++ b/js/pihole/index.js @@ -180,7 +180,6 @@ function updateTopLists() { var domaintable = $("#domain-frequency").find("tbody:last"); var adtable = $("#ad-frequency").find("tbody:last"); var url, domain, percentage; - for (domain in data.top_queries) { if ({}.hasOwnProperty.call(data.top_queries,domain)){ // Sanitize domain @@ -198,8 +197,14 @@ function updateTopLists() { " " + data.top_queries[domain] + "
"); } + } + // Remove table if there are no results (e.g. privacy mode enabled) + if(jQuery.isEmptyObject(data.top_queries)) + { + $("#domain-frequency").parent().remove(); } + for (domain in data.top_ads) { if ({}.hasOwnProperty.call(data.top_ads,domain)){ // Sanitize domain diff --git a/php/savesettings.php b/php/savesettings.php index 27fa763ca..433c7f0f4 100644 --- a/php/savesettings.php +++ b/php/savesettings.php @@ -209,6 +209,15 @@ function validDomain($domain_name) $success .= "No entries will be shown in Query Log"; } + if(isset($_POST["privacyMode"])) + { + exec("sudo pihole -a privacymode true"); + } + else + { + exec("sudo pihole -a privacymode false"); + } + break; case "webUI": diff --git a/settings.php b/settings.php index ed2e7b0bf..2505e495f 100644 --- a/settings.php +++ b/settings.php @@ -379,6 +379,15 @@ } else { $queryLog = "all"; } + + // Privacy Mode + if(isset($setupVars["API_PRIVACY_MODE"])) + { + $privacyMode = $setupVars["API_PRIVACY_MODE"]; + } else { + $privacyMode = false; + } + ?>
@@ -405,6 +414,10 @@
+

Privacy mode

+
+
+