diff --git a/src/admin/reports.php b/src/admin/reports.php
index 890d4af..e875bc5 100644
--- a/src/admin/reports.php
+++ b/src/admin/reports.php
@@ -291,6 +291,9 @@ if ( isset($_GET['op']) )
// Get Reference to parser!
$myReport = $content['REPORTS'][ $content['ReportID'] ];
+ // Set Extra language strings
+ $content['REPORTS_DETAILSFOR'] = GetAndReplaceLangStr( $content['LN_REPORTS_DETAILSFOR'], $content['ReportID'] );
+
// Set Report properties
$content['DisplayName'] = $myReport['DisplayName'];
$content['Description'] = $myReport['Description'];
@@ -367,6 +370,9 @@ if ( isset($_GET['op']) )
// Get Reference to report!
$myReport = $content['REPORTS'][ $content['ReportID'] ];
+ // Set Extra language strings
+ $content['REPORTS_DETAILSFOR'] = GetAndReplaceLangStr( $content['LN_REPORTS_DETAILSFOR'], $content['ReportID'] );
+
// Now Get data from saved report!
$content['SavedReportID'] = DB_RemoveBadChars($_GET['savedreportid']);
@@ -522,17 +528,6 @@ if ( isset($_GET['op']) )
}
// ---
- // --- Set Helper links
- if ( $myOnlineReport['reporthelparticle'] == "-" )
- {
- }
- else
- {
-
- }
-
- // ---
-
// --- Set CSS Class
if ( $j % 2 == 0 )
$myOnlineReport['cssclass'] = "line1";
diff --git a/src/classes/logstreamdisk.class.php b/src/classes/logstreamdisk.class.php
index 69e5cd8..74f3a5f 100644
--- a/src/classes/logstreamdisk.class.php
+++ b/src/classes/logstreamdisk.class.php
@@ -775,6 +775,10 @@ class LogStreamDisk extends LogStream {
else // Just copy the value!
$myFieldData = $logArray[$szConsFieldId];
+ // Extra Check to avoid empty counters!
+ if ( strlen($myFieldData) <= 0 )
+ $myFieldData = $content['LN_STATS_OTHERS'];
+
if ( isset($aResult[ $myFieldData ]) )
$aResult[ $myFieldData ]['ItemCount']++;
else
diff --git a/src/classes/reports/report.eventlog.eventsummary.class.php b/src/classes/reports/report.eventlog.eventsummary.class.php
index 2163e89..6fd158f 100644
--- a/src/classes/reports/report.eventlog.eventsummary.class.php
+++ b/src/classes/reports/report.eventlog.eventsummary.class.php
@@ -399,7 +399,7 @@ class Report_eventsummary extends Report {
// Append a dummy entry which shows count of all other events
if ( $iDropCount > 0 )
{
- $lastEntry[SYSLOG_SEVERITY] = 5;
+ $lastEntry[SYSLOG_SEVERITY] = SYSLOG_NOTICE;
$lastEntry[SYSLOG_EVENT_ID] = "-";
$lastEntry[SYSLOG_EVENT_SOURCE] = $content['LN_GEN_ALL_OTHER_EVENTS'];
$lastEntry[SYSLOG_MESSAGE] = $content['LN_GEN_ALL_OTHER_EVENTS'];
diff --git a/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.html b/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.html
index 7f4b607..c6c2fba 100644
--- a/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.html
+++ b/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.html
@@ -4,7 +4,7 @@
{report_title}
diff --git a/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.pdf b/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.pdf
index 300ed37..59433ec 100644
--- a/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.pdf
+++ b/src/classes/reports/report.eventlog.eventsummary/report.eventlog.eventsummary.template.pdf
@@ -3,7 +3,7 @@
{report_title}
diff --git a/src/classes/reports/report.syslog.syslogsummary.class.php b/src/classes/reports/report.syslog.syslogsummary.class.php
new file mode 100644
index 0000000..83057fe
--- /dev/null
+++ b/src/classes/reports/report.syslog.syslogsummary.class.php
@@ -0,0 +1,508 @@
+ www.phplogcon.org <- *
+ * ----------------------------------------------------------------- *
+ * Some constants *
+ * *
+ * Syslogsummary Report is a basic report for Syslog messages
+ *
+ * \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 .
+ *
+ * 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/reports/report.class.php');
+// ---
+
+class Report_syslogsummary extends Report {
+ // Common Properties
+ public $_reportVersion = 1; // Internally Version of the ReportEngine
+ public $_reportID = "report.syslog.syslogsummary.class"; // ID for the report, needs to be unique!
+ public $_reportFileBasicName = "report.syslog.syslogsummary"; // Basic Filename for reportfiles
+ public $_reportTitle = "Syslog Summary Report"; // Display name for the report
+ public $_reportDescription = "This is a Syslog Summary Report";
+ public $_reportHelpArticle = "";
+ public $_reportNeedsInit = false; // True means that this report needs additional init stuff
+ public $_reportInitialized = false; // True means report is installed
+
+ // Advanced Report Options
+ private $_maxHosts = 20; // Threshold for maximum hosts to analyse!
+ private $_maxMsgsPerHost = 100; // Threshold for maximum amount of syslogmessages to analyse per host
+ private $_colorThreshold = 10; // Threshold for coloured display of Eventcounter
+
+ // Constructor
+ public function Report_syslogsummary() {
+// $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_SYSLOGTAG;
+ $this->_arrProperties[] = SYSLOG_PROCESSID;
+ $this->_arrProperties[] = SYSLOG_MESSAGE;
+ $this->_arrProperties[] = MISC_CHECKSUM;
+
+ // Init Customfilters Array
+ $this->_arrCustomFilters['_maxHosts'] = array ( 'InternalID' => '_maxHosts',
+ 'DisplayLangID' => 'ln_report_maxHosts_displayname',
+ 'DescriptLangID'=> 'ln_report_maxHosts_description',
+ FILTER_TYPE => FILTER_TYPE_NUMBER,
+ 'DefaultValue' => 20,
+ 'MinValue' => 1,
+/* 'MaxValue' => 0,*/
+ );
+ $this->_arrCustomFilters['_maxMsgsPerHost'] =
+ array ( 'InternalID' => '_maxMsgsPerHost',
+ 'DisplayLangID' => 'ln_report_maxMsgsPerHost_displayname',
+ 'DescriptLangID'=> 'ln_report_maxMsgsPerHost_description',
+ FILTER_TYPE => FILTER_TYPE_NUMBER,
+ 'DefaultValue' => 100,
+ 'MinValue' => 1,
+/* 'MaxValue' => 0,*/
+ );
+ $this->_arrCustomFilters['_colorThreshold'] =
+ array ( 'InternalID' => '_colorThreshold',
+ 'DisplayLangID' => 'ln_report_colorThreshold_displayname',
+ 'DescriptLangID'=> 'ln_report_colorThreshold_description',
+ FILTER_TYPE => FILTER_TYPE_NUMBER,
+ 'DefaultValue' => 10,
+ 'MinValue' => 1,
+/* 'MaxValue' => 0,*/
+ );
+
+
+
+ }
+
+ /**
+ * startDataProcessing, analysing data
+ *
+ * @param arrProperties array in: Properties wish list.
+ * @return integer Error stat
+ */
+ public function startDataProcessing()
+ {
+ global $content, $severity_colors, $gl_starttime, $fields;
+
+ // Create Filter string, append filter for EventLog Type msgs!
+ $szFilters = $this->_filterString . " " . $fields[SYSLOG_MESSAGETYPE]['SearchField'] . ":=" . IUT_Syslog;
+
+ // Set Filter string
+ $this->_streamObj->SetFilter( $szFilters );
+
+ // Need to Open stream first!
+ $res = $this->_streamObj->Open( $this->_arrProperties, true );
+ if ( $res == SUCCESS )
+ {
+ // Set to common content variables
+ $this->SetCommonContentVariables();
+
+ // Set report specific content variables
+ $content["_colorThreshold"] = $this->_colorThreshold;
+
+ // --- Report logic starts here
+ $content["report_rendertime"] = "";
+
+ // Step 1: Gather Summaries
+ // Obtain data from the logstream!
+ $content["report_summary"] = $this->_streamObj->ConsolidateDataByField( SYSLOG_SEVERITY, 0, SYSLOG_SEVERITY, SORTING_ORDER_DESC, null, false );
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s, ";
+
+ // If data is valid, we have an array!
+ if ( is_array($content["report_summary"]) && count($content["report_summary"]) > 0 )
+ {
+ // Count Total Events
+ $iTotalEvents = 0;
+
+ foreach ($content["report_summary"] as &$tmpReportData )
+ {
+ $tmpReportData['DisplayName'] = GetSeverityDisplayName( $tmpReportData[SYSLOG_SEVERITY] );
+ $tmpReportData['bgcolor'] = $this->GetSeverityBGColor( $tmpReportData[SYSLOG_SEVERITY] ); // $severity_colors[ $tmpReportData[SYSLOG_SEVERITY] ];
+
+ $iTotalEvents += $tmpReportData['ItemCount'];
+ }
+
+ // Prepent Item with totalevents count
+ $totalItem['DisplayName'] = "Total Events";
+ $totalItem['bgcolor'] = "#999999";
+ $totalItem['ItemCount'] = $iTotalEvents;
+
+ // Prepent to array
+ array_unshift( $content["report_summary"], $totalItem );
+ }
+ else
+ return ERROR_REPORT_NODATA;
+
+ // Get List of hosts
+ $content["report_computers"] = $this->_streamObj->ConsolidateItemListByField( SYSLOG_HOST, $this->_maxHosts, SYSLOG_HOST, SORTING_ORDER_DESC );
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s, ";
+
+ if ( is_array($content["report_computers"]) && count($content["report_computers"]) > 0 )
+ {
+ // Create plain hosts list for Consolidate function
+ foreach ( $content["report_computers"] as $tmpComputer )
+ $arrHosts[] = $tmpComputer[SYSLOG_HOST];
+ }
+ else
+ return ERROR_REPORT_NODATA;
+
+ // This function will consolidate the Events based per Host!
+ $this->ConsolidateSyslogmessagesPerHost($arrHosts);
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s ";
+ // ---
+ }
+ else
+ return $ret;
+
+ // Return success!
+ return SUCCESS;
+ }
+
+
+ /**
+ * InitReport, empty
+ *
+ */
+ public function InitReport()
+ {
+ // Nothing todo
+ return SUCCESS;
+ }
+
+
+ /**
+ * RemoveReport, empty
+ *
+ */
+ public function RemoveReport()
+ {
+ // Nothing todo
+ return SUCCESS;
+ }
+
+
+ /**
+ * validateLicense, check license code
+ *
+ */
+ public function validateLicense()
+ {
+ // This is a free report!
+ return SUCCESS;
+ }
+
+ /**
+ * Init advanced settings from _customFilters string
+ */
+ public function InitAdvancedSettings()
+ {
+ // Parse and Split _customFilters
+ if ( strlen($this->_customFilters) > 0 )
+ {
+ // First of all split by comma
+ $tmpFilterValues = explode( ",", $this->_customFilters );
+
+ //Loop through mappings
+ foreach ($tmpFilterValues as &$myFilterValue )
+ {
+ // Split subvalues
+ $tmpArray = explode( "=>", $myFilterValue );
+
+ // Set into temporary array
+ $tmpfilterid = trim($tmpArray[0]);
+
+ // Set advanced property
+ if ( isset($this->_arrCustomFilters[$tmpfilterid]) )
+ {
+ // Copy New value first!
+ $szNewVal = trim($tmpArray[1]);
+
+ // Negated logic
+ if (
+ $this->_arrCustomFilters[$tmpfilterid][FILTER_TYPE] == FILTER_TYPE_NUMBER &&
+ !(isset($this->_arrCustomFilters[$tmpfilterid]['MinValue']) && intval($szNewVal) < $this->_arrCustomFilters[$tmpfilterid]['MinValue']) &&
+ !(isset($this->_arrCustomFilters[$tmpfilterid]['MaxValue']) && intval($szNewVal) >= $this->_arrCustomFilters[$tmpfilterid]['MaxValue'])
+ )
+ {
+ if ( $tmpfilterid == '_maxHosts' )
+ $this->_maxHosts = intval($szNewVal);
+ else if ( $tmpfilterid == '_maxMsgsPerHost' )
+ $this->_maxMsgsPerHost = intval($szNewVal);
+ else if ( $tmpfilterid == '_colorThreshold' )
+ $this->_colorThreshold = intval($szNewVal);
+ }
+ else
+ {
+ // Write to debuglog
+ OutputDebugMessage("Failed setting advanced report option property '" . $tmpfilterid . "', value not in value range!", DEBUG_ERROR);
+ }
+ }
+ }
+ }
+ }
+
+
+
+ // --- Private functions...
+ /**
+ * Helper function to consolidate syslogmessages
+ */
+ private function ConsolidateSyslogmessagesPerHost( $arrHosts )
+ {
+ global $content, $gl_starttime;
+
+ // Now open the stream for data processing
+ $res = $this->_streamObj->Open( $this->_arrProperties, true );
+ if ( $res == SUCCESS )
+ {
+ // Set reading direction
+// $this->_streamObj->SetReadDirection( EnumReadDirection::Backward );
+
+ // Init uid helper
+ $uID = UID_UNKNOWN;
+
+ // Set position to BEGIN of FILE
+ $this->_streamObj->Sseek($uID, EnumSeek::BOS, 0);
+
+ // Start reading data
+ $ret = $this->_streamObj->Read($uID, $logArray);
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s ";
+
+ // Found first data record
+ if ( $ret == SUCCESS )
+ {
+ do
+ {
+ // Check if Event from host is in our hosts array
+ if ( in_array($logArray[SYSLOG_HOST], $arrHosts) )
+ {
+ // Set Host Item Basics if not set yet
+ if ( !isset($content["report_consdata"][ $logArray[SYSLOG_HOST] ][SYSLOG_HOST]) )
+ {
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ][SYSLOG_HOST] = $logArray[SYSLOG_HOST];
+ }
+
+ // Calc checksum
+ if ( !isset($logArray[MISC_CHECKSUM]) || $logArray[MISC_CHECKSUM] == 0 )
+ {
+ // Calc crc32 from message, we use this as index
+ $logArray[MISC_CHECKSUM] = crc32( $logArray[SYSLOG_MESSAGE] );
+ $strChecksum = $logArray[MISC_CHECKSUM];
+
+ // TODO, save calculated Checksum into DB!
+ }
+
+ // Check if entry exists in result array
+ if ( isset($content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]) )
+ {
+ // Increment counter and set First/Last Event date
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['ItemCount']++;
+
+ // Set FirstEvent date if necessary!
+ if ( $logArray[SYSLOG_DATE][EVTIME_TIMESTAMP] < $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['FirstOccurrence_Date'][EVTIME_TIMESTAMP] )
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['FirstOccurrence_Date'] = $logArray[SYSLOG_DATE];
+
+ // Set LastEvent date if necessary!
+ if ( $logArray[SYSLOG_DATE][EVTIME_TIMESTAMP] > $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['LastOccurrence_Date'][EVTIME_TIMESTAMP] )
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['LastOccurrence_Date'] = $logArray[SYSLOG_DATE];
+ }
+ else
+ {
+ // Set Basic data entries
+ if (isset( $content['filter_facility_list'][$logArray[SYSLOG_FACILITY]] ))
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_FACILITY] = $logArray[SYSLOG_FACILITY];
+ else
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_FACILITY] = SYSLOG_NOTICE; // Set default in this case
+ if (isset( $content['filter_severity_list'][$logArray[SYSLOG_SEVERITY]] ))
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_SEVERITY] = $logArray[SYSLOG_SEVERITY];
+ else
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_SEVERITY] = SYSLOG_LOCAL0; // Set default in this case
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_SYSLOGTAG] = $logArray[SYSLOG_SYSLOGTAG];
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ][SYSLOG_MESSAGE] = $logArray[SYSLOG_MESSAGE];
+
+ // Set Counter and First/Last Event date
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['ItemCount'] = 1;
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['FirstOccurrence_Date'] = $logArray[SYSLOG_DATE];
+ $content["report_consdata"][ $logArray[SYSLOG_HOST] ]['cons_msgs'][ $strChecksum ]['LastOccurrence_Date'] = $logArray[SYSLOG_DATE];
+ }
+ }
+
+ // Get next data record
+ $ret = $this->_streamObj->ReadNext($uID, $logArray);
+ } while ( $ret == SUCCESS );
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s ";
+
+ // Start Postprocessing
+ foreach( $content["report_consdata"] as &$tmpConsolidatedComputer )
+ {
+ // First use callback function to sort array
+ uasort($tmpConsolidatedComputer['cons_msgs'], "MultiSortArrayByItemCountDesc");
+
+ // Remove entries according to _maxMsgsPerHost
+ if ( count($tmpConsolidatedComputer['cons_msgs']) > $this->_maxMsgsPerHost )
+ {
+ $iDropCount = 0;
+
+ do
+ {
+ array_pop($tmpConsolidatedComputer['cons_msgs']);
+ $iDropCount++;
+ } while ( count($tmpConsolidatedComputer['cons_msgs']) > $this->_maxMsgsPerHost );
+
+ // Append a dummy entry which shows count of all other events
+ if ( $iDropCount > 0 )
+ {
+ $lastEntry[SYSLOG_SEVERITY] = SYSLOG_NOTICE;
+ $lastEntry[SYSLOG_FACILITY] = SYSLOG_LOCAL0;
+ $lastEntry[SYSLOG_SYSLOGTAG] = $content['LN_GEN_ALL_OTHER_EVENTS'];
+ $lastEntry[SYSLOG_MESSAGE] = $content['LN_GEN_ALL_OTHER_EVENTS'];
+ $lastEntry['ItemCount'] = $iDropCount;
+ $lastEntry['FirstOccurrence_Date'] = "-";
+ $lastEntry['LastOccurrence_Date'] = "-";
+
+ $tmpConsolidatedComputer['cons_msgs'][] = $lastEntry;
+ }
+ }
+
+ // TimeStats
+ $nowtime = microtime_float();
+ $content["report_rendertime"] .= number_format($nowtime - $gl_starttime, 2, '.', '') . "s ";
+
+ // PostProcess Events!
+ foreach( $tmpConsolidatedComputer["cons_msgs"] as &$tmpMyEvent )
+ {
+ $tmpMyEvent['FirstOccurrence_Date_Formatted'] = GetFormatedDate( $tmpMyEvent['FirstOccurrence_Date'] );
+ $tmpMyEvent['LastOccurrence_Date_Formatted'] = GetFormatedDate( $tmpMyEvent['LastOccurrence_Date'] );
+ $tmpMyEvent['syslogseverity_text'] = $this->GetSeverityDisplayName($tmpMyEvent['syslogseverity']); //$content['filter_severity_list'][ $tmpMyEvent['syslogseverity'] ]["DisplayName"];
+ $tmpMyEvent['syslogfacility_text'] = $this->GetFacilityDisplayName($tmpMyEvent['syslogfacility']); //$content['filter_facility_list'][ $tmpMyEvent['syslogfacility'] ]["DisplayName"];
+ }
+ }
+ }
+ else
+ return $ret;
+ }
+
+ // Work done!
+ return SUCCESS;
+ }
+
+ /*
+ * Helper function to convert a facility string into a facility number
+ */
+ private function GetFacilityDisplayName($nFacility)
+ {
+ global $content;
+ if ( isset($nFacility) && is_numeric($nFacility) )
+ {
+ foreach ( $content['filter_facility_list'] as $myfacility )
+ {
+ // check if valid!
+ if ( $myfacility['ID'] == $nFacility )
+ return $myfacility['DisplayName'];
+ }
+ }
+
+ // If we reach this point, facility is not valid
+ return $content['LN_GEN_UNKNOWN'];
+ }
+
+ /*
+ * Helper function to convert a severity string into a severity number
+ */
+ private function GetSeverityDisplayName($nSeverity)
+ {
+ global $content;
+ if ( isset($nSeverity) && is_numeric($nSeverity) )
+ {
+ foreach ( $content['filter_severity_list'] as $myseverity )
+ {
+ // check if valid!
+ if ( $myseverity['ID'] == $nSeverity )
+ return $myseverity['DisplayName'];
+ }
+ }
+
+ // If we reach this point, severity is not valid
+ return $content['LN_GEN_UNKNOWN'];
+ }
+
+ /*
+ * Helper function to obtain Severity background color
+ */
+ private function GetSeverityBGColor( $nSeverity )
+ {
+ global $severity_colors;
+
+ if ( isset( $severity_colors[$nSeverity] ) )
+ return $severity_colors[$nSeverity];
+ else
+ return $severity_colors[SYSLOG_NOTICE]; //Default
+ }
+
+ /*
+ * Helper function to obtain Severity background color
+ */
+ private function GetFacilityBGColor( $nFacility )
+ {
+ global $facility_colors;
+
+ if ( isset( $facility_colors[$nFacility] ) )
+ return $facility_colors[$nFacility];
+ else
+ return $facility_colors[SYSLOG_LOCAL0]; //Default
+ }
+
+ //---
+}
+
+?>
\ No newline at end of file
diff --git a/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.css b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.css
new file mode 100644
index 0000000..688a9dd
--- /dev/null
+++ b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.css
@@ -0,0 +1,576 @@
+/* Generell Tag Classes */
+BODY
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ color: #000000;
+ background-color: #f9f9f9;
+
+ scrollbar-face-color: #DEE3E7;
+ scrollbar-highlight-color: #FFFFFF;
+ scrollbar-shadow-color: #DEE3E7;
+ scrollbar-3dlight-color: #D1D7DC;
+ scrollbar-arrow-color: #006699;
+ scrollbar-track-color: #EFEFEF;
+ scrollbar-darkshadow-color: #98AAB1;
+}
+
+TD
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #000000
+}
+
+/* Default Link Classes */
+a:link,a:active,a:visited,a.postlink
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ text-decoration:none;
+
+ background-color: transparent;
+ color:#38140E;
+}
+a:hover
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ color:#CC0000;
+}
+/*---*/
+
+/* Context Link Classes */
+a.contextlink:link,a.contextlink:active,a.contextlink:visited,a.contextlink
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ background-color: transparent;
+ color:#3814BB;
+ text-decoration:underline;
+}
+a.contextlink:hover
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-weight:bold;
+ color:#3844FF;
+ text-decoration:none;
+}
+/*---*/
+
+img
+{
+ border: 0px;
+}
+
+/* Title Classes */
+.title
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight:bold;
+
+ background-color: #C6B097;
+ color: #032D5D;
+
+ border: 1px solid;
+ border-color: #ACBED6 #3B679B #3B679B #ACBED6;
+ height: 20px;
+ text-align:center;
+ vertical-align:middle;
+}
+A.title, A.title:active, A.title:visited
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight:bold;
+
+ COLOR: #ED9D10;
+ TEXT-DECORATION: none;
+}
+A.title:hover
+{
+ COLOR: #982D00;
+ TEXT-DECORATION: none;
+}
+.titleSecond
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight:bold;
+
+ background-color: #E3D2AE;
+ background-image: url(images/bg_4.png);
+ background-repeat: repeat-x;
+ color: #1A3745;
+
+ height: 18px;
+ text-align:center;
+ vertical-align:middle;
+}
+
+
+/* Default Font Classes */
+font
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+}
+
+/* Table / Border Classes */
+.table_with_border
+{
+ background-color:#EEF2F6;
+ border:1px solid;
+ border-color: #CCCCCC #000000 #000000 #CCCCCC;
+}
+
+.table_with_border_second
+{
+ background-color:#D5E0E7;
+ border:1px solid;
+ border-color: #CCCCCC #000000 #000000 #CCCCCC;
+}
+
+.table_with_border_light
+{
+ background-color:#CCCCCC;
+ border:1px #AAAAAA solid;
+}
+
+.with_border
+{
+ text-indent:3px;
+ background-color:#CCCCCC;
+ border:1px #AAAAAA solid;
+}
+
+.with_border_alternate
+{
+ text-indent:3px;
+ background-color:#CCCCCC;
+ border:1px #AAAAAA ridge;
+}
+
+.mainheader
+{
+ border:1px solid;
+ background-color:#C7CBD1;
+ border-color: #44617D #203040 #203040 #44617D;
+}
+
+.mainfooter
+{
+ height: 20px;
+ background-color:#DDDDDD;
+ border-top: #97A8B9 1px solid;
+ border-bottom: #6592BD 1px solid;
+}
+
+.imageborder
+{
+ border:1px solid;
+ border-color: #44617D #203040 #203040 #44617D;
+}
+
+/* Cells for listening */
+.line0
+{
+ font-size: 7pt;
+ color: #000000;
+ background-color: #DDDDDD;
+}
+.line0:hover
+{
+ background-color:#F9F9F9;
+}
+
+.line1
+{
+ font-size: 7pt;
+ color: #000000;
+ background-color: #EEEEEE;
+}
+.line1:hover
+{
+ background-color:#F9F9F9;
+}
+
+.line2
+{
+ font-size: 7pt;
+ color: #000000;
+ background-color: #F5F5F5;
+}
+.line2:hover
+{
+ background-color:#F9F9F9;
+}
+.tableBackground
+{
+ font-size: 10px;
+ color: #000000;
+ background-color: #F5F5F5;
+}
+
+.lineColouredWhite, .lineColouredWhite:hover, a.lineColouredWhite
+{
+ font-size: 10px;
+ color: #FFFFFF;
+}
+.lineColouredBlack, .lineColouredBlack:hover, a.lineColouredBlack
+{
+ font-size: 10px;
+ color: #000000;
+}
+
+/* TOP Menu Classes */
+.topmenu1begin
+{
+ height: 16px;
+ border:0px;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ background-color: #4E6485;
+}
+.topmenu1
+{
+ height: 16px;
+ border:1px ridge;
+ border-color: #79AABE #09506C #79AABE #79AABE;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ font: 10px Verdana, Arial, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #4E6485;
+}
+.topmenu1:hover
+{
+ color: #FFFF99;
+ border:1px inset;
+ border-color: #79AABE #09506C #79AABE #79AABE;
+ background-color: #6A88B8;
+ text-decoration: none;
+}
+.topmenuend
+{
+ height: 16px;
+ font: 10px Verdana, Arial, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #4E6485;
+}
+.topmenuextra
+{
+ height: 16px;
+ font: 10px Verdana, Arial, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #B8D4E0;
+}
+.topmenu2begin
+{
+ height: 16px;
+ border:0px;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ background-color: #7A92A6;
+}
+.topmenu2
+{
+ height: 16px;
+ border:1px ridge;
+ border-color: #BDEEFF #79AABE #09506C #09506C;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ font: 10px Verdana, Arial, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #7A92A6;
+}
+.topmenu2:hover
+{
+ color: #FFFF99;
+ border:1px inset;
+ border-color: #BDEEFF #79AABE #09506C #09506C;
+ background-color: #6A88B8;
+ text-decoration: none;
+}
+.topmenu2_link, A.topmenu2_link
+{
+ color: #FFDD22;
+}
+.topmenu2_link:hover, A.topmenu2_link:hover
+{
+ color: #FFFF99;
+ text-decoration: none;
+}
+.topmenu2end
+{
+ height: 16px;
+ border:1px inset;
+ border-color: #BDEEFF #79AABE #09506C #09506C;
+ font: 10px Verdana, Arial, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #7A92A6;
+}
+.topmenu3begin
+{
+ height: 16px;
+ border:0px;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ background-color: #D4DAE3;
+}
+.topmenu3
+{
+ height: 16px;
+ border:1px ridge;
+ border-color: #BDEEFF #79AABE #09506C #09506C;
+ padding: 2px 2px 0px 2px;
+ vertical-align: middle;
+
+ font: 10px Arial, Verdana, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #D4DAE3;
+}
+.topmenu3:hover
+{
+ color: #FFFF99;
+ border:1px inset;
+ border-color: #BDEEFF #79AABE #09506C #09506C;
+ background-color: #ACCBFD;
+ text-decoration: none;
+}
+.topmenu3end
+{
+ height: 16px;
+ font: 10px Arial, Verdana, Helvetica, sans-serif;
+ color: #FFFFFF;
+ background-color: #D4DAE3;
+}
+.topmenu1_link, a.topmenu1_link, a.topmenu1_link:visited, .topmenu2_link, a.topmenu2_link, a.topmenu2_link:visited, .topmenu3_link, a.topmenu3_link, a.topmenu3_link:visited
+{
+ vertical-align: middle;
+ height: 16px;
+
+ color: #FFDD22;
+ font-weight:bold;
+ text-decoration: none;
+}
+.topmenu1_link:hover, .topmenu2_link:hover, .topmenu3_link:hover
+{
+ vertical-align: middle;
+
+ color: #FFFF99;
+ font-weight:bold;
+ text-decoration: none;
+}
+
+
+
+/* Cell Columns */
+.cellmenu1
+{
+ border:1px ridge;
+ border-color: #79AABE #09506C #09506C #79AABE;
+
+ text-indent:0px;
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight:bold;
+
+ background-color: #2E79A0;
+
+ color: #FFFFFF;
+}
+.cellmenu1_naked
+{
+ border:1px ridge;
+ border-color: #79AABE #09506C #09506C #79AABE;
+ background-color: #2E79A0;
+
+ text-indent:0px;
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight:bold;
+
+ color: #FFFFFF;
+}
+.cellmenu1:hover .cellmenu1_naked:hover
+{
+ color: #FFFF99;
+ text-decoration: none;
+}
+A.cellmenu1_link
+{
+ color: #FFFF55;
+ text-decoration: underline;
+}
+A.cellmenu1_link:hover
+{
+ color: #FFBB55;
+ text-decoration: none;
+}
+
+.cellmenu2
+{
+ border:1px inset;
+ border-color: #79AABE #09506C #09506C #79AABE;
+
+ text-indent:0px;
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight:bold;
+
+ background-color: #9FDAF1;
+ color: #393327;
+}
+.cellmenu2_naked
+{
+ text-indent:0px;
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight:bold;
+
+ color: #393327;
+ border:1px inset;
+ border-color: #79AABE #09506C #09506C #79AABE;
+ background-color: #9FDAF1;
+}
+
+.cellmenu2:hover, .cellmenu2_naked:hover
+{
+ color: #A31D32;
+ text-decoration: none;
+}
+
+/* Usefull Text Classes */
+.ErrorMsg
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+
+ COLOR: #FF0000;
+}
+.PriorityEmergency
+{
+ color: #FFFFFF;
+ background-color: #ff4444;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityAlert
+{
+ color: #FFFFFF;
+ background-color: #dd00dd;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityCrit
+{
+ color: #FFFFFF;
+ background-color: #dd9900;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityError
+{
+ color: #FFFFFF;
+ background-color: #CC0000;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityWarning
+{
+ color: #FFFFFF;
+ background-color: #FFAA00;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityNotice
+{
+ color: #FFFFFF;
+ background-color: #66CC33;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityInfo
+{
+ color: #000000;
+ background-color: #ABF1FF;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+.PriorityDebug
+{
+ color: #FFFFFF;
+ background-color: #3333ff;
+ border-top: black 1px solid;
+ border-bottom: black 1px solid;
+ border-right: gray 1px solid;
+}
+
+/* Form elements */
+select, input, button, textarea
+{
+ background-color: #E8E7E2;
+ color:#000000;
+
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight: bold;
+
+ border: 1px solid;
+ border-color: #233B51 #124A7C #124A7C #233B51;
+}
+
+.SearchFormControl
+{
+ height: 20px;
+ margin: 2px;
+ background-color: #E8E7E2;
+ color:#000000;
+
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight: bold;
+
+ border: 1px solid;
+ border-color: #233B51 #124A7C #124A7C #233B51;
+}
+
+.SearchFormTextbox
+{
+ height: 20px;
+ margin: 2px;
+ background-color: #E8E7E2;
+ color:#000000;
+
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight: bold;
+
+ border: 1px solid;
+ border-color: #233B51 #124A7C #124A7C #233B51;
+}
+
+.highlighted
+{
+ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+ font-weight: bold;
+
+ color: #BB0000
+}
+
diff --git a/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.lang.en.php b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.lang.en.php
new file mode 100644
index 0000000..2215c88
--- /dev/null
+++ b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.lang.en.php
@@ -0,0 +1,58 @@
+ www.phplogcon.org <-
+ * -----------------------------------------------------------------
+ *
+ * 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 .
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this
+ * distribution.
+ *********************************************************************
+*/
+global $content;
+
+// Global Stuff
+$content['ln_report_event_summary'] = "Syslog Summary";
+$content['ln_report_computer_summary'] = "Computer Summary";
+$content['ln_report_consolidation'] = "Syslogmessages consolidated per Host";
+$content['ln_report_summary'] = "Report Summary";
+$content['ln_report_number'] = "No.";
+$content['ln_report_firstoccurrence'] = "First Occurrence";
+$content['ln_report_lastoccurrence'] = "Last Occurrence";
+$content['ln_report_process'] = "Process";
+$content['ln_report_facility'] = "Facility";
+$content['ln_report_severity'] = "Severity";
+$content['ln_report_syslogtag'] = "Syslogtag";
+$content['ln_report_description'] = "Description";
+$content['ln_report_count'] = "Count";
+$content['ln_report_maxHosts_displayname'] = "Max hosts";
+$content['ln_report_maxHosts_description'] = "The maximum number of hosts which will be displayed.";
+$content['ln_report_maxMsgsPerHost_displayname'] = "Max Syslogmessages per host";
+$content['ln_report_maxMsgsPerHost_description'] = "The maximum number of syslogmessages displayed per host.";
+$content['ln_report_colorThreshold_displayname'] = "Counter Threshold";
+$content['ln_report_colorThreshold_description'] = "If the amount of consolidated events is higher then this threshold, the countfield will be marked red.";
+$content['ln_report_unknown_facility'] = "Unknown Facility";
+$content['ln_report_unknown_severity'] = "Unknown Severity";
+$content['ln_report_'] = "";
+$content['ln_report_'] = "";
+$content['ln_report_'] = "";
+$content['ln_report_'] = "";
+$content['ln_report_'] = "";
+
+?>
\ No newline at end of file
diff --git a/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.html b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.html
new file mode 100644
index 0000000..ac43e2e
--- /dev/null
+++ b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.html
@@ -0,0 +1,157 @@
+
+
+
+ {report_title}
+
+
+
+
+
+
+
+
+ {report_title} |
+
+
+
+ {report_comment} |
+
+
+
+
+
+
+
+
+
+
+
+
+ {FilterDisplay} |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+ {ln_report_summary} |
+
+
+
+
+
+
+
+
+
+
+
+
+ {ItemCount} |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ {ln_report_consolidation} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {ZAEHLER} |
+ {FirstOccurrence_Date_Formatted} |
+ {FirstOccurrence_Date_Formatted} |
+ {syslogseverity_text} |
+ {syslogfacility_text} |
+ {syslogtag} |
+ {msg} |
+
+ {ItemCount} |
+
+
+ {ItemCount} |
+
+
+
+
+
+
+
+
+
+
+
+
+ Made by Adiscon GmbH (2009) |
+
+ Report Version {report_version}
+ |
+
+ Partners:
+ |
+
+ Rsyslog |
+ WinSyslog
+ |
+
+
+
+ {LN_REPORT_FOOTER_ENDERED}: {report_rendertime}
+ | {LN_FOOTER_DBQUERIES}: {TOTALQUERIES}
+
+ |
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.pdf b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.pdf
new file mode 100644
index 0000000..bbf24eb
--- /dev/null
+++ b/src/classes/reports/report.syslog.syslogsummary/report.syslog.syslogsummary.template.pdf
@@ -0,0 +1,120 @@
+
+
+
+ {report_title}
+
+
+
+
+{report_title}
+{report_comment}
+
+
+
+
+
+
+
+
+
+
+ {FilterDisplay} |
+
+
+
+
+
+
+
+{ln_report_summary}
+
+
+
+
+
+
+
+
+ {ItemCount} |
+
+
+
+
+
+
+
+
+
+
+{ln_report_consolidation}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {ZAEHLER} |
+ {FirstOccurrence_Date_Formatted} |
+ {FirstOccurrence_Date_Formatted} |
+ {syslogseverity_text} |
+ {syslogfacility_text} |
+ {syslogtag} |
+
+ {ItemCount} |
+
+
+ {ItemCount} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made by Adiscon GmbH (2009) Report Version {report_version} |
+ Partners: Rsyslog | WinSyslog |
+
+
+
+
+
+ {LN_REPORT_FOOTER_ENDERED}: {report_rendertime}
+ | {LN_FOOTER_DBQUERIES}: {TOTALQUERIES}
+
+ |
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lang/de/main.php b/src/lang/de/main.php
index a82db7c..52ca0c0 100644
--- a/src/lang/de/main.php
+++ b/src/lang/de/main.php
@@ -43,64 +43,65 @@ $content['LN_GEN_PAGE'] = "Seite";
$content['LN_GEN_PREDEFINEDSEARCHES'] = "Vordefinierte Suchkriterien";
$content['LN_GEN_SOURCE_DISK'] = "Datei";
$content['LN_GEN_SOURCE_DB'] = "Datenbank";
- $content['LN_GEN_RECORDSPERPAGE'] = "Zeilen pro Seite";
- $content['LN_GEN_PRECONFIGURED'] = "Vorkonfiguriert";
- $content['LN_GEN_AVAILABLESEARCHES'] = "Verfügbare Suchabfragen";
- $content['LN_GEN_DB_MYSQL'] = "MySQL Server";
- $content['LN_GEN_DB_MSSQL'] = "Microsoft SQL Server";
- $content['LN_GEN_DB_ODBC'] = "ODBC Datenbank Quelle";
- $content['LN_GEN_DB_PGSQL'] = "PostgreSQL";
- $content['LN_GEN_DB_OCI'] = "Oracle Call Interface";
- $content['LN_GEN_DB_DB2'] = " IBM DB2";
- $content['LN_GEN_DB_FIREBIRD'] = "Firebird/Interbase 6";
- $content['LN_GEN_DB_INFORMIX'] = "IBM Informix Dynamic Server";
- $content['LN_GEN_DB_SQLITE'] = "SQLite 2";
- $content['LN_GEN_SELECTVIEW'] = "Anzeige auswählen";
- $content['LN_GEN_CRITERROR_UNKNOWNTYPE'] = "Der Quell-Typ '%1' wird aktuell von phpLogCon nicht unterst&uum;tzt. Dies ist ein kritischer Fehler, bitte passen Sie Ihre Konfiguration an.";
- $content['LN_GEN_ERRORRETURNPREV'] = "Bitte klicken Sie hier, um auf die vorhergehende Seite zurückzukehren.";
- $content['LN_GEN_ERRORDETAILS'] = "Fehler Details:";
- $content['LN_SOURCES_ERROR_WITHINSOURCE'] = "Die Überprüfung der Quelle '%1' endete mit dem Fehler: '%2'";
- $content['LN_SOURCES_ERROR_EXTRAMSG'] = "Extra Fehler Details:
%1";
- $content['LN_ERROR_NORECORDS'] = "Es wurden keine syslog-Einträge gefunden.";
- $content['LN_ERROR_FILE_NOT_FOUND'] = "Die Syslog Datei konnte nicht gefunden werden";
- $content['LN_ERROR_FILE_NOT_READABLE'] = "Die Syslog Datei ist nicht lesbar, lesender Zugriff ist evtl. nicht gestattet";
- $content['LN_ERROR_UNKNOWN'] = "Ein unbekannter oder unerwarteter Fehler ist aufgetreten. (Fehler Code '%1')";
- $content['LN_ERROR_FILE_EOF'] = "Ende der Datei erreicht";
- $content['LN_ERROR_FILE_BOF'] = "Anfang der Datei erreicht";
- $content['LN_ERROR_FILE_CANT_CLOSE'] = "Das Schliessen der Datei ist nicht möglich";
- $content['LN_ERROR_UNDEFINED'] = "Unerwarteter Fehler";
- $content['LN_ERROR_EOS'] = "Ende des Datenstroms erreicht";
- $content['LN_ERROR_FILTER_NOT_MATCH'] = "Der Filter ergab keine Übereinstimmung im Ergbenis";
- $content['LN_ERROR_DB_CONNECTFAILED'] = "Die Verbindung zum Datenbank Server ist fehlgeschlagen";
- $content['LN_ERROR_DB_CANNOTSELECTDB'] = "Die in der Konfiguration angegeben Datenbank konnte nicht gefunden werden";
- $content['LN_ERROR_DB_QUERYFAILED'] = "Die Datenbank-Abfrage konnte nicht ausgeführt werden";
- $content['LN_ERROR_DB_NOPROPERTIES'] = "Keine Einstellungen zur Datenbank gefunden";
- $content['LN_ERROR_DB_INVALIDDBMAPPING'] = "Ungültige Datenfeld Zuordnung";
- $content['LN_ERROR_DB_INVALIDDBDRIVER'] = "Ungültiger Datenbank Treiber ausgewählt";
- $content['LN_ERROR_DB_TABLENOTFOUND'] = "Die angegebene Tabelle konnte nicht gefunden werden, evtl. ist der Eintrag falsch geschrieben oder Gross- und Kleinschreibung wurden nicht beachtet.";
- $content['LN_ERROR_DB_DBFIELDNOTFOUND'] = "Die Datenbankfeldzuordnung ist fehlerhaft, es konnte mindestens ein Feld nicht gefunden werden.";
- $content['LN_GEN_SELECTEXPORT'] = "> Exportformat auswählen <";
- $content['LN_GEN_EXPORT_CVS'] = "CVS (Komma unterteilt)";
- $content['LN_GEN_EXPORT_XML'] = "XML";
- $content['LN_GEN_EXPORT_PDF'] = "PDF";
- $content['LN_GEN_ERROR_EXPORING'] = "Fehler beim exportieren der Daten";
- $content['LN_GEN_ERROR_INVALIDEXPORTTYPE'] = "Ungültiges Export Format ausgewähtl, oder andere Parameter sind ungültig.";
- $content['LN_GEN_ERROR_SOURCENOTFOUND'] = "Die Quelle mit der ID '%1' konnte nicht gefunden werden.";
- $content['LN_GEN_MOREINFORMATION'] = "Mehr Informationen";
- $content['LN_FOOTER_PAGERENDERED'] = "Siete gerenderet in";
- $content['LN_FOOTER_DBQUERIES'] = "DB Abfragen";
- $content['LN_FOOTER_GZIPENABLED'] = "GZIP ermöglichen";
- $content['LN_FOOTER_SCRIPTTIMEOUT'] = "Max. Skript Laufzeit";
- $content['LN_FOOTER_SECONDS'] = "Sekunden";
- $content['LN_WARNING_LOGSTREAMTITLE'] = "Log-Datenstrom Warnung";
- $content['LN_WARNING_LOGSTREAMDISK_TIMEOUT'] = "Beim lesen des Log-Datenstroms, hat das PHP-Skript die max. Laufzeit erreicht und wurde abgebrochen.
Falls Sie dennoch die Ausführung ermöglichen wollen, bitte erhöhen Sie die max. phpLogCon Skript Laufzeit in Ihrer config.php. Falls das Benutzersystem installiert ist, können Sie dies im Bereich Administration einstellen.";
- $content['LN_WARNING_DBUPGRADE'] = "Datenbank Upgrade erforderlich";
- $content['LN_WARNING_DBUPGRADE_TEXT'] = "Die aktuell installierte Datenbankversion ist '%1'.
Ein Update auf Version '%2' ist verfügbar.";
- $content['LN_ERROR_REDIRECTABORTED'] = 'Automatiche Rückkehr zur Seite page wurde abgebrochen, da ein interner Fehler aufgetrete ist. Bitte beachten Sie die weiteren Informationen zu diesem Fehler über dieser Meldung und/oder nehmen Sie Kontakt zum Support-Forum auf, falls Sie Hilfe benötigen.';
- $content['LN_DEBUGLEVEL'] = "Debug Level";
- $content['LN_DEBUGMESSAGE'] = "Debug Meldung";
- $content['LN_GEN_REPORT_OUTPUT_HTML'] = "HTML Format";
- $content['LN_GEN_REPORT_OUTPUT_PDF'] = "PDF Format";
+$content['LN_GEN_RECORDSPERPAGE'] = "Zeilen pro Seite";
+$content['LN_GEN_PRECONFIGURED'] = "Vorkonfiguriert";
+$content['LN_GEN_AVAILABLESEARCHES'] = "Verfügbare Suchabfragen";
+$content['LN_GEN_DB_MYSQL'] = "MySQL Server";
+$content['LN_GEN_DB_MSSQL'] = "Microsoft SQL Server";
+$content['LN_GEN_DB_ODBC'] = "ODBC Datenbank Quelle";
+$content['LN_GEN_DB_PGSQL'] = "PostgreSQL";
+$content['LN_GEN_DB_OCI'] = "Oracle Call Interface";
+$content['LN_GEN_DB_DB2'] = " IBM DB2";
+$content['LN_GEN_DB_FIREBIRD'] = "Firebird/Interbase 6";
+$content['LN_GEN_DB_INFORMIX'] = "IBM Informix Dynamic Server";
+$content['LN_GEN_DB_SQLITE'] = "SQLite 2";
+$content['LN_GEN_SELECTVIEW'] = "Anzeige auswählen";
+$content['LN_GEN_CRITERROR_UNKNOWNTYPE'] = "Der Quell-Typ '%1' wird aktuell von phpLogCon nicht unterst&uum;tzt. Dies ist ein kritischer Fehler, bitte passen Sie Ihre Konfiguration an.";
+$content['LN_GEN_ERRORRETURNPREV'] = "Bitte klicken Sie hier, um auf die vorhergehende Seite zurückzukehren.";
+$content['LN_GEN_ERRORDETAILS'] = "Fehler Details:";
+$content['LN_SOURCES_ERROR_WITHINSOURCE'] = "Die Überprüfung der Quelle '%1' endete mit dem Fehler: '%2'";
+$content['LN_SOURCES_ERROR_EXTRAMSG'] = "Extra Fehler Details:
%1";
+$content['LN_ERROR_NORECORDS'] = "Es wurden keine syslog-Einträge gefunden.";
+$content['LN_ERROR_FILE_NOT_FOUND'] = "Die Syslog Datei konnte nicht gefunden werden";
+$content['LN_ERROR_FILE_NOT_READABLE'] = "Die Syslog Datei ist nicht lesbar, lesender Zugriff ist evtl. nicht gestattet";
+$content['LN_ERROR_UNKNOWN'] = "Ein unbekannter oder unerwarteter Fehler ist aufgetreten. (Fehler Code '%1')";
+$content['LN_ERROR_FILE_EOF'] = "Ende der Datei erreicht";
+$content['LN_ERROR_FILE_BOF'] = "Anfang der Datei erreicht";
+$content['LN_ERROR_FILE_CANT_CLOSE'] = "Das Schliessen der Datei ist nicht möglich";
+$content['LN_ERROR_UNDEFINED'] = "Unerwarteter Fehler";
+$content['LN_ERROR_EOS'] = "Ende des Datenstroms erreicht";
+$content['LN_ERROR_FILTER_NOT_MATCH'] = "Der Filter ergab keine Übereinstimmung im Ergbenis";
+$content['LN_ERROR_DB_CONNECTFAILED'] = "Die Verbindung zum Datenbank Server ist fehlgeschlagen";
+$content['LN_ERROR_DB_CANNOTSELECTDB'] = "Die in der Konfiguration angegeben Datenbank konnte nicht gefunden werden";
+$content['LN_ERROR_DB_QUERYFAILED'] = "Die Datenbank-Abfrage konnte nicht ausgeführt werden";
+$content['LN_ERROR_DB_NOPROPERTIES'] = "Keine Einstellungen zur Datenbank gefunden";
+$content['LN_ERROR_DB_INVALIDDBMAPPING'] = "Ungültige Datenfeld Zuordnung";
+$content['LN_ERROR_DB_INVALIDDBDRIVER'] = "Ungültiger Datenbank Treiber ausgewählt";
+$content['LN_ERROR_DB_TABLENOTFOUND'] = "Die angegebene Tabelle konnte nicht gefunden werden, evtl. ist der Eintrag falsch geschrieben oder Gross- und Kleinschreibung wurden nicht beachtet.";
+$content['LN_ERROR_DB_DBFIELDNOTFOUND'] = "Die Datenbankfeldzuordnung ist fehlerhaft, es konnte mindestens ein Feld nicht gefunden werden.";
+$content['LN_GEN_SELECTEXPORT'] = "> Exportformat auswählen <";
+$content['LN_GEN_EXPORT_CVS'] = "CVS (Komma unterteilt)";
+$content['LN_GEN_EXPORT_XML'] = "XML";
+$content['LN_GEN_EXPORT_PDF'] = "PDF";
+$content['LN_GEN_ERROR_EXPORING'] = "Fehler beim exportieren der Daten";
+$content['LN_GEN_ERROR_INVALIDEXPORTTYPE'] = "Ungültiges Export Format ausgewähtl, oder andere Parameter sind ungültig.";
+$content['LN_GEN_ERROR_SOURCENOTFOUND'] = "Die Quelle mit der ID '%1' konnte nicht gefunden werden.";
+$content['LN_GEN_MOREINFORMATION'] = "Mehr Informationen";
+$content['LN_FOOTER_PAGERENDERED'] = "Siete gerenderet in";
+$content['LN_FOOTER_DBQUERIES'] = "DB Abfragen";
+$content['LN_FOOTER_GZIPENABLED'] = "GZIP ermöglichen";
+$content['LN_FOOTER_SCRIPTTIMEOUT'] = "Max. Skript Laufzeit";
+$content['LN_FOOTER_SECONDS'] = "Sekunden";
+$content['LN_WARNING_LOGSTREAMTITLE'] = "Log-Datenstrom Warnung";
+$content['LN_WARNING_LOGSTREAMDISK_TIMEOUT'] = "Beim lesen des Log-Datenstroms, hat das PHP-Skript die max. Laufzeit erreicht und wurde abgebrochen.
Falls Sie dennoch die Ausführung ermöglichen wollen, bitte erhöhen Sie die max. phpLogCon Skript Laufzeit in Ihrer config.php. Falls das Benutzersystem installiert ist, können Sie dies im Bereich Administration einstellen.";
+$content['LN_WARNING_DBUPGRADE'] = "Datenbank Upgrade erforderlich";
+$content['LN_WARNING_DBUPGRADE_TEXT'] = "Die aktuell installierte Datenbankversion ist '%1'.
Ein Update auf Version '%2' ist verfügbar.";
+$content['LN_ERROR_REDIRECTABORTED'] = 'Automatiche Rückkehr zur Seite page wurde abgebrochen, da ein interner Fehler aufgetrete ist. Bitte beachten Sie die weiteren Informationen zu diesem Fehler über dieser Meldung und/oder nehmen Sie Kontakt zum Support-Forum auf, falls Sie Hilfe benötigen.';
+$content['LN_DEBUGLEVEL'] = "Debug Level";
+$content['LN_DEBUGMESSAGE'] = "Debug Meldung";
+$content['LN_GEN_REPORT_OUTPUT_HTML'] = "HTML Format";
+$content['LN_GEN_REPORT_OUTPUT_PDF'] = "PDF Format";
+$content['LN_GEN_UNKNOWN'] = "Unbekannt";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Suchen";
diff --git a/src/lang/en/admin.php b/src/lang/en/admin.php
index 366611f..52e6e37 100644
--- a/src/lang/en/admin.php
+++ b/src/lang/en/admin.php
@@ -444,7 +444,7 @@ $content['LN_REPORTS_INSTALLED'] = "Installed";
$content['LN_REPORTS_NOTINSTALLED'] = "Not installed";
$content['LN_REPORTS_DOWNLOAD'] = "Download Link";
$content['LN_REPORTS_SAMPLELINK'] = "Report Sample";
-$content['LN_REPORTS_'] = "";
+$content['LN_REPORTS_DETAILSFOR'] = "Details for '%1' report";
$content['LN_REPORTS_'] = "";
$content['LN_REPORTS_'] = "";
$content['LN_REPORTS_'] = "";
diff --git a/src/lang/en/main.php b/src/lang/en/main.php
index 12866cf..7701c59 100644
--- a/src/lang/en/main.php
+++ b/src/lang/en/main.php
@@ -107,6 +107,7 @@ $content['LN_ERROR_DB_DBFIELDNOTFOUND'] = "Database Field mapping for at least o
$content['LN_GEN_REPORT_TARGET_STDOUT'] = "Direct Output";
$content['LN_GEN_REPORT_TARGET_FILE'] = "Save into File";
$content['LN_GEN_REPORT_TARGET_EMAIL'] = "Send as Email";
+$content['LN_GEN_UNKNOWN'] = "Unknown";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Search";
diff --git a/src/templates/admin/admin_reports.html b/src/templates/admin/admin_reports.html
index 13529ed..27d1726 100644
--- a/src/templates/admin/admin_reports.html
+++ b/src/templates/admin/admin_reports.html
@@ -26,6 +26,9 @@
+
+
+