Added better support to check availibility of logstream sources, and better detailed error descriptions.

Also enhanced the error display within all admin pages, again ;)!
This commit is contained in:
Andre Lorbach 2008-07-31 17:30:11 +02:00
parent 984e670d74
commit 22200e05ed
19 changed files with 567 additions and 310 deletions

View File

@ -281,9 +281,8 @@ if ( isset($_POST['op']) )
if ( isset($_POST['SourceDBPassword']) ) { $content['SourceDBPassword'] = DB_RemoveBadChars($_POST['SourceDBPassword']); } else {$content['SourceDBPassword'] = ""; }
if ( isset($_POST['SourceDBEnableRowCounting']) ) { $content['SourceDBEnableRowCounting'] = DB_RemoveBadChars($_POST['SourceDBEnableRowCounting']); }
// Extra Check for this property
if ( $_SESSION['SourceDBEnableRowCounting'] != "true" )
$_SESSION['SourceDBEnableRowCounting'] = "false";
if ( $content['SourceDBEnableRowCounting'] != "true" )
$content['SourceDBEnableRowCounting'] = "false";
}
}
@ -337,26 +336,27 @@ if ( isset($_POST['op']) )
else
{
// Get plain filename for testing!
$szFileName = DB_StripSlahes($content['SourceDiskFile']);
$content['SourceDiskFileTesting'] = DB_StripSlahes($content['SourceDiskFile']);
// Take as it is if rootpath!
if (
( ($pos = strpos($szFileName, "/")) !== FALSE && $pos == 0) ||
( ($pos = strpos($szFileName, ":\\")) !== FALSE ) ||
( ($pos = strpos($szFileName, ":/")) !== FALSE )
( ($pos = strpos($content['SourceDiskFileTesting'], "/")) !== FALSE && $pos == 0) ||
( ($pos = strpos($content['SourceDiskFileTesting'], ":\\")) !== FALSE ) ||
( ($pos = strpos($content['SourceDiskFileTesting'], ":/")) !== FALSE )
)
{
// Nothing really todo
$szFileName = $szFileName;
true;
}
else // prepend basepath!
$szFileName = $gl_root_path . $szFileName;
if ( !is_file($szFileName) )
$content['SourceDiskFileTesting'] = $gl_root_path . $content['SourceDiskFileTesting'];
/*
if ( !is_file($content['SourceDiskFileTesting']) )
{
$content['ISERROR'] = true;
$content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_SOURCES_ERROR_NOTAVALIDFILE'], $szFileName );
}
*/
}
}
// DB Params
@ -398,6 +398,52 @@ if ( isset($_POST['op']) )
$content['ISERROR'] = true;
$content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_SOURCES_ERROR_UNKNOWNSOURCE'], $content['SourceDBType'] );
}
// --- Verify the Source and report and error if needed!
// Include LogStream facility
include($gl_root_path . 'classes/logstream.class.php');
// First create a tmp source array
$tmpSource['ID'] = $content['SOURCEID'];
$tmpSource['Name'] = $content['Name'];
$tmpSource['SourceType']= $content['SourceType'];
$tmpSource['ViewID'] = $content['SourceViewID'];
if ( $tmpSource['SourceType'] == SOURCE_DISK )
{
$tmpSource['LogLineType'] = $content['SourceLogLineType'];
$tmpSource['DiskFile'] = $content['SourceDiskFileTesting']; // use SourceDiskFileTesting rather then SourceDiskFile as it is corrected
}
// DB Params
else if ( $tmpSource['SourceType'] == SOURCE_DB || $tmpSource['SourceType'] == SOURCE_PDO )
{
$tmpSource['DBType'] = $content['SourceDBType'];
$tmpSource['DBName'] = $content['SourceDBName'];
$tmpSource['DBTableType'] = $content['SourceDBTableType'];
$tmpSource['DBServer'] = $content['SourceDBServer'];
$tmpSource['DBTableName'] = $content['SourceDBTableName'];
$tmpSource['DBUser'] = $content['SourceDBUser'];
$tmpSource['DBPassword'] = $content['SourceDBPassword'];
$tmpSource['DBEnableRowCounting'] = $content['SourceDBEnableRowCounting'];
$tmpSource['userid'] = $content['userid'];
$tmpSource['groupid'] = $content['groupid'];
}
// Init the source
InitSource($tmpSource);
// Create LogStream Object
$stream = $tmpSource['ObjRef']->LogStreamFactory($tmpSource['ObjRef']);
$res = $stream->Verify();
if ( $res != SUCCESS )
{
$content['ISERROR'] = true;
$content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_SOURCES_ERROR_WITHINSOURCE'], $tmpSource['Name'], GetErrorMessage($res) );
if ( isset($extraErrorDescription) )
$content['ERROR_MSG'] .= "<br><br>" . GetAndReplaceLangStr( $content['LN_SOURCES_ERROR_EXTRAMSG'], $extraErrorDescription);
}
// ---
}
// --- Now ADD/EDIT do the processing!

View File

