From bc963bc1f5611c78a319ddb77efb0037cc63768c Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Mon, 18 Oct 2010 03:41:41 -0400
Subject: [PATCH] Fixed problem in LSI raid controller detection code.

---
 server/mods-available/monitor_core_module.inc.php |   78 ++++++++++++++++++++-------------------
 1 files changed, 40 insertions(+), 38 deletions(-)

diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php
index 2260eef..a28d8f6 100644
--- a/server/mods-available/monitor_core_module.inc.php
+++ b/server/mods-available/monitor_core_module.inc.php
@@ -1085,49 +1085,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(is_file('/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');
+						}
 					}
 				}
 			}

--
Gitblit v1.9.1