<?php 
 
function logFilter($objFile, $tag, $cut){ 
    if (!preg_match('/^[a-f0-9]{10}$/D', $tag)) throw new Exception('Invalid search tag'); 
     
    $i = 0; 
    $results = array(); 
    $line = $objFile->getPreviousLine(); 
    while($line !== FALSE && ($i++ < $cut)){ 
        if(strstr($line, '[' . $tag . ']')){ 
            $results[] = $line; 
        } 
        $line = $objFile->getPreviousLine(); 
    } 
    $results[] = 'Searched ' . $i . ' lines backward. ' . count($results) . ' lines found.'; 
    $results = array_reverse($results); 
    return $results; 
} 
 
 
$config = SimpleSAML_Configuration::getInstance(); 
$session = SimpleSAML_Session::getSessionFromRequest(); 
 
SimpleSAML_Utilities::requireAdmin(); 
 
$logpeekconfig = SimpleSAML_Configuration::getConfig('module_logpeek.php'); 
$logfile = $logpeekconfig->getValue('logfile', '/var/simplesamlphp.log'); 
$blockSize = $logpeekconfig->getValue('blocksz', 8192); 
 
$myLog = new sspmod_logpeek_File_reverseRead($logfile, $blockSize); 
 
 
$results = NULL; 
if (isset($_REQUEST['tag'])) { 
    $results = logFilter($myLog, $_REQUEST['tag'], $logpeekconfig->getValue('lines', 500)); 
} 
 
 
$fileModYear = date("Y", $myLog->getFileMtime()); 
$firstLine = $myLog->getFirstLine(); 
$firstTimeEpoch = sspmod_logpeek_Syslog_parseLine::getUnixTime($firstLine, $fileModYear); 
$lastLine = $myLog->getLastLine(); 
$lastTimeEpoch = sspmod_logpeek_Syslog_parseLine::getUnixTime($lastLine, $fileModYear); 
$fileSize = $myLog->getFileSize(); 
 
$t = new SimpleSAML_XHTML_Template($config, 'logpeek:logpeek.php'); 
$t->data['results'] = $results; 
$t->data['trackid'] = $session->getTrackID(); 
$t->data['timestart'] = date(DATE_RFC822, $firstTimeEpoch); 
$t->data['endtime'] = date(DATE_RFC822, $lastTimeEpoch); 
$t->data['filesize'] = $fileSize; 
 
$t->show(); 
?>
 
 |