From 220bb93ba4c0f5142b22905c94add1012cd8caf0 Mon Sep 17 00:00:00 2001 From: vogelor <vogelor@ispconfig3> Date: Fri, 30 Apr 2010 13:51:13 -0400 Subject: [PATCH] The Monitor now also shows the distribution and the version --- install/lib/install.lib.php | 4 interface/web/monitor/show_sys_state.php | 32 server/mods-available/monitor_core_module.inc.php | 2246 ++++++++++++++++++++++++++++++--------------------------- 3 files changed, 1,203 insertions(+), 1,079 deletions(-) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index d742337..6e9379f 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -56,6 +56,10 @@ $FILE = realpath('../install.php'); //** Get distribution identifier +//** IMPORTANT! +// This is the same code as in /server/mods-available/monitor_core_module.inc.php +// So if you change it here, you also have to change it in +// /server/mods-available/monitor_core_module.inc.php! function get_distname() { $distname = ''; diff --git a/interface/web/monitor/show_sys_state.php b/interface/web/monitor/show_sys_state.php index cbe1c61..405492c 100644 --- a/interface/web/monitor/show_sys_state.php +++ b/interface/web/monitor/show_sys_state.php @@ -1,6 +1,6 @@ <?php /* -Copyright (c) 2007-2008, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com +Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -135,23 +135,31 @@ * get all monitoring-data from the server als process then * (count them and set the server-state) */ - $records = $app->db->queryAllRecords("SELECT DISTINCT type FROM monitor_data WHERE server_id = " . $serverId); - foreach($records as $record){ - _processDbState($record['type'], $serverId, &$serverState, &$messages); + $records = $app->db->queryAllRecords("SELECT DISTINCT type, data FROM monitor_data WHERE server_id = " . $serverId); + $osData = null; + foreach($records as $record){ + /* get the state from the db-data */ + _processDbState($record['type'], $serverId, &$serverState, &$messages); + /* if we have the os-info, get it */ + if ($record['type'] == 'os_info') $osData = unserialize($record['data']); } $res .= '<div class="systemmonitor-state state-'.$serverState.'">'; $res .= '<div class="systemmonitor-device device-server">'; $res .= '<div class="systemmonitor-content icons32 ico-'.$serverState.'">'; - $res .= $app->lng("monitor_serverstate_server_txt") . ': ' . $serverName . '<br />'; - $res .= $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . '<br />'; + $res .= $app->lng("monitor_serverstate_server_txt") . ': ' . $serverName; + if ($osData != null){ + $res .= ' (' . $osData['name'] . ' ' . $osData['version'] . ')'; + } + $res .= '<br />'; + $res .= $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . ' ('; // $res .= sizeof($messages[$app->lng("monitor_serverstate_listok_txt")]) . ' ok | '; - $res .= sizeof($messages[$app->lng("monitor_serverstate_listunknown_txt")]) . ' ' . $app->lng("monitor_serverstate_unknown_txt") . ' | '; - $res .= sizeof($messages[$app->lng("monitor_serverstate_listinfo_txt")]) . ' ' . $app->lng("monitor_serverstate_info_txt") . ' | '; - $res .= sizeof($messages[$app->lng("monitor_serverstate_listwarning_txt")]) . ' ' . $app->lng("monitor_serverstate_warning_txt") . ' | '; - $res .= sizeof($messages[$app->lng("monitor_serverstate_listcritical_txt")]) . ' ' . $app->lng("monitor_serverstate_critical_txt") . ' | '; - $res .= sizeof($messages[$app->lng("monitor_serverstate_listerror_txt")]) . ' ' . $app->lng("monitor_serverstate_error_txt") . '<br />'; - $res .= '<br />'; + $res .= sizeof($messages[$app->lng("monitor_serverstate_listunknown_txt")]) . ' ' . $app->lng("monitor_serverstate_unknown_txt") . ', '; + $res .= sizeof($messages[$app->lng("monitor_serverstate_listinfo_txt")]) . ' ' . $app->lng("monitor_serverstate_info_txt") . ', '; + $res .= sizeof($messages[$app->lng("monitor_serverstate_listwarning_txt")]) . ' ' . $app->lng("monitor_serverstate_warning_txt") . ', '; + $res .= sizeof($messages[$app->lng("monitor_serverstate_listcritical_txt")]) . ' ' . $app->lng("monitor_serverstate_critical_txt") . ', '; + $res .= sizeof($messages[$app->lng("monitor_serverstate_listerror_txt")]) . ' ' . $app->lng("monitor_serverstate_error_txt") . ''; + $res .= ')<br />'; if ($showAll){ /* diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php index 0e3e6df..7f15626 100644 --- a/server/mods-available/monitor_core_module.inc.php +++ b/server/mods-available/monitor_core_module.inc.php @@ -1,6 +1,6 @@ <?php /* -Copyright (c) 2007-2008, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com +Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -28,37 +28,36 @@ */ class monitor_core_module { - /* TODO: this should be a config - var instead of a "constant" */ - var $interval = 5; // do the monitoring every 5 minutes + var $interval = 5; // do the monitoring every 5 minutes - var $module_name = 'monitor_core_module'; - var $class_name = 'monitor_core_module'; - /* No actions at this time. maybe later... */ - var $actions_available = array(); + var $module_name = 'monitor_core_module'; + var $class_name = 'monitor_core_module'; + /* No actions at this time. maybe later... */ + var $actions_available = array(); - //* This function is called during ispconfig installation to determine + //* This function is called during ispconfig installation to determine // if a symlink shall be created for this plugin. function onInstall() { global $conf; - + return true; - + } - + /* This function is called when the module is loaded - */ - function onLoad() { - global $app; + */ + function onLoad() { + global $app; - /* + /* Annonce the actions that where provided by this module, so plugins can register on them. - */ - /* none at them moment */ - //$app->plugins->announceEvents($this->module_name,$this->actions_available); + */ + /* none at them moment */ + //$app->plugins->announceEvents($this->module_name,$this->actions_available); - /* + /* As we want to get notified of any changes on several database tables, we register for them. @@ -66,95 +65,208 @@ to be executed when a record for the table "dbtable" is processed in the sys_datalog. "classname" is the name of the class that contains the function functionname. - */ - /* none at them moment */ - //$app->modules->registerTableHook('mail_access','mail_module','process'); + */ + /* none at them moment */ + //$app->modules->registerTableHook('mail_access','mail_module','process'); - /* + /* Do the monitor every n minutes and write the result in the db - */ - $min = date('i'); - if (($min % $this->interval) == 0) - { - $this->doMonitor(); - } - } + */ + $min = date('i'); + if (($min % $this->interval) == 0) { + $this->doMonitor(); + } + } - /* + /* This function is called when a change in one of the registered tables is detected. The function then raises the events for the plugins. - */ - function process($tablename, $action, $data) { - // global $app; - // - // switch ($tablename) { - // case 'mail_access': - // if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data); - // if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data); - // if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data); - // break; - // } // end switch - } // end function + */ + function process($tablename, $action, $data) { + // global $app; + // + // switch ($tablename) { + // case 'mail_access': + // if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data); + // if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data); + // if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data); + // break; + // } // end switch + } // end function - /* + //** Get distribution identifier + //** IMPORTANT! + // This is the same code as in /install/install.php + // So if you change it here, you also have to change it in /install/install.php! + // Please do not forget to remove the swriteln(); - lines here at this file + function get_distname() { + + $distname = ''; + $distver = ''; + $distid = ''; + $distbaseid = ''; + + //** Debian or Ubuntu + if(file_exists('/etc/debian_version')) { + + if(trim(file_get_contents('/etc/debian_version')) == '4.0') { + $distname = 'Debian'; + $distver = '4.0'; + $distid = 'debian40'; + $distbaseid = 'debian'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'5.0')) { + $distname = 'Debian'; + $distver = 'Lenny'; + $distid = 'debian40'; + $distbaseid = 'debian'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'6.0') || trim(file_get_contents('/etc/debian_version')) == 'squeeze/sid') { + $distname = 'Debian'; + $distver = 'Squeeze/Sid'; + $distid = 'debian40'; + $distbaseid = 'debian'; + } else { + $distname = 'Debian'; + $distver = 'Unknown'; + $distid = 'debian40'; + $distbaseid = 'debian'; + } + } + + //** OpenSuSE + elseif(file_exists("/etc/SuSE-release")) { + if(stristr(file_get_contents('/etc/SuSE-release'),'11.0')) { + $distname = 'openSUSE'; + $distver = '11.0'; + $distid = 'opensuse110'; + $distbaseid = 'opensuse'; + } elseif(stristr(file_get_contents('/etc/SuSE-release'),'11.1')) { + $distname = 'openSUSE'; + $distver = '11.1'; + $distid = 'opensuse110'; + $distbaseid = 'opensuse'; + } elseif(stristr(file_get_contents('/etc/SuSE-release'),'11.2')) { + $distname = 'openSUSE'; + $distver = '11.1'; + $distid = 'opensuse110'; + $distbaseid = 'opensuse'; + } else { + $distname = 'openSUSE'; + $distver = 'Unknown'; + $distid = 'opensuse110'; + $distbaseid = 'opensuse'; + } + } + + + //** Redhat + elseif(file_exists("/etc/redhat-release")) { + + $content = file_get_contents('/etc/redhat-release'); + + if(stristr($content,'Fedora release 9 (Sulphur)')) { + $distname = 'Fedora'; + $distver = '9'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } elseif(stristr($content,'Fedora release 10 (Cambridge)')) { + $distname = 'Fedora'; + $distver = '10'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } elseif(stristr($content,'Fedora release 10')) { + $distname = 'Fedora'; + $distver = '11'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } elseif(stristr($content,'CentOS release 5.2 (Final)')) { + $distname = 'CentOS'; + $distver = '5.2'; + $distid = 'centos52'; + $distbaseid = 'fedora'; + } elseif(stristr($content,'CentOS release 5.3 (Final)')) { + $distname = 'CentOS'; + $distver = '5.3'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + } else { + $distname = 'Redhat'; + $distver = 'Unknown'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } + } + + //** Gentoo + elseif(file_exists("/etc/gentoo-release")) { + + $content = file_get_contents('/etc/gentoo-release'); + + preg_match_all('/([0-9]{1,2})/', $content, $version); + $distname = 'Gentoo'; + $distver = $version[0][0].$version[0][1]; + $distid = 'gentoo'; + $distbaseid = 'gentoo'; + + } else { + die('unrecognized linux distribution'); + } + + return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); + } + + + /* This method is called every n minutes, when the module ist loaded. The method then does a system-monitoring - */ - // TODO: what monitoring is done should be a config-var - function doMonitor() - { - /* Calls the single Monitoring steps */ - $this->monitorServer(); - $this->monitorDiskUsage(); - $this->monitorMemUsage(); - $this->monitorCpu(); - $this->monitorServices(); - $this->monitorMailLog(); - $this->monitorMailWarnLog(); - $this->monitorMailErrLog(); - $this->monitorMessagesLog(); - $this->monitorISPCCronLog(); - $this->monitorFreshClamLog(); - $this->monitorClamAvLog(); - $this->monitorIspConfigLog(); - $this->monitorSystemUpdate(); - $this->monitorMailQueue(); - $this->monitorRaid(); - $this->monitorRkHunter(); + */ + // TODO: what monitoring is done should be a config-var + function doMonitor() { + /* Calls the single Monitoring steps */ + $this->monitorServer(); + $this->monitorOSVer(); + $this->monitorDiskUsage(); + $this->monitorMemUsage(); + $this->monitorCpu(); + $this->monitorServices(); + $this->monitorMailLog(); + $this->monitorMailWarnLog(); + $this->monitorMailErrLog(); + $this->monitorMessagesLog(); + $this->monitorISPCCronLog(); + $this->monitorFreshClamLog(); + $this->monitorClamAvLog(); + $this->monitorIspConfigLog(); + $this->monitorSystemUpdate(); + $this->monitorMailQueue(); + $this->monitorRaid(); + $this->monitorRkHunter(); $this->monitorFail2ban(); - $this->monitorSysLog(); - } + $this->monitorSysLog(); + } - function monitorServer(){ - global $app; - global $conf; + function monitorServer() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'server_load'; + /** The type of the data */ + $type = 'server_load'; - /* + /* Fetch the data into a array - */ - $procUptime = shell_exec("cat /proc/uptime | cut -f1 -d' '"); - $data['up_days'] = floor($procUptime/86400); - $data['up_hours'] = floor(($procUptime-$data['up_days']*86400)/3600); - $data['up_minutes'] = floor(($procUptime-$data['up_days']*86400-$data['up_hours']*3600)/60); + */ + $procUptime = shell_exec("cat /proc/uptime | cut -f1 -d' '"); + $data['up_days'] = floor($procUptime/86400); + $data['up_hours'] = floor(($procUptime-$data['up_days']*86400)/3600); + $data['up_minutes'] = floor(($procUptime-$data['up_days']*86400-$data['up_hours']*3600)/60); - $data['uptime'] = shell_exec("uptime"); + $data['uptime'] = shell_exec("uptime"); - $tmp = explode(",", $data['uptime'], 4); - $tmpUser = explode(" ", trim($tmp[2])); - $data['user_online'] = intval($tmpUser[0]); - - /* Old Load Average Code - $loadTmp = explode(":" , trim($tmp[3])); - $load = explode(",", $loadTmp[1]); - $data['load_1'] = floatval(trim($load[0])); - $data['load_5'] = floatval(trim($load[1])); - $data['load_15'] = floatval(trim($load[2])); */ + $tmp = explode(",", $data['uptime'], 4); + $tmpUser = explode(" ", trim($tmp[2])); + $data['user_online'] = intval($tmpUser[0]); //* New Load Average code to fix "always zero" bug in non-english distros. NEEDS TESTING $loadTmp = shell_exec("cat /proc/loadavg | cut -f1-3 -d' '"); @@ -163,421 +275,443 @@ $data['load_5'] = floatval(str_replace(',', '.', $load[1])); $data['load_15'] = floatval(str_replace(',', '.', $load[2])); - /** The state of the server-load. */ - $state = 'ok'; - if ($data['load_1'] > 20 ) $state = 'info'; - if ($data['load_1'] > 50 ) $state = 'warning'; - if ($data['load_1'] > 100 ) $state = 'critical'; - if ($data['load_1'] > 150 ) $state = 'error'; + /** The state of the server-load. */ + $state = 'ok'; + if ($data['load_1'] > 20 ) $state = 'info'; + if ($data['load_1'] > 50 ) $state = 'warning'; + if ($data['load_1'] > 100 ) $state = 'critical'; + if ($data['load_1'] > 150 ) $state = 'error'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorDiskUsage() { - global $app; - global $conf; + function monitorOsVer() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'disk_usage'; + /** The type of the data */ + $type = 'os_info'; - /** The state of the disk-usage */ - $state = 'ok'; + /* + Fetch the data into a array + */ + $dist = $this->get_distname(); - /** Fetch the data of ALL devices into a array (needed for monitoring!)*/ - $dfData = shell_exec("df -hT"); + $data['name'] = $dist['name']; + $data['version'] = $dist['version']; - // split into array - $df = explode("\n", $dfData); + /* the OS has no state. It is, what it is */ + $state = 'no_state'; - /* + /* + Insert the data into the database + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } + + + function monitorDiskUsage() { + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'disk_usage'; + + /** The state of the disk-usage */ + $state = 'ok'; + + /** Fetch the data of ALL devices into a array (needed for monitoring!)*/ + $dfData = shell_exec("df -hT"); + + // split into array + $df = explode("\n", $dfData); + + /* * ignore the first line, process the rest - */ - for($i=1; $i <= sizeof($df); $i++){ - if ($df[$i] != '') - { - /* + */ + for($i=1; $i <= sizeof($df); $i++) { + if ($df[$i] != '') { + /* * Make a array of the data - */ - $s = preg_split ("/[\s]+/", $df[$i]); - $data[$i]['fs'] = $s[0]; - $data[$i]['type'] = $s[1]; - $data[$i]['size'] = $s[2]; - $data[$i]['used'] = $s[3]; - $data[$i]['available'] = $s[4]; - $data[$i]['percent'] = $s[5]; - $data[$i]['mounted'] = $s[6]; - /* + */ + $s = preg_split ("/[\s]+/", $df[$i]); + $data[$i]['fs'] = $s[0]; + $data[$i]['type'] = $s[1]; + $data[$i]['size'] = $s[2]; + $data[$i]['used'] = $s[3]; + $data[$i]['available'] = $s[4]; + $data[$i]['percent'] = $s[5]; + $data[$i]['mounted'] = $s[6]; + /* * calculate the state - */ - $usePercent = floatval($data[$i]['percent']); - + */ + $usePercent = floatval($data[$i]['percent']); + //* We dont want to check the cdrom drive as a cd / dvd is always 100% full if($data[$i]['type'] != 'iso9660' && $data[$i]['type'] != 'cramfs' && $data[$i]['type'] != 'udf') { - if ($usePercent > 75) $state = $this->_setState($state, 'info'); - if ($usePercent > 80) $state = $this->_setState($state, 'warning'); - if ($usePercent > 90) $state = $this->_setState($state, 'critical'); - if ($usePercent > 95) $state = $this->_setState($state, 'error'); + if ($usePercent > 75) $state = $this->_setState($state, 'info'); + if ($usePercent > 80) $state = $this->_setState($state, 'warning'); + if ($usePercent > 90) $state = $this->_setState($state, 'critical'); + if ($usePercent > 95) $state = $this->_setState($state, 'error'); } - } - } + } + } - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorMemUsage() - { - global $app; - global $conf; + function monitorMemUsage() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'mem_usage'; + /** The type of the data */ + $type = 'mem_usage'; - /* + /* Fetch the data into a array - */ - $miData = shell_exec("cat /proc/meminfo"); + */ + $miData = shell_exec("cat /proc/meminfo"); - $memInfo = explode("\n", $miData); + $memInfo = explode("\n", $miData); - foreach($memInfo as $line){ - $part = preg_split("/:/", $line); - $key = trim($part[0]); - $tmp = explode(" ", trim($part[1])); - $value = 0; - if ($tmp[1] == 'kB') $value = $tmp[0] * 1024; - $data[$key] = $value; - } + foreach($memInfo as $line) { + $part = preg_split("/:/", $line); + $key = trim($part[0]); + $tmp = explode(" ", trim($part[1])); + $value = 0; + if ($tmp[1] == 'kB') $value = $tmp[0] * 1024; + $data[$key] = $value; + } - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorCpu() - { - global $app; - global $conf; + function monitorCpu() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'cpu_info'; + /** The type of the data */ + $type = 'cpu_info'; - /* + /* Fetch the data into a array - */ - $cpuData = shell_exec("cat /proc/cpuinfo"); - $cpuInfo = explode("\n", $cpuData); + */ + $cpuData = shell_exec("cat /proc/cpuinfo"); + $cpuInfo = explode("\n", $cpuData); $processor = 0; - foreach($cpuInfo as $line){ - + foreach($cpuInfo as $line) { + $part = preg_split("/:/", $line); - $key = trim($part[0]); - $value = trim($part[1]); + $key = trim($part[0]); + $value = trim($part[1]); if($key == 'processor') $processor = intval($value); - if($key != '') $data[$key.' '.$processor] = $value; - } + if($key != '') $data[$key.' '.$processor] = $value; + } - /* the cpu has no state. It is, what it is */ - $state = 'no_state'; + /* the cpu has no state. It is, what it is */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorServices() - { - global $app; - global $conf; + function monitorServices() { + global $app; + global $conf; - /** the id of the server as int */ - $server_id = intval($conf["server_id"]); + /** the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** get the "active" Services of the server from the DB */ - $services = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id); + /** get the "active" Services of the server from the DB */ + $services = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id); - /* The type of the Monitor-data */ - $type = 'services'; + /* The type of the Monitor-data */ + $type = 'services'; - /** the State of the monitoring */ - /* ok, if ALL aktive services are running, + /** the State of the monitoring */ + /* ok, if ALL aktive services are running, * error, if not * There is no other state! - */ - $state = 'ok'; + */ + $state = 'ok'; - /* Monitor Webserver */ - $data['webserver'] = -1; // unknown - not needed - if ($services['web_server'] == 1) - { - if($this->_checkTcp('localhost', 80)) { - $data['webserver'] = 1; - } else { - $data['webserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor Webserver */ + $data['webserver'] = -1; // unknown - not needed + if ($services['web_server'] == 1) { + if($this->_checkTcp('localhost', 80)) { + $data['webserver'] = 1; + } else { + $data['webserver'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor FTP-Server */ - $data['ftpserver'] = -1; // unknown - not needed - if ($services['file_server'] == 1) - { - if($this->_checkFtp('localhost', 21)) { - $data['ftpserver'] = 1; - } else { - $data['ftpserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor FTP-Server */ + $data['ftpserver'] = -1; // unknown - not needed + if ($services['file_server'] == 1) { + if($this->_checkFtp('localhost', 21)) { + $data['ftpserver'] = 1; + } else { + $data['ftpserver'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor SMTP-Server */ - $data['smtpserver'] = -1; // unknown - not needed - if ($services['mail_server'] == 1) - { - if($this->_checkTcp('localhost', 25)) { - $data['smtpserver'] = 1; - } else { - $data['smtpserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor SMTP-Server */ + $data['smtpserver'] = -1; // unknown - not needed + if ($services['mail_server'] == 1) { + if($this->_checkTcp('localhost', 25)) { + $data['smtpserver'] = 1; + } else { + $data['smtpserver'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor POP3-Server */ - $data['pop3server'] = -1; // unknown - not needed - if ($services['mail_server'] == 1) - { - if($this->_checkTcp('localhost', 110)) { - $data['pop3server'] = 1; - } else { - $data['pop3server'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor POP3-Server */ + $data['pop3server'] = -1; // unknown - not needed + if ($services['mail_server'] == 1) { + if($this->_checkTcp('localhost', 110)) { + $data['pop3server'] = 1; + } else { + $data['pop3server'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor IMAP-Server */ - $data['imapserver'] = -1; // unknown - not needed - if ($services['mail_server'] == 1) - { - if($this->_checkTcp('localhost', 143)) { - $data['imapserver'] = 1; - } else { - $data['imapserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor IMAP-Server */ + $data['imapserver'] = -1; // unknown - not needed + if ($services['mail_server'] == 1) { + if($this->_checkTcp('localhost', 143)) { + $data['imapserver'] = 1; + } else { + $data['imapserver'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor BIND-Server */ - $data['bindserver'] = -1; // unknown - not needed - if ($services['dns_server'] == 1) - { - if($this->_checkTcp('localhost', 53)) { - $data['bindserver'] = 1; - } else { - $data['bindserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor BIND-Server */ + $data['bindserver'] = -1; // unknown - not needed + if ($services['dns_server'] == 1) { + if($this->_checkTcp('localhost', 53)) { + $data['bindserver'] = 1; + } else { + $data['bindserver'] = 0; + $state = 'error'; // because service is down + } + } - /* Monitor MYSQL-Server */ - $data['mysqlserver'] = -1; // unknown - not needed - if ($services['db_server'] == 1) - { - if($this->_checkTcp('localhost', 3306)) { - $data['mysqlserver'] = 1; - } else { - $data['mysqlserver'] = 0; - $state = 'error'; // because service is down - } - } + /* Monitor MYSQL-Server */ + $data['mysqlserver'] = -1; // unknown - not needed + if ($services['db_server'] == 1) { + if($this->_checkTcp('localhost', 3306)) { + $data['mysqlserver'] = 1; + } else { + $data['mysqlserver'] = 0; + $state = 'error'; // because service is down + } + } - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorSystemUpdate(){ - /* + function monitorSystemUpdate() { + /* * This monitoring is expensive, so do it only once a hour - */ - $min = date('i'); - if ($min != 0) return; + */ + $min = date('i'); + if ($min != 0) return; - /* + /* * OK - here we go... - */ - global $app; - global $conf; + */ + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'system_update'; + /** The type of the data */ + $type = 'system_update'; - /* This monitoring is only available at debian or Ubuntu */ - if(file_exists('/etc/debian_version')){ + /* This monitoring is only available at debian or Ubuntu */ + if(file_exists('/etc/debian_version')) { - /* + /* * first update the "update-database" - */ - shell_exec('apt-get update'); + */ + shell_exec('apt-get update'); - /* + /* * Then test the upgrade. * if there is any output, then there is a needed update - */ - $aptData = shell_exec('apt-get -s -qq dist-upgrade'); - if ($aptData == '') - { - /* There is nothing to update! */ - $state = 'ok'; - } - else - { - /* There is something to update! */ - $state = 'warning'; - } + */ + $aptData = shell_exec('apt-get -s -qq dist-upgrade'); + if ($aptData == '') { + /* There is nothing to update! */ + $state = 'ok'; + } + else { + /* There is something to update! */ + $state = 'warning'; + } - /* + /* * Fetch the output - */ - $data['output'] = shell_exec('apt-get -s -q dist-upgrade'); - } - elseif (file_exists("/etc/gentoo-release")) { - - /* + */ + $data['output'] = shell_exec('apt-get -s -q dist-upgrade'); + } + elseif (file_exists("/etc/gentoo-release")) { + + /* * first update the portage tree - */ - - // In keeping with gentoo's rsync policy, don't update to frequently (every four hours - taken from http://www.gentoo.org/doc/en/source_mirrors.xml) - $do_update = true; - if (file_exists('/usr/portage/metadata/timestamp.chk')) - { - $datetime = file_get_contents('/usr/portage/metadata/timestamp.chk'); - $datetime = trim($datetime); - - $dstamp = strtotime($datetime); - if ($dstamp) - { - $checkat = $dstamp + 14400; // + 4hours - if (mktime() < $checkat) { - $do_update = false; - } - } - } - - if ($do_update) { - shell_exec('emerge --sync --quiet'); - } - - /* + */ + + // In keeping with gentoo's rsync policy, don't update to frequently (every four hours - taken from http://www.gentoo.org/doc/en/source_mirrors.xml) + $do_update = true; + if (file_exists('/usr/portage/metadata/timestamp.chk')) { + $datetime = file_get_contents('/usr/portage/metadata/timestamp.chk'); + $datetime = trim($datetime); + + $dstamp = strtotime($datetime); + if ($dstamp) { + $checkat = $dstamp + 14400; // + 4hours + if (mktime() < $checkat) { + $do_update = false; + } + } + } + + if ($do_update) { + shell_exec('emerge --sync --quiet'); + } + + /* * Then test the upgrade. * if there is any output, then there is a needed update - */ - $emergeData = shell_exec('emerge -puDNt --color n --nospinner --quiet world'); - if ($emergeData == '') - { - /* There is nothing to update! */ - $state = 'ok'; - } - else - { - /* There is something to update! */ - $state = 'warning'; - } - - /* + */ + $emergeData = shell_exec('emerge -puDNt --color n --nospinner --quiet world'); + if ($emergeData == '') { + /* There is nothing to update! */ + $state = 'ok'; + } + else { + /* There is something to update! */ + $state = 'warning'; + } + + /* * Fetch the output - */ - $data['output'] = shell_exec('emerge -pvuDNt --color n --nospinner world'); - } - else { - /* + */ + $data['output'] = shell_exec('emerge -pvuDNt --color n --nospinner world'); + } + else { + /* * It is not debian/Ubuntu, so there is no data and no state * * no_state, NOT unknown, because "unknown" is shown as state @@ -585,144 +719,139 @@ * * We have to write NO DATA inside the DB, because the GUI * could not know, if there is any dat, or not... - */ - $state = 'no_state'; - $data['output']= ''; - } + */ + $state = 'no_state'; + $data['output']= ''; + } - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 0, 2); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 0, 2); + } - function monitorMailQueue(){ - global $app; - global $conf; + function monitorMailQueue() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'mailq'; + /** The type of the data */ + $type = 'mailq'; - /* Get the data from the mailq */ - $data['output'] = shell_exec('mailq'); + /* Get the data from the mailq */ + $data['output'] = shell_exec('mailq'); - /* + /* * The last line has more informations - */ - $tmp = explode("\n", $data['output']); - $more = $tmp[sizeof($tmp) - 1]; - $this->_getIntArray($more); - $data['bytes'] = $res[0]; - $data['requests'] = $res[1]; + */ + $tmp = explode("\n", $data['output']); + $more = $tmp[sizeof($tmp) - 1]; + $this->_getIntArray($more); + $data['bytes'] = $res[0]; + $data['requests'] = $res[1]; - /** The state of the mailq. */ - $state = 'ok'; - if ($data['requests'] > 2000 ) $state = 'info'; - if ($data['requests'] > 5000 ) $state = 'warning'; - if ($data['requests'] > 8000 ) $state = 'critical'; - if ($data['requests'] > 10000 ) $state = 'error'; + /** The state of the mailq. */ + $state = 'ok'; + if ($data['requests'] > 2000 ) $state = 'info'; + if ($data['requests'] > 5000 ) $state = 'warning'; + if ($data['requests'] > 8000 ) $state = 'critical'; + if ($data['requests'] > 10000 ) $state = 'error'; - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorRaid(){ - global $app; - global $conf; + function monitorRaid() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'raid_state'; + /** The type of the data */ + $type = 'raid_state'; - /* This monitoring is only available if mdadm is installed */ - $location = system('which mdadm', $retval); - if($retval === 0){ - /* + /* This monitoring is only available if mdadm is installed */ + $location = system('which mdadm', $retval); + if($retval === 0) { + /* * Fetch the output - */ - $data['output'] = shell_exec('cat /proc/mdstat'); + */ + $data['output'] = shell_exec('cat /proc/mdstat'); - /* + /* * Then calc the state. - */ - $tmp = explode("\n", $data['output']); - $state = 'ok'; - for ($i = 0; $i < sizeof($tmp); $i++){ - /* fetch the next line */ - $line = $tmp[$i]; + */ + $tmp = explode("\n", $data['output']); + $state = 'ok'; + for ($i = 0; $i < sizeof($tmp); $i++) { + /* fetch the next line */ + $line = $tmp[$i]; - if ((strpos($line, '[U_]') !== false) || (strpos($line, '[_U]') !== false)) - { - /* One Disk is not working. + if ((strpos($line, '[U_]') !== false) || (strpos($line, '[_U]') !== false)) { + /* One Disk is not working. * if the next line starts with "[>" or "[=" then * recovery (resync) is in state and the state is * information instead of critical - */ - $nextLine = $tmp[$i+1]; - if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { - $state = $this->_setState($state, 'critical'); - } - else - { - $state = $this->_setState($state, 'info'); - } - } - if (strpos($line, '[__]') !== false) - { - /* both Disk are not working */ - $state = $this->_setState($state, 'error'); - } - if (strpos($line, '[UU]') !== false) - { - /* The disks are OK. + */ + $nextLine = $tmp[$i+1]; + if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { + $state = $this->_setState($state, 'critical'); + } + else { + $state = $this->_setState($state, 'info'); + } + } + if (strpos($line, '[__]') !== false) { + /* both Disk are not working */ + $state = $this->_setState($state, 'error'); + } + if (strpos($line, '[UU]') !== false) { + /* The disks are OK. * if the next line starts with "[>" or "[=" then * recovery (resync) is in state and the state is * information instead of ok - */ - $nextLine = $tmp[$i+1]; - if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { - $state = $this->_setState($state, 'ok'); - } - else - { - $state = $this->_setState($state, 'info'); - } - } - } + */ + $nextLine = $tmp[$i+1]; + if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { + $state = $this->_setState($state, 'ok'); + } + else { + $state = $this->_setState($state, 'info'); + } + } + } - } - else { - /* + } + else { + /* * mdadm is not installed, so there is no data and no state * * no_state, NOT unknown, because "unknown" is shown as state @@ -730,60 +859,60 @@ * * We have to write NO DATA inside the DB, because the GUI * could not know, if there is any dat, or not... - */ - $state = 'no_state'; - $data['output']= ''; - } + */ + $state = 'no_state'; + $data['output']= ''; + } - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorRkHunter(){ - /* + function monitorRkHunter() { + /* * This monitoring is expensive, so do it only once a day - */ - $min = date('i'); - $hour = date('H'); - if (!($min == 0 && $hour == 23)) return; + */ + $min = date('i'); + $hour = date('H'); + if (!($min == 0 && $hour == 23)) return; - global $app; - global $conf; + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'rkhunter'; + /** The type of the data */ + $type = 'rkhunter'; - /* This monitoring is only available if rkhunter is installed */ - $location = system('which rkhunter', $retval); - if($retval === 0){ - /* + /* This monitoring is only available if rkhunter is installed */ + $location = system('which rkhunter', $retval); + if($retval === 0) { + /* * Fetch the output - */ - $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress'); + */ + $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress'); - /* + /* * At this moment, there is no state (maybe later) - */ - $state = 'no_state'; - } - else { - /* + */ + $state = 'no_state'; + } + else { + /* * rkhunter is not installed, so there is no data and no state * * no_state, NOT unknown, because "unknown" is shown as state @@ -791,52 +920,52 @@ * * We have to write NO DATA inside the DB, because the GUI * could not know, if there is any dat, or not... - */ - $state = 'no_state'; - $data['output']= ''; - } + */ + $state = 'no_state'; + $data['output']= ''; + } - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 0, 2); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 0, 2); + } - function monitorFail2ban(){ - global $app; - global $conf; + function monitorFail2ban() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_fail2ban'; + /** The type of the data */ + $type = 'log_fail2ban'; - /* This monitoring is only available if fail2ban is installed */ - $location = system('which fail2ban-client', $retval); // Debian, Ubuntu, Fedora + /* This monitoring is only available if fail2ban is installed */ + $location = system('which fail2ban-client', $retval); // Debian, Ubuntu, Fedora if($retval !== 0) $location = system('which fail2ban', $retval); // CentOS - if($retval === 0){ + if($retval === 0) { /* Get the data of the log */ $data = $this->_getLogData($type); - /* + /* * At this moment, there is no state (maybe later) - */ - $state = 'no_state'; - } - else { - /* + */ + $state = 'no_state'; + } + else { + /* * fail2ban is not installed, so there is no data and no state * * no_state, NOT unknown, because "unknown" is shown as state @@ -844,622 +973,605 @@ * * We have to write NO DATA inside the DB, because the GUI * could not know, if there is any dat, or not... - */ - $state = 'no_state'; - $data = ''; - } + */ + $state = 'no_state'; + $data = ''; + } - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorSysLog(){ - global $app; - global $conf; + function monitorSysLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'sys_log'; + /** The type of the data */ + $type = 'sys_log'; /* * is there any warning or error for this server? - */ + */ $state = 'ok'; - $dbData = $app->dbmaster->queryAllRecords("SELECT loglevel FROM sys_log WHERE server_id = " . $server_id . " AND loglevel > 0"); + $dbData = $app->dbmaster->queryAllRecords("SELECT loglevel FROM sys_log WHERE server_id = " . $server_id . " AND loglevel > 0"); if (is_array($dbData)) { - foreach($dbData as $item){ - if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning'); - if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error'); - } + foreach($dbData as $item) { + if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning'); + if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error'); + } } /** There is no monitor-data because the data is in the sys_log table */ - $data['output']= ''; + $data['output']= ''; - /* + /* * Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorMailLog() - { - global $app; - global $conf; + function monitorMailLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_mail'; + /** The type of the data */ + $type = 'log_mail'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorMailWarnLog() - { - global $app; - global $conf; + function monitorMailWarnLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_mail_warn'; + /** The type of the data */ + $type = 'log_mail_warn'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorMailErrLog() - { - global $app; - global $conf; + function monitorMailErrLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_mail_err'; + /** The type of the data */ + $type = 'log_mail_err'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorMessagesLog() - { - global $app; - global $conf; + function monitorMessagesLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_messages'; + /** The type of the data */ + $type = 'log_messages'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorISPCCronLog() - { - global $app; - global $conf; + function monitorISPCCronLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_ispc_cron'; + /** The type of the data */ + $type = 'log_ispc_cron'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - /* + /* * actually this info has no state. * maybe someone knows better...???... - */ - $state = 'no_state'; + */ + $state = 'no_state'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } - - function monitorFreshClamLog() - { - global $app; - global $conf; + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + function monitorFreshClamLog() { + global $app; + global $conf; - /** The type of the data */ - $type = 'log_freshclam'; + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /* Get the data of the log */ - $data = $this->_getLogData($type); + /** The type of the data */ + $type = 'log_freshclam'; - /* Get the data from the LAST log-Entry. + /* Get the data of the log */ + $data = $this->_getLogData($type); + + /* Get the data from the LAST log-Entry. * if there can be found: * WARNING: Your ClamAV installation is OUTDATED! * then the clamav is outdated. This is a warning! - */ - $state = 'ok'; + */ + $state = 'ok'; - $tmp = explode("\n", $data); - $lastLog = array(); - if ($tmp[sizeof($tmp)-1] == "") - { - /* the log ends with an empty line remove this */ - array_pop($tmp); - } - if (strpos($tmp[sizeof($tmp)-1], "-------------") !== false) - { - /* the log ends with "-----..." remove this */ - array_pop($tmp); - } - for ($i = sizeof($tmp) -1; $i > 0; $i--){ - if (strpos($tmp[$i], "---------") === false){ - /* no delimiter found, so add this to the last-log */ - $lastLog[] = $tmp[$i]; - } - else - { - /* delimiter found, so there is no more line left! */ - break; - } - } + $tmp = explode("\n", $data); + $lastLog = array(); + if ($tmp[sizeof($tmp)-1] == "") { + /* the log ends with an empty line remove this */ + array_pop($tmp); + } + if (strpos($tmp[sizeof($tmp)-1], "-------------") !== false) { + /* the log ends with "-----..." remove this */ + array_pop($tmp); + } + for ($i = sizeof($tmp) -1; $i > 0; $i--) { + if (strpos($tmp[$i], "---------") === false) { + /* no delimiter found, so add this to the last-log */ + $lastLog[] = $tmp[$i]; + } + else { + /* delimiter found, so there is no more line left! */ + break; + } + } - /* + /* * Now we have the last log in the array. * Check if the outdated-string is found... - */ - foreach($lastLog as $line){ - if (strpos(strtolower($line), "outdated") !== false) { - $state = $this->_setState($state, 'warning'); - } - } + */ + foreach($lastLog as $line) { + if (strpos(strtolower($line), "outdated") !== false) { + $state = $this->_setState($state, 'warning'); + } + } - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorClamAvLog() - { - global $app; - global $conf; + function monitorClamAvLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_clamav'; + /** The type of the data */ + $type = 'log_clamav'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - // Todo: the state should be calculated. - $state = 'ok'; + // Todo: the state should be calculated. + $state = 'ok'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function monitorIspConfigLog() - { - global $app; - global $conf; + function monitorIspConfigLog() { + global $app; + global $conf; - /* the id of the server as int */ - $server_id = intval($conf["server_id"]); + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); - /** The type of the data */ - $type = 'log_ispconfig'; + /** The type of the data */ + $type = 'log_ispconfig'; - /* Get the data of the log */ - $data = $this->_getLogData($type); + /* Get the data of the log */ + $data = $this->_getLogData($type); - // Todo: the state should be calculated. - $state = 'ok'; + // Todo: the state should be calculated. + $state = 'ok'; - /* + /* Insert the data into the database - */ - $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . - "VALUES (". - $server_id . ", " . - "'" . $app->dbmaster->quote($type) . "', " . - time() . ", " . - "'" . $app->dbmaster->quote(serialize($data)) . "', " . - "'" . $state . "'" . - ")"; - $app->dbmaster->query($sql); + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); - /* The new data is written, now we can delete the old one */ - $this->_delOldRecords($type, 10); - } + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } - function _getLogData($log){ - + function _getLogData($log) { + $dist = ''; $logfile = ''; - + if(@is_file('/etc/debian_version')) $dist = 'debian'; if(@is_file('/etc/redhat-release')) $dist = 'redhat'; if(@is_file('/etc/SuSE-release')) $dist = 'suse'; if(@is_file('/etc/gentoo-release')) $dist = 'gentoo'; - + switch($log) { - case 'log_mail': - if($dist == 'debian') $logfile = '/var/log/mail.log'; + case 'log_mail': + if($dist == 'debian') $logfile = '/var/log/mail.log'; if($dist == 'redhat') $logfile = '/var/log/maillog'; if($dist == 'suse') $logfile = '/var/log/mail.info'; if($dist == 'gentoo') $logfile = '/var/log/maillog'; - break; - case 'log_mail_warn': - if($dist == 'debian') $logfile = '/var/log/mail.warn'; + break; + case 'log_mail_warn': + if($dist == 'debian') $logfile = '/var/log/mail.warn'; if($dist == 'redhat') $logfile = '/var/log/maillog'; if($dist == 'suse') $logfile = '/var/log/mail.warn'; if($dist == 'gentoo') $logfile = '/var/log/maillog'; - break; - case 'log_mail_err': - if($dist == 'debian') $logfile = '/var/log/mail.err'; + break; + case 'log_mail_err': + if($dist == 'debian') $logfile = '/var/log/mail.err'; if($dist == 'redhat') $logfile = '/var/log/maillog'; if($dist == 'suse') $logfile = '/var/log/mail.err'; if($dist == 'gentoo') $logfile = '/var/log/maillog'; - break; - case 'log_messages': - if($dist == 'debian') $logfile = '/var/log/messages'; + break; + case 'log_messages': + if($dist == 'debian') $logfile = '/var/log/messages'; if($dist == 'redhat') $logfile = '/var/log/messages'; if($dist == 'suse') $logfile = '/var/log/messages'; if($dist == 'gentoo') $logfile = '/var/log/messages'; - break; - case 'log_ispc_cron': - if($dist == 'debian') $logfile = '/var/log/ispconfig/cron.log'; + break; + case 'log_ispc_cron': + if($dist == 'debian') $logfile = '/var/log/ispconfig/cron.log'; if($dist == 'redhat') $logfile = '/var/log/ispconfig/cron.log'; if($dist == 'suse') $logfile = '/var/log/ispconfig/cron.log'; if($dist == 'gentoo') $logfile = '/var/log/cron'; - break; - case 'log_freshclam': - if($dist == 'debian') $logfile = '/var/log/clamav/freshclam.log'; - if($dist == 'redhat') $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); - if($dist == 'suse') $logfile = ''; - if($dist == 'gentoo') $logfile = '/var/log/clamav/freshclam.log'; break; - case 'log_clamav': - if($dist == 'debian') $logfile = '/var/log/clamav/clamav.log'; + case 'log_freshclam': + if($dist == 'debian') $logfile = '/var/log/clamav/freshclam.log'; + if($dist == 'redhat') $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); + if($dist == 'suse') $logfile = ''; + if($dist == 'gentoo') $logfile = '/var/log/clamav/freshclam.log'; + break; + case 'log_clamav': + if($dist == 'debian') $logfile = '/var/log/clamav/clamav.log'; if($dist == 'redhat') $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); if($dist == 'suse') $logfile = ''; if($dist == 'gentoo') $logfile = '/var/log/clamav/clamd.log'; - break; - case 'log_fail2ban': - if($dist == 'debian') $logfile = '/var/log/fail2ban.log'; + break; + case 'log_fail2ban': + if($dist == 'debian') $logfile = '/var/log/fail2ban.log'; if($dist == 'redhat') $logfile = '/var/log/fail2ban.log'; if($dist == 'suse') $logfile = '/var/log/fail2ban.log'; if($dist == 'gentoo') $logfile = '/var/log/fail2ban.log'; - break; - case 'log_ispconfig': - if($dist == 'debian') $logfile = '/var/log/ispconfig/ispconfig.log'; + break; + case 'log_ispconfig': + if($dist == 'debian') $logfile = '/var/log/ispconfig/ispconfig.log'; if($dist == 'redhat') $logfile = '/var/log/ispconfig/ispconfig.log'; if($dist == 'suse') $logfile = '/var/log/ispconfig/ispconfig.log'; if($dist == 'gentoo') $logfile = '/var/log/ispconfig/ispconfig.log'; - break; - default: - $logfile = ''; - break; - } + break; + default: + $logfile = ''; + break; + } - // Getting the logfile content - if($logfile != '') { - $logfile = escapeshellcmd($logfile); - if(stristr($logfile, ';') or substr($logfile,0,9) != '/var/log/' or stristr($logfile, '..')) { - $log = 'Logfile path error.'; - } - else - { - $log = ''; - if(is_readable($logfile)) { - if($fd = popen("tail -n 100 $logfile", 'r')) { - while (!feof($fd)) { - $log .= fgets($fd, 4096); - $n++; - if($n > 1000) break; - } - fclose($fd); - } - } else { - $log = 'Unable to read '.$logfile; - } - } - } + // Getting the logfile content + if($logfile != '') { + $logfile = escapeshellcmd($logfile); + if(stristr($logfile, ';') or substr($logfile,0,9) != '/var/log/' or stristr($logfile, '..')) { + $log = 'Logfile path error.'; + } + else { + $log = ''; + if(is_readable($logfile)) { + if($fd = popen("tail -n 100 $logfile", 'r')) { + while (!feof($fd)) { + $log .= fgets($fd, 4096); + $n++; + if($n > 1000) break; + } + fclose($fd); + } + } else { + $log = 'Unable to read '.$logfile; + } + } + } - return $log; - } + return $log; + } - function _checkTcp ($host,$port) { + function _checkTcp ($host,$port) { - $fp = @fsockopen ($host, $port, $errno, $errstr, 2); + $fp = @fsockopen ($host, $port, $errno, $errstr, 2); - if ($fp) { - fclose($fp); - return true; - } else { - return false; - } - } + if ($fp) { + fclose($fp); + return true; + } else { + return false; + } + } - function _checkUdp ($host,$port) { + function _checkUdp ($host,$port) { - $fp = @fsockopen ('udp://'.$host, $port, $errno, $errstr, 2); + $fp = @fsockopen ('udp://'.$host, $port, $errno, $errstr, 2); - if ($fp) { - fclose($fp); - return true; - } else { - return false; - } - } + if ($fp) { + fclose($fp); + return true; + } else { + return false; + } + } - function _checkFtp ($host,$port){ + function _checkFtp ($host,$port) { - $conn_id = @ftp_connect($host, $port); + $conn_id = @ftp_connect($host, $port); - if($conn_id){ - @ftp_close($conn_id); - return true; - } else { - return false; - } - } + if($conn_id) { + @ftp_close($conn_id); + return true; + } else { + return false; + } + } - /* + /* Deletes Records older than n. - */ - function _delOldRecords($type, $min, $hour=0, $days=0) { - global $app; + */ + function _delOldRecords($type, $min, $hour=0, $days=0) { + global $app; - $now = time(); - $old = $now - ($min * 60) - ($hour * 60 * 60) - ($days * 24 * 60 * 60); - $sql = "DELETE FROM monitor_data " . - "WHERE " . - "type =" . "'" . $app->dbmaster->quote($type) . "' " . - "AND " . - "created < " . $old; - $app->dbmaster->query($sql); - } + $now = time(); + $old = $now - ($min * 60) - ($hour * 60 * 60) - ($days * 24 * 60 * 60); + $sql = "DELETE FROM monitor_data " . + "WHERE " . + "type =" . "'" . $app->dbmaster->quote($type) . "' " . + "AND " . + "created < " . $old; + $app->dbmaster->query($sql); + } - /* + /* * Set the state to the given level (or higher, but not lesser). * * If the actual state is critical and you call the method with ok, * then the state is critical. * * * If the actual state is critical and you call the method with error, * then the state is error. - */ - function _setState($oldState, $newState) - { - /* + */ + function _setState($oldState, $newState) { + /* * Calculate the weight of the old state - */ - switch ($oldState) { - case 'no_state': $oldInt = 0; - break; - case 'ok': $oldInt = 1; - break; - case 'unknown': $oldInt = 2; - break; - case 'info': $oldInt = 3; - break; - case 'warning': $oldInt = 4; - break; - case 'critical': $oldInt = 5; - break; - case 'error': $oldInt = 6; - break; - } - /* + */ + switch ($oldState) { + case 'no_state': $oldInt = 0; + break; + case 'ok': $oldInt = 1; + break; + case 'unknown': $oldInt = 2; + break; + case 'info': $oldInt = 3; + break; + case 'warning': $oldInt = 4; + break; + case 'critical': $oldInt = 5; + break; + case 'error': $oldInt = 6; + break; + } + /* * Calculate the weight of the new state - */ - switch ($newState) { - case 'no_state': $newInt = 0 ; - break; - case 'ok': $newInt = 1 ; - break; - case 'unknown': $newInt = 2 ; - break; - case 'info': $newInt = 3 ; - break; - case 'warning': $newInt = 4 ; - break; - case 'critical': $newInt = 5 ; - break; - case 'error': $newInt = 6 ; - break; - } + */ + switch ($newState) { + case 'no_state': $newInt = 0 ; + break; + case 'ok': $newInt = 1 ; + break; + case 'unknown': $newInt = 2 ; + break; + case 'info': $newInt = 3 ; + break; + case 'warning': $newInt = 4 ; + break; + case 'critical': $newInt = 5 ; + break; + case 'error': $newInt = 6 ; + break; + } - /* + /* * Set to the higher level - */ - if ($newInt > $oldInt){ - return $newState; - } - else - { - return $oldState; - } - } + */ + if ($newInt > $oldInt) { + return $newState; + } + else { + return $oldState; + } + } - function _getIntArray($line){ - /** The array of float found */ - $res = array(); - /* First build a array from the line */ - $data = explode(' ', $line); - /* then check if any item is a float */ - foreach ($data as $item) { - if ($item . '' == (int)$item . ''){ - $res[] = $item; - } - } - return $res; - } - - -} // end class - -?> + function _getIntArray($line) { + /** The array of float found */ + $res = array(); + /* First build a array from the line */ + $data = explode(' ', $line); + /* then check if any item is a float */ + foreach ($data as $item) { + if ($item . '' == (int)$item . '') { + $res[] = $item; + } + } + return $res; + } +} +?> \ No newline at end of file -- Gitblit v1.9.1