Passed
Push — master ( ba7a31...43ac9c )
by Julius
14:24 queued 11s
created
apps/dav/lib/Server.php 1 patch
Indentation   +271 added lines, -271 removed lines patch added patch discarded remove patch
@@ -78,275 +78,275 @@
 block discarded – undo
78 78
 
79 79
 class Server {
80 80
 
81
-	/** @var IRequest */
82
-	private $request;
83
-
84
-	/** @var  string */
85
-	private $baseUri;
86
-
87
-	/** @var Connector\Sabre\Server  */
88
-	public $server;
89
-
90
-	public function __construct(IRequest $request, $baseUri) {
91
-		$this->request = $request;
92
-		$this->baseUri = $baseUri;
93
-		$logger = \OC::$server->getLogger();
94
-		$dispatcher = \OC::$server->getEventDispatcher();
95
-		/** @var IEventDispatcher $newDispatcher */
96
-		$newDispatcher = \OC::$server->query(IEventDispatcher::class);
97
-
98
-		$root = new RootCollection();
99
-		$this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root));
100
-
101
-		// Add maintenance plugin
102
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig(), \OC::$server->getL10N('dav')));
103
-
104
-		// Backends
105
-		$authBackend = new Auth(
106
-			\OC::$server->getSession(),
107
-			\OC::$server->getUserSession(),
108
-			\OC::$server->getRequest(),
109
-			\OC::$server->getTwoFactorAuthManager(),
110
-			\OC::$server->getBruteForceThrottler()
111
-		);
112
-
113
-		// Set URL explicitly due to reverse-proxy situations
114
-		$this->server->httpRequest->setUrl($this->request->getRequestUri());
115
-		$this->server->setBaseUri($this->baseUri);
116
-
117
-		$this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
118
-		$this->server->addPlugin(new AnonymousOptionsPlugin());
119
-		$authPlugin = new Plugin();
120
-		$authPlugin->addBackend(new PublicAuth());
121
-		$this->server->addPlugin($authPlugin);
122
-
123
-		// allow setup of additional auth backends
124
-		$event = new SabrePluginEvent($this->server);
125
-		$dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event);
126
-
127
-		$newAuthEvent = new SabrePluginAuthInitEvent($this->server);
128
-		$newDispatcher->dispatchTyped($newAuthEvent);
129
-
130
-		$bearerAuthBackend = new BearerAuth(
131
-			\OC::$server->getUserSession(),
132
-			\OC::$server->getSession(),
133
-			\OC::$server->getRequest()
134
-		);
135
-		$authPlugin->addBackend($bearerAuthBackend);
136
-		// because we are throwing exceptions this plugin has to be the last one
137
-		$authPlugin->addBackend($authBackend);
138
-
139
-		// debugging
140
-		if (\OC::$server->getConfig()->getSystemValue('debug', false)) {
141
-			$this->server->addPlugin(new \Sabre\DAV\Browser\Plugin());
142
-		} else {
143
-			$this->server->addPlugin(new DummyGetResponsePlugin());
144
-		}
145
-
146
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger));
147
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin());
148
-		$this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());
149
-
150
-		// acl
151
-		$acl = new DavAclPlugin();
152
-		$acl->principalCollectionSet = [
153
-			'principals/users',
154
-			'principals/groups',
155
-			'principals/calendar-resources',
156
-			'principals/calendar-rooms',
157
-		];
158
-		$this->server->addPlugin($acl);
159
-
160
-		// calendar plugins
161
-		if ($this->requestIsForSubtree(['calendars', 'public-calendars', 'system-calendars', 'principals'])) {
162
-			$this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin());
163
-			$this->server->addPlugin(new \OCA\DAV\CalDAV\ICSExportPlugin\ICSExportPlugin(\OC::$server->getConfig(), \OC::$server->getLogger()));
164
-			$this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()));
165
-			if (\OC::$server->getConfig()->getAppValue('dav', 'sendInvitations', 'yes') === 'yes') {
166
-				$this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class));
167
-			}
168
-
169
-			$this->server->addPlugin(\OC::$server->get(\OCA\DAV\CalDAV\Trashbin\Plugin::class));
170
-			$this->server->addPlugin(new \OCA\DAV\CalDAV\WebcalCaching\Plugin($request));
171
-			$this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
172
-
173
-			$this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin());
174
-			$this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest(), \OC::$server->getConfig()));
175
-			$this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin(
176
-				\OC::$server->getConfig(),
177
-				\OC::$server->getURLGenerator()
178
-			));
179
-		}
180
-
181
-		// addressbook plugins
182
-		if ($this->requestIsForSubtree(['addressbooks', 'principals'])) {
183
-			$this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest(), \OC::$server->getConfig()));
184
-			$this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin());
185
-			$this->server->addPlugin(new VCFExportPlugin());
186
-			$this->server->addPlugin(new MultiGetExportPlugin());
187
-			$this->server->addPlugin(new HasPhotoPlugin());
188
-			$this->server->addPlugin(new ImageExportPlugin(new PhotoCache(
189
-				\OC::$server->getAppDataDir('dav-photocache'),
190
-				\OC::$server->getLogger())
191
-			));
192
-		}
193
-
194
-		// system tags plugins
195
-		$this->server->addPlugin(new SystemTagPlugin(
196
-			\OC::$server->getSystemTagManager(),
197
-			\OC::$server->getGroupManager(),
198
-			\OC::$server->getUserSession()
199
-		));
200
-
201
-		// comments plugin
202
-		$this->server->addPlugin(new CommentsPlugin(
203
-			\OC::$server->getCommentsManager(),
204
-			\OC::$server->getUserSession()
205
-		));
206
-
207
-		$this->server->addPlugin(new CopyEtagHeaderPlugin());
208
-		$this->server->addPlugin(new RequestIdHeaderPlugin(\OC::$server->get(IRequest::class)));
209
-		$this->server->addPlugin(new ChunkingPlugin());
210
-
211
-		// allow setup of additional plugins
212
-		$dispatcher->dispatch('OCA\DAV\Connector\Sabre::addPlugin', $event);
213
-
214
-		// Some WebDAV clients do require Class 2 WebDAV support (locking), since
215
-		// we do not provide locking we emulate it using a fake locking plugin.
216
-		if ($request->isUserAgent([
217
-			'/WebDAVFS/',
218
-			'/OneNote/',
219
-			'/^Microsoft-WebDAV/',// Microsoft-WebDAV-MiniRedir/6.1.7601
220
-		])) {
221
-			$this->server->addPlugin(new FakeLockerPlugin());
222
-		}
223
-
224
-		if (BrowserErrorPagePlugin::isBrowserRequest($request)) {
225
-			$this->server->addPlugin(new BrowserErrorPagePlugin());
226
-		}
227
-
228
-		$lazySearchBackend = new LazySearchBackend();
229
-		$this->server->addPlugin(new SearchPlugin($lazySearchBackend));
230
-
231
-		// wait with registering these until auth is handled and the filesystem is setup
232
-		$this->server->on('beforeMethod:*', function () use ($root, $lazySearchBackend) {
233
-			// custom properties plugin must be the last one
234
-			$userSession = \OC::$server->getUserSession();
235
-			$user = $userSession->getUser();
236
-			if ($user !== null) {
237
-				$view = \OC\Files\Filesystem::getView();
238
-				$this->server->addPlugin(
239
-					new FilesPlugin(
240
-						$this->server->tree,
241
-						\OC::$server->getConfig(),
242
-						$this->request,
243
-						\OC::$server->getPreviewManager(),
244
-						\OC::$server->getUserSession(),
245
-						false,
246
-						!\OC::$server->getConfig()->getSystemValue('debug', false)
247
-					)
248
-				);
249
-
250
-				$this->server->addPlugin(
251
-					new \Sabre\DAV\PropertyStorage\Plugin(
252
-						new CustomPropertiesBackend(
253
-							$this->server->tree,
254
-							\OC::$server->getDatabaseConnection(),
255
-							\OC::$server->getUserSession()->getUser()
256
-						)
257
-					)
258
-				);
259
-				if ($view !== null) {
260
-					$this->server->addPlugin(
261
-						new QuotaPlugin($view));
262
-				}
263
-				$this->server->addPlugin(
264
-					new TagsPlugin(
265
-						$this->server->tree, \OC::$server->getTagManager()
266
-					)
267
-				);
268
-				// TODO: switch to LazyUserFolder
269
-				$userFolder = \OC::$server->getUserFolder();
270
-				$this->server->addPlugin(new SharesPlugin(
271
-					$this->server->tree,
272
-					$userSession,
273
-					$userFolder,
274
-					\OC::$server->getShareManager()
275
-				));
276
-				$this->server->addPlugin(new CommentPropertiesPlugin(
277
-					\OC::$server->getCommentsManager(),
278
-					$userSession
279
-				));
280
-				$this->server->addPlugin(new \OCA\DAV\CalDAV\Search\SearchPlugin());
281
-				if ($view !== null) {
282
-					$this->server->addPlugin(new FilesReportPlugin(
283
-						$this->server->tree,
284
-						$view,
285
-						\OC::$server->getSystemTagManager(),
286
-						\OC::$server->getSystemTagObjectMapper(),
287
-						\OC::$server->getTagManager(),
288
-						$userSession,
289
-						\OC::$server->getGroupManager(),
290
-						$userFolder,
291
-						\OC::$server->getAppManager()
292
-					));
293
-					$lazySearchBackend->setBackend(new \OCA\DAV\Files\FileSearchBackend(
294
-						$this->server->tree,
295
-						$user,
296
-						\OC::$server->getRootFolder(),
297
-						\OC::$server->getShareManager(),
298
-						$view
299
-					));
300
-					$logger = \OC::$server->get(LoggerInterface::class);
301
-					$this->server->addPlugin(
302
-						new BulkUploadPlugin($userFolder, $logger)
303
-					);
304
-				}
305
-				$this->server->addPlugin(new \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin(
306
-					\OC::$server->getConfig(),
307
-					\OC::$server->query(BirthdayService::class)
308
-				));
309
-				$this->server->addPlugin(new AppleProvisioningPlugin(
310
-					\OC::$server->getUserSession(),
311
-					\OC::$server->getURLGenerator(),
312
-					\OC::$server->getThemingDefaults(),
313
-					\OC::$server->getRequest(),
314
-					\OC::$server->getL10N('dav'),
315
-					function () {
316
-						return UUIDUtil::getUUID();
317
-					}
318
-				));
319
-			}
320
-
321
-			// register plugins from apps
322
-			$pluginManager = new PluginManager(
323
-				\OC::$server,
324
-				\OC::$server->getAppManager()
325
-			);
326
-			foreach ($pluginManager->getAppPlugins() as $appPlugin) {
327
-				$this->server->addPlugin($appPlugin);
328
-			}
329
-			foreach ($pluginManager->getAppCollections() as $appCollection) {
330
-				$root->addChild($appCollection);
331
-			}
332
-		});
333
-
334
-		$this->server->addPlugin(
335
-			new PropfindCompressionPlugin()
336
-		);
337
-	}
338
-
339
-	public function exec() {
340
-		$this->server->exec();
341
-	}
342
-
343
-	private function requestIsForSubtree(array $subTrees): bool {
344
-		foreach ($subTrees as $subTree) {
345
-			$subTree = trim($subTree, ' /');
346
-			if (strpos($this->server->getRequestUri(), $subTree.'/') === 0) {
347
-				return true;
348
-			}
349
-		}
350
-		return false;
351
-	}
81
+    /** @var IRequest */
82
+    private $request;
83
+
84
+    /** @var  string */
85
+    private $baseUri;
86
+
87
+    /** @var Connector\Sabre\Server  */
88
+    public $server;
89
+
90
+    public function __construct(IRequest $request, $baseUri) {
91
+        $this->request = $request;
92
+        $this->baseUri = $baseUri;
93
+        $logger = \OC::$server->getLogger();
94
+        $dispatcher = \OC::$server->getEventDispatcher();
95
+        /** @var IEventDispatcher $newDispatcher */
96
+        $newDispatcher = \OC::$server->query(IEventDispatcher::class);
97
+
98
+        $root = new RootCollection();
99
+        $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root));
100
+
101
+        // Add maintenance plugin
102
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig(), \OC::$server->getL10N('dav')));
103
+
104
+        // Backends
105
+        $authBackend = new Auth(
106
+            \OC::$server->getSession(),
107
+            \OC::$server->getUserSession(),
108
+            \OC::$server->getRequest(),
109
+            \OC::$server->getTwoFactorAuthManager(),
110
+            \OC::$server->getBruteForceThrottler()
111
+        );
112
+
113
+        // Set URL explicitly due to reverse-proxy situations
114
+        $this->server->httpRequest->setUrl($this->request->getRequestUri());
115
+        $this->server->setBaseUri($this->baseUri);
116
+
117
+        $this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
118
+        $this->server->addPlugin(new AnonymousOptionsPlugin());
119
+        $authPlugin = new Plugin();
120
+        $authPlugin->addBackend(new PublicAuth());
121
+        $this->server->addPlugin($authPlugin);
122
+
123
+        // allow setup of additional auth backends
124
+        $event = new SabrePluginEvent($this->server);
125
+        $dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event);
126
+
127
+        $newAuthEvent = new SabrePluginAuthInitEvent($this->server);
128
+        $newDispatcher->dispatchTyped($newAuthEvent);
129
+
130
+        $bearerAuthBackend = new BearerAuth(
131
+            \OC::$server->getUserSession(),
132
+            \OC::$server->getSession(),
133
+            \OC::$server->getRequest()
134
+        );
135
+        $authPlugin->addBackend($bearerAuthBackend);
136
+        // because we are throwing exceptions this plugin has to be the last one
137
+        $authPlugin->addBackend($authBackend);
138
+
139
+        // debugging
140
+        if (\OC::$server->getConfig()->getSystemValue('debug', false)) {
141
+            $this->server->addPlugin(new \Sabre\DAV\Browser\Plugin());
142
+        } else {
143
+            $this->server->addPlugin(new DummyGetResponsePlugin());
144
+        }
145
+
146
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger));
147
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin());
148
+        $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());
149
+
150
+        // acl
151
+        $acl = new DavAclPlugin();
152
+        $acl->principalCollectionSet = [
153
+            'principals/users',
154
+            'principals/groups',
155
+            'principals/calendar-resources',
156
+            'principals/calendar-rooms',
157
+        ];
158
+        $this->server->addPlugin($acl);
159
+
160
+        // calendar plugins
161
+        if ($this->requestIsForSubtree(['calendars', 'public-calendars', 'system-calendars', 'principals'])) {
162
+            $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin());
163
+            $this->server->addPlugin(new \OCA\DAV\CalDAV\ICSExportPlugin\ICSExportPlugin(\OC::$server->getConfig(), \OC::$server->getLogger()));
164
+            $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()));
165
+            if (\OC::$server->getConfig()->getAppValue('dav', 'sendInvitations', 'yes') === 'yes') {
166
+                $this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class));
167
+            }
168
+
169
+            $this->server->addPlugin(\OC::$server->get(\OCA\DAV\CalDAV\Trashbin\Plugin::class));
170
+            $this->server->addPlugin(new \OCA\DAV\CalDAV\WebcalCaching\Plugin($request));
171
+            $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
172
+
173
+            $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin());
174
+            $this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest(), \OC::$server->getConfig()));
175
+            $this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin(
176
+                \OC::$server->getConfig(),
177
+                \OC::$server->getURLGenerator()
178
+            ));
179
+        }
180
+
181
+        // addressbook plugins
182
+        if ($this->requestIsForSubtree(['addressbooks', 'principals'])) {
183
+            $this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest(), \OC::$server->getConfig()));
184
+            $this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin());
185
+            $this->server->addPlugin(new VCFExportPlugin());
186
+            $this->server->addPlugin(new MultiGetExportPlugin());
187
+            $this->server->addPlugin(new HasPhotoPlugin());
188
+            $this->server->addPlugin(new ImageExportPlugin(new PhotoCache(
189
+                \OC::$server->getAppDataDir('dav-photocache'),
190
+                \OC::$server->getLogger())
191
+            ));
192
+        }
193
+
194
+        // system tags plugins
195
+        $this->server->addPlugin(new SystemTagPlugin(
196
+            \OC::$server->getSystemTagManager(),
197
+            \OC::$server->getGroupManager(),
198
+            \OC::$server->getUserSession()
199
+        ));
200
+
201
+        // comments plugin
202
+        $this->server->addPlugin(new CommentsPlugin(
203
+            \OC::$server->getCommentsManager(),
204
+            \OC::$server->getUserSession()
205
+        ));
206
+
207
+        $this->server->addPlugin(new CopyEtagHeaderPlugin());
208
+        $this->server->addPlugin(new RequestIdHeaderPlugin(\OC::$server->get(IRequest::class)));
209
+        $this->server->addPlugin(new ChunkingPlugin());
210
+
211
+        // allow setup of additional plugins
212
+        $dispatcher->dispatch('OCA\DAV\Connector\Sabre::addPlugin', $event);
213
+
214
+        // Some WebDAV clients do require Class 2 WebDAV support (locking), since
215
+        // we do not provide locking we emulate it using a fake locking plugin.
216
+        if ($request->isUserAgent([
217
+            '/WebDAVFS/',
218
+            '/OneNote/',
219
+            '/^Microsoft-WebDAV/',// Microsoft-WebDAV-MiniRedir/6.1.7601
220
+        ])) {
221
+            $this->server->addPlugin(new FakeLockerPlugin());
222
+        }
223
+
224
+        if (BrowserErrorPagePlugin::isBrowserRequest($request)) {
225
+            $this->server->addPlugin(new BrowserErrorPagePlugin());
226
+        }
227
+
228
+        $lazySearchBackend = new LazySearchBackend();
229
+        $this->server->addPlugin(new SearchPlugin($lazySearchBackend));
230
+
231
+        // wait with registering these until auth is handled and the filesystem is setup
232
+        $this->server->on('beforeMethod:*', function () use ($root, $lazySearchBackend) {
233
+            // custom properties plugin must be the last one
234
+            $userSession = \OC::$server->getUserSession();
235
+            $user = $userSession->getUser();
236
+            if ($user !== null) {
237
+                $view = \OC\Files\Filesystem::getView();
238
+                $this->server->addPlugin(
239
+                    new FilesPlugin(
240
+                        $this->server->tree,
241
+                        \OC::$server->getConfig(),
242
+                        $this->request,
243
+                        \OC::$server->getPreviewManager(),
244
+                        \OC::$server->getUserSession(),
245
+                        false,
246
+                        !\OC::$server->getConfig()->getSystemValue('debug', false)
247
+                    )
248
+                );
249
+
250
+                $this->server->addPlugin(
251
+                    new \Sabre\DAV\PropertyStorage\Plugin(
252
+                        new CustomPropertiesBackend(
253
+                            $this->server->tree,
254
+                            \OC::$server->getDatabaseConnection(),
255
+                            \OC::$server->getUserSession()->getUser()
256
+                        )
257
+                    )
258
+                );
259
+                if ($view !== null) {
260
+                    $this->server->addPlugin(
261
+                        new QuotaPlugin($view));
262
+                }
263
+                $this->server->addPlugin(
264
+                    new TagsPlugin(
265
+                        $this->server->tree, \OC::$server->getTagManager()
266
+                    )
267
+                );
268
+                // TODO: switch to LazyUserFolder
269
+                $userFolder = \OC::$server->getUserFolder();
270
+                $this->server->addPlugin(new SharesPlugin(
271
+                    $this->server->tree,
272
+                    $userSession,
273
+                    $userFolder,
274
+                    \OC::$server->getShareManager()
275
+                ));
276
+                $this->server->addPlugin(new CommentPropertiesPlugin(
277
+                    \OC::$server->getCommentsManager(),
278
+                    $userSession
279
+                ));
280
+                $this->server->addPlugin(new \OCA\DAV\CalDAV\Search\SearchPlugin());
281
+                if ($view !== null) {
282
+                    $this->server->addPlugin(new FilesReportPlugin(
283
+                        $this->server->tree,
284
+                        $view,
285
+                        \OC::$server->getSystemTagManager(),
286
+                        \OC::$server->getSystemTagObjectMapper(),
287
+                        \OC::$server->getTagManager(),
288
+                        $userSession,
289
+                        \OC::$server->getGroupManager(),
290
+                        $userFolder,
291
+                        \OC::$server->getAppManager()
292
+                    ));
293
+                    $lazySearchBackend->setBackend(new \OCA\DAV\Files\FileSearchBackend(
294
+                        $this->server->tree,
295
+                        $user,
296
+                        \OC::$server->getRootFolder(),
297
+                        \OC::$server->getShareManager(),
298
+                        $view
299
+                    ));
300
+                    $logger = \OC::$server->get(LoggerInterface::class);
301
+                    $this->server->addPlugin(
302
+                        new BulkUploadPlugin($userFolder, $logger)
303
+                    );
304
+                }
305
+                $this->server->addPlugin(new \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin(
306
+                    \OC::$server->getConfig(),
307
+                    \OC::$server->query(BirthdayService::class)
308
+                ));
309
+                $this->server->addPlugin(new AppleProvisioningPlugin(
310
+                    \OC::$server->getUserSession(),
311
+                    \OC::$server->getURLGenerator(),
312
+                    \OC::$server->getThemingDefaults(),
313
+                    \OC::$server->getRequest(),
314
+                    \OC::$server->getL10N('dav'),
315
+                    function () {
316
+                        return UUIDUtil::getUUID();
317
+                    }
318
+                ));
319
+            }
320
+
321
+            // register plugins from apps
322
+            $pluginManager = new PluginManager(
323
+                \OC::$server,
324
+                \OC::$server->getAppManager()
325
+            );
326
+            foreach ($pluginManager->getAppPlugins() as $appPlugin) {
327
+                $this->server->addPlugin($appPlugin);
328
+            }
329
+            foreach ($pluginManager->getAppCollections() as $appCollection) {
330
+                $root->addChild($appCollection);
331
+            }
332
+        });
333
+
334
+        $this->server->addPlugin(
335
+            new PropfindCompressionPlugin()
336
+        );
337
+    }
338
+
339
+    public function exec() {
340
+        $this->server->exec();
341
+    }
342
+
343
+    private function requestIsForSubtree(array $subTrees): bool {
344
+        foreach ($subTrees as $subTree) {
345
+            $subTree = trim($subTree, ' /');
346
+            if (strpos($this->server->getRequestUri(), $subTree.'/') === 0) {
347
+                return true;
348
+            }
349
+        }
350
+        return false;
351
+    }
352 352
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php 1 patch
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -39,94 +39,94 @@
 block discarded – undo
