[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