From a8ef3aa18a3c347352c52b4a3ee71d27b6531e13 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 @@ Warning: only enable when server does not do this, else double compression error '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 @@ class Utils 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) {