From 7c8200fc6c3fd7e645cb290bb8a8389a81aad2d8 Mon Sep 17 00:00:00 2001 From: Cliff Parnitzky Date: Fri, 12 Mar 2021 00:28:03 +0100 Subject: [PATCH 1/6] Create FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..2be9520 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: cliffparnitzky From 6d0110841aae352025ae45b5906221c6049fe744 Mon Sep 17 00:00:00 2001 From: Kirsten Roschanski Date: Fri, 20 Aug 2021 15:48:46 +0200 Subject: [PATCH 2/6] Change to Contao-Manager --- .../classes/MonitoringScanClient.php | 17 +-- .../dca/tl_monitoring.php | 111 +++++++++++++++--- .../languages/de/tl_monitoring.php | 3 +- .../languages/en/tl_monitoring.php | 3 +- 4 files changed, 108 insertions(+), 26 deletions(-) diff --git a/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php b/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php index 4c48795..0c15b45 100644 --- a/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php +++ b/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php @@ -53,19 +53,20 @@ public function __construct() /** * Get the data from the client. */ - public function scanClient($clientUrl, $token) + public function scanClient($clientUrl, $endpoint, $token) { if (!function_exists('curl_exec')) { return $GLOBALS['TL_LANG']['ERR']['monitoringScanClient']['CURL_NOT_INSTALLED']; } - - $url = $clientUrl . "?token=" . $token; - + + $url = $clientUrl . "/contao-manager.phar.php" . $endpoint; + $agent = \Config::get('MONITORING_AGENT_NAME'); $headers = array( 'Content-Type: application/json', - 'Connection: Close' + 'Connection: Close', + 'Authorization: Bearer ' . $token, ); $curl = curl_init($url); @@ -79,9 +80,9 @@ public function scanClient($clientUrl, $token) $response = curl_exec ($curl); curl_close($curl); } - + $arrData = json_decode($response, true); - + if($response === FALSE || empty($arrData)) { return sprintf($GLOBALS['TL_LANG']['ERR']['monitoringScanClient']['FAILED'], $url, $url); @@ -95,4 +96,4 @@ public function scanClient($clientUrl, $token) } } -?> \ No newline at end of file +?> diff --git a/system/modules/MonitoringScanClient/dca/tl_monitoring.php b/system/modules/MonitoringScanClient/dca/tl_monitoring.php index c3d0a78..85a025b 100644 --- a/system/modules/MonitoringScanClient/dca/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/dca/tl_monitoring.php @@ -46,15 +46,6 @@ 'eval' => array('tl_class'=>'clr', 'submitOnChange' => true, 'doNotCopy'=>true), 'sql' => "char(1) NOT NULL default ''" ); -$GLOBALS['TL_DCA']['tl_monitoring']['fields']['client_url'] = array -( - 'label' => &$GLOBALS['TL_LANG']['tl_monitoring']['client_url'], - 'exclude' => true, - 'inputType' => 'text', - 'save_callback' => array(array('tl_monitoring', 'prepareUrl')), - 'eval' => array('tl_class'=>'clr long', 'mandatory'=>true, 'rgxp'=>'url', 'doNotCopy'=>true, 'maxlength'=>512, 'decodeEntities'=>true), - 'sql' => "varchar(512) NOT NULL default ''" -); $GLOBALS['TL_DCA']['tl_monitoring']['fields']['client_token'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_monitoring']['client_token'], @@ -103,26 +94,118 @@ public function __construct() */ public function getClientData($varValue, DataContainer $dc) { - if (!$dc->activeRecord || empty($dc->activeRecord->client_url) || empty($dc->activeRecord->client_token)) + if (!$dc->activeRecord || empty($dc->activeRecord->website) || empty($dc->activeRecord->client_token)) { return ""; } $monitoringScanClient = new \MonitoringScanClient(); - $response = $monitoringScanClient->scanClient($dc->activeRecord->client_url, $dc->activeRecord->client_token); + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/contao', $dc->activeRecord->client_token); + + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'contao.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/self-update' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'contao_manager.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/manager' , $dc->activeRecord->client_token); if (is_array($response)) { foreach($response as $responseKey=>$responseValue) { - $varValue .= $responseKey . ": " . $responseValue . "\n"; + $varValue .= 'contao_manager.config.' . $responseKey . ": " . $responseValue . "\n"; } } else { \Message::addError($response); } - + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/config' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'server.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/php-web' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'php.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/composer' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'composer.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/composer' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'composer.config.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/users' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'users.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); + } + return $varValue; } } -?> \ No newline at end of file +?> diff --git a/system/modules/MonitoringScanClient/languages/de/tl_monitoring.php b/system/modules/MonitoringScanClient/languages/de/tl_monitoring.php index 103c81e..a5f5585 100644 --- a/system/modules/MonitoringScanClient/languages/de/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/languages/de/tl_monitoring.php @@ -31,7 +31,6 @@ * Fields */ $GLOBALS['TL_LANG']['tl_monitoring']['client_scan_active'] = array('MonitoringClient Daten auslesen', 'Legen Sie fest, ob die internen Daten des überwachten Systems aus dem installierten MonitoringClient ausgelesen werden sollen.'); -$GLOBALS['TL_LANG']['tl_monitoring']['client_url'] = array('MonitoringClient API URL', 'Die Adresse zur API des MonitoringClient auf dem überwachten System. Eingabe mit Protokoll (z.B. http:// oder https://)!'); $GLOBALS['TL_LANG']['tl_monitoring']['client_token'] = array('MonitoringClient Token', 'Das Token des MonitoringClient zur Authentifizierung der Datenabfrage.'); $GLOBALS['TL_LANG']['tl_monitoring']['client_data'] = array('MonitoringClient Daten', 'Zeigt die internen Daten des überwachten Systems aus dem installierten MonitoringClient an.'); @@ -40,4 +39,4 @@ */ $GLOBALS['TL_LANG']['tl_monitoring']['client_legend'] = 'MonitoringClient Daten'; -?> \ No newline at end of file +?> diff --git a/system/modules/MonitoringScanClient/languages/en/tl_monitoring.php b/system/modules/MonitoringScanClient/languages/en/tl_monitoring.php index 6805101..59c8577 100644 --- a/system/modules/MonitoringScanClient/languages/en/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/languages/en/tl_monitoring.php @@ -31,7 +31,6 @@ * Fields */ $GLOBALS['TL_LANG']['tl_monitoring']['client_scan_active'] = array('Read MonitoringClient data', 'Define whether the internal data of the monitored system should be read from the installed MonitoringClient.'); -$GLOBALS['TL_LANG']['tl_monitoring']['client_url'] = array('MonitoringClient API URL', 'The address to the API of the MonitoringClient on the monitored system. Enter with protocol (for example http:// or https://)!'); $GLOBALS['TL_LANG']['tl_monitoring']['client_token'] = array('MonitoringClient token', 'The token of the MonitoringClient for authentication of the data query.'); $GLOBALS['TL_LANG']['tl_monitoring']['client_data'] = array('MonitoringClient data', 'Displays the internal data of the monitored system from the installed MonitoringClient.'); @@ -40,4 +39,4 @@ */ $GLOBALS['TL_LANG']['tl_monitoring']['client_legend'] = 'MonitoringClient data'; -?> \ No newline at end of file +?> From 9bb32f98dc44a75e9ec7dbd35d876945494d6458 Mon Sep 17 00:00:00 2001 From: Kirsten Roschanski Date: Fri, 20 Aug 2021 17:26:36 +0200 Subject: [PATCH 3/6] Fallback to Client-Bundle --- .../classes/MonitoringScanClient.php | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php b/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php index 0c15b45..9a0e683 100644 --- a/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php +++ b/system/modules/MonitoringScanClient/classes/MonitoringScanClient.php @@ -82,6 +82,29 @@ public function scanClient($clientUrl, $endpoint, $token) } $arrData = json_decode($response, true); + if($arrData['status'] == 401) { + $url = $clientUrl . "/system/modules/MonitoringClient/api/api.php?token=" . $token; + + $agent = \Config::get('MONITORING_AGENT_NAME'); + $headers = array( + 'Content-Type: application/json', + 'Connection: Close', + ); + $curl = curl_init($url); + + if ($curl) + { + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_USERAGENT, $agent); + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + + $response = curl_exec ($curl); + curl_close($curl); + } + + $arrData = json_decode($response, true); + } if($response === FALSE || empty($arrData)) { From 1e0fe6fa16576b7af3cdaf252dcdef62bcc1cbbb Mon Sep 17 00:00:00 2001 From: Kirsten Roschanski Date: Tue, 21 Sep 2021 17:05:10 +0200 Subject: [PATCH 4/6] Update tl_monitoring.php --- .../dca/tl_monitoring.php | 153 +++++++++--------- 1 file changed, 80 insertions(+), 73 deletions(-) diff --git a/system/modules/MonitoringScanClient/dca/tl_monitoring.php b/system/modules/MonitoringScanClient/dca/tl_monitoring.php index 85a025b..c7da87c 100644 --- a/system/modules/MonitoringScanClient/dca/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/dca/tl_monitoring.php @@ -101,102 +101,111 @@ public function getClientData($varValue, DataContainer $dc) $monitoringScanClient = new \MonitoringScanClient(); $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/contao', $dc->activeRecord->client_token); - if (is_array($response)) - { + if( is_array($response) && !array_key_exist('monitoring.server.agent', $response) ) { + foreach($response as $responseKey=>$responseValue) { $varValue .= 'contao.' . $responseKey . ": " . $responseValue . "\n"; } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/self-update' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/self-update' , $dc->activeRecord->client_token); + if (is_array($response)) { - $varValue .= 'contao_manager.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'contao_manager.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/manager' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/manager' , $dc->activeRecord->client_token); + if (is_array($response)) { - $varValue .= 'contao_manager.config.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'contao_manager.config.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/config' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/config' , $dc->activeRecord->client_token); + if (is_array($response)) { - $varValue .= 'server.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'server.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/php-web' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/php-web' , $dc->activeRecord->client_token); + if (is_array($response)) { - $varValue .= 'php.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'php.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/composer' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/composer' , $dc->activeRecord->client_token); + if (is_array($response)) { - $varValue .= 'composer.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'composer.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } - } - else - { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/composer' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/config/composer' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'composer.config.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else { - $varValue .= 'composer.config.' . $responseKey . ": " . $responseValue . "\n"; + \Message::addError($response); + } + + $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/users' , $dc->activeRecord->client_token); + if (is_array($response)) + { + foreach($response as $responseKey=>$responseValue) + { + $varValue .= 'users.' . $responseKey . ": " . $responseValue . "\n"; + } + } + else + { + \Message::addError($response); } } - else + elseif (is_array($response) && array_key_exist('monitoring.server.agent', $response)) { - \Message::addError($response); - } - $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/users' , $dc->activeRecord->client_token); - if (is_array($response)) - { - foreach($response as $responseKey=>$responseValue) - { - $varValue .= 'users.' . $responseKey . ": " . $responseValue . "\n"; + foreach($response as $responseKey=>$responseValue) + { + $varValue .= $responseKey . ": " . $responseValue . "\n"; + } } } else @@ -207,5 +216,3 @@ public function getClientData($varValue, DataContainer $dc) return $varValue; } } - -?> From 68559b7e68dc6507f67ca8d22e14fd16c8c439e8 Mon Sep 17 00:00:00 2001 From: Kirsten Roschanski Date: Tue, 21 Sep 2021 17:20:10 +0200 Subject: [PATCH 5/6] Update tl_monitoring.php --- system/modules/MonitoringScanClient/dca/tl_monitoring.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/system/modules/MonitoringScanClient/dca/tl_monitoring.php b/system/modules/MonitoringScanClient/dca/tl_monitoring.php index c7da87c..1d593a9 100644 --- a/system/modules/MonitoringScanClient/dca/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/dca/tl_monitoring.php @@ -201,11 +201,9 @@ public function getClientData($varValue, DataContainer $dc) } elseif (is_array($response) && array_key_exist('monitoring.server.agent', $response)) { - - foreach($response as $responseKey=>$responseValue) - { - $varValue .= $responseKey . ": " . $responseValue . "\n"; - } + foreach($response as $responseKey=>$responseValue) + { + $varValue .= $responseKey . ": " . $responseValue . "\n"; } } else From 5d5f6e75242e2a202d495842ac1bc197deb73e0e Mon Sep 17 00:00:00 2001 From: Kirsten Roschanski Date: Tue, 21 Sep 2021 17:22:49 +0200 Subject: [PATCH 6/6] Update tl_monitoring.php --- system/modules/MonitoringScanClient/dca/tl_monitoring.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/modules/MonitoringScanClient/dca/tl_monitoring.php b/system/modules/MonitoringScanClient/dca/tl_monitoring.php index 1d593a9..a668844 100644 --- a/system/modules/MonitoringScanClient/dca/tl_monitoring.php +++ b/system/modules/MonitoringScanClient/dca/tl_monitoring.php @@ -101,7 +101,7 @@ public function getClientData($varValue, DataContainer $dc) $monitoringScanClient = new \MonitoringScanClient(); $response = $monitoringScanClient->scanClient($dc->activeRecord->website, '/api/server/contao', $dc->activeRecord->client_token); - if( is_array($response) && !array_key_exist('monitoring.server.agent', $response) ) { + if( is_array($response) && !array_key_exists('monitoring.server.agent', $response) ) { foreach($response as $responseKey=>$responseValue) { @@ -199,7 +199,7 @@ public function getClientData($varValue, DataContainer $dc) \Message::addError($response); } } - elseif (is_array($response) && array_key_exist('monitoring.server.agent', $response)) + elseif (is_array($response) && array_key_exists('monitoring.server.agent', $response)) { foreach($response as $responseKey=>$responseValue) {