From 7b47c0aa0aeee6f059f00008e36cc210ca89ecb9 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Wed, 21 Aug 2013 10:28:20 -0400
Subject: [PATCH] Merged revisions 4069-4117 from stable branch.

---
 server/lib/classes/monitor_tools.inc.php |   81 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 70 insertions(+), 11 deletions(-)

diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index b5ca043..6b93e1e 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -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';
@@ -133,10 +132,10 @@
 				$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') {
+			} elseif (strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || strstr(trim(file_get_contents('/etc/debian_version')), '7.1') || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') {
 				$distname = 'Debian';
 				$distver = 'Wheezy/Sid';
-				$distid = 'debian70';
+				$distid = 'debian60';
 				$distbaseid = 'debian';
 			} else {
 				$distname = 'Debian';
@@ -303,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);
@@ -331,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);
@@ -474,7 +473,7 @@
 	}
 
 	public function monitorDiskUsage() {
-		global $conf;
+		global $app,$conf;
 
 		/* the id of the server as int */
 		$server_id = intval($conf['server_id']);
@@ -486,7 +485,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);
@@ -753,6 +755,13 @@
 				$data['mysqlserver'] = 0;
 				$state = 'error'; // because service is down
 			}
+
+			if ($this->_checkTcp('localhost', 27017)) {
+				$data['mongodbserver'] = 1;
+			} else {
+				$data['mongodbserver'] = 0;
+				$state = 'error'; // because service is down
+			}
 		}
 
 		/*
@@ -898,7 +907,7 @@
 			/*
 			 * Fetch the output
 			 */
-			$data['output'] = shell_exec('apt-get -s -q dist-upgrade');
+			$data['output'] = $aptData;
 		} elseif (file_exists('/etc/gentoo-release')) {
 
 			/*
@@ -1149,6 +1158,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) {
@@ -1191,6 +1201,7 @@
 						$this->_setState($state, 'critical');
 					}
 				}
+			}
 			}
 		}
 
@@ -1295,6 +1306,51 @@
 		return $res;
 	}
 
+	public function monitorMongoDB() {
+		global $conf;
+
+		/* the id of the server as int */
+		$server_id = intval($conf['server_id']);
+
+		/** The type of the data */
+		$type = 'log_mongodb';
+
+		/* This monitoring is only available if MongoDB is installed */
+		system('which mongod', $retval); // Debian, Ubuntu, Fedora
+		if ($retval !== 0)
+			system('which mongod', $retval); // CentOS
+		if ($retval === 0) {
+			/*  Get the data of the log */
+			$data = $this->_getLogData($type);
+
+			/*
+			 * At this moment, there is no state (maybe later)
+			 */
+			$state = 'no_state';
+		} else {
+			/*
+			 * MongoDB is not installed, so there is no data and no state
+			 *
+			 * no_state, NOT unknown, because "unknown" is shown as state
+			 * inside the GUI. no_state is hidden.
+			 *
+			 * We have to write NO DATA inside the DB, because the GUI
+			 * could not know, if there is any dat, or not...
+			 */
+			$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 monitorIPTables() {
 				global $conf;
 
@@ -1308,7 +1364,7 @@
 				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');
+						$data['output'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S 2>/dev/null');
 
 						/*
 						 * At this moment, there is no state (maybe later)
@@ -1324,7 +1380,7 @@
 				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');
+						$data['output'] .= '<br><h2>ip6tables -S (ipv6)</h2>'.shell_exec('ip6tables -S 2>/dev/null');
 
 						/*
 						 * At this moment, there is no state (maybe later)
@@ -1741,6 +1797,9 @@
 					$logfile = '/var/log/fail2ban.log';
 				}
 				break;
+			case 'log_mongodb':
+					$logfile = '/var/log/mongodb/mongodb.log';
+				break;
 			case 'log_ispconfig':
 				if ($dist == 'debian') {
 					$logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log';
@@ -1922,4 +1981,4 @@
 
 }
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1