From 463670b25c98470aea485a90dc2c940cff7658a8 Mon Sep 17 00:00:00 2001 From: Rob Emery Date: Sat, 11 Jan 2025 21:15:17 +0000 Subject: [PATCH] Adding the ability to set the permissions used when creating files previously this was hardcoded, meaning that if you wanted to configure to permit group access (for exammple) this wasn't possible --- .../v/0.0.0/app/libraries/RainLoop/Config/Application.php | 2 ++ snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index 0621cff84..be012aa8c 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -235,6 +235,8 @@ protected function defaultValues() : array 'admin_login' => array('admin', 'Login and password for web admin panel'), 'admin_password' => array(''), 'admin_totp' => array(''), + 'file_permissions' => array('0600', 'permissions to chmod cache files to when creating'), + 'dir_permissions' => array('0700', 'permissions to chmod cache directories to when creating'), 'insecure_cryptkey' => array(false, 'Use email address instead of login password for encrypting sensitive data (like account passwords)'), 'force_https' => array(false), diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php index c72d127f0..a43b3019b 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php @@ -156,14 +156,14 @@ public static function inOpenBasedir(string $name) : string public static function saveFile(string $filename, string $data) : void { $dir = \dirname($filename); - if (!\is_dir($dir) && !\mkdir($dir, 0700, true)) { + if (!\is_dir($dir) && !\mkdir($dir, intval($oConfig->Get('security', 'dir_permissions)), true)) { throw new \RuntimeException('Failed to create directory "'.$dir.'"'); } if (false === \file_put_contents($filename, $data)) { throw new \RuntimeException('Failed to save file "'.$filename.'"'); } \clearstatcache(); - \chmod($filename, 0600); + \chmod($filename, intval($oConfig->Get('security', 'file_permissions'))); /* try { } catch (\Throwable $oException) {