From 5bbfc1b098302671bcbf2f754efc627d50eaa5c7 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Thu, 13 Jan 2011 09:25:59 -0500 Subject: [PATCH] Added global functions library which conatins a mail functin that supports attachments and a array_merge function that merges arrays that conatain numeric keys and strings correctly. --- server/mods-available/monitor_core_module.inc.php | 133 +++++++++++++++++++++++++------------------- 1 files changed, 75 insertions(+), 58 deletions(-) diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php index dcdeac7..a29b922 100644 --- a/server/mods-available/monitor_core_module.inc.php +++ b/server/mods-available/monitor_core_module.inc.php @@ -53,7 +53,7 @@ /* * Do the monitor every n minutes and write the result to the db */ - $min = date('i'); + $min = @date('i'); if (($min % $this->interval) == 0) { $this->doMonitor(); } @@ -203,8 +203,10 @@ $this->monitorMemUsage(); $this->monitorCpu(); $this->monitorServices(); - $this->monitorOpenVzHost(); - $this->monitorOpenVzUserBeancounter(); + if(@file_exists('/proc/user_beancounters')) { + $this->monitorOpenVzHost(); + $this->monitorOpenVzUserBeancounter(); + } $this->monitorMailLog(); $this->monitorMailWarnLog(); $this->monitorMailErrLog(); @@ -238,7 +240,7 @@ $state = 'ok'; /** Fetch the data for all users*/ - $dfData = shell_exec('repquota -asu'); + $dfData = shell_exec('repquota -au'); // split into array $df = explode("\n", $dfData); @@ -253,14 +255,22 @@ */ $s = preg_split ('/[\s]+/', $df[$i]); $username = $s[0]; - $data['user'][$username]['used'] = $s[2]; - $data['user'][$username]['soft'] = $s[3]; - $data['user'][$username]['hard'] = $s[4]; + if(substr($username,0,3) == 'web') { + if(isset($data['user'][$username])) { + $data['user'][$username]['used'] += $s[2]; + $data['user'][$username]['soft'] += $s[3]; + $data['user'][$username]['hard'] += $s[4]; + } else { + $data['user'][$username]['used'] = $s[2]; + $data['user'][$username]['soft'] = $s[3]; + $data['user'][$username]['hard'] = $s[4]; + } + } } } /** Fetch the data for all users*/ - $dfData = shell_exec('repquota -asg'); + $dfData = shell_exec('repquota -ag'); // split into array $df = explode("\n", $dfData); @@ -275,9 +285,17 @@ */ $s = preg_split ('/[\s]+/', $df[$i]); $groupname = $s[0]; - $data['group'][$groupname]['used'] = $s[1]; - $data['group'][$groupname]['soft'] = $s[2]; - $data['group'][$groupname]['hard'] = $s[3]; + if(substr($groupname,0,6) == 'client') { + if(isset($data['group'][$groupname])) { + $data['group'][$groupname]['used'] += $s[1]; + $data['group'][$groupname]['soft'] += $s[2]; + $data['group'][$groupname]['hard'] += $s[3]; + } else { + $data['group'][$groupname]['used'] = $s[1]; + $data['group'][$groupname]['soft'] = $s[2]; + $data['group'][$groupname]['hard'] = $s[3]; + } + } } } @@ -921,20 +939,17 @@ * 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'); + $emergeData = shell_exec('glsa-check -t affected'); if ($emergeData == '') { /* There is nothing to update! */ $state = 'ok'; + $data['output'] = 'No unapplied GLSA\'s found on the system.'; } else { /* There is something to update! */ - $state = 'warning'; + $state = 'info'; + $data['output'] = shell_exec('glsa-check -pv --nocolor affected 2>/dev/null'); } - - /* - * Fetch the output - */ - $data['output'] = shell_exec('emerge -pvuDNt --color n --nospinner world'); } else { /* @@ -1085,49 +1100,51 @@ /* * Check, if we have mpt-status installed (LSIsoftware-raid) */ - system('which mpt-status', $retval); - if($retval === 0) { - /* - * Fetch the output - */ - $data['output'] = shell_exec('mpt-status --autoload -n'); - - /* - * Then calc the state. - */ - $state = 'ok'; - foreach ($data['output'] as $item) { + if(file_exists('/proc/mpt/summary')) { + system('which mpt-status', $retval); + if($retval === 0) { /* - * The output contains information for every RAID and every HDD. - * We only need the state of the RAID + * Fetch the output */ - if (strpos($item, 'raidlevel:') !== false) { + $data['output'] = shell_exec('mpt-status --autoload -n'); + + /* + * Then calc the state. + */ + $state = 'ok'; + foreach ($data['output'] as $item) { /* - * We found a raid, process the state of it + * The output contains information for every RAID and every HDD. + * We only need the state of the RAID */ - 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 + if (strpos($item, 'raidlevel:') !== false) { + /* + * We found a raid, process the state of it */ - $this->_setState($state, 'critical'); + 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'); + } } } } @@ -1677,13 +1694,13 @@ 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 = ''; } + 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 = ''; } + elseif($dist == 'suse') { $logfile = '/var/log/clamd.log'; } elseif($dist == 'gentoo') { $logfile = '/var/log/clamav/clamd.log'; } break; case 'log_fail2ban': -- Gitblit v1.9.1