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 \Template \CollaboraTemplateProvider ;
39+ use OCA \Talk \Events \OverwritePublicSharePropertiesEvent ;
3640use OCA \Viewer \Event \LoadViewer ;
3741use OCP \AppFramework \App ;
3842use OCP \AppFramework \Bootstrap \IBootContext ;
4145use OCP \AppFramework \Http \Events \BeforeTemplateRenderedEvent ;
4246use OCP \Collaboration \Reference \RenderReferenceEvent ;
4347use OCP \Collaboration \Resources \LoadAdditionalScriptsEvent ;
48+ use OCP \Files \Storage \IStorage ;
4449use OCP \Files \Template \BeforeGetTemplatesEvent ;
4550use OCP \Files \Template \FileCreatedFromTemplateEvent ;
4651use OCP \Files \Template \RegisterTemplateCreatorEvent ;
52+ use OCP \IAppConfig ;
4753use OCP \Preview \BeforePreviewFetchedEvent ;
4854use OCP \Security \CSP \AddContentSecurityPolicyEvent ;
4955use OCP \Security \FeaturePolicy \AddFeaturePolicyEvent ;
56+ use OCP \Server ;
5057
5158class Application extends App implements IBootstrap {
5259 public const APPNAME = 'richdocuments ' ;
@@ -56,6 +63,8 @@ public function __construct(array $urlParams = []) {
5663 }
5764
5865 public function register (IRegistrationContext $ context ): void {
66+ \OCP \Util::connectHook ('OC_Filesystem ' , 'preSetup ' , $ this , 'addStorageWrapper ' );
67+
5968 $ context ->registerTemplateProvider (CollaboraTemplateProvider::class);
6069 $ context ->registerCapability (Capabilities::class);
6170 $ context ->registerMiddleWare (WOPIMiddleware::class);
@@ -70,6 +79,7 @@ public function register(IRegistrationContext $context): void {
7079 $ context ->registerEventListener (RenderReferenceEvent::class, ReferenceListener::class);
7180 $ context ->registerEventListener (BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
7281 $ context ->registerEventListener (BeforeGetTemplatesEvent::class, BeforeGetTemplatesListener::class);
82+ $ context ->registerEventListener (OverwritePublicSharePropertiesEvent::class, OverwritePublicSharePropertiesListener::class);
7383 $ context ->registerReferenceProvider (OfficeTargetReferenceProvider::class);
7484 $ context ->registerSensitiveMethods (WopiMapper::class, [
7585 'getPathForToken ' ,
@@ -88,4 +98,32 @@ public function register(IRegistrationContext $context): void {
8898
8999 public function boot (IBootContext $ context ): void {
90100 }
101+
102+ /**
103+ * @internal
104+ */
105+ public function addStorageWrapper (): void {
106+ if (Server::get (IAppConfig::class)->getValueString (AppConfig::WATERMARK_APP_NAMESPACE , 'watermark_enabled ' , 'no ' ) === 'no ' ) {
107+ return ;
108+ }
109+
110+ \OC \Files \Filesystem::addStorageWrapper ('richdocuments ' , [$ this , 'addStorageWrapperCallback ' ], -10 );
111+ }
112+
113+ /**
114+ * @param $mountPoint
115+ * @param IStorage $storage
116+ * @return SecureViewWrapper|IStorage
117+ *@internal
118+ */
119+ public function addStorageWrapperCallback ($ mountPoint , IStorage $ storage ) {
120+ if (!\OC ::$ CLI && $ mountPoint !== '/ ' ) {
121+ return new SecureViewWrapper ([
122+ 'storage ' => $ storage ,
123+ 'mountPoint ' => $ mountPoint ,
124+ ]);
125+ }
126+
127+ return $ storage ;
128+ }
91129}
0 commit comments