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 |  259 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 171 insertions(+), 88 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 d49540e..90b9a61 100644
--- a/server/lib/classes/cron.d/100-monitor_raid.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php
@@ -29,39 +29,41 @@
 */
 
 class cronjob_monitor_raid extends cronjob {
-    
-    // job schedule
-    protected $_schedule = '*/5 * * * *';
-    protected $_run_at_new = true;
-	
-    private $_tools = null;
-    
-    /* this function is optional if it contains no custom code */
-    public function onPrepare() {
-        global $app;
-        
-        parent::onPrepare();
-    }
-    
-    /* this function is optional if it contains no custom code */
-    public function onBeforeRun() {
-        global $app;
-        
-        return parent::onBeforeRun();
-    }
-    
-    public function onRunJob() {
-        global $app, $conf;
-        
-        /* used for all monitor cronjobs */
-        $app->load('monitor_tools');
-        $this->_tools = new monitor_tools();
-        /* end global section for monitor cronjobs */
-        
+
+	// job schedule
+	protected $_schedule = '*/5 * * * *';
+	protected $_run_at_new = true;
+
+	private $_tools = null;
+
+	/* this function is optional if it contains no custom code */
+	public function onPrepare() {
+		global $app;
+
+		parent::onPrepare();
+	}
+
+	/* this function is optional if it contains no custom code */
+	public function onBeforeRun() {
+		global $app;
+
+		return parent::onBeforeRun();
+	}
+
+	public function onRunJob() {
+		global $app, $conf;
+
+		/* used for all monitor cronjobs */
+		$app->load('monitor_tools');
+		$this->_tools = new monitor_tools();
+		/* end global section for monitor cronjobs */
+
 		/* the id of the server as int */
 		$server_id = intval($conf['server_id']);
 
 		/** The type of the data */
+
+
 		$type = 'raid_state';
 
 		/*
@@ -175,56 +177,143 @@
 		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'])) {
-			foreach ($data['output'] as $item) {
-				if (strpos($item, 'RAID') !== false) {
-					if (strpos($item, ' VERIFYING ') !== false) {
-						$this->_tools->_setState($state, 'info');
-					}
-					else if (strpos($item, ' MIGRATE-PAUSED ') !== false) {
-						$this->_tools->_setState($state, 'info');
-					}
-					else if (strpos($item, ' MIGRATING ') !== false) {
-						$this->_tools->_setState($state, 'ok');
-					}
-					else if (strpos($item, ' INITIALIZING ') !== false) {
-						$this->_tools->_setState($state, 'info');
-					}
-					else if (strpos($item, ' INIT-PAUSED ') !== false) {
-						$this->_tools->_setState($state, 'info');
-					}
-					else if (strpos($item, ' REBUILDING ') !== false) {
-						$this->_tools->_setState($state, 'info');
-					}
-					else if (strpos($item, ' REBUILD-PAUSED ') !== false) {
-						$this->_tools->_setState($state, 'warning');
-					}
-					else if (strpos($item, ' RECOVERY ') !== false) {
-						$this->_tools->_setState($state, 'warning');
-					}
-					else if (strpos($item, ' DEGRADED ') !== false) {
-						$this->_tools->_setState($state, 'critical');
-					}
-					else if (strpos($item, ' UNKNOWN ') !== false) {
-						$this->_tools->_setState($state, 'critical');
-					}
-					else if (strpos($item, ' OK ') !== false) {
-						$this->_tools->_setState($state, 'ok');
-					}
-					else if (strpos($item, ' OPTIMAL ') !== false) {
-						$this->_tools->_setState($state, 'ok');
-					}
-					else {
-						$this->_tools->_setState($state, 'critical');
+				foreach ($data['output'] as $item) {
+					if (strpos($item, 'RAID') !== false) {
+						if (strpos($item, ' VERIFYING ') !== false) {
+							$this->_tools->_setState($state, 'info');
+						}
+						else if (strpos($item, ' MIGRATE-PAUSED ') !== false) {
+								$this->_tools->_setState($state, 'info');
+							}
+						else if (strpos($item, ' MIGRATING ') !== false) {
+								$this->_tools->_setState($state, 'ok');
+							}
+						else if (strpos($item, ' INITIALIZING ') !== false) {
+								$this->_tools->_setState($state, 'info');
+							}
+						else if (strpos($item, ' INIT-PAUSED ') !== false) {
+								$this->_tools->_setState($state, 'info');
+							}
+						else if (strpos($item, ' REBUILDING ') !== false) {
+								$this->_tools->_setState($state, 'info');
+							}
+						else if (strpos($item, ' REBUILD-PAUSED ') !== false) {
+								$this->_tools->_setState($state, 'warning');
+							}
+						else if (strpos($item, ' RECOVERY ') !== false) {
+								$this->_tools->_setState($state, 'warning');
+							}
+						else if (strpos($item, ' DEGRADED ') !== false) {
+								$this->_tools->_setState($state, 'critical');
+							}
+						else if (strpos($item, ' UNKNOWN ') !== false) {
+								$this->_tools->_setState($state, 'critical');
+							}
+						else if (strpos($item, ' OK ') !== false) {
+								$this->_tools->_setState($state, 'ok');
+							}
+						else if (strpos($item, ' OPTIMAL ') !== false) {
+								$this->_tools->_setState($state, 'ok');
+							}
+						else {
+							$this->_tools->_setState($state, 'critical');
+						}
 					}
 				}
 			}
+		}
+
+		/*
+		* 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;
@@ -236,27 +325,21 @@
 		 * 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']);
-        
-        parent::onRunJob();
-    }
-    
-    /* this function is optional if it contains no custom code */
-    public function onAfterRun() {
-        global $app;
-        
-        parent::onAfterRun();
-    }
+
+		parent::onRunJob();
+	}
+
+	/* this function is optional if it contains no custom code */
+	public function onAfterRun() {
+		global $app;
+
+		parent::onAfterRun();
+	}
 
 }
 

--
Gitblit v1.9.1