39 39
 
40 40
 class InvitationResponseServer {
41 41
 
42
-	/** @var \OCA\DAV\Connector\Sabre\Server */
43
-	public $server;
44
-
45
-	/**
46
-	 * InvitationResponseServer constructor.
47
-	 */
48
-	public function __construct(bool $public = true) {
49
-		$baseUri = \OC::$WEBROOT . '/remote.php/dav/';
50
-		$logger = \OC::$server->getLogger();
51
-		/** @var IEventDispatcher $dispatcher */
52
-		$dispatcher = \OC::$server->query(IEventDispatcher::class);
53
-
54
-		$root = new RootCollection();
55
-		$this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root));
56
-
57
-		// Add maintenance plugin
58
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig(), \OC::$server->getL10N('dav')));
59
-
60
-		// Set URL explicitly due to reverse-proxy situations
61
-		$this->server->httpRequest->setUrl($baseUri);
62
-		$this->server->setBaseUri($baseUri);
63
-
64
-		$this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
65
-		$this->server->addPlugin(new AnonymousOptionsPlugin());
66
-
67
-		// allow custom principal uri option
68
-		if ($public) {
69
-			$this->server->addPlugin(new PublicPrincipalPlugin());
70
-		} else {
71
-			$this->server->addPlugin(new CustomPrincipalPlugin());
72
-		}
73
-
74
-		// allow setup of additional auth backends
75
-		$event = new SabrePluginAuthInitEvent($this->server);
76
-		$dispatcher->dispatchTyped($event);
77
-
78
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger));
79
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin());
80
-		$this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());
81
-
82
-		// acl
83
-		$acl = new DavAclPlugin();
84
-		$acl->principalCollectionSet = [
85
-			'principals/users', 'principals/groups'
86
-		];
87
-		$this->server->addPlugin($acl);
88
-
89
-		// calendar plugins
90
-		$this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin());
91
-		$this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
92
-		$this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()));
93
-		$this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
94
-		$this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin());
95
-		//$this->server->addPlugin(new \OCA\DAV\DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest()));
96
-		$this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin(
97
-			\OC::$server->getConfig(),
98
-			\OC::$server->getURLGenerator()
99
-		));
100
-
101
-		// wait with registering these until auth is handled and the filesystem is setup
102
-		$this->server->on('beforeMethod:*', function () use ($root) {
103
-			// register plugins from apps
104
-			$pluginManager = new PluginManager(
105
-				\OC::$server,
106
-				\OC::$server->getAppManager()
107
-			);
108
-			foreach ($pluginManager->getAppPlugins() as $appPlugin) {
109
-				$this->server->addPlugin($appPlugin);
110
-			}
111
-			foreach ($pluginManager->getAppCollections() as $appCollection) {
112
-				$root->addChild($appCollection);
113
-			}
114
-		});
115
-	}
116
-
117
-	/**
118
-	 * @param Message $iTipMessage
119
-	 * @return void
120
-	 */
121
-	public function handleITipMessage(Message $iTipMessage) {
122
-		/** @var \OCA\DAV\CalDAV\Schedule\Plugin $schedulingPlugin */
123
-		$schedulingPlugin = $this->server->getPlugin('caldav-schedule');
124
-		$schedulingPlugin->scheduleLocalDelivery($iTipMessage);
125
-	}
126
-
127
-	public function isExternalAttendee(string $principalUri): bool {
128
-		/** @var \Sabre\DAVACL\Plugin $aclPlugin */
129
-		$aclPlugin = $this->server->getPlugin('acl');
130
-		return $aclPlugin->getPrincipalByUri($principalUri) === null;
131
-	}
42
+    /** @var \OCA\DAV\Connector\Sabre\Server */
43
+    public $server;
44
+
45
+    /**
46
+     * InvitationResponseServer constructor.
47
+     */
48
+    public function __construct(bool $public = true) {
49
+        $baseUri = \OC::$WEBROOT . '/remote.php/dav/';
50
+        $logger = \OC::$server->getLogger();
51
+        /** @var IEventDispatcher $dispatcher */
52
+        $dispatcher = \OC::$server->query(IEventDispatcher::class);
53
+
54
+        $root = new RootCollection();
55
+        $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root));
56
+
57
+        // Add maintenance plugin
58
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig(), \OC::$server->getL10N('dav')));
59
+
60
+        // Set URL explicitly due to reverse-proxy situations
61
+        $this->server->httpRequest->setUrl($baseUri);
62
+        $this->server->setBaseUri($baseUri);
63
+
64
+        $this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig()));
65
+        $this->server->addPlugin(new AnonymousOptionsPlugin());
66
+
67
+        // allow custom principal uri option
68
+        if ($public) {
69
+            $this->server->addPlugin(new PublicPrincipalPlugin());
70
+        } else {
71
+            $this->server->addPlugin(new CustomPrincipalPlugin());
72
+        }
73
+
74
+        // allow setup of additional auth backends
75
+        $event = new SabrePluginAuthInitEvent($this->server);
76
+        $dispatcher->dispatchTyped($event);
77
+
78
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger));
79
+        $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin());
80
+        $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());
81
+
82
+        // acl
83
+        $acl = new DavAclPlugin();
84
+        $acl->principalCollectionSet = [
85
+            'principals/users', 'principals/groups'
86
+        ];
87
+        $this->server->addPlugin($acl);
88
+
89
+        // calendar plugins
90
+        $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin());
91
+        $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
92
+        $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(\OC::$server->getConfig()));
93
+        $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
94
+        $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin());
95
+        //$this->server->addPlugin(new \OCA\DAV\DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest()));
96
+        $this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin(
97
+            \OC::$server->getConfig(),
98
+            \OC::$server->getURLGenerator()
99
+        ));
100
+
101
+        // wait with registering these until auth is handled and the filesystem is setup
102
+        $this->server->on('beforeMethod:*', function () use ($root) {
103
+            // register plugins from apps
104
+            $pluginManager = new PluginManager(
105
+                \OC::$server,
106
+                \OC::$server->getAppManager()
107
+            );
108
+            foreach ($pluginManager->getAppPlugins() as $appPlugin) {
109
+                $this->server->addPlugin($appPlugin);
110
+            }
111
+            foreach ($pluginManager->getAppCollections() as $appCollection) {
112
+                $root->addChild($appCollection);
113
+            }
114
+        });
115
+    }
116
+
117
+    /**
118
+     * @param Message $iTipMessage
119
+     * @return void
120
+     */
121
+    public function handleITipMessage(Message $iTipMessage) {
122
+        /** @var \OCA\DAV\CalDAV\Schedule\Plugin $schedulingPlugin */
123
+        $schedulingPlugin = $this->server->getPlugin('caldav-schedule');
124
+        $schedulingPlugin->scheduleLocalDelivery($iTipMessage);
125
+    }
126
+
127
+    public function isExternalAttendee(string $principalUri): bool {
128
+        /** @var \Sabre\DAVACL\Plugin $aclPlugin */
129
+        $aclPlugin = $this->server->getPlugin('acl');
130
+        return $aclPlugin->getPrincipalByUri($principalUri) === null;
131
+    }
132 132
 }
Please login to merge, or discard this patch.