Merge pull request #11548 from owncloud/extstorage-ocfields

Allow specifying protocol in ext storage OC config
This commit is contained in:
Vincent Petry 2014-10-15 13:27:23 +02:00
commit 4650101674
3 changed files with 93 additions and 2 deletions

View File

@ -22,6 +22,14 @@ class OwnCloud extends \OC\Files\Storage\DAV{
// extract context path from host if specified
// (owncloud install path on host)
$host = $params['host'];
// strip protocol
if (substr($host, 0, 8) == "https://") {
$host = substr($host, 8);
$params['secure'] = true;
} else if (substr($host, 0, 7) == "http://") {
$host = substr($host, 7);
$params['secure'] = false;
}
$contextPath = '';
$hostSlashPos = strpos($host, '/');
if ($hostSlashPos !== false){

View File

@ -0,0 +1,83 @@
<?php
/**
* Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace Test\Files\Storage;
class OwnCloudFunctions extends \PHPUnit_Framework_TestCase {
function configUrlProvider() {
return array(
array(
array(
'host' => 'testhost',
'root' => 'testroot',
'secure' => false
),
'http://testhost/remote.php/webdav/testroot/',
),
array(
array(
'host' => 'testhost',
'root' => 'testroot',
'secure' => true
),
'https://testhost/remote.php/webdav/testroot/',
),
array(
array(
'host' => 'http://testhost',
'root' => 'testroot',
'secure' => false
),
'http://testhost/remote.php/webdav/testroot/',
),
array(
array(
'host' => 'https://testhost',
'root' => 'testroot',
'secure' => false
),
'https://testhost/remote.php/webdav/testroot/',
),
array(
array(
'host' => 'https://testhost/testroot',
'root' => '',
'secure' => false
),
'https://testhost/testroot/remote.php/webdav/',
),
array(
array(
'host' => 'https://testhost/testroot',
'root' => 'subdir',
'secure' => false
),
'https://testhost/testroot/remote.php/webdav/subdir/',
),
array(
array(
'host' => 'http://testhost/testroot',
'root' => 'subdir',
'secure' => true
),
'http://testhost/testroot/remote.php/webdav/subdir/',
),
);
}
/**
* @dataProvider configUrlProvider
*/
public function testConfig($config, $expectedUri) {
$config['user'] = 'someuser';
$config['password'] = 'somepassword';
$instance = new \OC\Files\Storage\OwnCloud($config);
$this->assertEquals($expectedUri, $instance->createBaseUri());
}
}

View File

@ -58,7 +58,7 @@ class DAV extends \OC\Files\Storage\Common {
$this->root .= '/';
}
} else {
throw new \Exception();
throw new \Exception('Invalid webdav storage configuration');
}
}
@ -85,7 +85,7 @@ class DAV extends \OC\Files\Storage\Common {
return 'webdav::' . $this->user . '@' . $this->host . '/' . $this->root;
}
protected function createBaseUri() {
public function createBaseUri() {
$baseUri = 'http';
if ($this->secure) {
$baseUri .= 's';