From: Tim Düsterhus Date: Tue, 11 Mar 2014 13:58:31 +0000 (+0100) Subject: Normalize protocol of internal URLs X-Git-Tag: 2.0.4~23^2~1 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=dccac62117f3e4b34ad9ee324b327942c93f2c8b;p=GitHub%2FWoltLab%2FWCF.git Normalize protocol of internal URLs --- diff --git a/wcfsetup/install/files/lib/system/application/ApplicationHandler.class.php b/wcfsetup/install/files/lib/system/application/ApplicationHandler.class.php index 5e3ba638ba..2b97324d11 100644 --- a/wcfsetup/install/files/lib/system/application/ApplicationHandler.class.php +++ b/wcfsetup/install/files/lib/system/application/ApplicationHandler.class.php @@ -3,6 +3,7 @@ namespace wcf\system\application; use wcf\data\application\ApplicationAction; use wcf\data\application\ApplicationList; use wcf\system\cache\builder\ApplicationCacheBuilder; +use wcf\system\Regex; use wcf\system\SingletonFactory; /** @@ -144,14 +145,15 @@ class ApplicationHandler extends SingletonFactory { * @return boolean */ public function isInternalURL($url) { + $protocolRegex = new Regex('^https(?=://)'); if (empty($this->pageURLs)) { foreach ($this->getApplications() as $application) { - $this->pageURLs[] = $application->getPageURL(); + $this->pageURLs[] = $protocolRegex->replace($application->getPageURL(), 'http'); } } foreach ($this->pageURLs as $pageURL) { - if (stripos($url, $pageURL) === 0) { + if (stripos($protocolRegex->replace($url, 'http'), $pageURL) === 0) { return true; } } diff --git a/wcfsetup/install/files/lib/util/StringUtil.class.php b/wcfsetup/install/files/lib/util/StringUtil.class.php index bba035994d..2b3727e1d2 100644 --- a/wcfsetup/install/files/lib/util/StringUtil.class.php +++ b/wcfsetup/install/files/lib/util/StringUtil.class.php @@ -1,6 +1,7 @@ isInternalURL($url)) { $external = false; + $url = preg_replace('~^https?://~', RouteHandler::getProtocol(), $url); } // cut visible url