From 92069a29a33222ce6c65fa02072d65d963530597 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:12:07 +0100 Subject: [PATCH 1/8] Add RDP port to save method --- src/psm/Module/Server/Controller/ServerController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php index c2c61db2..d2cdbba8 100644 --- a/src/psm/Module/Server/Controller/ServerController.php +++ b/src/psm/Module/Server/Controller/ServerController.php @@ -286,6 +286,8 @@ class ServerController extends AbstractServerController { $clean["port"] = 443; } elseif ($tmp["scheme"] === "http") { $clean["port"] = 80; + } elseif ($tmp["scheme"] === "rdp") { + $clean["port"] = 3389; } } From 2325a6c25f1901088b35ed68f2c47207de0c3edb Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:14:30 +0100 Subject: [PATCH 2/8] Add RDP to port list --- src/templates/default/module/server/server/update.tpl.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/default/module/server/server/update.tpl.html b/src/templates/default/module/server/server/update.tpl.html index 2378d21e..96c4d098 100644 --- a/src/templates/default/module/server/server/update.tpl.html +++ b/src/templates/default/module/server/server/update.tpl.html @@ -47,6 +47,7 @@ + From 4c7d2bd4f3ad466905358c3755c69cf63f348549 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:29:28 +0100 Subject: [PATCH 3/8] Add updatePing method to check if ip is pingable --- src/psm/Util/Server/Updater/StatusUpdater.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/psm/Util/Server/Updater/StatusUpdater.php b/src/psm/Util/Server/Updater/StatusUpdater.php index 84b147e1..06335127 100644 --- a/src/psm/Util/Server/Updater/StatusUpdater.php +++ b/src/psm/Util/Server/Updater/StatusUpdater.php @@ -90,6 +90,9 @@ class StatusUpdater { } switch($this->server['type']) { + case 'ping': + $this->status_new = $this->updatePing($max_runs); + break; case 'service': $this->status_new = $this->updateService($max_runs); break; @@ -134,6 +137,41 @@ class StatusUpdater { } + /** + * Check the current servers ping status + * @param int $max_runs + * @param int $run + * @return boolean + */ + protected function updatePing($max_runs, $run = 1) { + $errno = 0; + // save response time + $starttime = microtime(true); + // set ping payload + $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost"; + + $fp = @fsockopen ($this->server['ip'], $this->server['port'], $errno, $this->error, 10); + $socket = socket_create(AF_INET, SOCK_RAW, 1); + socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0)); + socket_connect($socket, $this->server['ip'], null); + + socket_send($socket, $package, strLen($package), 0); + if (socket_read($socket, 255)) { + $this->rtime = microtime(true) - $starttime; + $status = true; + } else { + $status = false; + } + socket_close($socket); + + // check if server is available and rerun if asked. + if(!$status && $run < $max_runs) { + return $this->updatePing($max_runs, $run + 1); + } + + return $status; + } + /** * Check the current server as a service * @param int $max_runs From 363f67b3355c2b4d319c819cb9060e0efed3503c Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:30:27 +0100 Subject: [PATCH 4/8] Add copyright notice to updatePing method --- src/psm/Util/Server/Updater/StatusUpdater.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/psm/Util/Server/Updater/StatusUpdater.php b/src/psm/Util/Server/Updater/StatusUpdater.php index 06335127..ad787b2f 100644 --- a/src/psm/Util/Server/Updater/StatusUpdater.php +++ b/src/psm/Util/Server/Updater/StatusUpdater.php @@ -138,7 +138,7 @@ class StatusUpdater { } /** - * Check the current servers ping status + * Check the current servers ping status - Code from http://stackoverflow.com/a/20467492 * @param int $max_runs * @param int $run * @return boolean From 3cd90b29aef3f29d677be5240990f11d4893f276 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:33:55 +0100 Subject: [PATCH 5/8] Add server type ping to dropdown --- src/templates/default/module/server/server/update.tpl.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/default/module/server/server/update.tpl.html b/src/templates/default/module/server/server/update.tpl.html index 96c4d098..4f26e357 100644 --- a/src/templates/default/module/server/server/update.tpl.html +++ b/src/templates/default/module/server/server/update.tpl.html @@ -20,6 +20,7 @@
From 5c0e889dd2efc8ca55dab06f0c676148411f7fd9 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:38:47 +0100 Subject: [PATCH 6/8] Add ping validation checks to ServerValidator --- src/psm/Util/Server/ServerValidator.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/psm/Util/Server/ServerValidator.php b/src/psm/Util/Server/ServerValidator.php index 8b23d14f..4c97333f 100644 --- a/src/psm/Util/Server/ServerValidator.php +++ b/src/psm/Util/Server/ServerValidator.php @@ -101,6 +101,11 @@ class ServerValidator { throw new \InvalidArgumentException('server_ip_bad_service'); } break; + case 'ping': + if(!filter_var($value, FILTER_VALIDATE_IP)) { + throw new \InvalidArgumentException('server_ip_bad_service'); + } + break; } return true; @@ -113,7 +118,7 @@ class ServerValidator { * @throws \InvalidArgumentException */ public function type($type) { - if(!in_array($type, array('service', 'website'))) { + if(!in_array($type, array('ping', 'service', 'website'))) { throw new \InvalidArgumentException('server_type_invalid'); } return true; From b6060e793601aa819eadf1fa6e257ea74b86d411 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:44:15 +0100 Subject: [PATCH 7/8] Add ping label to getLabels() --- src/psm/Module/Server/Controller/ServerController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php index d2cdbba8..748f5434 100644 --- a/src/psm/Module/Server/Controller/ServerController.php +++ b/src/psm/Module/Server/Controller/ServerController.php @@ -460,6 +460,7 @@ class ServerController extends AbstractServerController { 'label_type' => psm_get_lang('servers', 'type'), 'label_website' => psm_get_lang('servers', 'type_website'), 'label_service' => psm_get_lang('servers', 'type_service'), + 'label_ping' => psm_get_lang('servers', 'type_ping'), 'label_pattern' => psm_get_lang('servers', 'pattern'), 'label_pattern_description' => psm_get_lang('servers', 'pattern_description'), 'label_last_check' => psm_get_lang('servers', 'last_check'), From 8ee269ceaa4d094408111a08691dbe1d86811d33 Mon Sep 17 00:00:00 2001 From: Tom Hatzer Date: Fri, 23 Dec 2016 11:45:27 +0100 Subject: [PATCH 8/8] Add type_ping to lang file --- src/lang/de_DE.lang.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/de_DE.lang.php b/src/lang/de_DE.lang.php index fd8aee95..885d6199 100644 --- a/src/lang/de_DE.lang.php +++ b/src/lang/de_DE.lang.php @@ -125,6 +125,7 @@ $sm_lang = array( 'type' => 'Typ', 'type_website' => 'Webseite', 'type_service' => 'Service', + 'type_ping' => 'Ping', 'pattern' => 'Suchstring/-muster', 'pattern_description' => 'Wenn das gesuchte Muster nicht in der Webseite ist, wird die Seite als offline markiert. Reguläre Ausdrücke sind erlaubt.', 'last_check' => 'Letzter Check',