@ -68,6 +68,13 @@ abstract class LogStream {
*/
public abstract function Close();
/**
* Verifies the logstream source
*
* @return integer Error stat
*/
public abstract function Verify();
/**
* Read the next data from the current stream. If it reads
* forwards or backwards depends on the current read direction.

View File

@ -63,7 +63,7 @@ class LogStreamConfigDisk extends LogStreamConfig {
require_once($gl_root_path . 'classes/logstreamlineparser.class.php');
// Probe if file exists then include it!
$strIncludeFile = 'classes/logstreamlineparser' . $this->LineParserType . '.class.php';
$strIncludeFile = $gl_root_path . 'classes/logstreamlineparser' . $this->LineParserType . '.class.php';
$strClassName = "LogStreamLineParser" . $this->LineParserType;
if ( is_file($strIncludeFile) )

View File

@ -84,15 +84,11 @@ class LogStreamDB extends LogStream {
{
global $dbmapping;
// Try to connect to the database
$this->_dbhandle = mysql_connect($this->_logStreamConfigObj->DBServer,$this->_logStreamConfigObj->DBUser,$this->_logStreamConfigObj->DBPassword);
if (!$this->_dbhandle)
return ERROR_DB_CONNECTFAILED;
// Verify database connection (This also opens the database!)
$res = $this->Verify();
if ( $res != SUCCESS )
return $res;
$bRet = mysql_select_db($this->_logStreamConfigObj->DBName, $this->_dbhandle);
if(!$bRet)
return ERROR_DB_CANNOTSELECTDB;
// Copy the Property Array
$this->_arrProperties = $arrProperties;
@ -121,6 +117,52 @@ class LogStreamDB extends LogStream {
return SUCCESS;
}
/**
* Verify if the database connection exists!
*
* @return integer Error state
*/
public function Verify() {
// Try to connect to the database
if ( $this->_dbhandle == null )
{
$this->_dbhandle = @mysql_connect($this->_logStreamConfigObj->DBServer,$this->_logStreamConfigObj->DBUser,$this->_logStreamConfigObj->DBPassword);
if (!$this->_dbhandle)
{
if ( isset($php_errormsg) )
{
global $extraErrorDescription;
$extraErrorDescription = $php_errormsg;
}
// Return error code
return ERROR_DB_CONNECTFAILED;
}
}
// Select the database now!
$bRet = @mysql_select_db($this->_logStreamConfigObj->DBName, $this->_dbhandle);
if(!$bRet)
{
if ( isset($php_errormsg) )
{
global $extraErrorDescription;
$extraErrorDescription = $php_errormsg;
}
// Return error code
return ERROR_DB_CANNOTSELECTDB;
}
// Check if the table exists!
$numTables = @mysql_num_rows( mysql_query("SHOW TABLES LIKE '%" . $this->_logStreamConfigObj->DBTableName . "%'"));
if( $numTables <= 0 )
return ERROR_DB_TABLENOTFOUND;
// reached this point means success ;)!
return SUCCESS;
}
/**
* Read the data from a specific uID which means in this
* case beginning with from the Database ID

View File

@ -74,18 +74,14 @@ class LogStreamDisk extends LogStream {
* @return integer Error stat
*/
public function Open($arrProperties) {
// Check if file exists!
if(!file_exists($this->_logStreamConfigObj->FileName)) {
return ERROR_FILE_NOT_FOUND;
}
// Check if file is readable!
if(!is_readable($this->_logStreamConfigObj->FileName)) {
return ERROR_FILE_NOT_READABLE;
}
$result = $this->Verify();
if ( $result != SUCCESS)
return $result;
// Now open the file
$this->_fp = fopen($this->_logStreamConfigObj->FileName, 'r');
$this->_currentOffset = ftell($this->_fp);
$this->_currentStartPos = $this->_currentOffset;
$this->_arrProperties = $arrProperties;
@ -111,6 +107,27 @@ class LogStreamDisk extends LogStream {
return SUCCESS;
}
/**
* Verify if the file exists!
*
* @return integer Error state
*/
public function Verify() {
// Check if file exists!
if(!file_exists($this->_logStreamConfigObj->FileName)) {
return ERROR_FILE_NOT_FOUND;
}
// Check if file is readable!
if(!is_readable($this->_logStreamConfigObj->FileName)) {
return ERROR_FILE_NOT_READABLE;
}
// reached this point means success ;)!
return SUCCESS;
}
private function ReadNextBlock() {
$this->_bEOS = false;
$bCheckForLastLf = false;

View File

@ -87,38 +87,11 @@ class LogStreamPDO extends LogStream {
{
global $dbmapping;
// Create DSN String
$myDBDriver = $this->_logStreamConfigObj->GetPDODatabaseType();
$myDsn = $this->_logStreamConfigObj->CreateConnectDSN();
if ( strlen($myDsn) > 0 )
{
// Check if configured driver is actually loaded!
//print_r(PDO::getAvailableDrivers());
if ( !in_array($myDBDriver, PDO::getAvailableDrivers()) )
{
$this->PrintDebugError('PDO Database Driver not loaded: ' . $myDBDriver . "<br>Please check your php configuration extensions");
return ERROR_DB_INVALIDDBDRIVER;
}
// Verify database driver and connection (This also opens the database!)
$res = $this->Verify();
if ( $res != SUCCESS )
return $res;
try
{
// Try to connect to the database
$this->_dbhandle = new PDO( $myDsn, $this->_logStreamConfigObj->DBUser, $this->_logStreamConfigObj->DBPassword);
//$handle->setAttribute(PDO::ATTR_TIMEOUT, 3);
}
catch (PDOException $e)
{
$this->PrintDebugError('PDO Database Connection failed: ' . $e->getMessage() . "<br>DSN: " . $myDsn);
return ERROR_DB_CONNECTFAILED;
}
}
else
{
// Invalid DB Driver!
return ERROR_DB_INVALIDDBDRIVER;
}
// Copy the Property Array
$this->_arrProperties = $arrProperties;
@ -155,6 +128,73 @@ class LogStreamPDO extends LogStream {
return true;
}
/**
* Verify if the database connection exists!
*
* @return integer Error state
*/
public function Verify() {
// Create DSN String
$myDBDriver = $this->_logStreamConfigObj->GetPDODatabaseType();
$myDsn = $this->_logStreamConfigObj->CreateConnectDSN();
if ( strlen($myDsn) > 0 )
{
// Check if configured driver is actually loaded!
//print_r(PDO::getAvailableDrivers());
if ( !in_array($myDBDriver, PDO::getAvailableDrivers()) )
{
global $extraErrorDescription;
$extraErrorDescription = "PDO Database Driver not loaded: " . $myDBDriver . "<br>Please check your php configuration extensions";
// $this->PrintDebugError($extraErrorDescription);
// return error code
return ERROR_DB_INVALIDDBDRIVER;
}
try
{
// Try to connect to the database
$this->_dbhandle = new PDO( $myDsn, $this->_logStreamConfigObj->DBUser, $this->_logStreamConfigObj->DBPassword /*, array(PDO::ATTR_TIMEOUT =>25)*/);
//$this->_dbhandle->setAttribute(PDO::ATTR_TIMEOUT, 25);
}
catch (PDOException $e)
{
global $extraErrorDescription;
$extraErrorDescription = "PDO Database Connection failed: " . $e->getMessage() . "<br>DSN: " . $myDsn;
// $this->PrintDebugError($extraErrorDescription);
// return error code
return ERROR_DB_CONNECTFAILED;
}
try
{
// This is one way to check if the table exists! But I don't really like it tbh -.-
$tmpStmnt = $this->_dbhandle->prepare("SELECT ID FROM " . $this->_logStreamConfigObj->DBTableName . " WHERE ID=1");
$tmpStmnt->execute();
$colcount = $tmpStmnt->columnCount();
if ( $colcount <= 0 )
return ERROR_DB_TABLENOTFOUND;
}
catch (PDOException $e)
{
global $extraErrorDescription;
$extraErrorDescription = "Could not find table: " . $e->getMessage();
// return error code
return ERROR_DB_TABLENOTFOUND;
}
}
else
{
// Invalid DB Driver!
return ERROR_DB_INVALIDDBDRIVER;
}
// reached this point means success ;)!
return SUCCESS;
}
/**
* Read the data from a specific uID which means in this
* case beginning with from the Database ID

View File

@ -45,6 +45,7 @@ define('ERROR_FILE_NOT_FOUND', 2);
define('ERROR_FILE_CANT_CLOSE', 3);
define('ERROR_FILE_EOF', 4);
define('ERROR_FILE_BOF', 5);
define('ERROR_FILE_NOT_READABLE', 15);
define('ERROR_UNDEFINED', 6);
define('ERROR_EOS', 7);
define('ERROR_NOMORERECORDS', 8);
@ -56,8 +57,8 @@ define('ERROR_DB_QUERYFAILED', 12);
define('ERROR_DB_NOPROPERTIES', 13);
define('ERROR_DB_INVALIDDBMAPPING', 14);
define('ERROR_DB_INVALIDDBDRIVER', 16);
define('ERROR_DB_TABLENOTFOUND', 17);
define('ERROR_FILE_NOT_READABLE', 15);
?>

View File

@ -53,8 +53,12 @@ include($gl_root_path . 'include/functions_config.php');
$RUNMODE = RUNMODE_WEBSERVER;
$DEBUGMODE = DEBUG_INFO;
// --- Disable ARGV setting @webserver!
ini_set( "register_argc_argv", "Off" );
// --- Change some runtime variables
// Disable ARGV setting @webserver!
@ini_set( "register_argc_argv", "Off" );
// Enable error tracking
@ini_set( "track_errors", "On" );
// ---
// Default language
@ -1133,4 +1137,52 @@ function GetConfigSetting($szSettingName, $szDefaultValue = "", $DesiredConfigLe
return $szDefaultValue;
}
/*
* Helper function to get the errorCode
*/
function GetErrorMessage($errorCode)
{
global $content;
switch( $errorCode )
{
case ERROR_FILE_NOT_FOUND:
return $content['LN_ERROR_FILE_NOT_FOUND'];
case ERROR_FILE_NOT_READABLE:
return $content['LN_ERROR_FILE_NOT_READABLE'];
case ERROR_FILE_EOF:
return $content['LN_ERROR_FILE_EOF'];
case ERROR_FILE_BOF:
return $content['LN_ERROR_FILE_BOF'];
case ERROR_FILE_CANT_CLOSE:
return $content['LN_ERROR_FILE_CANT_CLOSE'];
case ERROR_UNDEFINED:
return $content['LN_ERROR_UNDEFINED'];
case ERROR_EOS:
return $content['LN_ERROR_EOS'];
case ERROR_NOMORERECORDS:
return $content['LN_ERROR_NORECORDS'];
case ERROR_FILTER_NOT_MATCH:
return $content['LN_ERROR_FILTER_NOT_MATCH'];
case ERROR_DB_CONNECTFAILED:
return $content['LN_ERROR_DB_CONNECTFAILED'];
case ERROR_DB_CANNOTSELECTDB:
return $content['LN_ERROR_DB_CANNOTSELECTDB'];
case ERROR_DB_QUERYFAILED:
return $content['LN_ERROR_DB_QUERYFAILED'];
case ERROR_DB_NOPROPERTIES:
return $content['LN_ERROR_DB_NOPROPERTIES'];
case ERROR_DB_INVALIDDBMAPPING:
return $content['LN_ERROR_DB_INVALIDDBMAPPING'];
case ERROR_DB_INVALIDDBDRIVER:
return $content['LN_ERROR_DB_INVALIDDBDRIVER'];
case ERROR_DB_TABLENOTFOUND:
return $content['LN_ERROR_DB_TABLENOTFOUND'];
default:
return GetAndReplaceLangStr( $content['LN_ERROR_UNKNOWN'], $errorCode );
}
}
?>

View File

@ -41,141 +41,152 @@ if ( !defined('IN_PHPLOGCON') )
require_once($gl_root_path . 'classes/logstreamconfig.class.php');
// ---
function InitSource(&$mysource)
{
global $CFG, $content, $gl_root_path, $currentSourceID;
if ( isset($mysource['SourceType']) )
{
// Set Array Index, TODO: Check for invalid characters!
$iSourceID = $mysource['ID'];
// --- Set defaults if not set!
if ( !isset($mysource['LogLineType']) )
{
$CFG['Sources'][$iSourceID]['LogLineType'] = "syslog";
$content['Sources'][$iSourceID]['LogLineType'] = "syslog";
}
if ( !isset($mysource['userid']) )
{
$CFG['Sources'][$iSourceID]['userid'] = null;
$content['Sources'][$iSourceID]['userid'] = null;
}
if ( !isset($mysource['groupid']) )
{
$CFG['Sources'][$iSourceID]['groupid'] = null;
$content['Sources'][$iSourceID]['groupid'] = null;
}
// ---
// Set default view id to source
$tmpVar = GetConfigSetting("DefaultViewsID", "", CFGLEVEL_USER);
$szDefaultViewID = strlen($tmpVar) > 0 ? $tmpVar : "SYSLOG";
if ( isset($_SESSION[$iSourceID . "-View"]) )
{
// check if view is valid
$UserSessionViewID = $_SESSION[$iSourceID . "-View"];
if ( isset($content['Views'][$UserSessionViewID]) )
{
// Overwrite configured view!
$content['Sources'][$iSourceID]['ViewID'] = $_SESSION[$iSourceID . "-View"];
}
else
$content['Sources'][$iSourceID]['ViewID'] = $szDefaultViewID;
}
else
{
if ( isset($mysource['ViewID']) && strlen($mysource['ViewID']) > 0 && isset($content['Views'][ $mysource['ViewID'] ]) )
// Set to configured Source ViewID
$content['Sources'][$iSourceID]['ViewID'] = $mysource['ViewID'];
else
// Not configured, maybe old legacy cfg. Set default view.
$content['Sources'][$iSourceID]['ViewID'] = $szDefaultViewID;
}
// Only for the display box
$content['Sources'][$iSourceID]['selected'] = "";
// Create Config instance!
if ( $mysource['SourceType'] == SOURCE_DISK )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigdisk.class.php');
$mysource['ObjRef'] = new LogStreamConfigDisk();
$mysource['ObjRef']->FileName = $mysource['DiskFile'];
$mysource['ObjRef']->LineParserType = $mysource['LogLineType'];
}
else if ( $mysource['SourceType'] == SOURCE_DB )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigdb.class.php');
$mysource['ObjRef'] = new LogStreamConfigDB();
$mysource['ObjRef']->DBServer = $mysource['DBServer'];
$mysource['ObjRef']->DBName = $mysource['DBName'];
// Workaround a little bug from the installer script
if ( isset($mysource['DBType']) )
$mysource['ObjRef']->DBType = $mysource['DBType'];
else
$mysource['ObjRef']->DBType = DB_MYSQL;
$mysource['ObjRef']->DBTableName = $mysource['DBTableName'];
// Legacy handling for tabletype!
if ( isset($mysource['DBTableType']) && strtolower($mysource['DBTableType']) == "winsyslog" )
$mysource['ObjRef']->DBTableType = "monitorware"; // Convert to MonitorWare!
else
$mysource['ObjRef']->DBTableType = strtolower($mysource['DBTableType']);
// Optional parameters!
if ( isset($mysource['DBPort']) ) { $mysource['ObjRef']->DBPort = $mysource['DBPort']; }
if ( isset($mysource['DBUser']) ) { $mysource['ObjRef']->DBUser = $mysource['DBUser']; }
if ( isset($mysource['DBPassword']) ) { $mysource['ObjRef']->DBPassword = $mysource['DBPassword']; }
if ( isset($mysource['DBEnableRowCounting']) ) { $mysource['ObjRef']->DBEnableRowCounting = $mysource['DBEnableRowCounting']; }
}
else if ( $mysource['SourceType'] == SOURCE_PDO )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigpdo.class.php');
$mysource['ObjRef'] = new LogStreamConfigPDO();
$mysource['ObjRef']->DBServer = $mysource['DBServer'];
$mysource['ObjRef']->DBName = $mysource['DBName'];
$mysource['ObjRef']->DBType = $mysource['DBType'];
$mysource['ObjRef']->DBTableName = $mysource['DBTableName'];
$mysource['ObjRef']->DBTableType = strtolower($mysource['DBTableType']);
// Optional parameters!
if ( isset($mysource['DBPort']) ) { $mysource['ObjRef']->DBPort = $mysource['DBPort']; }
if ( isset($mysource['DBUser']) ) { $mysource['ObjRef']->DBUser = $mysource['DBUser']; }
if ( isset($mysource['DBPassword']) ) { $mysource['ObjRef']->DBPassword = $mysource['DBPassword']; }
if ( isset($mysource['DBEnableRowCounting']) ) { $mysource['ObjRef']->DBEnableRowCounting = $mysource['DBEnableRowCounting']; }
}
else
{
// UNKNOWN, remove config entry!
unset($content['Sources'][$iSourceID]);
// Output CRITICAL WARNING
DieWithFriendlyErrorMsg( GetAndReplaceLangStr($content['LN_GEN_CRITERROR_UNKNOWNTYPE'], $mysource['SourceType']) );
}
// Set generic configuration options
$mysource['ObjRef']->_pageCount = GetConfigSetting("ViewEntriesPerPage", 50);
// Set default SourceID here!
if ( isset($content['Sources'][$iSourceID]) && !isset($currentSourceID) )
$currentSourceID = $iSourceID;
// Copy Object REF into CFG and content Array as well!
$content['Sources'][$iSourceID]['ObjRef'] = $mysource['ObjRef'];
$CFG['Sources'][$iSourceID]['ObjRef'] = $mysource['ObjRef'];
}
}
function InitSourceConfigs()
{
global $CFG, $content, $currentSourceID, $gl_root_path;
global $CFG, $content, $currentSourceID;
// Init Source Configs!
if ( isset($CFG['Sources']) )
{
$iCount = count($CFG['Sources']);
foreach( $CFG['Sources'] as &$mysource )
{
if ( isset($mysource['SourceType']) )
{
// Set Array Index, TODO: Check for invalid characters!
$iSourceID = $mysource['ID'];
// --- Set defaults if not set!
if ( !isset($mysource['LogLineType']) )
{
$CFG['Sources'][$iSourceID]['LogLineType'] = "syslog";
$content['Sources'][$iSourceID]['LogLineType'] = "syslog";
}
if ( !isset($mysource['userid']) )
{
$CFG['Sources'][$iSourceID]['userid'] = null;
$content['Sources'][$iSourceID]['userid'] = null;
}
if ( !isset($mysource['groupid']) )
{
$CFG['Sources'][$iSourceID]['groupid'] = null;
$content['Sources'][$iSourceID]['groupid'] = null;
}
// ---
// Set default view id to source
$tmpVar = GetConfigSetting("DefaultViewsID", "", CFGLEVEL_USER);
$szDefaultViewID = strlen($tmpVar) > 0 ? $tmpVar : "SYSLOG";
if ( isset($_SESSION[$iSourceID . "-View"]) )
{
// check if view is valid
$UserSessionViewID = $_SESSION[$iSourceID . "-View"];
if ( isset($content['Views'][$UserSessionViewID]) )
{
// Overwrite configured view!
$content['Sources'][$iSourceID]['ViewID'] = $_SESSION[$iSourceID . "-View"];
}
else
$content['Sources'][$iSourceID]['ViewID'] = $szDefaultViewID;
}
else
{
if ( isset($mysource['ViewID']) && strlen($mysource['ViewID']) > 0 && isset($content['Views'][ $mysource['ViewID'] ]) )
// Set to configured Source ViewID
$content['Sources'][$iSourceID]['ViewID'] = $mysource['ViewID'];
else
// Not configured, maybe old legacy cfg. Set default view.
$content['Sources'][$iSourceID]['ViewID'] = $szDefaultViewID;
}
// Only for the display box
$content['Sources'][$iSourceID]['selected'] = "";
// Create Config instance!
if ( $mysource['SourceType'] == SOURCE_DISK )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigdisk.class.php');
$content['Sources'][$iSourceID]['ObjRef'] = new LogStreamConfigDisk();
$content['Sources'][$iSourceID]['ObjRef']->FileName = $mysource['DiskFile'];
$content['Sources'][$iSourceID]['ObjRef']->LineParserType = $mysource['LogLineType'];
}
else if ( $mysource['SourceType'] == SOURCE_DB )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigdb.class.php');
$content['Sources'][$iSourceID]['ObjRef'] = new LogStreamConfigDB();
$content['Sources'][$iSourceID]['ObjRef']->DBServer = $mysource['DBServer'];
$content['Sources'][$iSourceID]['ObjRef']->DBName = $mysource['DBName'];
// Workaround a little bug from the installer script
if ( isset($mysource['DBType']) )
$content['Sources'][$iSourceID]['ObjRef']->DBType = $mysource['DBType'];
else
$content['Sources'][$iSourceID]['ObjRef']->DBType = DB_MYSQL;
$content['Sources'][$iSourceID]['ObjRef']->DBTableName = $mysource['DBTableName'];
// Legacy handling for tabletype!
if ( isset($mysource['DBTableType']) && strtolower($mysource['DBTableType']) == "winsyslog" )
$content['Sources'][$iSourceID]['ObjRef']->DBTableType = "monitorware"; // Convert to MonitorWare!
else
$content['Sources'][$iSourceID]['ObjRef']->DBTableType = strtolower($mysource['DBTableType']);
// Optional parameters!
if ( isset($mysource['DBPort']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBPort = $mysource['DBPort']; }
if ( isset($mysource['DBUser']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBUser = $mysource['DBUser']; }
if ( isset($mysource['DBPassword']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBPassword = $mysource['DBPassword']; }
if ( isset($mysource['DBEnableRowCounting']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBEnableRowCounting = $mysource['DBEnableRowCounting']; }
}
else if ( $mysource['SourceType'] == SOURCE_PDO )
{
// Perform necessary include
require_once($gl_root_path . 'classes/logstreamconfigpdo.class.php');
$content['Sources'][$iSourceID]['ObjRef'] = new LogStreamConfigPDO();
$content['Sources'][$iSourceID]['ObjRef']->DBServer = $mysource['DBServer'];
$content['Sources'][$iSourceID]['ObjRef']->DBName = $mysource['DBName'];
$content['Sources'][$iSourceID]['ObjRef']->DBType = $mysource['DBType'];
$content['Sources'][$iSourceID]['ObjRef']->DBTableName = $mysource['DBTableName'];
$content['Sources'][$iSourceID]['ObjRef']->DBTableType = strtolower($mysource['DBTableType']);
// Optional parameters!
if ( isset($mysource['DBPort']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBPort = $mysource['DBPort']; }
if ( isset($mysource['DBUser']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBUser = $mysource['DBUser']; }
if ( isset($mysource['DBPassword']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBPassword = $mysource['DBPassword']; }
if ( isset($mysource['DBEnableRowCounting']) ) { $content['Sources'][$iSourceID]['ObjRef']->DBEnableRowCounting = $mysource['DBEnableRowCounting']; }
}
else
{
// UNKNOWN, remove config entry!
unset($content['Sources'][$iSourceID]);
// Output CRITICAL WARNING
DieWithFriendlyErrorMsg( GetAndReplaceLangStr($content['LN_GEN_CRITERROR_UNKNOWNTYPE'], $mysource['SourceType']) );
}
// Set generic configuration options
$content['Sources'][$iSourceID]['ObjRef']->_pageCount = GetConfigSetting("ViewEntriesPerPage", 50);
// Set default SourceID here!
if ( isset($content['Sources'][$iSourceID]) && !isset($currentSourceID) )
$currentSourceID = $iSourceID;
}
// Init each source using this function!
InitSource($mysource);
}
}

View File

@ -104,89 +104,6 @@ $content['searchstr'] = "";
$content['highlightstr'] = "";
$content['EXPAND_HIGHLIGHT'] = "false";
// --- BEGIN Define Helper functions
function HighLightString($highlightArray, $strmsg)
{
if ( isset($highlightArray) )
{
// TODO OPTIMIZE - USING FONT TAG as SPAN is HIDDEN if MESSAGE POPUP is ENABNLED!
foreach( $highlightArray as $highlightword )
$strmsg = preg_replace( "/(" . $highlightword['highlight'] . ")/i", '<font class="' . $highlightword['cssclass'] . '">\\1</font>', $strmsg );
}
// return result
return $strmsg;
}
function PrepareStringForSearch($myString)
{
return str_replace(" ", "+", $myString);
}
// ---
// --- Read and process filters from search dialog!
if ( (isset($_POST['search']) || isset($_GET['search'])) || (isset($_POST['filter']) || isset($_GET['filter'])) )
{
// Copy search over
if ( isset($_POST['search']) )
$mysearch = $_POST['search'];
else if ( isset($_GET['search']) )
$mysearch = $_GET['search'];
if ( isset($_POST['filter']) )
$myfilter = $_POST['filter'];
else if ( isset($_GET['filter']) )
$myfilter = $_GET['filter'];
// Optionally read highlight words
if ( isset($_POST['highlight']) )
$content['highlightstr'] = $_POST['highlight'];
else if ( isset($_GET['highlight']) )
$content['highlightstr'] = $_GET['highlight'];
// else if ( $mysearch == $content['LN_SEARCH'])
{
// Message is just appended
if ( isset($myfilter) && strlen($myfilter) > 0 )
$content['searchstr'] = $myfilter;
}
if ( strlen($content['highlightstr']) > 0 )
{
$searchArray = array("\\", "/", ".", ">");
$replaceArray = array("\\\\", "\/", "\.", ">");
// user also wants to highlight words!
if ( strpos($content['highlightstr'], ",") === false)
{
$content['highlightwords'][0]['highlight_raw'] = $content['highlightstr'];
$content['highlightwords'][0]['highlight'] = str_replace( $searchArray, $replaceArray, $content['highlightstr']);
$content['highlightwords'][0]['cssclass'] = "highlight_1";
$content['highlightwords'][0]['htmlcode'] = '<span class="' . $content['highlightwords'][0]['cssclass'] . '">' . $content['highlightwords'][0]['highlight']. '</span>';
}
else
{
// Split array into words
$tmparray = explode( ",", $content['highlightstr'] );
foreach( $tmparray as $word )
$content['highlightwords'][]['highlight_raw'] = $word;
// Assign other variables needed for this array entry
for ($i = 0; $i < count($content['highlightwords']); $i++)
{
$content['highlightwords'][$i]['highlight'] = str_replace( $searchArray, $replaceArray, $content['highlightwords'][$i]['highlight_raw']);
$content['highlightwords'][$i]['cssclass'] = "highlight_" . ($i+1);
$content['highlightwords'][$i]['htmlcode'] = '<span class="' . $content['highlightwords'][$i]['cssclass'] . '">' . $content['highlightwords'][$i]['highlight']. '</span>';
}
}
// Default expand Highlight Arrea!
$content['EXPAND_HIGHLIGHT'] = "true";
}
}
// ---
// --- BEGIN CREATE TITLE
$content['TITLE'] = InitPageTitle();
@ -272,7 +189,7 @@ if ( isset($content['Sources'][$currentSourceID]) ) // && $content['Sources'][$c
{
// This will disable to Main SyslogView and show an error message
$content['syslogmessagesenabled'] = "false";
$content['detailederror'] = "No syslog messages found.";
$content['detailederror'] = $content['LN_ERROR_NORECORDS'];
}
// ---
@ -713,13 +630,10 @@ if ( isset($content['Sources'][$currentSourceID]) ) // && $content['Sources'][$c
{
// This will disable to Main SyslogView and show an error message
$content['syslogmessagesenabled'] = "false";
$content['detailederror'] = GetErrorMessage($res);
if ( $res == ERROR_FILE_NOT_FOUND )
$content['detailederror'] = "Syslog file could not be found.";
else if ( $res == ERROR_FILE_NOT_READABLE )
$content['detailederror'] = "Syslog file is not readable, read access may be denied. ";
else
$content['detailederror'] = "Unknown or unhandled error occured (Error Code " . $res . ") ";
if ( isset($extraErrorDescription) )
$content['detailederror'] .= "<br><br>" . GetAndReplaceLangStr( $content['LN_SOURCES_ERROR_EXTRAMSG'], $extraErrorDescription);
}
// Close file!
@ -733,4 +647,87 @@ $page -> parser($content, "index.html");
$page -> output();
// ---
// --- BEGIN Define Helper functions
function HighLightString($highlightArray, $strmsg)
{
if ( isset($highlightArray) )
{
// TODO OPTIMIZE - USING FONT TAG as SPAN is HIDDEN if MESSAGE POPUP is ENABNLED!
foreach( $highlightArray as $highlightword )
$strmsg = preg_replace( "/(" . $highlightword['highlight'] . ")/i", '<font class="' . $highlightword['cssclass'] . '">\\1</font>', $strmsg );
}
// return result
return $strmsg;
}
function PrepareStringForSearch($myString)
{
return str_replace(" ", "+", $myString);
}
// ---
// --- Read and process filters from search dialog!
if ( (isset($_POST['search']) || isset($_GET['search'])) || (isset($_POST['filter']) || isset($_GET['filter'])) )
{
// Copy search over
if ( isset($_POST['search']) )
$mysearch = $_POST['search'];
else if ( isset($_GET['search']) )
$mysearch = $_GET['search'];
if ( isset($_POST['filter']) )
$myfilter = $_POST['filter'];
else if ( isset($_GET['filter']) )
$myfilter = $_GET['filter'];
// Optionally read highlight words
if ( isset($_POST['highlight']) )
$content['highlightstr'] = $_POST['highlight'];
else if ( isset($_GET['highlight']) )
$content['highlightstr'] = $_GET['highlight'];
// else if ( $mysearch == $content['LN_SEARCH'])
{
// Message is just appended
if ( isset($myfilter) && strlen($myfilter) > 0 )
$content['searchstr'] = $myfilter;
}
if ( strlen($content['highlightstr']) > 0 )
{
$searchArray = array("\\", "/", ".", ">");
$replaceArray = array("\\\\", "\/", "\.", ">");
// user also wants to highlight words!
if ( strpos($content['highlightstr'], ",") === false)
{
$content['highlightwords'][0]['highlight_raw'] = $content['highlightstr'];
$content['highlightwords'][0]['highlight'] = str_replace( $searchArray, $replaceArray, $content['highlightstr']);
$content['highlightwords'][0]['cssclass'] = "highlight_1";
$content['highlightwords'][0]['htmlcode'] = '<span class="' . $content['highlightwords'][0]['cssclass'] . '">' . $content['highlightwords'][0]['highlight']. '</span>';
}
else
{
// Split array into words
$tmparray = explode( ",", $content['highlightstr'] );
foreach( $tmparray as $word )
$content['highlightwords'][]['highlight_raw'] = $word;
// Assign other variables needed for this array entry
for ($i = 0; $i < count($content['highlightwords']); $i++)
{
$content['highlightwords'][$i]['highlight'] = str_replace( $searchArray, $replaceArray, $content['highlightwords'][$i]['highlight_raw']);
$content['highlightwords'][$i]['cssclass'] = "highlight_" . ($i+1);
$content['highlightwords'][$i]['htmlcode'] = '<span class="' . $content['highlightwords'][$i]['cssclass'] . '">' . $content['highlightwords'][$i]['highlight']. '</span>';
}
}
// Default expand Highlight Arrea!
$content['EXPAND_HIGHLIGHT'] = "true";
}
}
// ---
?>

View File

@ -60,6 +60,10 @@ $content['LN_GEN_SOURCE_DB'] = "Datenbank";
$content['LN_GEN_ERRORRETURNPREV'] = "Click here to return to the previous site.";
$content['LN_GEN_ERRORDETAILS'] = "Error Details:";
$content['LN_SOURCES_ERROR_WITHINSOURCE'] = "The source '%1' checking returned with an error: '%2'";
$content['LN_ERROR_NORECORDS'] = "Es wurden keine syslog-Eintr&auml;ge gefunden.";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Suchen";
$content['LN_MENU_SHOWEVENTS'] = "Show Events";
@ -102,8 +106,6 @@ $content['LN_AUTORELOAD_PRECONFIGURED'] = "Preconfigured auto reload ";
$content['LN_AUTORELOAD_SECONDS'] = "seconds";
$content['LN_AUTORELOAD_MINUTES'] = "minutes";
$content['LN_ERROR_NORECORDS'] = "Es wurden keine syslog-Eintr&auml;ge gefunden.";
// Filter Options
$content['LN_FILTER_DATE'] = "Zeitliche Abgrenzung";
$content['LN_FILTER_DATEMODE'] = "Zeitraum ausw&aumlhlen";

View File

@ -61,6 +61,27 @@ $content['LN_GEN_DB_SQLITE'] = "SQLite 2";
$content['LN_GEN_ERRORRETURNPREV'] = "Click here to return to the previous site.";
$content['LN_GEN_ERRORDETAILS'] = "Error Details:";
$content['LN_SOURCES_ERROR_WITHINSOURCE'] = "The source '%1' checking returned with an error:<br>%2";
$content['LN_SOURCES_ERROR_EXTRAMSG'] = "Extra Error Details:<br>%1";
$content['LN_ERROR_NORECORDS'] = "No syslog records found";
$content['LN_ERROR_FILE_NOT_FOUND'] = "Syslog file could not be found";
$content['LN_ERROR_FILE_NOT_READABLE'] = "Syslog file is not readable, read access may be denied";
$content['LN_ERROR_UNKNOWN'] = "Unknown or unhandled error occured (Error Code '%1')";
$content['LN_ERROR_FILE_EOF'] = "End of File reached";
$content['LN_ERROR_FILE_BOF'] = "Begin of File reeached";
$content['LN_ERROR_FILE_CANT_CLOSE'] = "Can't close File";
$content['LN_ERROR_UNDEFINED'] = "Undefined Error";
$content['LN_ERROR_EOS'] = "End of stream reached";
$content['LN_ERROR_FILTER_NOT_MATCH'] = "Filter does not match any results";
$content['LN_ERROR_DB_CONNECTFAILED'] = "Connection to the database server failed";
$content['LN_ERROR_DB_CANNOTSELECTDB'] = "Could not find the configured database";
$content['LN_ERROR_DB_QUERYFAILED'] = "Dataquery failed to execute";
$content['LN_ERROR_DB_NOPROPERTIES'] = "No database properties found";
$content['LN_ERROR_DB_INVALIDDBMAPPING'] = "Invalid datafield mappings";
$content['LN_ERROR_DB_INVALIDDBDRIVER'] = "Invalid database driver selected";
$content['LN_ERROR_DB_TABLENOTFOUND'] = "Could not find the configured table, maybe misspelled or the tablenames are case sensitive";
$content['LN_ERROR_'] = "";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Search";
$content['LN_MENU_SHOWEVENTS'] = "Show Events";
@ -102,8 +123,6 @@ $content['LN_AUTORELOAD_PRECONFIGURED'] = "Preconfigured auto reload ";
$content['LN_AUTORELOAD_SECONDS'] = "seconds";
$content['LN_AUTORELOAD_MINUTES'] = "minutes";
$content['LN_ERROR_NORECORDS'] = "No syslog records found.";
// Filter Options
$content['LN_FILTER_DATE'] = "Datetime Range";
$content['LN_FILTER_DATEMODE'] = "Select mode";

View File

@ -64,6 +64,10 @@ $content['LN_GEN_SELECTVIEW'] = "Vis&atilde;o";
$content['LN_GEN_ERRORRETURNPREV'] = "Click here to return to the previous site.";
$content['LN_GEN_ERRORDETAILS'] = "Error Details:";
$content['LN_SOURCES_ERROR_WITHINSOURCE'] = "The source '%1' checking returned with an error: '%2'";
$content['LN_ERROR_NORECORDS'] = "Sem mensagens encontradas.";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Search";
$content['LN_MENU_SHOWEVENTS'] = "Show Events";
@ -105,8 +109,6 @@ $content['LN_AUTORELOAD_PRECONFIGURED'] = "Auto recarregamento pr&eacute;-config
$content['LN_AUTORELOAD_SECONDS'] = "segundos";
$content['LN_AUTORELOAD_MINUTES'] = "minutos";
$content['LN_ERROR_NORECORDS'] = "Sem mensagens encontradas.";
// Filter Options
$content['LN_FILTER_DATE'] = "Intervalo Data/Hora";
$content['LN_FILTER_DATEMODE'] = "Selecionar Modo";

View File

@ -1,12 +1,16 @@
<!-- INCLUDE include_header.html -->
<!-- IF ISERROR="true" -->
<br>
<br><br>
<center>
<h3 class="ErrorMsg">{LN_GEN_ERRORDETAILS} {ERROR_MSG}</h3>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
<div class="table_with_border_second ErrorMsg" style="width:600px">
<div class="PriorityError">{LN_GEN_ERRORDETAILS}</div>
<p>{ERROR_MSG}</p>
</div>
<br><br>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
</center>
<br>
<br><br>
<!-- ENDIF ISERROR="true" -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">

View File

@ -1,12 +1,16 @@
<!-- INCLUDE include_header.html -->
<!-- IF ISERROR="true" -->
<br>
<br><br>
<center>
<h3 class="ErrorMsg">{LN_GEN_ERRORDETAILS} {ERROR_MSG}</h3>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
<div class="table_with_border_second ErrorMsg" style="width:600px">
<div class="PriorityError">{LN_GEN_ERRORDETAILS}</div>
<p>{ERROR_MSG}</p>
</div>
<br><br>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
</center>
<br>
<br><br>
<!-- ENDIF ISERROR="true" -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">

View File

@ -30,12 +30,16 @@
</script>
<!-- IF ISERROR="true" -->
<br>
<br><br>
<center>
<h3 class="ErrorMsg">{LN_GEN_ERRORDETAILS} {ERROR_MSG}</h3>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
<div class="table_with_border_second ErrorMsg" style="width:600px">
<div class="PriorityError">{LN_GEN_ERRORDETAILS}</div>
<p>{ERROR_MSG}</p>
</div>
<br><br>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
</center>
<br>
<br><br>
<!-- ENDIF ISERROR="true" -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">

View File

@ -1,12 +1,16 @@
<!-- INCLUDE include_header.html -->
<!-- IF ISERROR="true" -->
<br>
<br><br>
<center>
<h3 class="ErrorMsg">{LN_GEN_ERRORDETAILS} {ERROR_MSG}</h3>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
<div class="table_with_border_second ErrorMsg" style="width:600px">
<div class="PriorityError">{LN_GEN_ERRORDETAILS}</div>
<p>{ERROR_MSG}</p>
</div>
<br><br>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
</center>
<br>
<br><br>
<!-- ENDIF ISERROR="true" -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">

View File

@ -1,12 +1,16 @@
<!-- INCLUDE include_header.html -->
<!-- IF ISERROR="true" -->
<br>
<br><br>
<center>
<h3 class="ErrorMsg">{LN_GEN_ERRORDETAILS} {ERROR_MSG}</h3>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
<div class="table_with_border_second ErrorMsg" style="width:600px">
<div class="PriorityError">{LN_GEN_ERRORDETAILS}</div>
<p>{ERROR_MSG}</p>
</div>
<br><br>
<a href="javascript:history.back();" target="_top">{LN_GEN_ERRORRETURNPREV}</a>
</center>
<br>
<br><br>
<!-- ENDIF ISERROR="true" -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">

View File

@ -1,7 +1,7 @@
<!-- INCLUDE include_header.html -->
<br><br>
<table width="400" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">
<table width="550" cellpadding="0" cellspacing="0" border="0" align="center" class="with_border">
<tr>
<td colspan="10" align="center" valign="top" class="title">
<strong>{LN_ADMIN_CENTER}</strong></td>
@ -9,10 +9,11 @@
<tr>
<td align="center" class="line1">
<BR><BR>
{SZMSG}
<BR><BR>
<br><br>
<b>{SZMSG}</b>
<br><br>
You will be redirected to the <A HREF="{SZREDIR}">this page</A> on {REDIRSECONDS} seconds.
<br><br>
</td>
</tr>