From b835de1cf6eb73ae8b33945f2bd4ae3eef054b18 Mon Sep 17 00:00:00 2001 From: Nls Date: Thu, 25 Aug 2016 15:35:32 +0200 Subject: [PATCH] Add optionnal header check on StatusUpdater --- src/lang/en_US.lang.php | 3 +++ .../Server/Controller/ServerController.php | 3 +++ src/psm/Util/Server/Updater/StatusUpdater.php | 18 ++++++++++++++++++ .../module/server/server/update.tpl.html | 4 ++-- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index b6089665..99012424 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -138,6 +138,9 @@ $sm_lang = array( 'type_ping' => 'Ping', 'pattern' => 'Search string/pattern', 'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.', + 'header' => 'Header', + 'header_name_description' => 'Header name (case-sensitive)', + 'header_value_description' => 'Header value. Regular expressions are allowed.', 'last_check' => 'Last check', 'last_online' => 'Last online', 'monitoring' => 'Monitoring', diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php index a839d1f6..667158b3 100644 --- a/src/psm/Module/Server/Controller/ServerController.php +++ b/src/psm/Module/Server/Controller/ServerController.php @@ -467,6 +467,9 @@ class ServerController extends AbstractServerController { '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_header' => psm_get_lang('servers', 'header'), + 'label_header_name_description' => psm_get_lang('servers', 'header_name_description'), + 'label_header_value_description' => psm_get_lang('servers', 'header_value_description'), 'label_last_check' => psm_get_lang('servers', 'last_check'), 'label_rtime' => psm_get_lang('servers', 'latency'), 'label_last_online' => psm_get_lang('servers', 'last_online'), diff --git a/src/psm/Util/Server/Updater/StatusUpdater.php b/src/psm/Util/Server/Updater/StatusUpdater.php index 58bb127b..0036529a 100644 --- a/src/psm/Util/Server/Updater/StatusUpdater.php +++ b/src/psm/Util/Server/Updater/StatusUpdater.php @@ -254,6 +254,24 @@ class StatusUpdater { $result = false; } } + + // Should we check a header ? + if($this->server['header_name'] != '') { + $header_text = substr($curl_result, 0, strpos($curl_result, "\r\n\r\n")); + foreach (explode("\r\n", $header_text) as $i => $line) { + if ($i === 0) + continue; // We skip the status code + else { + list ($key, $value) = explode(': ', $line); + if ($key == $this->server['header_name']) { + if(!preg_match("/{$this->server['header_value']}/i", $value)) { // The value doesn't match what we needed + $result = false; + } + break; // No need to go further + } + } + } + } } } diff --git a/src/templates/default/module/server/server/update.tpl.html b/src/templates/default/module/server/server/update.tpl.html index fccbbc33..1b1636aa 100644 --- a/src/templates/default/module/server/server/update.tpl.html +++ b/src/templates/default/module/server/server/update.tpl.html @@ -68,8 +68,8 @@
- - + +