From a0fd5ab7b5412985324e970573ca22a27b3a94d3 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Tue, 16 Apr 2013 05:56:06 -0400 Subject: [PATCH] - Merged revisions 3922-3958 from svn stable branch - Added backup size to web backups --- server/lib/classes/monitor_tools.inc.php | 208 ++++++++++++++++++++++++++------------------------- 1 files changed, 107 insertions(+), 101 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index d3cdc65..92b3ecb 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -1,31 +1,31 @@ <?php /* - Copyright (c) 2007-2011, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com - All rights reserved. + Copyright (c) 2007-2011, 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, - are permitted provided that the following conditions are met: + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. + may be used to endorse or promote products derived from this software without + specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ class monitor_tools { @@ -117,7 +117,6 @@ $relname = "UNKNOWN"; } $distver = $ver.$lts." ".$relname; - swriteln("Operating System: ".$distver."\n"); } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { $distname = 'Debian'; $distver = '4.0'; @@ -131,6 +130,11 @@ } 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 = 'debian60'; + $distbaseid = 'debian'; + } elseif (strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { + $distname = 'Debian'; + $distver = 'Wheezy/Sid'; $distid = 'debian60'; $distbaseid = 'debian'; } else { @@ -222,9 +226,9 @@ return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } - //** Email Quota - public function monitorEmailQuota() { - global $conf, $app; + //** Email Quota + public function monitorEmailQuota() { + global $conf, $app; //* Initialize data array $data = array(); @@ -237,19 +241,19 @@ //* The state of the email_quota. $state = 'ok'; - - $mailboxes = $app->db->queryAllRecords("SELECT email FROM mail_user WHERE server_id = $server_id"); + + $mailboxes = $app->db->queryAllRecords("SELECT email,maildir 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)) { + $filename = $mb['maildir'].'/.quotausage'; + if(file_exists($filename) && !is_link($filename)) { $quotafile = file($filename); $data[$email]['used'] = trim($quotafile['1']); unset($quotafile); } else { - exec('du -s '.escapeshellcmd('/var/vmail/'.$email_parts[1].'/'.$email_parts[0]),$out); + exec('du -s '.escapeshellcmd($mb['maildir']),$out); $parts = explode(' ',$out[0]); $data[$email]['used'] = intval($parts[0])*1024; unset($out); @@ -257,31 +261,31 @@ } } } - + unset($mailboxes); - //* Dovecot quota check Courier in progress lathama@gmail.com + //* Dovecot quota check Courier in progress lathama@gmail.com /* - if($dir = opendir("/var/vmail")){ - while (($quotafiles = readdir($dir)) !== false){ - if(preg_match('/.\_quota$/', $quotafiles)){ - $quotafile = (file("/var/vmail/" . $quotafiles)); - $emailaddress = preg_replace('/_quota/',"", $quotafiles); - $emailaddress = preg_replace('/_/',"@", $emailaddress); - $data[$emailaddress]['used'] = trim($quotafile['1']); - } - } - closedir($dir); - } + if($dir = opendir("/var/vmail")){ + while (($quotafiles = readdir($dir)) !== false){ + if(preg_match('/.\_quota$/', $quotafiles)){ + $quotafile = (file("/var/vmail/" . $quotafiles)); + $emailaddress = preg_replace('/_quota/',"", $quotafiles); + $emailaddress = preg_replace('/_/',"@", $emailaddress); + $data[$emailaddress]['used'] = trim($quotafile['1']); + } + } + closedir($dir); + } */ $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; $res['state'] = $state; - return $res; - } + return $res; + } - //** Filesystem Quota + //** Filesystem Quota public function monitorHDQuota() { global $conf; @@ -298,7 +302,7 @@ $state = 'ok'; //* Fetch the data for all users - $dfData = shell_exec('repquota -au'); + $dfData = shell_exec('repquota -au 2>/dev/null'); //* Split into array $df = explode("\n", $dfData); @@ -326,7 +330,7 @@ } //** Fetch the data for all users - $dfData = shell_exec('repquota -ag'); + $dfData = shell_exec('repquota -ag 2>/dev/null'); //* split into array $df = explode("\n", $dfData); @@ -369,7 +373,7 @@ $type = 'server_load'; /* - Fetch the data into a array + Fetch the data into a array */ $procUptime = shell_exec("cat /proc/uptime | cut -f1 -d' '"); $data['up_days'] = floor($procUptime / 86400); @@ -420,7 +424,7 @@ $type = 'os_info'; /* - Fetch the data into a array + Fetch the data into a array */ $dist = $this->get_distname(); @@ -450,7 +454,7 @@ $type = 'ispc_info'; /* - Fetch the data into a array + Fetch the data into a array */ $data['name'] = ISPC_APP_TITLE; $data['version'] = ISPC_APP_VERSION; @@ -481,7 +485,7 @@ $state = 'ok'; /** Fetch the data of ALL devices into a array (needed for monitoring!) */ - $dfData = shell_exec('df -hT'); + $dfData = shell_exec('df -hT 2>/dev/null'); // split into array $df = explode("\n", $dfData); @@ -506,7 +510,7 @@ * 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; @@ -559,7 +563,7 @@ $type = 'mem_usage'; /* - Fetch the data into a array + Fetch the data into a array */ $miData = shell_exec('cat /proc/meminfo'); @@ -601,7 +605,7 @@ $type = 'cpu_info'; /* - Fetch the data into a array + Fetch the data into a array */ if (file_exists('/proc/cpuinfo')) { $cpuData = shell_exec('cat /proc/cpuinfo'); @@ -771,7 +775,7 @@ $type = 'openvz_veinfo'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -801,7 +805,7 @@ $type = 'openvz_beancounter'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -996,7 +1000,7 @@ */ $tmp = explode("\n", $data['output']); $more = $tmp[sizeof($tmp) - 1]; - $this->_getIntArray($more); + $res = $this->_getIntArray($more); $data['bytes'] = $res[0]; $data['requests'] = $res[1]; @@ -1134,7 +1138,7 @@ } } } - + /* * 3ware Controller */ @@ -1144,6 +1148,7 @@ $data['output'] = shell_exec('tw_cli info c0'); $state = 'ok'; + if(is_array($data['output'])) { foreach ($data['output'] as $item) { if (strpos($item, 'RAID') !== false) { if (strpos($item, ' VERIFYING ') !== false) { @@ -1187,8 +1192,9 @@ } } } + } } - + /* * Return the Result @@ -1291,54 +1297,54 @@ } public function monitorIPTables() { - global $conf; + 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 = 'iptables_rules'; + /** 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'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S'); + /* 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'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S 2>/dev/null'); - /* - * 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) + */ + $state = 'no_state'; + } else { + $state = 'no_state'; + $data = ''; + } - /* - * 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; - } + /* 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 2>/dev/null'); + + /* + * 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; @@ -1683,7 +1689,7 @@ break; case 'log_messages': if ($dist == 'debian') { - $logfile = '/var/log/messages'; + $logfile = '/var/log/syslog'; } elseif ($dist == 'redhat') { $logfile = '/var/log/messages'; } elseif ($dist == 'suse') { -- Gitblit v1.9.1