diff --git a/api_FTL.php b/api_FTL.php index d4e1c085..f45efb74 100644 --- a/api_FTL.php +++ b/api_FTL.php @@ -155,14 +155,7 @@ if ((isset($_GET['topClients']) || isset($_GET['getQuerySources'])) && $auth) foreach($return as $line) { $tmp = explode(" ",$line); - if(count($tmp) == 4) - { - $top_clients[$tmp[3]."|".$tmp[2]] = intval($tmp[1]); - } - else - { - $top_clients[$tmp[2]] = intval($tmp[1]); - } + $top_clients[resolveHostname($tmp[2])] = intval($tmp[1]); } $result = array('top_sources' => $top_clients); @@ -184,14 +177,7 @@ if (isset($_GET['getForwardDestinations']) && $auth) foreach($return as $line) { $tmp = explode(" ",$line); - if(count($tmp) == 4) - { - $forward_dest[$tmp[3]."|".$tmp[2]] = floatval($tmp[1]); - } - else - { - $forward_dest[$tmp[2]] = floatval($tmp[1]); - } + $forward_dest[resolveHostname($tmp[2])] = floatval($tmp[1]); } $result = array('forward_destinations' => $forward_dest); @@ -240,6 +226,7 @@ if (isset($_GET['getAllQueries']) && $auth) foreach($return as $line) { $tmp = explode(" ",$line); + $tmp[3] = resolveHostname($tmp[3]); array_push($allQueries,$tmp); } @@ -318,14 +305,7 @@ if (isset($_GET['getClientNames']) && $auth) foreach($return as $line) { $tmp = explode(" ",$line); - if(count($tmp) == 4) - { - $forward_dest[$tmp[3]."|".$tmp[2]] = floatval($tmp[1]); - } - else - { - $forward_dest[$tmp[2]] = floatval($tmp[1]); - } + $forward_dest[resolveHostname($tmp[2])] = floatval($tmp[1]); } $result = array('clients' => $forward_dest); diff --git a/scripts/pi-hole/php/FTL.php b/scripts/pi-hole/php/FTL.php index 0c07ce5d..443164f7 100644 --- a/scripts/pi-hole/php/FTL.php +++ b/scripts/pi-hole/php/FTL.php @@ -138,4 +138,30 @@ function disconnectFTL($quiet=true) echo "OK.\n\n"; } } + +$clients = []; +function resolveHostname($c) +{ + if(array_key_exists($c, $clients)) + { + // Entry already exists + $c = $clients[$c]; + } + else + { + if(filter_var($c, FILTER_VALIDATE_IP)) + { + // Get host name of client and convert to lower case + $c = strtolower(gethostbyaddr($c)); + } + else + { + // This is already a host name + $c = strtolower($c); + } + // Buffer result + $clients[$c] = $c; + } + return $c; +} ?>