From 9509bc403a4f05c96b88e1218e6c7a78f9dd6c20 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Wed, 13 Aug 2014 16:46:04 +0200
Subject: [PATCH] Give a better error message for external shares with
 self-signed ssl certificates

---
 apps/files_sharing/ajax/external.php | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/apps/files_sharing/ajax/external.php b/apps/files_sharing/ajax/external.php
index 0dbd3ab8c9..390d5bfb9d 100644
--- a/apps/files_sharing/ajax/external.php
+++ b/apps/files_sharing/ajax/external.php
@@ -33,16 +33,22 @@ $externalManager = new \OCA\Files_Sharing\External\Manager(
 
 $name = OCP\Files::buildNotExistingFileName('/', $name);
 
-$mount = $externalManager->addShare($remote, $token, $password, $name, $owner);
-/**
- * @var \OCA\Files_Sharing\External\Storage $storage
- */
-$storage = $mount->getStorage();
-$result = $storage->file_exists('');
-if($result){
-	$storage->getScanner()->scanAll();
-	\OCP\JSON::success();
+// check for ssl cert
+if (substr($remote, 0, 5) === 'https' and !OC_Util::getUrlContent($remote)) {
+	\OCP\JSON::error(array('data' => array('message' => $l->t("Invalid or untrusted ssl certificate"))));
+	exit;
 } else {
-	$externalManager->removeShare($mount->getMountPoint());
-	\OCP\JSON::error(array('data' => array('message' => $l->t("Couldn't add remote share"))));
+	$mount = $externalManager->addShare($remote, $token, $password, $name, $owner);
+	/**
+	 * @var \OCA\Files_Sharing\External\Storage $storage
+	 */
+	$storage = $mount->getStorage();
+	$result = $storage->file_exists('');
+	if ($result) {
+		$storage->getScanner()->scanAll();
+		\OCP\JSON::success();
+	} else {
+		$externalManager->removeShare($mount->getMountPoint());
+		\OCP\JSON::error(array('data' => array('message' => $l->t("Couldn't add remote share"))));
+	}
 }
-- 
GitLab