From 92fc2f47e8eeb742557f699848ad5bc95407fe08 Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Fri, 4 May 2012 11:00:22 +0200 Subject: [PATCH] Added support to filter by date string (Sample: timereported:=2012-01-01) A new Datetype hasbeen added to support filtering by date --- src/classes/logstream.class.php | 21 +++++++++++++++++++-- src/classes/logstreamdb.class.php | 7 +++++++ src/classes/logstreampdo.class.php | 7 +++++++ src/include/constants_filters.php | 2 +- src/include/functions_config.php | 6 ++++-- src/include/functions_filters.php | 6 ++++++ 6 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/classes/logstream.class.php b/src/classes/logstream.class.php index 3fd05c3..180ab1f 100644 --- a/src/classes/logstream.class.php +++ b/src/classes/logstream.class.php @@ -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) ) { diff --git a/src/classes/logstreamdb.class.php b/src/classes/logstreamdb.class.php index 76d457c..965718f 100644 --- a/src/classes/logstreamdb.class.php +++ b/src/classes/logstreamdb.class.php @@ -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: diff --git a/src/classes/logstreampdo.class.php b/src/classes/logstreampdo.class.php index ae59436..e3380b0 100644 --- a/src/classes/logstreampdo.class.php +++ b/src/classes/logstreampdo.class.php @@ -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: diff --git a/src/include/constants_filters.php b/src/include/constants_filters.php index ab6544d..4bb1e3b 100644 --- a/src/include/constants_filters.php +++ b/src/include/constants_filters.php @@ -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); diff --git a/src/include/functions_config.php b/src/include/functions_config.php index 7f9dfec..8af0dfd 100644 --- a/src/include/functions_config.php +++ b/src/include/functions_config.php @@ -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 diff --git a/src/include/functions_filters.php b/src/include/functions_filters.php index 9cf3adb..748186a 100644 --- a/src/include/functions_filters.php +++ b/src/include/functions_filters.php @@ -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);