diff --git a/integrations/nextcloud/snappymail/lib/Migration/InstallStep.php b/integrations/nextcloud/snappymail/lib/Migration/InstallStep.php index 9ce6ca532..7e0332dab 100644 --- a/integrations/nextcloud/snappymail/lib/Migration/InstallStep.php +++ b/integrations/nextcloud/snappymail/lib/Migration/InstallStep.php @@ -26,7 +26,10 @@ class InstallStep implements IRepairStep \OCA\SnappyMail\Util\SnappyMailHelper::loadApp(); + \SnappyMail\Upgrade::fixPermissions(); + $app_dir = \dirname(\dirname(__DIR__)) . '/app'; +// $app_dir = \rtrim(APP_INDEX_ROOT_PATH, '\\/'); // https://github.com/the-djmaze/snappymail/issues/790#issuecomment-1366527884 if (!\file_exists($app_dir . '/.htaccess') && \file_exists($app_dir . '/_htaccess')) { diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php b/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php index eeef6c521..4914ce05a 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/upgrade.php @@ -209,6 +209,9 @@ abstract class Upgrade if (!$bResult) { throw new \Exception('Extract core files failed'); } + + static::fixPermissions(); + \error_log('Update success'); // opcache_reset is a terrible solution // \is_callable('opcache_reset') && \opcache_reset(); @@ -219,4 +222,33 @@ abstract class Upgrade } return $bResult; } + + // Prevents Apache access error due to directories being 0700 + public static function fixPermissions($mode = 0755) : void + { + $target = \rtrim(APP_INDEX_ROOT_PATH, '\\/'); + // Prevent Apache access error due to directories being 0700 + foreach (\glob("{$target}/snappymail/v/*", \GLOB_ONLYDIR) as $dir) { + \chmod($dir, 0755); + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator("{$dir}/static", \FilesystemIterator::SKIP_DOTS), + \RecursiveIteratorIterator::SELF_FIRST + ); + foreach ($items as $item) { + if ($item->isDir()) { + \chmod($item, 0755); + } + } + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator("{$dir}/themes", \FilesystemIterator::SKIP_DOTS), + \RecursiveIteratorIterator::SELF_FIRST + ); + foreach ($items as $item) { + if ($item->isDir()) { + \chmod($item, 0755); + } + } + } + } + }