From 2cb1563f63386b35a69e460051aa9b4a2851d104 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Wed, 30 May 2012 07:30:44 -0400
Subject: [PATCH] - Added (clickable) placeholders to client messaging function. - Added check so that the client password isn't inserted into the message (for security reasons).

---
 interface/web/monitor/show_sys_state.php |  136 ++++++++++++++++++++++++++++-----------------
 1 files changed, 84 insertions(+), 52 deletions(-)

diff --git a/interface/web/monitor/show_sys_state.php b/interface/web/monitor/show_sys_state.php
index e089304..634880c 100644
--- a/interface/web/monitor/show_sys_state.php
+++ b/interface/web/monitor/show_sys_state.php
@@ -69,7 +69,7 @@
 $app->tpl->setVar("state_data",$output);
 $app->tpl->setVar("state_type",$stateType);
 $app->tpl->setVar("list_head_txt",$title);
-$app->tpl->setVar("list_desc_txt",$description);
+$app->tpl->setVar("list_desc_txt",(isset($description) ? $description : ''));
 $app->tpl->setVar("monTransRefreshsq", $monTransRefreshsq);
 
 /*
@@ -138,7 +138,7 @@
 			}
 		}
 	}
-	
+
 	/*
 	 * Now we have to output all "normal" server or all OpenVZ-Hosts (or all OpenVZ-VE's without
 	 * a OpenVZ-Host managed by ISPConfig). The OpenVz-VE's are then included in them...
@@ -149,14 +149,16 @@
 		if (!isset($data['is_ve'])) {
 			/*
 			 * it is NOT a Ve, so do the output of this server and off all VE's included in them
-			 */
+			*/
 			$html .= $data['html_server'];
 			/* get all VE's of this server */
 			$veInfo = $data['ve_info'];
