diff --git a/apps/files_external/lib/owncloud.php b/apps/files_external/lib/owncloud.php
index 98314102a64dec5f5115ed7948d95587e2341283..04a1e959eb019bbb49d596e711fa5be7b5c0f155 100644
--- a/apps/files_external/lib/owncloud.php
+++ b/apps/files_external/lib/owncloud.php
@@ -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){
diff --git a/apps/files_external/tests/owncloudfunctions.php b/apps/files_external/tests/owncloudfunctions.php
new file mode 100644
index 0000000000000000000000000000000000000000..57608fff0cf68ebdaec542d0b10982ba8a71f9c4
--- /dev/null
+++ b/apps/files_external/tests/owncloudfunctions.php
@@ -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());
+	}
+}
diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php
index a0ef79a7b325977e35fae3354f4a43b66015c2c9..7f53704e94f7d142f0218955ceb2d77f48aab367 100644
--- a/lib/private/files/storage/dav.php
+++ b/lib/private/files/storage/dav.php
@@ -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';