From b0c8654f9eb8cd71aa575d3eb760fceb2a3942b1 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 7 Aug 2015 17:36:14 +0200 Subject: split out creating the sabre dav server to it's own factory --- apps/files_sharing/publicwebdav.php | 42 +++++++++++-------------------------- 1 file changed, 12 insertions(+), 30 deletions(-) (limited to 'apps/files_sharing') diff --git a/apps/files_sharing/publicwebdav.php b/apps/files_sharing/publicwebdav.php index 5bde908109d..eec158dd4b6 100644 --- a/apps/files_sharing/publicwebdav.php +++ b/apps/files_sharing/publicwebdav.php @@ -33,24 +33,18 @@ OC_Util::obEnd(); // Backends $authBackend = new OCA\Files_Sharing\Connector\PublicAuth(\OC::$server->getConfig()); -// Fire up server -$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); +$serverFactory = new \OC\Connector\Sabre\ServerFactory( + \OC::$server->getConfig(), + \OC::$server->getLogger(), + \OC::$server->getDatabaseConnection(), + \OC::$server->getUserSession(), + \OC::$server->getMountManager(), + \OC::$server->getTagManager() +); -// 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, true)); -$server->addPlugin(new \OC\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig())); -$server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', \OC::$server->getLogger())); +$requestUri = \OC::$server->getRequest()->getRequestUri(); -// wait with registering these until auth is handled and the filesystem is setup -$server->on('beforeMethod', function () use ($server, $objectTree, $authBackend) { +$server = $serverFactory->createServer($baseuri, $requestUri, $authBackend, function () use ($authBackend) { if (OCA\Files_Sharing\Helper::isOutgoingServer2serverShareEnabled() === false) { // this is what is thrown when trying to access a non-existing share throw new \Sabre\DAV\Exception\NotAuthenticated(); @@ -72,20 +66,8 @@ $server->on('beforeMethod', function () use ($server, $objectTree, $authBackend) $ownerView = \OC\Files\Filesystem::getView(); $path = $ownerView->getPath($fileId); - $view = new \OC\Files\View($ownerView->getAbsolutePath($path)); - $rootInfo = $view->getFileInfo(''); - - // Create ownCloud Dir - if ($rootInfo->getType() === 'dir') { - $root = new \OC\Connector\Sabre\Directory($view, $rootInfo); - } else { - $root = new \OC\Connector\Sabre\File($view, $rootInfo); - } - $mountManager = \OC\Files\Filesystem::getMountManager(); - $objectTree->init($root, $view, $mountManager); - - $server->addPlugin(new \OC\Connector\Sabre\QuotaPlugin($view)); -}, 30); // priority 30: after auth (10) and acl(20), before lock(50) and handling the request + return new \OC\Files\View($ownerView->getAbsolutePath($path)); +}); // And off we go! $server->exec(); -- cgit v1.2.3