Added support to filter by date string (Sample: timereported:=2012-01-01)

A new Datetype hasbeen added to support filtering by date
This commit is contained in:
Andre Lorbach 2012-05-04 11:00:22 +02:00
parent 538df05501
commit 92fc2f47e8
6 changed files with 44 additions and 5 deletions

View File

@ -436,7 +436,7 @@ abstract class LogStream {
if (
array_key_exists($propertyname, $this->_filters) &&
isset($propertyvalue) /* &&
!(is_string($propertyvalue) && strlen($propertyvalue) <= 0) /* Negative because it only matters if the propvalure is a string*/
!(is_string($propertyvalue) && strlen($propertyvalue) <= 0)*/ /* Negative because it only matters if the propvalure is a string*/
)
{
@ -603,7 +603,16 @@ abstract class LogStream {
if ( $nLogTimeStamp > $nToTimeStamp )
$bEval = false;
}
else if ( $myfilter[FILTER_DATEMODE] == DATEMODE_RANGE_DATE )
{
// Get filter timestamp!
// echo $myfilter[FILTER_VALUE];
$nDateTimeStamp = GetTimeStampFromTimeString($myfilter[FILTER_VALUE]);
// If not on logfile day, the Event is outside of our scope!
if ( $nLogTimeStamp < $nDateTimeStamp || $nLogTimeStamp > ($nDateTimeStamp+86400) )
$bEval = false;
}
break;
default:
// TODO!
@ -944,6 +953,11 @@ abstract class LogStream {
$tmpFilterType = FILTER_TYPE_DATE;
$tmpTimeMode = DATEMODE_LASTX;
break;
case "timereported":
$tmpKeyName = SYSLOG_DATE;
$tmpFilterType = FILTER_TYPE_DATE;
$tmpTimeMode = DATEMODE_RANGE_DATE;
break;
case "processid":
$tmpKeyName = SYSLOG_PROCESSID;
$tmpFilterType = FILTER_TYPE_STRING;
@ -1090,7 +1104,10 @@ abstract class LogStream {
if ( isset($tmpTimeMode) )
{
$this->_filters[$tmpKeyName][$iNum][FILTER_DATEMODE] = $tmpTimeMode;
$this->_filters[$tmpKeyName][$iNum][FILTER_MODE] = $this->SetFilterIncludeMode($tmpArray[FILTER_TMP_VALUE]); // remove FilterMode characters from value
$this->_filters[$tmpKeyName][$iNum][FILTER_VALUE] = $tmpArray[FILTER_TMP_VALUE];
//echo $this->_filters[$tmpKeyName][$iNum][FILTER_VALUE];
//exit;
}
else if ( isset($tmpValues) )
{

View File

@ -1517,6 +1517,13 @@ class LogStreamDB extends LogStream {
$myeventtime = GetEventTime($myfilter[FILTER_VALUE]);
$tmpfilters[$propertyname][FILTER_VALUE] .= $dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " < '" . date("Y-m-d H:i:s", $myeventtime[EVTIME_TIMESTAMP]) . "'";
}
else if ( $myfilter[FILTER_DATEMODE] == DATEMODE_RANGE_DATE )
{
// Obtain Event struct for the time!
$myeventtime = GetEventTime($myfilter[FILTER_VALUE]);
$tmpfilters[$propertyname][FILTER_VALUE] .= $dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " > '" . date("Y-m-d H:i:s", $myeventtime[EVTIME_TIMESTAMP]) . "' AND " .
$dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " < '" . date("Y-m-d H:i:s", ($myeventtime[EVTIME_TIMESTAMP]+86400) ) . "'";
}
break;
default:

View File

@ -1866,6 +1866,13 @@ class LogStreamPDO extends LogStream {
$myeventtime = GetEventTime($myfilter[FILTER_VALUE]);
$tmpfilters[$propertyname][FILTER_VALUE] .= $dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " < '" . date("Y-m-d H:i:s", $myeventtime[EVTIME_TIMESTAMP]) . "'";
}
else if ( $myfilter[FILTER_DATEMODE] == DATEMODE_RANGE_DATE )
{
// Obtain Event struct for the time!
$myeventtime = GetEventTime($myfilter[FILTER_VALUE]);
$tmpfilters[$propertyname][FILTER_VALUE] .= $dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " > '" . date("Y-m-d H:i:s", $myeventtime[EVTIME_TIMESTAMP]) . "' AND " .
$dbmapping[$szTableType]['DBMAPPINGS'][$propertyname] . " < '" . date("Y-m-d H:i:s", ($myeventtime[EVTIME_TIMESTAMP]+86400) ) . "'";
}
break;
default:

View File

@ -47,9 +47,9 @@ if ( !defined('IN_PHPLOGCON') )
define('DATEMODE_ALL', 1);
define('DATEMODE_RANGE', 2);
define('DATEMODE_LASTX', 3);
define('DATEMODE_RANGE_FROM', 4);
define('DATEMODE_RANGE_TO', 5);
define('DATEMODE_RANGE_DATE', 6);
define('DATE_LASTX_HOUR', 1);
define('DATE_LASTX_12HOURS', 2);

View File

@ -194,8 +194,10 @@ function InitSource(&$mysource)
// UNKNOWN, remove config entry!
unset($content['Sources'][$iSourceID]);
// Output CRITICAL WARNING
DieWithFriendlyErrorMsg( GetAndReplaceLangStr($content['LN_GEN_CRITERROR_UNKNOWNTYPE'], $mysource['SourceType']) );
// Output Debug Warning only!
OutputDebugMessage( GetAndReplaceLangStr($content['LN_GEN_CRITERROR_UNKNOWNTYPE'], $mysource['SourceType']), DEBUG_ERROR);
// DieWithFriendlyErrorMsg( GetAndReplaceLangStr($content['LN_GEN_CRITERROR_UNKNOWNTYPE'], $mysource['SourceType']) );
return ERROR;
}
// Set generic configuration options

View File

@ -329,6 +329,12 @@ function GetTimeStampFromTimeString($szTimeString)
// return new timestamp
return mktime($out[4], $out[5], $out[6], $out[2], $out[3], $out[1]);
}
//Sample: 2008-04-01
else if ( preg_match("/([0-9]{4,4})-([0-9]{1,2})-([0-9]{1,2})$/", $szTimeString, $out) )
{
// return new timestamp
return mktime(0,0,0, $out[2], $out[3], $out[1]);
}
else
{
OutputDebugMessage("Unparseable Time in GetTimeStampFromTimeString - '" . $szTimeString . "'", DEBUG_WARN);