99namespace OCA \Richdocuments \AppInfo ;
1010
1111use OCA \Files_Sharing \Event \ShareLinkAccessedEvent ;
12+ use OCA \Richdocuments \AppConfig ;
1213use OCA \Richdocuments \Capabilities ;
1314use OCA \Richdocuments \Conversion \ConversionProvider ;
1415use OCA \Richdocuments \Db \WopiMapper ;
2021use OCA \Richdocuments \Listener \FileCreatedFromTemplateListener ;
2122use OCA \Richdocuments \Listener \LoadAdditionalListener ;
2223use OCA \Richdocuments \Listener \LoadViewerListener ;
24+ use OCA \Richdocuments \Listener \OverwritePublicSharePropertiesListener ;
2325use OCA \Richdocuments \Listener \ReferenceListener ;
2426use OCA \Richdocuments \Listener \RegisterTemplateFileCreatorListener ;
2527use OCA \Richdocuments \Listener \ShareLinkListener ;
3234use OCA \Richdocuments \Preview \OpenDocument ;
3335use OCA \Richdocuments \Preview \Pdf ;
3436use OCA \Richdocuments \Reference \OfficeTargetReferenceProvider ;
37+ use OCA \Richdocuments \Storage \SecureViewWrapper ;
3538use OCA \Richdocuments \TaskProcessing \SlideDeckGenerationProvider ;
3639use OCA \Richdocuments \TaskProcessing \SlideDeckGenerationTaskType ;
3740use OCA \Richdocuments \TaskProcessing \TextToDocumentProvider ;
3841use OCA \Richdocuments \TaskProcessing \TextToDocumentTaskType ;
3942use OCA \Richdocuments \TaskProcessing \TextToSpreadsheetProvider ;
4043use OCA \Richdocuments \TaskProcessing \TextToSpreadsheetTaskType ;
4144use OCA \Richdocuments \Template \CollaboraTemplateProvider ;
45+ use OCA \Talk \Events \OverwritePublicSharePropertiesEvent ;
4246use OCA \Viewer \Event \LoadViewer ;
4347use OCP \AppFramework \App ;
4448use OCP \AppFramework \Bootstrap \IBootContext ;
4751use OCP \AppFramework \Http \Events \BeforeTemplateRenderedEvent ;
4852use OCP \Collaboration \Reference \RenderReferenceEvent ;
4953use OCP \Collaboration \Resources \LoadAdditionalScriptsEvent ;
54+ use OCP \Files \Storage \IStorage ;
5055use OCP \Files \Template \BeforeGetTemplatesEvent ;
5156use OCP \Files \Template \FileCreatedFromTemplateEvent ;
5257use OCP \Files \Template \RegisterTemplateCreatorEvent ;
58+ use OCP \IAppConfig ;
5359use OCP \Preview \BeforePreviewFetchedEvent ;
5460use OCP \Security \CSP \AddContentSecurityPolicyEvent ;
5561use OCP \Security \FeaturePolicy \AddFeaturePolicyEvent ;
62+ use OCP \Server ;
5663
5764class Application extends App implements IBootstrap {
5865 public const APPNAME = 'richdocuments ' ;
@@ -62,6 +69,8 @@ public function __construct(array $urlParams = []) {
6269 }
6370
6471 public function register (IRegistrationContext $ context ): void {
72+ \OCP \Util::connectHook ('OC_Filesystem ' , 'preSetup ' , $ this , 'addStorageWrapper ' );
73+
6574 $ context ->registerTemplateProvider (CollaboraTemplateProvider::class);
6675 $ context ->registerCapability (Capabilities::class);
6776 $ context ->registerMiddleWare (WOPIMiddleware::class);
@@ -76,6 +85,7 @@ public function register(IRegistrationContext $context): void {
7685 $ context ->registerEventListener (RenderReferenceEvent::class, ReferenceListener::class);
7786 $ context ->registerEventListener (BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
7887 $ context ->registerEventListener (BeforeGetTemplatesEvent::class, BeforeGetTemplatesListener::class);
88+ $ context ->registerEventListener (OverwritePublicSharePropertiesEvent::class, OverwritePublicSharePropertiesListener::class);
7989 $ context ->registerReferenceProvider (OfficeTargetReferenceProvider::class);
8090 $ context ->registerSensitiveMethods (WopiMapper::class, [
8191 'getPathForToken ' ,
@@ -101,4 +111,32 @@ public function register(IRegistrationContext $context): void {
101111
102112 public function boot (IBootContext $ context ): void {
103113 }
114+
115+ /**
116+ * @internal
117+ */
118+ public function addStorageWrapper (): void {
119+ if (Server::get (IAppConfig::class)->getValueString (AppConfig::WATERMARK_APP_NAMESPACE , 'watermark_enabled ' , 'no ' ) === 'no ' ) {
120+ return ;
121+ }
122+
123+ \OC \Files \Filesystem::addStorageWrapper ('richdocuments ' , [$ this , 'addStorageWrapperCallback ' ], -10 );
124+ }
125+
126+ /**
127+ * @param $mountPoint
128+ * @param IStorage $storage
129+ * @return SecureViewWrapper|IStorage
130+ *@internal
131+ */
132+ public function addStorageWrapperCallback ($ mountPoint , IStorage $ storage ) {
133+ if (!\OC ::$ CLI && $ mountPoint !== '/ ' ) {
134+ return new SecureViewWrapper ([
135+ 'storage ' => $ storage ,
136+ 'mountPoint ' => $ mountPoint ,
137+ ]);
138+ }
139+
140+ return $ storage ;
141+ }
104142}
0 commit comments