summaryrefslogtreecommitdiffstats
path: root/apps/dav/appinfo
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-20 21:08:23 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-02-08 10:52:30 +0100
commitcca2ade199f09c2e4c2c00c86e776dcc3b51d60f (patch)
tree048d4f64d0de92a12565d1a8111fc1817f7db8cc /apps/dav/appinfo
parent9eef38c5937cf8c8a848a0b78afe8123fb922712 (diff)
downloadnextcloud-server-cca2ade199f09c2e4c2c00c86e776dcc3b51d60f.tar.gz
nextcloud-server-cca2ade199f09c2e4c2c00c86e776dcc3b51d60f.zip
Adding pre oc 9.0 CardDAV endpoint for migration of old clients
Diffstat (limited to 'apps/dav/appinfo')
-rw-r--r--apps/dav/appinfo/info.xml4
-rw-r--r--apps/dav/appinfo/v1/carddav.php70
-rw-r--r--apps/dav/appinfo/v1/webdav.php3
3 files changed, 75 insertions, 2 deletions
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index f035d19d862..647ad279ba7 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -14,7 +14,9 @@
<files>appinfo/v1/webdav.php</files>
<webdav>appinfo/v1/webdav.php</webdav>
<dav>appinfo/v2/remote.php</dav>
- </remote>
+ <!-- carddav endpoints as used before ownCloud 9.0-->
+ <contacts>appinfo/v1/carddav.php</contacts>
+ <carddav>appinfo/v1/carddav.php</carddav> </remote>
<public>
<webdav>appinfo/v1/publicwebdav.php</webdav>
</public>
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
new file mode 100644
index 00000000000..e0c79c75b72
--- /dev/null
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+// Backends
+use OCA\DAV\CardDAV\AddressBookRoot;
+use OCA\DAV\CardDAV\CardDavBackend;
+use OCA\DAV\Connector\Sabre\AppEnabledPlugin;
+use OCA\DAV\Connector\Sabre\Auth;
+use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
+use OCA\DAV\Connector\Sabre\MaintenancePlugin;
+use OCA\DAV\Connector\Sabre\Principal;
+use Sabre\CardDAV\Plugin;
+
+$authBackend = new Auth(
+ \OC::$server->getSession(),
+ \OC::$server->getUserSession(),
+ 'principals/'
+);
+$principalBackend = new Principal(
+ \OC::$server->getUserManager(),
+ \OC::$server->getGroupManager(),
+ 'principals/'
+);
+$db = \OC::$server->getDatabaseConnection();
+$cardDavBackend = new CardDavBackend($db, $principalBackend);
+
+// Root nodes
+$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
+$principalCollection->disableListing = true; // Disable listing
+
+$addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend);
+$addressBookRoot->disableListing = true; // Disable listing
+
+$nodes = array(
+ $principalCollection,
+ $addressBookRoot,
+);
+
+// Fire up server
+$server = new \Sabre\DAV\Server($nodes);
+$server->httpRequest->setUrl(\OC::$server->getRequest()->getRequestUri());
+$server->setBaseUri($baseuri);
+// Add plugins
+$server->addPlugin(new MaintenancePlugin());
+$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
+$server->addPlugin(new Plugin());
+$server->addPlugin(new \Sabre\DAVACL\Plugin());
+$server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());
+$server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger()));
+
+// And off we go!
+$server->exec();
diff --git a/apps/dav/appinfo/v1/webdav.php b/apps/dav/appinfo/v1/webdav.php
index d75c3526bdd..3d3e51e84bc 100644
--- a/apps/dav/appinfo/v1/webdav.php
+++ b/apps/dav/appinfo/v1/webdav.php
@@ -40,7 +40,8 @@ $serverFactory = new \OCA\DAV\Connector\Sabre\ServerFactory(
// Backends
$authBackend = new \OCA\DAV\Connector\Sabre\Auth(
\OC::$server->getSession(),
- \OC::$server->getUserSession()
+ \OC::$server->getUserSession(),
+ 'principals/'
);
$requestUri = \OC::$server->getRequest()->getRequestUri();