diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php index f2c886e0fdd0a7576ad98ea4f5e6b560f36c9c06..e9b6e3759abf1608c639040c13e045beffff3b60 100644 --- a/apps/dav/appinfo/v1/caldav.php +++ b/apps/dav/appinfo/v1/caldav.php @@ -23,6 +23,7 @@ // Backends use OCA\DAV\CalDAV\CalDavBackend; +use OCA\DAV\Connector\LegacyDAVACL; use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin; use OCA\DAV\Connector\Sabre\MaintenancePlugin; @@ -43,12 +44,14 @@ $principalBackend = new Principal( $db = \OC::$server->getDatabaseConnection(); $calDavBackend = new CalDavBackend($db, $principalBackend); +$debugging = \OC::$server->getConfig()->getSystemValue('debug', false); + // Root nodes $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend); -$principalCollection->disableListing = true; // Disable listing +$principalCollection->disableListing = !$debugging; // Disable listing $addressBookRoot = new CalendarRoot($principalBackend, $calDavBackend); -$addressBookRoot->disableListing = true; // Disable listing +$addressBookRoot->disableListing = !$debugging; // Disable listing $nodes = array( $principalCollection, @@ -65,8 +68,10 @@ $server->addPlugin(new MaintenancePlugin()); $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')); $server->addPlugin(new \Sabre\CalDAV\Plugin()); -$acl = new \OCA\DAV\Connector\LegacyDAVACL(); -$server->addPlugin($acl); +$server->addPlugin(new LegacyDAVACL()); +if ($debugging) { + $server->addPlugin(new Sabre\DAV\Browser\Plugin()); +} $server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); $server->addPlugin(new ExceptionLoggerPlugin('caldav', \OC::$server->getLogger())); diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php index 44abcbaa190103b8e6c65ed317d8eff19ffaee51..bd5ed465dce4a0e2d463de2f279152d2453d1a89 100644 --- a/apps/dav/appinfo/v1/carddav.php +++ b/apps/dav/appinfo/v1/carddav.php @@ -24,6 +24,7 @@ // Backends use OCA\DAV\CardDAV\AddressBookRoot; use OCA\DAV\CardDAV\CardDavBackend; +use OCA\DAV\Connector\LegacyDAVACL; use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin; use OCA\DAV\Connector\Sabre\MaintenancePlugin; @@ -44,12 +45,14 @@ $principalBackend = new Principal( $db = \OC::$server->getDatabaseConnection(); $cardDavBackend = new CardDavBackend($db, $principalBackend); +$debugging = \OC::$server->getConfig()->getSystemValue('debug', false); + // Root nodes $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend); -$principalCollection->disableListing = true; // Disable listing +$principalCollection->disableListing = !$debugging; // Disable listing $addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend); -$addressBookRoot->disableListing = true; // Disable listing +$addressBookRoot->disableListing = !$debugging; // Disable listing $nodes = array( $principalCollection, @@ -65,8 +68,10 @@ $server->addPlugin(new MaintenancePlugin()); $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')); $server->addPlugin(new Plugin()); -$acl = new \OCA\DAV\Connector\LegacyDAVACL(); -$server->addPlugin($acl); +$server->addPlugin(new LegacyDAVACL()); +if ($debugging) { + $server->addPlugin(new Sabre\DAV\Browser\Plugin()); +} $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); $server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger())); diff --git a/apps/dav/lib/carddav/plugin.php b/apps/dav/lib/carddav/plugin.php index d94dce1db0e5b9d0c43bd4e7d651cc829ce165de..e02cc5686b8ed1d193479e855d85a67ad14a4437 100644 --- a/apps/dav/lib/carddav/plugin.php +++ b/apps/dav/lib/carddav/plugin.php @@ -46,6 +46,10 @@ class Plugin extends \Sabre\CardDAV\Plugin { list(, $principalId) = URLUtil::splitPath($principal); return self::ADDRESSBOOK_ROOT . '/users/' . $principalId; } + if (strrpos($principal, 'principals/groups', -strlen($principal)) !== false) { + list(, $principalId) = URLUtil::splitPath($principal); + return self::ADDRESSBOOK_ROOT . '/groups/' . $principalId; + } if (strrpos($principal, 'principals/system', -strlen($principal)) !== false) { list(, $principalId) = URLUtil::splitPath($principal); return self::ADDRESSBOOK_ROOT . '/system/' . $principalId; diff --git a/apps/dav/lib/connector/sabre/davaclplugin.php b/apps/dav/lib/connector/sabre/davaclplugin.php index 4a9dd66161d9bcf7a2988262122b8f9eff18ad28..f5699b469c36343596986cd708118b01d73f62d0 100644 --- a/apps/dav/lib/connector/sabre/davaclplugin.php +++ b/apps/dav/lib/connector/sabre/davaclplugin.php @@ -46,7 +46,7 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin { function checkPrivileges($uri, $privileges, $recursion = self::R_PARENT, $throwExceptions = true) { $access = parent::checkPrivileges($uri, $privileges, $recursion, false); - if($access === false) { + if($access === false && $throwExceptions) { /** @var INode $node */ $node = $this->server->tree->getNodeForPath($uri); diff --git a/apps/dav/lib/server.php b/apps/dav/lib/server.php index 05e81a1184c8823fc467326f3bea7107636e490a..f624137f3163f408cad532acff3c7cf8ac59a371 100644 --- a/apps/dav/lib/server.php +++ b/apps/dav/lib/server.php @@ -28,6 +28,7 @@ use OCA\DAV\Connector\FedAuth; use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; use OCA\DAV\Connector\Sabre\DavAclPlugin; +use OCA\DAV\Connector\Sabre\DummyGetResponsePlugin; use OCA\DAV\Connector\Sabre\FilesPlugin; use OCA\DAV\Files\CustomPropertiesBackend; use OCP\IRequest; @@ -68,7 +69,13 @@ class Server { $event = new SabrePluginEvent($this->server); $dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event); - $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\DummyGetResponsePlugin()); + // debugging + if(\OC::$server->getConfig()->getSystemValue('debug', false)) { + $this->server->addPlugin(new \Sabre\DAV\Browser\Plugin()); + } else { + $this->server->addPlugin(new DummyGetResponsePlugin()); + } + $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger)); $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin()); $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());