[Pkg-owncloud-commits] [owncloud] 01/12: Trim port from domain

David Prévot taffit at moszumanska.debian.org
Tue Dec 9 22:47:24 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit be26cccd8aa5a6e2eb97fb6d94bd20bda1e2e135
Author: Lukas Reschke <lukas at owncloud.com>
Date:   Wed Dec 3 19:54:48 2014 +0100

    Trim port from domain
    
    Depending on the used environment the port might be appended to the host header resulting in an inaccessible instance when initially setting up on a system with a different HTTP or HTTPS port. (for example test:500)
    
    To test this setup ownCloud under a different port with and without this patch. (heads-up: localhost is always white-listed, so use a different domain)
---
 lib/private/request.php | 24 +++++++++++++++++-------
 lib/private/setup.php   |  2 +-
 tests/lib/request.php   | 16 ++++++++++++++++
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/lib/private/request.php b/lib/private/request.php
index b9b2377..263a7e8 100644
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -27,6 +27,22 @@ class OC_Request {
 	}
 
 	/**
+	 * Strips a potential port from a domain (in format domain:port)
+	 * @param $host
+	 * @return string $host without appended port
+	 */
+	public static function getDomainWithoutPort($host) {
+		$pos = strrpos($host, ':');
+		if ($pos !== false) {
+			$port = substr($host, $pos + 1);
+			if (is_numeric($port)) {
+				$host = substr($host, 0, $pos);
+			}
+		}
+		return $host;
+	}
+
+	/**
 	 * Checks whether a domain is considered as trusted from the list
 	 * of trusted domains. If no trusted domains have been configured, returns
 	 * true.
@@ -37,13 +53,7 @@ class OC_Request {
 	 */
 	public static function isTrustedDomain($domain) {
 		// Extract port from domain if needed
-		$pos = strrpos($domain, ':');
-		if ($pos !== false) {
-			$port = substr($domain, $pos + 1);
-			if (is_numeric($port)) {
-				$domain = substr($domain, 0, $pos);
-			}
-		}
+		$domain = self::getDomainWithoutPort($domain);
 
 		// FIXME: Empty config array defaults to true for now. - Deprecate this behaviour with ownCloud 8.
 		$trustedList = \OC::$server->getConfig()->getSystemValue('trusted_domains', array());
diff --git a/lib/private/setup.php b/lib/private/setup.php
index a18c72d..a958aba 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -166,7 +166,7 @@ class OC_Setup {
 		    && is_array($options['trusted_domains'])) {
 			$trustedDomains = $options['trusted_domains'];
 		} else {
-			$trustedDomains = array(OC_Request::serverHost());
+			$trustedDomains = array(\OC_Request::getDomainWithoutPort(\OC_Request::serverHost()));
 		}
 
 		if (OC_Util::runningOnWindows()) {
diff --git a/tests/lib/request.php b/tests/lib/request.php
index 07b6d4c..e93d63c 100644
--- a/tests/lib/request.php
+++ b/tests/lib/request.php
@@ -192,6 +192,22 @@ class Test_Request extends PHPUnit_Framework_TestCase {
 		OC_Config::deleteKey('overwritehost');
 	}
 
+	public function hostWithPortProvider() {
+		return array(
+			array('localhost:500', 'localhost'),
+			array('foo.com', 'foo.com'),
+			array('[1fff:0:a88:85a3::ac1f]:801', '[1fff:0:a88:85a3::ac1f]')
+		);
+	}
+
+	/**
+	 * @dataProvider hostWithPortProvider
+	 */
+	public function testGetDomainWithoutPort($hostWithPort, $host) {
+		$this->assertEquals($host, OC_Request::getDomainWithoutPort($hostWithPort));
+
+	}
+
 	/**
 	 * @dataProvider trustedDomainDataProvider
 	 */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list