Added support for new filtering using REGEXP on supported logstream sources.

Currently MYSQL and PostGRESQL are supported due the native support of REGEXP.
Other logstreams or database engines are not supported yet. To use REGEXP
in searches, prepend the search phrase with the ~ character.
This commit is contained in:
Andre Lorbach 2009-03-23 16:49:51 +01:00
parent 6adead274c
commit 3080373d4a
4 changed files with 64 additions and 0 deletions

View File

@ -1005,6 +1005,15 @@ abstract class LogStream {
$myBits |= FILTER_MODE_SEARCHFULL;
}
// If Filter is a REGEX match!
$pos = strpos($szValue, "~");
if ( $pos !== false && $pos == 0 )
{
//trunscate -
$szValue = substr( $szValue, 1);
$myBits |= FILTER_MODE_SEARCHREGEX;
}
// return result
return $myBits;
}

View File

@ -801,6 +801,18 @@ class LogStreamDB extends LogStream {
}
// ---
}
else if ( $myfilter[FILTER_MODE] & FILTER_MODE_SEARCHREGEX )
{
// --- Check if user wants to include or exclude!
if ( $myfilter[FILTER_MODE] & FILTER_MODE_INCLUDE)
$addnod = "";
else
$addnod = " NOT";
// ---
$szSearchBegin = " REGEXP '";
$szSearchEnd = "' ";
}
else
{
// --- Check if user wants to include or exclude!

View File

@ -800,6 +800,48 @@ class LogStreamPDO extends LogStream {
}
// ---
}
else if ( $myfilter[FILTER_MODE] & FILTER_MODE_SEARCHREGEX )
{
//REGEXP Supported by MYSQL
if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
{
// --- Check if user wants to include or exclude!
if ( $myfilter[FILTER_MODE] & FILTER_MODE_INCLUDE)
$addnod = " ";
else
$addnod = " NOT";
// ---
$szSearchBegin = "REGEXP '";
$szSearchEnd = "' ";
}
//REGEXP Supported by POSTGRESQL
else if ( $this->_logStreamConfigObj->DBType == DB_PGSQL )
{
// --- Check if user wants to include or exclude!
if ( $myfilter[FILTER_MODE] & FILTER_MODE_INCLUDE)
$addnod = " ";
else
$addnod = " !";
// ---
$szSearchBegin = "~* '";
$szSearchEnd = "' ";
}
else //Fallback use LIKE
{
// --- Check if user wants to include or exclude!
if ( $myfilter[FILTER_MODE] & FILTER_MODE_INCLUDE)
$addnod = " ";
else
$addnod = " NOT";
// ---
// Database Layer does not support REGEXP
$szSearchBegin = "LIKE '%";
$szSearchEnd = "%' ";
}
}
else
{
// --- Check if user wants to include or exclude!

View File

@ -67,6 +67,7 @@ define('FILTER_MODE', 'filtermode');
define('FILTER_MODE_INCLUDE', 1);
define('FILTER_MODE_EXCLUDE', 2);
define('FILTER_MODE_SEARCHFULL', 4);
define('FILTER_MODE_SEARCHREGEX', 8);
// --- Init Facility LIST
$content['filter_facility_list'][] = array( "ID" => SYSLOG_KERN, "DisplayName" => "KERN", "selected" => "" );