Merge pull request #243 from pi-hole/fixTheQueryLog

check if domain is blocked or not by checking it against list.preEven…
This commit is contained in:
Adam Warner
2016-12-14 19:07:30 +00:00
committed by GitHub
2 changed files with 50 additions and 37 deletions
+4
View File
@@ -76,6 +76,10 @@
));
}
if (isset($_GET['getGravityDomains'])) {
$data = array_merge($data, getGravityDomains($gravity));
}
function filterArray(&$a) {
$sanArray = array();
foreach ($a as $k=>$v) {
+46 -37
View File
@@ -3,6 +3,7 @@
$setupVars = parse_ini_file("/etc/pihole/setupVars.conf");
$hosts = file_exists("/etc/hosts") ? file("/etc/hosts") : array();
$log = new \SplFileObject('/var/log/pihole.log');
$gravity = new \SplFileObject('/etc/pihole/list.preEventHorizon');
/******* Public Members ********/
function getSummaryData() {
@@ -139,9 +140,10 @@
}
function getAllQueries($orderBy) {
global $log,$setupVars;
global $log,$setupVars,$gravity;
$allQueries = array("data" => array());
$dns_queries = getDnsQueriesAll($log);
$gravity_domains = getGravityDomains($gravity);
$hostname = trim(file_get_contents("/etc/hostname"), "\x00..\x1F");
if(isset($setupVars["API_QUERY_LOG_SHOW"]))
@@ -185,44 +187,39 @@
$tmp = $exploded[count($exploded)-4];
$status = "";
if (substr($tmp, 0, 5) == "query"){
$type = substr($exploded[count($exploded)-4], 6, -1);
$domain = $exploded[count($exploded)-3];
$client = $exploded[count($exploded)-1];
if (substr($tmp, 0, 5) == "query")
{
$status = isset($gravity_domains[$domain]) ? "Pi-holed" : "OK";
if(($status === "Pi-holed" && $showblocked) || ($status === "OK" && $showpermitted))
{
$type = substr($exploded[count($exploded)-4], 6, -1);
$domain = $exploded[count($exploded)-3];
$client = $exploded[count($exploded)-1];
if($orderBy == "orderByClientDomainTime"){
$allQueries['data'][hasHostName($client)][$domain][$time->format('Y-m-d\TH:i:s')] = $status;
}elseif ($orderBy == "orderByClientTimeDomain"){
$allQueries['data'][hasHostName($client)][$time->format('Y-m-d\TH:i:s')][$domain] = $status;
}elseif ($orderBy == "orderByTimeClientDomain"){
$allQueries['data'][$time->format('Y-m-d\TH:i:s')][hasHostName($client)][$domain] = $status;
}elseif ($orderBy == "orderByTimeDomainClient"){
$allQueries['data'][$time->format('Y-m-d\TH:i:s')][$domain][hasHostName($client)] = $status;
}elseif ($orderBy == "orderByDomainClientTime"){
$allQueries['data'][$domain][hasHostName($client)][$time->format('Y-m-d\TH:i:s')] = $status;
}elseif ($orderBy == "orderByDomainTimeClient"){
$allQueries['data'][$domain][$time->format('Y-m-d\TH:i:s')][hasHostName($client)] = $status;
}else{
array_push($allQueries['data'], array(
$time->format('Y-m-d\TH:i:s'),
$type,
$domain,
hasHostName($client),
$status,
""
));
}
}
}
elseif ((substr($tmp, 0, 9) == "forwarded" || $exploded[count($exploded)-3] == "pi.hole" || $exploded[count($exploded)-3] == $hostname) && $showpermitted){
$status="OK";
}
elseif ((substr($tmp, strlen($tmp) - 12, 12) == "gravity.list" && $exploded[count($exploded)-5] != "read") && $showblocked){
$status="Pi-holed";
}
if ( $status != ""){
if($orderBy == "orderByClientDomainTime"){
$allQueries['data'][hasHostName($client)][$domain][$time->format('Y-m-d\TH:i:s')] = $status;
}elseif ($orderBy == "orderByClientTimeDomain"){
$allQueries['data'][hasHostName($client)][$time->format('Y-m-d\TH:i:s')][$domain] = $status;
}elseif ($orderBy == "orderByTimeClientDomain"){
$allQueries['data'][$time->format('Y-m-d\TH:i:s')][hasHostName($client)][$domain] = $status;
}elseif ($orderBy == "orderByTimeDomainClient"){
$allQueries['data'][$time->format('Y-m-d\TH:i:s')][$domain][hasHostName($client)] = $status;
}elseif ($orderBy == "orderByDomainClientTime"){
$allQueries['data'][$domain][hasHostName($client)][$time->format('Y-m-d\TH:i:s')] = $status;
}elseif ($orderBy == "orderByDomainTimeClient"){
$allQueries['data'][$domain][$time->format('Y-m-d\TH:i:s')][hasHostName($client)] = $status;
}else{
array_push($allQueries['data'], array(
$time->format('Y-m-d\TH:i:s'),
$type,
$domain,
hasHostName($client),
$status,
""
));
}
}
}
return $allQueries;
}
@@ -260,6 +257,18 @@
return $lines;
}
function getGravityDomains($gravity){
$gravity->rewind();
$lines=[];
foreach ($gravity as $line) {
// Strip newline (and possibly carriage return) from end of string
// using rtrim()
$lines[rtrim($line)] = true;
}
return $lines;
}
function getBlockedQueries(\SplFileObject $log) {
$log->rewind();
$lines = [];