. * */ if (!\OC::$server->getAppManager()->isInstalled('contacts')) { throw new Exception('App not installed: contacts'); } if (substr(OCP\Util::getRequestUri(), 0, strlen(OC_App::getAppWebPath('contacts').'/carddav.php')) === OC_App::getAppWebPath('contacts').'/carddav.php' ) { $baseuri = OC_App::getAppWebPath('contacts').'/carddav.php'; } // only need authentication apps $RUNTIME_APPTYPES = array('authentication'); OC_App::loadApps($RUNTIME_APPTYPES); // Backends $authBackend = new \OC\Connector\Sabre\Auth(); $principalBackend = new \OC\Connector\Sabre\Principal( \OC::$server->getConfig(), \OC::$server->getUserManager() ); $addressbookbackends = array(); $addressbookbackends[] = new OCA\Contacts\Backend\Database(\OCP\User::getUser()); $backends = array('local', 'shared'); if (\OCP\Config::getAppValue('contacts', 'backend_ldap', "false") === "true") { $backends[] = 'ldap'; } $carddavBackend = new OCA\Contacts\CardDAV\Backend($backends); // Root nodes $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend); $principalCollection->disableListing = true; // Disable listing $addressBookRoot = new OCA\Contacts\CardDAV\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 \OC\Connector\Sabre\MaintenancePlugin()); $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')); $server->addPlugin(new OCA\Contacts\CardDAV\Plugin()); $server->addPlugin(new \Sabre\DAVACL\Plugin()); $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); $server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('carddav', \OC::$server->getLogger())); $server->addPlugin(new \OC\Connector\Sabre\AppEnabledPlugin( 'contacts', OC::$server->getAppManager() )); // And off we go! $server->exec();