From bd36f645c39b0c2acf7ef99ff34a1b69c1607192 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 07 Sep 2011 09:30:42 -0400 Subject: [PATCH] Fixed: FS#1696 - Possible problem with chrooted cronjobs. --- server/lib/classes/monitor_tools.inc.php | 88 ++++++++++++++++++++++++++++++------------- 1 files changed, 61 insertions(+), 27 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 6baa1bb..02ffadd 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -149,7 +149,6 @@ return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } -/* //** Email Quota public function monitorEmailQuota() { global $conf; @@ -184,7 +183,6 @@ $res['state'] = $state; return $res; } -*/ //** Filesystem Quota public function monitorHDQuota() { @@ -995,32 +993,34 @@ * Then calc the state. */ $state = 'ok'; - foreach ($data['output'] as $item) { - /* - * The output contains information for every RAID and every HDD. - * We only need the state of the RAID - */ - if (strpos($item, 'raidlevel:') !== false) { + if(is_array($data['output'])) { + foreach ($data['output'] as $item) { /* - * We found a raid, process the state of it - */ - if (strpos($item, ' ONLINE ') !== false) { - $this->_setState($state, 'ok'); - } elseif (strpos($item, ' OPTIMAL ') !== false) { - $this->_setState($state, 'ok'); - } elseif (strpos($item, ' INITIAL ') !== false) { - $this->_setState($state, 'info'); - } elseif (strpos($item, ' INACTIVE ') !== false) { - $this->_setState($state, 'critical'); - } elseif (strpos($item, ' RESYNC ') !== false) { - $this->_setState($state, 'info'); - } elseif (strpos($item, ' DEGRADED ') !== false) { - $this->_setState($state, 'critical'); - } else { - /* we don't know the state. so we set the state to critical, that the - * admin is warned, that something is wrong - */ - $this->_setState($state, 'critical'); + * The output contains information for every RAID and every HDD. + * We only need the state of the RAID + */ + if (strpos($item, 'raidlevel:') !== false) { + /* + * We found a raid, process the state of it + */ + if (strpos($item, ' ONLINE ') !== false) { + $this->_setState($state, 'ok'); + } elseif (strpos($item, ' OPTIMAL ') !== false) { + $this->_setState($state, 'ok'); + } elseif (strpos($item, ' INITIAL ') !== false) { + $this->_setState($state, 'info'); + } elseif (strpos($item, ' INACTIVE ') !== false) { + $this->_setState($state, 'critical'); + } elseif (strpos($item, ' RESYNC ') !== false) { + $this->_setState($state, 'info'); + } elseif (strpos($item, ' DEGRADED ') !== false) { + $this->_setState($state, 'critical'); + } else { + /* we don't know the state. so we set the state to critical, that the + * admin is warned, that something is wrong + */ + $this->_setState($state, 'critical'); + } } } } @@ -1127,6 +1127,40 @@ return $res; } + public function monitorIPTables() { + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf['server_id']); + + /** The type of the data */ + $type = 'iptables_rules'; + + /* This monitoring is only available if fail2ban is installed */ + system('which iptables', $retval); // Debian, Ubuntu, Fedora + if ($retval === 0) { + /* Get the data of the log */ + $data['output'] = shell_exec('iptables -S'); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } else { + $state = 'no_state'; + $data = ''; + } + + /* + * Return the Result + */ + $res['server_id'] = $server_id; + $res['type'] = $type; + $res['data'] = $data; + $res['state'] = $state; + return $res; + } + public function monitorSysLog() { global $app; global $conf; -- Gitblit v1.9.1