From 81d79a79e4b29e9314b64b2e4c49b48ae8319767 Mon Sep 17 00:00:00 2001 From: ftimme <ft@falkotimme.com> Date: Tue, 11 Oct 2011 08:50:45 -0400 Subject: [PATCH] - WebDAV Users: show only domains that run on Apache (because nginx does not have full WebDAV support). --- server/lib/classes/monitor_tools.inc.php | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 104 insertions(+), 6 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 02ffadd..6a4804c 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -151,7 +151,7 @@ //** Email Quota public function monitorEmailQuota() { - global $conf; + global $conf, $app; //* Initialize data array $data = array(); @@ -164,8 +164,25 @@ //* The state of the email_quota. $state = 'ok'; + + $mailboxes = $app->db->queryAllRecords("SELECT email FROM mail_user WHERE server_id = $server_id"); + if(is_array($mailboxes)) { + foreach($mailboxes as $mb) { + $email = $mb['email']; + $email_parts = explode('@',$mb['email']); + $filename = '/var/vmail/'.$email_parts[1].'/'.$email_parts[0].'/.quotausage'; + if(file_exists($filename)) { + $quotafile = file($filename); + $data[$email]['used'] = trim($quotafile['1']); + unset($quotafile); + } + } + } + + unset($mailboxes); //* Dovecot quota check Courier in progress lathama@gmail.com + /* if($dir = opendir("/var/vmail")){ while (($quotafiles = readdir($dir)) !== false){ if(preg_match('/.\_quota$/', $quotafiles)){ @@ -177,6 +194,7 @@ } closedir($dir); } + */ $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; @@ -407,6 +425,15 @@ * calculate the state */ $usePercent = floatval($data[$i]['percent']); + + //* get the free memsize + if(substr($data[$i]['available'],-1) == 'G') { + $freesize = floatval($data[$i]['available'])*1024; + } elseif(substr($data[$i]['available'],-1) == 'T') { + $freesize = floatval($data[$i]['available'])*1024*1024; + } else { + $freesize = floatval($data[$i]['available']); + } //* We don't want to check some filesystem which have no sensible filling levels switch ($data[$i]['type']) { @@ -418,13 +445,13 @@ case 'udev': break; default: - if ($usePercent > 75) + if ($usePercent > 75 && $freesize < 2000) $state = $this->_setState($state, 'info'); - if ($usePercent > 80) + if ($usePercent > 80 && $freesize < 1000) $state = $this->_setState($state, 'warning'); - if ($usePercent > 90) + if ($usePercent > 90 && $freesize < 500) $state = $this->_setState($state, 'critical'); - if ($usePercent > 95) + if ($usePercent > 95 && $freesize < 100) $state = $this->_setState($state, 'error'); break; } @@ -1026,6 +1053,61 @@ } } } + + /* + * 3ware Controller + */ + system('which tw_cli', $retval); + if($retval === 0) { + + $data['output'] = shell_exec('tw_cli info c0'); + + $state = 'ok'; + foreach ($data['output'] as $item) { + if (strpos($item, 'RAID') !== false) { + if (strpos($item, ' VERIFYING ') !== false) { + $this->_setState($state, 'info'); + } + else if (strpos($item, ' MIGRATE-PAUSED ') !== false) { + $this->_setState($state, 'info'); + } + else if (strpos($item, ' MIGRATING ') !== false) { + $this->_setState($state, 'ok'); + } + else if (strpos($item, ' INITIALIZING ') !== false) { + $this->_setState($state, 'info'); + } + else if (strpos($item, ' INIT-PAUSED ') !== false) { + $this->_setState($state, 'info'); + } + else if (strpos($item, ' REBUILDING ') !== false) { + $this->_setState($state, 'info'); + } + else if (strpos($item, ' REBUILD-PAUSED ') !== false) { + $this->_setState($state, 'warning'); + } + else if (strpos($item, ' RECOVERY ') !== false) { + $this->_setState($state, 'warning'); + } + else if (strpos($item, ' DEGRADED ') !== false) { + $this->_setState($state, 'critical'); + } + else if (strpos($item, ' UNKNOWN ') !== false) { + $this->_setState($state, 'critical'); + } + else if (strpos($item, ' OK ') !== false) { + $this->_setState($state, 'ok'); + } + else if (strpos($item, ' OPTIMAL ') !== false) { + $this->_setState($state, 'ok'); + } + else { + $this->_setState($state, 'critical'); + } + } + } + } + /* * Return the Result @@ -1140,7 +1222,23 @@ system('which iptables', $retval); // Debian, Ubuntu, Fedora if ($retval === 0) { /* Get the data of the log */ - $data['output'] = shell_exec('iptables -S'); + $data['output'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S'); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } else { + $state = 'no_state'; + $data = ''; + } + + + /* This monitoring is only available if fail2ban is installed */ + system('which ip6tables', $retval); // Debian, Ubuntu, Fedora + if ($retval === 0) { + /* Get the data of the log */ + $data['output'] .= '<br><h2>ip6tables -S (ipv6)</h2>'.shell_exec('ip6tables -S'); /* * At this moment, there is no state (maybe later) -- Gitblit v1.9.1