From 384790537ba794a147c6b9a6941265141c3b403f Mon Sep 17 00:00:00 2001 From: Dag Date: Thu, 24 Mar 2022 01:25:09 +0100 Subject: [PATCH] fix: bug in cloudflare response detection The cloudflare server header was not recognized in some cases such as when the server header is "server" or when the header value is "Cloudflare". --- lib/contents.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/contents.php b/lib/contents.php index 99e7d22b..0d062aa2 100644 --- a/lib/contents.php +++ b/lib/contents.php @@ -228,6 +228,8 @@ function getContents($url, $header = array(), $opts = array(), $returnHeader = f curl_close($ch); } + $finalHeader = array_change_key_case($finalHeader, CASE_LOWER); + switch($errorCode) { case 200: // Contents OK case 201: // Contents Created @@ -236,7 +238,7 @@ function getContents($url, $header = array(), $opts = array(), $returnHeader = f $data = substr($data, $headerSize); // Disable caching if the server responds with "Cache-Control: no-cache" // or "Cache-Control: no-store" - $finalHeader = array_change_key_case($finalHeader, CASE_LOWER); + if(array_key_exists('cache-control', $finalHeader)) { Debug::log('Server responded with "Cache-Control" header'); $directives = explode(',', $finalHeader['cache-control']); @@ -257,7 +259,7 @@ function getContents($url, $header = array(), $opts = array(), $returnHeader = f $retVal['content'] = $cache->loadData(); break; default: - if(array_key_exists('Server', $finalHeader) && strpos($finalHeader['Server'], 'cloudflare') !== false) { + if(array_key_exists('server', $finalHeader) && stripos($finalHeader['server'], 'cloudflare') !== false) { throw new CloudflareChallengeException($errorCode); }