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)
This commit is contained in:
parent
8700ffe698
commit
69f5f6649e
|
@ -65,6 +65,22 @@ class OC_Request {
|
||||||
or ($type !== 'protocol' and OC_Config::getValue('forcessl', false));
|
or ($type !== 'protocol' and OC_Config::getValue('forcessl', false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* Checks whether a domain is considered as trusted from the list
|
||||||
* of trusted domains. If no trusted domains have been configured, returns
|
* of trusted domains. If no trusted domains have been configured, returns
|
||||||
|
@ -76,13 +92,7 @@ class OC_Request {
|
||||||
*/
|
*/
|
||||||
public static function isTrustedDomain($domain) {
|
public static function isTrustedDomain($domain) {
|
||||||
// Extract port from domain if needed
|
// Extract port from domain if needed
|
||||||
$pos = strrpos($domain, ':');
|
$domain = self::getDomainWithoutPort($domain);
|
||||||
if ($pos !== false) {
|
|
||||||
$port = substr($domain, $pos + 1);
|
|
||||||
if (is_numeric($port)) {
|
|
||||||
$domain = substr($domain, 0, $pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: Empty config array defaults to true for now. - Deprecate this behaviour with ownCloud 8.
|
// FIXME: Empty config array defaults to true for now. - Deprecate this behaviour with ownCloud 8.
|
||||||
$trustedList = \OC::$server->getConfig()->getSystemValue('trusted_domains', array());
|
$trustedList = \OC::$server->getConfig()->getSystemValue('trusted_domains', array());
|
||||||
|
|
|
@ -162,7 +162,7 @@ class OC_Setup {
|
||||||
&& is_array($options['trusted_domains'])) {
|
&& is_array($options['trusted_domains'])) {
|
||||||
$trustedDomains = $options['trusted_domains'];
|
$trustedDomains = $options['trusted_domains'];
|
||||||
} else {
|
} else {
|
||||||
$trustedDomains = array(OC_Request::serverHost());
|
$trustedDomains = array(\OC_Request::getDomainWithoutPort(\OC_Request::serverHost()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OC_Util::runningOnWindows()) {
|
if (OC_Util::runningOnWindows()) {
|
||||||
|
|
|
@ -228,6 +228,22 @@ class Test_Request extends \Test\TestCase {
|
||||||
OC_Config::deleteKey('overwritehost');
|
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
|
* @dataProvider trustedDomainDataProvider
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue