mirror of
https://github.com/rsyslog/loganalyzer.git
synced 2025-09-26 11:19:26 +02:00
Started implemented basic class for report engine, and first free report derived from it
This commit is contained in:
parent
14361ee231
commit
18a5759122
164
src/classes/reports/report.adiscon.monilog.class.php
Normal file
164
src/classes/reports/report.adiscon.monilog.class.php
Normal file
@ -0,0 +1,164 @@
|
||||
<?php
|
||||
/*
|
||||
*********************************************************************
|
||||
* -> www.phplogcon.org <- *
|
||||
* ----------------------------------------------------------------- *
|
||||
* Some constants *
|
||||
* *
|
||||
* Monilog Report is a basic report for EventLog and Syslog data
|
||||
*
|
||||
* \version 1.0.0 Init Version
|
||||
* *
|
||||
* All directives are explained within this file *
|
||||
*
|
||||
* Copyright (C) 2008-2009 Adiscon GmbH.
|
||||
*
|
||||
* This file is part of phpLogCon.
|
||||
*
|
||||
* PhpLogCon is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PhpLogCon is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with phpLogCon. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* A copy of the GPL can be found in the file "COPYING" in this
|
||||
* distribution.
|
||||
*********************************************************************
|
||||
*/
|
||||
|
||||
// --- Avoid directly accessing this file!
|
||||
if ( !defined('IN_PHPLOGCON') )
|
||||
{
|
||||
die('Hacking attempt');
|
||||
exit;
|
||||
}
|
||||
// ---
|
||||
|
||||
// --- Required Includes!
|
||||
require_once($gl_root_path . 'include/constants_errors.php');
|
||||
// ---
|
||||
|
||||
class ReportMonilog extends Report {
|
||||
// Common Properties
|
||||
public $_reportVersion = 1; // Internally Version of the ReportEngine
|
||||
public $_reportID = "report.adiscon.monilog.class"; // ID for the report, needs to be unique!
|
||||
public $_reportTitle = "EventLog Summary Report"; // Display name for the report
|
||||
public $_reportDescription = "This is a EventLog Summary Report based on Monilog"
|
||||
|
||||
|
||||
/* private $_currentOffset = -1;
|
||||
private $_currentStartPos = -1;
|
||||
private $_fp = null;
|
||||
private $_bEOS = false;
|
||||
|
||||
const _BUFFER_length = 8192;
|
||||
private $_buffer = false;
|
||||
private $_buffer_length = 0;
|
||||
private $_p_buffer = -1;
|
||||
*/
|
||||
|
||||
// Constructor
|
||||
public function ReportMonilog() {
|
||||
// $this->_logStreamConfigObj = $streamConfigObj;
|
||||
|
||||
|
||||
// Fill fields we need for this report
|
||||
$this->_arrProperties[] = SYSLOG_UID;
|
||||
$this->_arrProperties[] = SYSLOG_DATE;
|
||||
$this->_arrProperties[] = SYSLOG_HOST;
|
||||
$this->_arrProperties[] = SYSLOG_MESSAGETYPE;
|
||||
$this->_arrProperties[] = SYSLOG_FACILITY;
|
||||
$this->_arrProperties[] = SYSLOG_SEVERITY;
|
||||
$this->_arrProperties[] = SYSLOG_EVENT_ID;
|
||||
$this->_arrProperties[] = SYSLOG_EVENT_LOGTYPE;
|
||||
$this->_arrProperties[] = SYSLOG_EVENT_SOURCE;
|
||||
$this->_arrProperties[] = SYSLOG_EVENT_CATEGORY;
|
||||
$this->_arrProperties[] = SYSLOG_EVENT_USER;
|
||||
$this->_arrProperties[] = SYSLOG_MESSAGE;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* startDataProcessing, analysing data
|
||||
*
|
||||
* @param arrProperties array in: Properties wish list.
|
||||
* @return integer Error stat
|
||||
*/
|
||||
public function startDataProcessing()
|
||||
{
|
||||
// Verify Datasource first!
|
||||
if ( $this->verifyDataSource() == SUCCESS )
|
||||
{
|
||||
$res = $stream->Open( $this->_arrProperties, true );
|
||||
if ( $res == SUCCESS )
|
||||
{
|
||||
// report logic
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Return success!
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* verifyDataSource, verifies if data is accessable and
|
||||
* contains what we need
|
||||
*
|
||||
* @param arrProperties array in: Properties wish list.
|
||||
* @return integer Error stat
|
||||
*/
|
||||
public function verifyDataSource()
|
||||
{
|
||||
if ( $this->_streamCfgObj == null )
|
||||
{
|
||||
// Obtain and get the Config Object
|
||||
$this->_streamCfgObj = $content['Sources'][$this->_mySourceID]['ObjRef'];
|
||||
}
|
||||
|
||||
if ( $this->_streamObj == null )
|
||||
{
|
||||
// Create LogStream Object
|
||||
$this->_streamObj = $this->_streamCfgObj ->LogStreamFactory($this->_streamCfgObj);
|
||||
}
|
||||
|
||||
// Success!
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* validateLicense, check license code
|
||||
*
|
||||
*/
|
||||
public function validateLicense()
|
||||
{
|
||||
// This is a free report!
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
// Private functions...
|
||||
/*
|
||||
private function ResetBuffer() {
|
||||
$this->_bEOS = false;
|
||||
$this->_buffer = false;
|
||||
$this->_buffer_length = 0;
|
||||
$this->_p_buffer = -1;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
168
src/classes/reports/report.class.php
Normal file
168
src/classes/reports/report.class.php
Normal file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/*
|
||||
*********************************************************************
|
||||
* -> www.phplogcon.org <- *
|
||||
* ----------------------------------------------------------------- *
|
||||
* The Report Class is the base class for all reports *
|
||||
* *
|
||||
* All directives are explained within this file *
|
||||
*
|
||||
* Copyright (C) 2008 Adiscon GmbH.
|
||||
*
|
||||
* This file is part of phpLogCon.
|
||||
*
|
||||
* PhpLogCon is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PhpLogCon is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with phpLogCon. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* A copy of the GPL can be found in the file "COPYING" in this
|
||||
* distribution.
|
||||
*********************************************************************
|
||||
*/
|
||||
|
||||
// --- Avoid directly accessing this file!
|
||||
if ( !defined('IN_PHPLOGCON') )
|
||||
{
|
||||
die('Hacking attempt');
|
||||
exit;
|
||||
}
|
||||
// ---
|
||||
|
||||
// --- Basic Includes
|
||||
require_once($gl_root_path . 'classes/enums.class.php');
|
||||
require_once($gl_root_path . 'include/constants_errors.php');
|
||||
require_once($gl_root_path . 'include/constants_logstream.php');
|
||||
// ---
|
||||
|
||||
|
||||
abstract class Report {
|
||||
// Common Properties
|
||||
public $_reportVersion = 1; // Internally Version of the ReportEngine
|
||||
public $_reportID = "report.adiscon.base.class";// ID for the report, needs to be unique!
|
||||
public $_reportTitle = "Base Report Class"; // Display name for the report
|
||||
public $_reportDescription = "This is the base class for all reports"
|
||||
|
||||
// Configuration Properties
|
||||
protected $_filterString = "";
|
||||
protected $_advancedOptionsXml = "";
|
||||
protected $_outputType = REPORT_OUTPUT_HTML; // Default HTML Output
|
||||
protected $_mySourceID = "";
|
||||
protected $_arrProperties = null; // List of properties we need for the main logstream query!
|
||||
|
||||
// License properties
|
||||
protected $_licenseName = "";
|
||||
protected $_licenseKey = "";
|
||||
|
||||
// Helper Objects
|
||||
protected $_reportcontent = null;
|
||||
protected $_baseFileName = "";
|
||||
public $_streamCfgObj = null;
|
||||
public $_streamObj = null;
|
||||
|
||||
// Begin Abstract Function definitions!
|
||||
|
||||
|
||||
/**
|
||||
* This function process the data
|
||||
* Will return -1 on failure!
|
||||
*/
|
||||
public abstract function startDataProcessing();
|
||||
|
||||
|
||||
/**
|
||||
* This function checks if the license is valid
|
||||
* Will return -1 on failure!
|
||||
*/
|
||||
public abstract function validateLicense();
|
||||
|
||||
|
||||
/**
|
||||
* This functions check if the data source is valid
|
||||
* Will return -1 on failure!
|
||||
*/
|
||||
public abstract function verifyDataSource();
|
||||
|
||||
/**
|
||||
* Helper function using the template parser to create the report
|
||||
*/
|
||||
public function CreateReportFromData()
|
||||
{
|
||||
// Create new template parser
|
||||
$page = new Template();
|
||||
$page -> set_path ( $gl_root_path . "classes/reports/" );
|
||||
|
||||
// Run Parser
|
||||
$page -> parser($this->_reportcontent, $this->_baseFileName);
|
||||
|
||||
// Return result!
|
||||
return $page -> result();
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to set the OutputType
|
||||
*/
|
||||
public function SetOutputType($newOutputType)
|
||||
{
|
||||
// Set new Outputtype
|
||||
$this->_outputType = $newOutputType;
|
||||
|
||||
// Set Filebasename
|
||||
$this->_baseFileName = $this->_reportID . ".template." . $this->_outputType;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to set the FilterString
|
||||
*/
|
||||
public function SetFilterString($newFilterString)
|
||||
{
|
||||
// Set new Outputtype
|
||||
$this->_filterString = $newFilterString;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to set the FilterString
|
||||
*/
|
||||
public function SetAdvancedOptions($newAdvancedOptions)
|
||||
{
|
||||
// Set new Outputtype
|
||||
$this->_advancedOptionsXml = $newAdvancedOptions;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to set the FilterString
|
||||
*/
|
||||
public function SetSourceID($newSourceID)
|
||||
{
|
||||
global $content;
|
||||
|
||||
// check if valid!
|
||||
if ( isset($content['Sources'][$newSourceID]) )
|
||||
$this->_mySourceID = $newSourceID;
|
||||
else
|
||||
{
|
||||
OutputDebugMessage("SetSourceID failed, ID '" . $newSourceID . "' is not a valid Logstream Source", DEBUG_ERROR);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Helper function to trigger initialisation
|
||||
*/
|
||||
public function RunBasicInits()
|
||||
{
|
||||
$this->SetOutputType( REPORT_OUTPUT_HTML );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
@ -82,6 +82,11 @@ define('ALIGN_CENTER', 'center');
|
||||
define('ALIGN_LEFT', 'left');
|
||||
define('ALIGN_RIGHT', 'right');
|
||||
|
||||
// Defines for Report output types
|
||||
define('REPORT_OUTPUT_HTML', 'html');
|
||||
define('REPORT_OUTPUT_PDF', 'pdf');
|
||||
|
||||
|
||||
// --- Predefine fields array!
|
||||
$fields[SYSLOG_UID]['FieldID'] = SYSLOG_UID;
|
||||
$fields[SYSLOG_UID]['FieldDefine'] = 'SYSLOG_UID';
|
||||
|
Loading…
x
Reference in New Issue
Block a user