From 7d638fdb3418be7990c230290494a8fd6d1a25d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 17 Mar 2016 16:51:19 +0100 Subject: [PATCH 1/2] In debugging mode we enable Sabre's browser plugin since it helps a lot when debugging --- apps/dav/appinfo/v1/caldav.php | 13 +++++++++---- apps/dav/appinfo/v1/carddav.php | 13 +++++++++---- apps/dav/lib/server.php | 9 ++++++++- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php index f2c886e0fd..e9b6e3759a 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 44abcbaa19..bd5ed465dc 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/server.php b/apps/dav/lib/server.php index 05e81a1184..f624137f31 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()); From 520724d757af0645fd9847f8d1606d7341942fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 17 Mar 2016 18:00:06 +0100 Subject: [PATCH 2/2] Necessary code changes to make browser plugin properly work --- apps/dav/lib/carddav/plugin.php | 4 ++++ apps/dav/lib/connector/sabre/davaclplugin.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/dav/lib/carddav/plugin.php b/apps/dav/lib/carddav/plugin.php index d94dce1db0..e02cc5686b 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 4a9dd66161..f5699b469c 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);