diff --git a/public_html/appmonitor/appmonitor-checks.class.php b/public_html/appmonitor/appmonitor-checks.class.php index 9211230d973897ab696e911f2b5cea21325ee5c5..198a4ded3a3bde05894e53979584a3b7da2c025c 100644 --- a/public_html/appmonitor/appmonitor-checks.class.php +++ b/public_html/appmonitor/appmonitor-checks.class.php @@ -20,8 +20,9 @@ define("RESULT_ERROR", 3); * <br> * --- HISTORY:<br> * 2014-10-24 0.5 axel.hahn@iml.unibe.ch<br> + * 2015-04-08 0.9 axel.hahn@iml.unibe.ch added sochket test: checkPortTcp<br> * --------------------------------------------------------------------------------<br> - * @version 0.5 + * @version 0.9 * @author Axel Hahn * @link TODO * @license GPL @@ -283,7 +284,43 @@ class appmonitorcheck { } } + + /** + * check if system is listening to a given port + * @param array $aParams + * array( + * "port" + * "host" (optional: 127.0.0.1 is default) + * ) + * @return boolean + */ + private function checkPortTcp($aParams) { + $this->_checkArrayKeys($aParams, "port"); + + $sHost=array_key_exists('host',$aParams)?$aParams['host']:'127.0.0.1'; + $iPort=(int)$aParams['port']; + + // from http://php.net/manual/de/sockets.examples.php + + $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); + if ($socket === false) { + $this->_setReturn(RESULT_UNKNOWN, "ERROR: $sHost:$iPort was not checked. socket_create() failed: " . socket_strerror(socket_last_error())); + return false; + } + + $result = socket_connect($socket, $sHost, $iPort); + if ($result === false) { + $this->_setReturn(RESULT_ERROR, "ERROR: $sHost:$iPort failed. " . socket_strerror(socket_last_error($socket))); + socket_close($socket); + return false; + } else { + $this->_setReturn(RESULT_OK, "OK: $sHost:$iPort was connected."); + socket_close($socket); + return true; + } + } /** + * DEPRECATED - use checkPortTcp instead * check if system is listening to a given port * @param array $aParams * array( diff --git a/public_html/appmonitor/appmonitor-client.class.php b/public_html/appmonitor/appmonitor-client.class.php index a468e240963accd75c6efde22e52419b5a6355b4..a800565fb8e0d01fbc2954b3da9b3baefaf8d06d 100644 --- a/public_html/appmonitor/appmonitor-client.class.php +++ b/public_html/appmonitor/appmonitor-client.class.php @@ -15,8 +15,9 @@ * <br> * --- HISTORY:<br> * 2014-10-24 0.5 axel.hahn@iml.unibe.ch<br> + * 2014-11-21 0.6 axel.hahn@iml.unibe.ch removed meta::ts <br> * --------------------------------------------------------------------------------<br> - * @version 0.5 + * @version 0.6 * @author Axel Hahn * @link TODO * @license GPL @@ -77,7 +78,6 @@ class appmonitor { "host" => false, "website" => false, "ttl" => false, - "ts" => (int) date("U"), "result" => false ); @@ -237,9 +237,9 @@ class appmonitor { if ($bHighlight) { $aMsg=array( 0=>"OK", - 1=>"WARNING", - 2=>"ERROR", - 255=>"UNKNOWN" + 1=>"UNKNOWN", + 2=>"WARNING", + 3=>"ERROR" ); foreach(array_keys($aMsg) as $iCode){ $sOut = preg_replace('/(\"result\":\ '.$iCode.')/', '$1 <span class="result'.$iCode.'"> <--- '.$aMsg[$iCode].' </span>', $sOut); @@ -247,7 +247,7 @@ class appmonitor { $sOut = preg_replace('/:\ \"(.*)\"/U', ': "<span style="color:#66e;">$1</span>"', $sOut); $sOut = preg_replace('/:\ ([0-9]*)/', ': <span style="color:#3a3; font-weight: bold;">$1</span>', $sOut); - $sOut = preg_replace('/\"(.*)\":/U', '"<span style="color:#e90;">$1</span>":', $sOut); + $sOut = preg_replace('/\"(.*)\":/U', '"<span style="color:#840;">$1</span>":', $sOut); $sOut = preg_replace('/([{\[])/', '$1<blockquote>', $sOut); $sOut = preg_replace('/([}\]])/', '</blockquote>$1', $sOut); @@ -257,15 +257,17 @@ class appmonitor { $sOut = '<!DOCTYPE html><html><head>' . '<style>' - . 'body{background:#282830; color:#9ac; font-family: verdana,arial;}' - . 'blockquote{background:rgba(215,180,255,0.03); border-left: 5px solid #222; margin-top: 0; padding: 0; ;}' - . 'blockquote blockquote:hover{border-color: #345; }' + + . 'body{background:#e0e8f8; color:#235; font-family: verdana,arial;}' + . 'blockquote{background:rgba(0,0,0,0.03); border-left: 0px solid rgba(0,0,0,0.06); margin: 0 0 0 3em; padding: 0; border-radius: 1em; border-top-left-radius: 0;}' + . 'blockquote blockquote:hover{; }' . 'blockquote blockquote blockquote:hover{border-color: #808;}' - . 'pre{background:#222; padding: 1em; border-radius: 1em;}' - . '.result0{background:#080; border-right: 1em solid #0f0;}' - . '.result1{background:#860; border-right: 1em solid #fc0;}' - . '.result2{background:#800; border-right: 1em solid #f00;}' - . '.result255{background:#666; border-right: 1em solid #ccc;}' + . 'pre{background:rgba(0,0,0,0.05); padding: 1em; border-radius: 1em;}' + . '.result0{background:#aca; border-right: 0em solid #080;}' + . '.result1{background:#666; border-right: 0em solid #ccc;}' + . '.result2{background:#fc9; border-right: 0em solid #860;}' + . '.result3{background:#800; border-right: 0em solid #f00;}' + . '</style>' . '<title>'.__CLASS__.'</title>' . '</head><body>'