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