示例#1
0
$objectTree = new \OC\Connector\Sabre\ObjectTree();
$server = new \OC\Connector\Sabre\Server($objectTree);
// Set URL explicitly due to reverse-proxy situations
$server->httpRequest->setUrl(\OC::$server->getRequest()->getRequestUri());
$server->setBaseUri($baseuri);
// Load plugins
$defaults = new OC_Defaults();
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, $defaults->getName()));
// FIXME: The following line is a workaround for legacy components relying on being able to send a GET to /
$server->addPlugin(new \OC\Connector\Sabre\DummyGetResponsePlugin());
$server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree));
$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin());
$server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', \OC::$server->getLogger()));
// wait with registering these until auth is handled and the filesystem is setup
$server->on('beforeMethod', function () use($server, $objectTree) {
    $view = \OC\Files\Filesystem::getView();
    $rootInfo = $view->getFileInfo('');
    // Create ownCloud Dir
    $mountManager = \OC\Files\Filesystem::getMountManager();
    $rootDir = new \OC\Connector\Sabre\Directory($view, $rootInfo);
    $objectTree->init($rootDir, $view, $mountManager);
    $server->addPlugin(new \OC\Connector\Sabre\TagsPlugin($objectTree, \OC::$server->getTagManager()));
    $server->addPlugin(new \OC\Connector\Sabre\QuotaPlugin($view));
    // custom properties plugin must be the last one
    $server->addPlugin(new \Sabre\DAV\PropertyStorage\Plugin(new \OC\Connector\Sabre\CustomPropertiesBackend($objectTree, \OC::$server->getDatabaseConnection(), \OC::$server->getUserSession()->getUser())));
    $server->addPlugin(new \OC\Connector\Sabre\CopyEtagHeaderPlugin());
}, 30);
// priority 30: after auth (10) and acl(20), before lock(50) and handling the request
// And off we go!
$server->exec();