From 0a0ca4f6a79f15308c6c2c6b4b7d1de9c8454e3b Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Wed, 19 Mar 2014 09:49:27 -0400 Subject: [PATCH] Fixed warning message on openSuse due to apache2 module check --- server/lib/classes/monitor_tools.inc.php | 678 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 438 insertions(+), 240 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 2fa7a3e..2170b5c 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 { @@ -44,8 +44,80 @@ //** Debian or Ubuntu if (file_exists('/etc/debian_version')) { + if (strstr(trim(file_get_contents('/etc/issue')), 'Ubuntu')) { + if (strstr(trim(file_get_contents('/etc/issue')), 'LTS')) { + $lts=" LTS"; + } else { + $lts=""; + } - if (trim(file_get_contents('/etc/debian_version')) == '4.0') { + $issue=file_get_contents('/etc/issue'); + $distname = 'Ubuntu'; + $distid = 'debian40'; + $distbaseid = 'debian'; + $ver = explode(' ', $issue); + $ver = array_filter($ver); + $ver = next($ver); + $mainver = explode('.', $ver); + $mainver = array_filter($mainver); + $mainver = current($mainver).'.'.next($mainver); + switch ($mainver){ + case "12.10": + $relname = "(Quantal Quetzal)"; + break; + case "12.04": + $relname = "(Precise Pangolin)"; + break; + case "11.10": + $relname = "(Oneiric Ocelot)"; + break; + case "11.14": + $relname = "(Natty Narwhal)"; + break; + case "10.10": + $relname = "(Maverick Meerkat)"; + break; + case "10.04": + $relname = "(Lucid Lynx)"; + break; + case "9.10": + $relname = "(Karmic Koala)"; + break; + case "9.04": + $relname = "(Jaunty Jackpole)"; + break; + case "8.10": + $relname = "(Intrepid Ibex)"; + break; + case "8.04": + $relname = "(Hardy Heron)"; + break; + case "7.10": + $relname = "(Gutsy Gibbon)"; + break; + case "7.04": + $relname = "(Feisty Fawn)"; + break; + case "6.10": + $relname = "(Edgy Eft)"; + break; + case "6.06": + $relname = "(Dapper Drake)"; + break; + case "5.10": + $relname = "(Breezy Badger)"; + break; + case "5.04": + $relname = "(Hoary Hedgehog)"; + break; + case "4.10": + $relname = "(Warty Warthog)"; + break; + default: + $relname = "UNKNOWN"; + } + $distver = $ver.$lts." ".$relname; + } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { $distname = 'Debian'; $distver = '4.0'; $distid = 'debian40'; @@ -58,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') || substr(trim(file_get_contents('/etc/debian_version')),0,2) == '7.' || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { + $distname = 'Debian'; + $distver = 'Wheezy/Sid'; $distid = 'debian60'; $distbaseid = 'debian'; } else { @@ -149,9 +226,9 @@ return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } - //** Email Quota - public function monitorEmailQuota() { - global $conf; + //** Email Quota + public function monitorEmailQuota() { + global $conf, $app; //* Initialize data array $data = array(); @@ -165,26 +242,52 @@ //* The state of the email_quota. $state = 'ok'; - //* 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); - } + $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 = $mb['maildir'].'/.quotausage'; + if(file_exists($filename) && !is_link($filename)) { + $quotafile = file($filename); + preg_match('/storage.*?([0-9]+)/s', implode('',$quotafile), $storage_value); + $data[$email]['used'] = $storage_value[1]; + $app->log("Mail storage $email: " . $storage_value[1], LOGLEVEL_DEBUG); + unset($quotafile); + } else { + exec('du -s '.escapeshellcmd($mb['maildir']), $out); + $parts = explode(' ', $out[0]); + $data[$email]['used'] = intval($parts[0])*1024; + unset($out); + unset($parts); + } + } + } + + 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)){ + $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; @@ -201,7 +304,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); @@ -217,17 +320,19 @@ $data['user'][$username]['used'] += $s[2]; $data['user'][$username]['soft'] += $s[3]; $data['user'][$username]['hard'] += $s[4]; + $data['user'][$username]['files'] += $s[5]; } else { $data['user'][$username]['used'] = $s[2]; $data['user'][$username]['soft'] = $s[3]; $data['user'][$username]['hard'] = $s[4]; + $data['user'][$username]['files'] = $s[5]; } } } } //** 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); @@ -267,10 +372,12 @@ $server_id = intval($conf['server_id']); /** The type of the data */ + + $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); @@ -321,7 +428,7 @@ $type = 'os_info'; /* - Fetch the data into a array + Fetch the data into a array */ $dist = $this->get_distname(); @@ -351,7 +458,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; @@ -370,7 +477,7 @@ } public function monitorDiskUsage() { - global $conf; + global $app, $conf; /* the id of the server as int */ $server_id = intval($conf['server_id']); @@ -382,7 +489,10 @@ $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'); + $app->uses('getconf'); + $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + $dfData = shell_exec('df -hT|grep -v "'.$web_config['website_basedir'].'/" 2>/dev/null'); // split into array $df = explode("\n", $dfData); @@ -407,11 +517,11 @@ * calculate the state */ $usePercent = floatval($data[$i]['percent']); - + //* get the free memsize - if(substr($data[$i]['available'],-1) == 'G') { + if(substr($data[$i]['available'], -1) == 'G') { $freesize = floatval($data[$i]['available'])*1024; - } elseif(substr($data[$i]['available'],-1) == 'T') { + } elseif(substr($data[$i]['available'], -1) == 'T') { $freesize = floatval($data[$i]['available'])*1024*1024; } else { $freesize = floatval($data[$i]['available']); @@ -419,23 +529,23 @@ //* We don't want to check some filesystem which have no sensible filling levels switch ($data[$i]['type']) { - case 'iso9660': - case 'cramfs': - case 'udf': - case 'tmpfs': - case 'devtmpfs': - case 'udev': - break; - default: - if ($usePercent > 75 && $freesize < 2000) - $state = $this->_setState($state, 'info'); - if ($usePercent > 80 && $freesize < 1000) - $state = $this->_setState($state, 'warning'); - if ($usePercent > 90 && $freesize < 500) - $state = $this->_setState($state, 'critical'); - if ($usePercent > 95 && $freesize < 100) - $state = $this->_setState($state, 'error'); - break; + case 'iso9660': + case 'cramfs': + case 'udf': + case 'tmpfs': + case 'devtmpfs': + case 'udev': + break; + default: + if ($usePercent > 75 && $freesize < 2000) + $state = $this->_setState($state, 'info'); + if ($usePercent > 80 && $freesize < 1000) + $state = $this->_setState($state, 'warning'); + if ($usePercent > 90 && $freesize < 500) + $state = $this->_setState($state, 'critical'); + if ($usePercent > 95 && $freesize < 100) + $state = $this->_setState($state, 'error'); + break; } } } @@ -460,7 +570,7 @@ $type = 'mem_usage'; /* - Fetch the data into a array + Fetch the data into a array */ $miData = shell_exec('cat /proc/meminfo'); @@ -502,7 +612,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'); @@ -672,7 +782,7 @@ $type = 'openvz_veinfo'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -702,7 +812,7 @@ $type = 'openvz_beancounter'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -855,7 +965,7 @@ /* * Fetch the output */ - $data['output'] = shell_exec('zypper --non-interactive up'); + $data['output'] = shell_exec('zypper lu'); } else { /* * It is not Debian/Ubuntu, so there is no data and no state @@ -897,7 +1007,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]; @@ -955,7 +1065,7 @@ /* fetch the next line */ $line = $tmp[$i]; - if ((strpos($line, '[U_]') !== false) || (strpos($line, '[_U]') !== false)) { + if ((strpos($line, 'U_]') !== false) || (strpos($line, '[_U') !== false) || (strpos($line, 'U_U') !== false)) { /* One Disk is not working. * if the next line starts with "[>" or "[=" then * recovery (resync) is in state and the state is @@ -996,7 +1106,7 @@ /* * Fetch the output */ - $data['output'] = shell_exec('mpt-status --autoload -n'); + $data['output'] = shell_exec('mpt-status --autoload'); /* * Then calc the state. @@ -1008,7 +1118,7 @@ * The output contains information for every RAID and every HDD. * We only need the state of the RAID */ - if (strpos($item, 'raidlevel:') !== false) { + if (strpos($item, 'state ') !== false) { /* * We found a raid, process the state of it */ @@ -1035,6 +1145,66 @@ } } } + + /* + * 3ware Controller + */ + + system('which tw_cli', $retval); + if($retval === 0) { + + // TYPOWORX FIX | Determine Controler-ID + $availableControlers = shell_exec('tw_cli info | grep -Eo "c[0-9]+'); + $data['output'] = shell_exec('tw_cli info ' . $availableControlers); + + $state = 'ok'; + if(is_array($data['output'])) { + 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 @@ -1137,38 +1307,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'] = 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 = ''; - } + /* + * 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; @@ -1390,15 +1576,20 @@ * Now we have the last log in the array. * Check if the outdated-string is found... */ + $clamav_outdated_warning = false; + $clamav_bytecode_updated = false; foreach ($lastLog as $line) { - if (strpos(strtolower($line), 'outdated') !== false) { - /* - * Outdatet is only info, because if we set this to warning, the server is - * as long in state warning, as there is a new version of ClamAv which takes - * sometimes weeks! - */ - $state = $this->_setState($state, 'info'); + if (stristr($line,'outdated')) { + $clamav_outdated_warning = true; } + if(stristr($line,'main.cld is up to date')) { + $clamav_bytecode_updated = true; + } + } + + //* Warn when clamav is outdated and main.cld update failed. + if($clamav_outdated_warning == true && $clamav_bytecode_updated == false) { + $state = $this->_setState($state, 'info'); } /* @@ -1478,108 +1669,108 @@ } switch ($log) { - case 'log_mail': - if ($dist == 'debian') { - $logfile = '/var/log/mail.log'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.info'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_mail_warn': - if ($dist == 'debian') { - $logfile = '/var/log/mail.warn'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.warn'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_mail_err': - if ($dist == 'debian') { - $logfile = '/var/log/mail.err'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.err'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_messages': - if ($dist == 'debian') { - $logfile = '/var/log/messages'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/messages'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/messages'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/messages'; - } - break; - case 'log_ispc_cron': - if ($dist == 'debian') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'redhat') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'suse') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/cron'; - } - break; - case 'log_freshclam': - if ($dist == 'debian') { - $logfile = '/var/log/clamav/freshclam.log'; - } elseif ($dist == 'redhat') { - $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); - } elseif ($dist == 'suse') { - $logfile = '/var/log/freshclam.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/clamav/freshclam.log'; - } - break; - case 'log_clamav': - if ($dist == 'debian') { - $logfile = '/var/log/clamav/clamav.log'; - } elseif ($dist == 'redhat') { - $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); - } elseif ($dist == 'suse') { - $logfile = '/var/log/clamd.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/clamav/clamd.log'; - } - break; - case 'log_fail2ban': - if ($dist == 'debian') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/fail2ban.log'; - } - break; - case 'log_ispconfig': - if ($dist == 'debian') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'redhat') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'suse') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'gentoo') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } - break; - default: - $logfile = ''; - break; + case 'log_mail': + if ($dist == 'debian') { + $logfile = '/var/log/mail.log'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.info'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_mail_warn': + if ($dist == 'debian') { + $logfile = '/var/log/mail.warn'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.warn'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_mail_err': + if ($dist == 'debian') { + $logfile = '/var/log/mail.err'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.err'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_messages': + if ($dist == 'debian') { + $logfile = '/var/log/syslog'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/messages'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/messages'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/messages'; + } + break; + case 'log_ispc_cron': + if ($dist == 'debian') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'redhat') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'suse') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/cron'; + } + break; + case 'log_freshclam': + if ($dist == 'debian') { + $logfile = '/var/log/clamav/freshclam.log'; + } elseif ($dist == 'redhat') { + $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); + } elseif ($dist == 'suse') { + $logfile = '/var/log/freshclam.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/clamav/freshclam.log'; + } + break; + case 'log_clamav': + if ($dist == 'debian') { + $logfile = '/var/log/clamav/clamav.log'; + } elseif ($dist == 'redhat') { + $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); + } elseif ($dist == 'suse') { + $logfile = '/var/log/clamd.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/clamav/clamd.log'; + } + break; + case 'log_fail2ban': + if ($dist == 'debian') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/fail2ban.log'; + } + break; + case 'log_ispconfig': + if ($dist == 'debian') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'redhat') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'suse') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'gentoo') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } + break; + default: + $logfile = ''; + break; } // Getting the logfile content @@ -1624,7 +1815,13 @@ * So we can do a deepter test and try to get data over this connection. * (if apache hangs, we get a connection but a timeout by trying to GET the data!) */ - fwrite($fp, "GET / HTTP/1.0\r\n\r\n"); + // fwrite($fp, "GET / HTTP/1.0\r\n\r\n"); + $out = "GET / HTTP/1.1\r\n"; + $out .= "Host: localhost\r\n"; + $out .= "User-Agent: Mozilla/5.0 (ISPConfig monitor)\r\n"; + $out .= "Accept: application/xml,application/xhtml+xml,text/html\r\n"; + $out .= "Connection: Close\r\n\r\n"; + fwrite($fp, $out); stream_set_timeout($fp, 5); // Timeout after 5 seconds $res = fread($fp, 10); // try to get 10 bytes (enough to test!) $info = stream_get_meta_data($fp); @@ -1680,39 +1877,39 @@ * 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; + 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; + 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; } /* @@ -1726,6 +1923,7 @@ } private function _getIntArray($line) { + /** The array of float found */ $res = array(); /* First build a array from the line */ @@ -1741,4 +1939,4 @@ } -?> \ No newline at end of file +?> -- Gitblit v1.9.1