From 5ca959fa688255a8de61f89fe2751eb4d24a6912 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Tue, 22 Mar 2016 09:22:07 -0400
Subject: [PATCH] fixed typo

---
 server/lib/classes/cron.d/100-monitor_raid.inc.php |   99 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/server/lib/classes/cron.d/100-monitor_raid.inc.php b/server/lib/classes/cron.d/100-monitor_raid.inc.php
index 9edd061..90b9a61 100644
--- a/server/lib/classes/cron.d/100-monitor_raid.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php
@@ -177,7 +177,9 @@
 		system('which tw_cli', $retval);
 		if($retval === 0) {
 
-			$data['output'] = shell_exec('tw_cli info c0');
+			// 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'])) {
@@ -227,6 +229,91 @@
 			}
 		}
 
+		/*
+		* HP Proliant
+		*/
+		system('which hpacucli', $retval);
+		if($retval === 0) {
+			$state = 'ok';
+			$data['output'] = shell_exec('/usr/sbin/hpacucli ctrl all show config');
+			$tmp = explode("\n", $data['output']);
+			if(is_array($tmp)) {
+				foreach ($tmp as $item) {
+					if (strpos($item, 'logicaldrive') !== false) {
+						if (strpos($item, 'OK') !== false) {
+							$this->_tools->_setState($state = 'ok');
+						} elseif (strpos($item, 'Recovery Mode') !== false) {
+							$this->_tools->_setState($state = 'critical');
+							break;
+						} elseif (strpos($item, 'Failed') !== false) {
+							$this->_tools->_setState($state = 'error');
+							break;
+						} elseif (strpos($item, 'Recovering') !== false) {
+							$this->_tools->_setState($state = 'info');
+							break;
+						} else {
+							$this->_tools->_setState($state = 'critical');
+						}
+					}
+					if (strpos($item, 'physicaldrive') !== false) {
+						if (strpos($item, 'physicaldrive') !== false) {
+							if (strpos($item, 'OK') !== false) {
+								$this->_tools->_setState($state = 'ok');
+							} elseif (strpos($item, 'Failed') !== false) {
+								$this->_tools->_setState($state = 'critical');
+								break;
+							} elseif (strpos($item, 'Rebuilding') !== false) {
+								$this->_tools->_setState($state = 'info');
+								break;
+							} else {
+								$this->_tools->_setState($state = 'critical');
+								break;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		/*
+		* LSI MegaRaid
+		*/
+		system('which megacli', $retval);
+		system('which megacli64', $retval64);
+		if($retval === 0 || $retval64 === 0) {
+			$binary=@($retval === 0)?'megacli':'megacli64';
+			$state = 'ok';
+			$data['output'] = shell_exec($binary.' -LDInfo -Lall -aAll');
+			if (strpos($data['output'], 'Optimal') !== false) {
+				$this->_tools->_setState($state, 'ok');
+			} else if (strpos($data['output'], 'Degraded') !== false) {
+				$this->_tools->_setState($state, 'critical');
+			} else if (strpos($data['output'], 'Offline') !== false) {
+				$this->_tools->_setState($state, 'critical');
+			} else {
+				$this->_tools->_setState($state, 'critical');
+			}
+		}
+
+		/*
+		* Adaptec-RAID
+		*/
+		system('which arcconf', $retval);
+		if($retval === 0) {
+			$state = 'ok';
+			$data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
+			if(is_array($data['output'])) {
+				foreach ($data['output'] as $item) {
+					if (strpos($item, 'Logical device name                      : RAID') !== false) {
+						if (strpos($item, 'Optimal') !== false) {
+							$this->_tools->_setState($state, 'ok');
+						} else {
+							$this->_tools->_setState($state, 'critical');
+						}
+					}
+				}
+			}
+		}
 
 		$res = array();
 		$res['server_id'] = $server_id;
@@ -238,14 +325,8 @@
 		 * Insert the data into the database
 		 */
 		$sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' .
-			'VALUES (' .
-			$res['server_id'] . ', ' .
-			"'" . $app->dbmaster->quote($res['type']) . "', " .
-			'UNIX_TIMESTAMP(), ' .
-			"'" . $app->dbmaster->quote(serialize($res['data'])) . "', " .
-			"'" . $res['state'] . "'" .
-			')';
-		$app->dbmaster->query($sql);
+			'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)';
+		$app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']);
 
 		/* The new data is written, now we can delete the old one */
 		$this->_tools->delOldRecords($res['type'], $res['server_id']);

--
Gitblit v1.9.1