From d5574cf189987d978c4d4cf2bb97de08cae9e144 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Thu, 3 Mar 2022 15:11:50 +0100 Subject: [PATCH] allow adding protocol to domains in 'connectivity_check_domains' config Signed-off-by: Julien Veyssier --- .../lib/Controller/CheckSetupController.php | 21 ++++++++++++------- config/config.sample.php | 4 ++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php index b615bfae7938d..1809a47ff44e6 100644 --- a/apps/settings/lib/Controller/CheckSetupController.php +++ b/apps/settings/lib/Controller/CheckSetupController.php @@ -198,19 +198,24 @@ private function hasInternetConnectivityProblems(): bool { } /** - * Checks if the Nextcloud server can connect to a specific URL using both HTTPS and HTTP + * Checks if the Nextcloud server can connect to a specific URL + * @param string $site site domain or full URL with http/https protocol * @return bool */ - private function isSiteReachable($sitename) { - $httpSiteName = 'http://' . $sitename . '/'; - $httpsSiteName = 'https://' . $sitename . '/'; - + private function isSiteReachable(string $site): bool { try { $client = $this->clientService->newClient(); - $client->get($httpSiteName); - $client->get($httpsSiteName); + // if there is no protocol, test http:// AND https:// + if (preg_match('/^https?:\/\//', $site) !== 1) { + $httpSite = 'http://' . $site . '/'; + $client->get($httpSite); + $httpsSite = 'https://' . $site . '/'; + $client->get($httpsSite); + } else { + $client->get($site); + } } catch (\Exception $e) { - $this->logger->error('Cannot connect to: ' . $sitename, [ + $this->logger->error('Cannot connect to: ' . $site, [ 'app' => 'internet_connection_check', 'exception' => $e, ]); diff --git a/config/config.sample.php b/config/config.sample.php index 32a946ceb51b6..e66276e8b8dcd 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -767,6 +767,10 @@ * connection. If none of these hosts are reachable, the administration panel * will show a warning. Set to an empty list to not do any such checks (warning * will still be shown). + * If no protocol is provided, both http and https will be tested. + * For example, 'http://www.nextcloud.com' and 'https://www.nextcloud.com' + * will be tested for 'www.nextcloud.com' + * If a protocol is provided, only this one will be tested. * * Defaults to the following domains: *