Merge pull request #18308 from nextcloud/backport/18184/stable16

[stable16] Move overwritehost check to isTrustedDomain
This commit is contained in:
Roeland Jago Douma 2019-12-10 14:54:43 +01:00 committed by GitHub
commit 4d26a8f6dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 4 deletions

View File

@ -748,9 +748,6 @@ class OC {
* FIXME: Should not be in here at all :see_no_evil:
*/
if (!OC::$CLI
// overwritehost is always trusted, workaround to not have to make
// \OC\AppFramework\Http\Request::getOverwriteHost public
&& self::$server->getConfig()->getSystemValue('overwritehost') === ''
&& !\OC::$server->getTrustedDomainHelper()->isTrustedDomain($host)
&& self::$server->getConfig()->getSystemValue('installed', false)
) {

View File

@ -69,6 +69,11 @@ class TrustedDomainHelper {
* have been configured
*/
public function isTrustedDomain($domainWithPort) {
// overwritehost is always trusted
if ($this->config->getSystemValue('overwritehost') !== '') {
return true;
}
$domain = $this->getDomainWithoutPort($domainWithPort);
// Read trusted domains from config

View File

@ -31,7 +31,11 @@ class TrustedDomainHelperTest extends \Test\TestCase {
* @param bool $result
*/
public function testIsTrustedDomain($trustedDomains, $testDomain, $result) {
$this->config->expects($this->once())
$this->config->expects($this->at(0))
->method('getSystemValue')
->with('overwritehost')
->will($this->returnValue(''));
$this->config->expects($this->at(1))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue($trustedDomains));
@ -108,4 +112,15 @@ class TrustedDomainHelperTest extends \Test\TestCase {
[$trustedHostTestList, 'bad..der.leading.host', false],
];
}
public function testIsTrustedDomainOverwriteHost() {
$this->config->expects($this->at(0))
->method('getSystemValue')
->with('overwritehost')
->will($this->returnValue('myproxyhost'));
$trustedDomainHelper = new TrustedDomainHelper($this->config);
$this->assertTrue($trustedDomainHelper->isTrustedDomain('myproxyhost'));
$this->assertTrue($trustedDomainHelper->isTrustedDomain('myotherhost'));
}
}