-			foreach ($veInfo as $info) {
-				for ($i = 0; $i < sizeof($serverData); $i++) {
-					if ($serverData[$i]['server_name'] == $info['hostname']) {
-						$html = str_replace('##VE_INFO##', $serverData[$i]['html_ve'] . '##VE_INFO##', $html);
+			if(is_array($veInfo)) {
+				foreach ($veInfo as $info) {
+					for ($i = 0; $i < sizeof($serverData); $i++) {
+						if ($serverData[$i]['server_name'] == $info['hostname']) {
+							$html = str_replace('##VE_INFO##', $serverData[$i]['html_ve'] . '##VE_INFO##', $html);
+						}
 					}
 				}
 			}
@@ -191,12 +193,20 @@
 	$records = $app->db->queryAllRecords("SELECT DISTINCT type, data FROM monitor_data WHERE server_id = " . $serverId);
 	$osData = null;
 	$veInfo = null;
+	$ispcData = null;
 	foreach($records as $record) {
 		/* get the state from the db-data */
-		_processDbState($record['type'], $serverId, &$serverState, &$messages);
+		$tmp = _processDbState($record['type'], $serverId, $serverState, $messages);
+		$serverState = $tmp['serverState'];
+		$messages = $tmp['messages'];
+		
 		/* if we have the os-info, get it */
 		if ($record['type'] == 'os_info') {
 			$osData = unserialize($record['data']);
+		}
+		/* if we have the ISPConfig-info, get it */
+		if ($record['type'] == 'ispc_info') {
+			$ispcData = unserialize($record['data']);
 		}
 		/* if we have the ve-info, get it */
 		if ($record['type'] == 'openvz_veinfo') {
@@ -219,39 +229,49 @@
 	if ($osData != null) {
 		$html_ve .= $osData['name'] . ' ' . $osData['version'] . '<br>';
 	}
+	if ($ispcData != null) {
+		$html_ve .= $ispcData['name'] . ' ' . $ispcData['version'] . '<br>';
+	}
 	$html_ve .= $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . '<br>';
 
 	/*
 	 * Info of a "normal" Server or a OpenVz-Host
 	*/
-	$html_server .= '<div class="systemmonitor-state state-' . $serverState . '">';
+	$html_server = '<div class="systemmonitor-state state-' . $serverState . '">';
 	$html_server .= '<div class="systemmonitor-device device-server">';
 	$html_server .= '<div class="systemmonitor-content icons32 ico-' . $serverState . '">';
 	$html_server .= $app->lng("monitor_serverstate_server_txt") . ': ' . $serverName;
 	if ($osData != null) {
-		$html_server .= ' (' . $osData['name'] . ' ' . $osData['version'] . ')';
+		$html_server .= ' (' . $osData['name'] . ' ' . $osData['version'] . ')<br>';
+	}
+	else {
+		$html_server .= '<br />';
+	}
+	if ($ispcData != null) {
+		$html_server .= $ispcData['name'] . ' ' . $ispcData['version'] . '<br>';
+	}
+	else {
+		$html_server .= '<br />';
 	}
 
-	$html_server .= '<br />';
 	$html_server .= $app->lng("monitor_serverstate_state_txt") . ': ' . $serverState . ' (';
-	$html_server .= sizeof($messages[$app->lng("monitor_serverstate_listunknown_txt")]) . ' ' . $app->lng("monitor_serverstate_unknown_txt") . ', ';
-	$html_server .= sizeof($messages[$app->lng("monitor_serverstate_listinfo_txt")]) . ' ' . $app->lng("monitor_serverstate_info_txt") . ', ';
-	$html_server .= sizeof($messages[$app->lng("monitor_serverstate_listwarning_txt")]) . ' ' . $app->lng("monitor_serverstate_warning_txt") . ', ';
-	$html_server .= sizeof($messages[$app->lng("monitor_serverstate_listcritical_txt")]) . ' ' . $app->lng("monitor_serverstate_critical_txt") . ', ';
-	$html_server .= sizeof($messages[$app->lng("monitor_serverstate_listerror_txt")]) . ' ' . $app->lng("monitor_serverstate_error_txt") . '';
+	$html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listunknown_txt")]) ? $messages[$app->lng("monitor_serverstate_listunknown_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_unknown_txt") . ', ';
+	$html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listinfo_txt")]) ? $messages[$app->lng("monitor_serverstate_listinfo_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_info_txt") . ', ';
+	$html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listwarning_txt")]) ? $messages[$app->lng("monitor_serverstate_listwarning_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_warning_txt") . ', ';
+	$html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listcritical_txt")]) ? $messages[$app->lng("monitor_serverstate_listcritical_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_critical_txt") . ', ';
+	$html_server .= sizeof((isset($messages[$app->lng("monitor_serverstate_listerror_txt")]) ? $messages[$app->lng("monitor_serverstate_listerror_txt")] : array())) . ' ' . $app->lng("monitor_serverstate_error_txt") . '';
 	$html_server .= ')<br />';
 
 	/*
 	 * Verbose - Info 
 	*/
 	$html_verbose = $html_server;
-	foreach($messages as $key => $state) { {
-			$html_verbose .= $key . ':<br />';
-			foreach ($state as $msg) {
-				$html_verbose .= $msg . '<br />';
-			}
-			$html_verbose .= '<br />';
+	foreach($messages as $key => $state) {
+		$html_verbose .= $key . ':<br />';
+		foreach ($state as $msg) {
+			$html_verbose .= $msg . '<br />';
 		}
+		$html_verbose .= '<br />';
 	}
 
 	/*
@@ -280,7 +300,7 @@
 }
 
 /*
- * gets the state from the db and process it
+* gets the state from the db and process it
 */
 function _processDbState($type, $serverId, $serverState, $messages) {
 	global $app;
@@ -289,10 +309,17 @@
     * Always the NEWEST record of each monitoring is responsible for the
     * state
 	*/
-// get the State from the DB
+	// get the State from the DB
 	$record = $app->db->queryOneRecord("SELECT state FROM monitor_data WHERE type = '" . $type . "' and server_id = " . $serverId . " order by created desc");
-// change the new state to the highest state
-	$serverState = _setState($serverState, $record['state']);
+
+	// change the new state to the highest state
+	/*
+	* Monitoring the user_beancounter of a VE is not as easy as i thought, so for now ignore
+	* this state (if we have a better solution)
+	*/
+	if ($type != 'openvz_beancounter') {
+		$serverState = _setState($serverState, $record['state']);
+	}
 
 	/*
      * The message depands on the type and the state
@@ -430,32 +457,35 @@
 		}
 	}
 
-	if ($type == 'openvz_beancounter') {
-		switch ($record['state']) {
-			case 'ok':
-				$messages[$app->lng("monitor_serverstate_listok_txt")][] = $app->lng("monitor_serverstate_beancounterok_txt") . ' ' .
-						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
-				break;
-			case 'info':
-				$messages[$app->lng("monitor_serverstate_listinfo_txt")][] = $app->lng("monitor_serverstate_beancounterinfo_txt") . ' ' .
-						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
-				break;
-			case 'warning':
-				$messages[$app->lng("monitor_serverstate_listinfo_txt")][] = $app->lng("monitor_serverstate_beancounterwarning_txt") . ' ' .
-						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
-				break;
-			case 'critical':
-				$messages[$app->lng("monitor_serverstate_listcritical_txt")][] = $app->lng("monitor_serverstate_beancountercritical_txt") . ' ' .
-						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
-				break;
-			case 'error':
-				$messages[$app->lng("monitor_serverstate_listerror_txt")][] = $app->lng("monitor_serverstate_beancountererror_txt") . ' ' .
-						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
-				break;
-			default:
-				break;
-		}
-	}
+	/*
+	 * ignore, until we find a better solution
+	 */
+//	if ($type == 'openvz_beancounter') {
+//		switch ($record['state']) {
+//			case 'ok':
+//				$messages[$app->lng("monitor_serverstate_listok_txt")][] = $app->lng("monitor_serverstate_beancounterok_txt") . ' ' .
+//						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
+//				break;
+//			case 'info':
+//				$messages[$app->lng("monitor_serverstate_listinfo_txt")][] = $app->lng("monitor_serverstate_beancounterinfo_txt") . ' ' .
+//						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
+//				break;
+//			case 'warning':
+//				$messages[$app->lng("monitor_serverstate_listinfo_txt")][] = $app->lng("monitor_serverstate_beancounterwarning_txt") . ' ' .
+//						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
+//				break;
+//			case 'critical':
+//				$messages[$app->lng("monitor_serverstate_listcritical_txt")][] = $app->lng("monitor_serverstate_beancountercritical_txt") . ' ' .
+//						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
+//				break;
+//			case 'error':
+//				$messages[$app->lng("monitor_serverstate_listerror_txt")][] = $app->lng("monitor_serverstate_beancountererror_txt") . ' ' .
+//						"<a href='#' onclick='loadContent(\"monitor/show_data.php?type=openvz_beancounter\");'>[" . $app->lng("monitor_serverstate_more_txt") . "]</a>";
+//				break;
+//			default:
+//				break;
+//		}
+//	}
 
 
 	if ($type == 'mailq') {
@@ -547,6 +577,8 @@
 	if ($type == 'rkhunter') {
 		/* this type has no state */
 	}
+	
+	return array('serverState' => $serverState,'messages' => $messages);
 }
 
 /*

--
Gitblit v1.9.1