. * */ OCP\App::checkAppEnabled('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(); $addressbookbackends = array(); $addressbookbackends[] = new OCA\Contacts\Backend\Database(\OCP\User::getUser()); $carddavBackend = new OCA\Contacts\CardDAV\Backend(array('local', 'shared')); $requestBackend = new OC_Connector_Sabre_Request(); // 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 = $requestBackend; $server->setBaseUri($baseuri); // Add plugins $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_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload $server->addPlugin(new Sabre_CardDAV_VCFExportPlugin()); $server->addPlugin(new OC_Connector_Sabre_ExceptionLoggerPlugin('carddav')); if (defined('DEBUG') && DEBUG) { $server->debugExceptions = true; } // And off we go! $server->exec();