diff --git a/Dockerfile b/Dockerfile index e3024548c73d117ce6eb8d4231ba8c880ff11ca0..8f4e6658950612e24adca006a606239cf98e727e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -176,6 +176,7 @@ RUN patch -u ${BASE_DIR}/apps/provisioning_api/lib/Controller/UsersController.ph RUN patch -u ${BASE_DIR}/lib/private/Security/VerificationToken/VerificationToken.php -i ${TMP_PATCH_DIR}/033-verification-token-private.patch RUN patch -u ${BASE_DIR}/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php -i ${TMP_PATCH_DIR}/034-oidc-bearer-token-auth.patch #RUN patch -u ${BASE_DIR}/custom_apps/snappymail/app/snappymail/v/2.38.2+murena-20251112/app/libraries/RainLoop/Actions/Contacts.php -i ${TMP_PATCH_DIR}/037-snappymail-contact.patch +RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/038-appdata-folder-based-on-config.patch RUN rm -rf ${TMP_PATCH_DIR} diff --git a/patches/038-appdata-folder-based-on-config.patch b/patches/038-appdata-folder-based-on-config.patch new file mode 100644 index 0000000000000000000000000000000000000000..edd1aa6db5bedd9d325f21c3948aa8d0c6dc85e4 --- /dev/null +++ b/patches/038-appdata-folder-based-on-config.patch @@ -0,0 +1,46 @@ +From: Fahim +Date: Thu, 05 Mar 2026 16:26:00 +0600 +Subject: [PATCH] Enable appdata folder location can be set up dynamatically + +We want to setup appdata folder dynamatically using config. This is specially needed for objectStore setup, so appdata files can be locally accessable, which minimize loadtime. The `appdatadirectory` new config value is introduced by this patch. + +--- lib/private/Files/SetupManager.php 2026-03-05 16:26:59.175816848 +0600 ++++ lib/private/Files/SetupManager-new.php 2026-03-05 16:26:46.271803100 +0600 +@@ -429,10 +429,26 @@ + foreach ($rootMounts as $rootMountProvider) { + $this->mountManager->addMount($rootMountProvider); + } +- ++ $this->setupAppData(); + $this->eventLogger->end('fs:setup:root'); + } + ++ private function setupAppData(): void { ++ if ($appdatadirectory = $this->config->getSystemValue('appdatadirectory', null)) { ++ $instanceId = $this->config->getSystemValue('instanceid', null); ++ if ($instanceId === null) { ++ throw new \RuntimeException('no instance id!'); ++ } ++ $folderName = 'appdata_' . $instanceId; ++ $arguments = [ ++ 'datadir' => $appdatadirectory, ++ ]; ++ $storage = new \OC\Files\Storage\Local($arguments); ++ $mount = new \OC\Files\Mount\MountPoint($storage, $folderName, $arguments); ++ $this->mountManager->addMount($mount); ++ } ++ } ++ + /** + * Get the user to setup for a path or `null` if the root needs to be setup + * +--- lib/private/SystemConfig.php 2026-03-05 16:30:25.597831789 +0600 ++++ lib/private/SystemConfig-new.php 2026-03-05 16:30:12.022966268 +0600 +@@ -20,6 +20,7 @@ + protected const DEFAULT_SENSITIVE_VALUES = [ + 'instanceid' => true, + 'datadirectory' => true, ++ 'appdatadirectory' => true, + 'dbname' => true, + 'dbhost' => true, + 'dbpassword' => true,