'.$txt.'';
} elseif (strpos($line, 'query[A') || strpos($line, 'query[DHCP')) {
$txt = ''.$txt.'';
} else {
$txt = ''.$txt.'';
}
return $txt;
}
// Not using SplFileObject here, since direct
// usage of f-streams will be much faster for
// files as large as the pihole.log
if (isset($_GET['FTL'])) {
$file = fopen('/var/log/pihole/FTL.log', 'r');
} else {
$file = fopen('/var/log/pihole/pihole.log', 'r');
}
if (!$file) {
exit(json_encode(array('offset' => 0, 'lines' => array("Failed to open log file. Check permissions!\n"))));
}
if (isset($_GET['offset'])) {
$offset = intval($_GET['offset']);
if ($offset > 0) {
// Seeks on the file pointer where we want to continue reading is known
fseek($file, $offset);
$lines = array();
while (!feof($file)) {
array_push($lines, formatLine(fgets($file)));
}
exit(json_encode(array('offset' => ftell($file), 'lines' => $lines)));
}
}
// Locate the current position of the file read/write pointer
fseek($file, -1, SEEK_END);
// Add one to skip the very last "\n" in the log file
exit(json_encode(array('offset' => ftell($file) + 1)));