From ddf28c299cc651a80f3d1585a01f3e230b390ceb Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sat, 24 Oct 2026 14:12:28 +0200 Subject: [PATCH 1/4] Require PHP 8.2 --- .../v/0.0.0/app/libraries/polyfill/php8.php | 76 ------------------- .../app/libraries/snappymail/integrity.php | 4 +- snappymail/v/0.0.0/include.php | 5 -- 3 files changed, 2 insertions(+), 83 deletions(-) delete mode 100644 snappymail/v/0.0.0/app/libraries/polyfill/php8.php diff --git a/snappymail/v/0.0.0/app/libraries/polyfill/php8.php b/snappymail/v/0.0.0/app/libraries/polyfill/php8.php deleted file mode 100644 index 92a5dc534..000000000 --- a/snappymail/v/0.0.0/app/libraries/polyfill/php8.php +++ /dev/null @@ -1,76 +0,0 @@ - Date: Sat, 24 Oct 2026 14:48:02 +0200 Subject: [PATCH 2/4] Resolve #2018 --- plugins/ldap-login-mapping/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/ldap-login-mapping/index.php b/plugins/ldap-login-mapping/index.php index 64b983696..ea00ee759 100644 --- a/plugins/ldap-login-mapping/index.php +++ b/plugins/ldap-login-mapping/index.php @@ -107,7 +107,7 @@ class LDAPLoginMappingPlugin extends AbstractPlugin $sSmtpUser = $sResult['login']; $sEmail = $sResult['email']; } - syslog(LOG_WARNING, "plugins/ldap-login-mapping/index.php:FilterLoginДredentials() auth try: $sIP/$sEmail, resolved as $sImapUser/$sEmail"); + syslog(LOG_WARNING, "plugins/ldap-login-mapping/index.php:FilterLoginCredentials() auth try: $sIP/$sEmail, resolved as $sImapUser/$sEmail"); } } From 343ef172d1cacda4aa3388d609df1150083d9797 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sat, 24 Oct 2026 14:52:36 +0200 Subject: [PATCH 3/4] Resolve #2008 --- plugins/two-factor-auth/index.php | 2 +- snappymail/v/0.0.0/app/libraries/MailSo/Smtp/Settings.php | 2 +- snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/two-factor-auth/index.php b/plugins/two-factor-auth/index.php index a080ae08b..21b449daa 100644 --- a/plugins/two-factor-auth/index.php +++ b/plugins/two-factor-auth/index.php @@ -131,7 +131,7 @@ class TwoFactorAuthPlugin extends \RainLoop\Plugins\AbstractPlugin private static function getQRCode(MainAccount $oAccount, string $secret) : string { $email = \rawurlencode($oAccount->Email()); -// $issuer = \rawurlencode(\RainLoop\API::Config()->Get('webmail', 'title', 'SnappyMail')); +// $issuer = \rawurlencode(\RainLoop\Api::Config()->Get('webmail', 'title', 'SnappyMail')); $QR = \SnappyMail\QRCode::getMinimumQRCode( // "otpauth://totp/{$issuer}:{$email}?secret={$secret}&issuer={$issuer}", "otpauth://totp/{$email}?secret={$secret}", diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/Settings.php b/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/Settings.php index de25b99cd..4049b8a12 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/Settings.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/Settings.php @@ -33,7 +33,7 @@ class Settings extends \MailSo\Net\ConnectSettings public function __construct() { parent::__construct(); - $oConfig = \RainLoop\API::Config(); + $oConfig = \RainLoop\Api::Config(); $this->viewErrors = !!$oConfig->Get('labs', 'smtp_show_server_errors', false); } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php index 26ab6e6a0..b3ad82241 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php @@ -542,7 +542,7 @@ class ServiceActions } /** - * Login with the \RainLoop\API::CreateUserSsoHash() generated hash + * Login with the \RainLoop\Api::CreateUserSsoHash() generated hash */ public function ServiceSso() : string { From 870df2d861d78e84e899f874f1bd2639b464bfb6 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sat, 24 Oct 2026 16:24:28 +0200 Subject: [PATCH 4/4] Resolve #1990 --- snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php | 2 +- snappymail/v/0.0.0/app/libraries/snappymail/gpg/pgp.php | 2 +- snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php index 64dd7f63d..e78ed81c0 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php @@ -487,7 +487,7 @@ abstract class Base protected static function findBinary($name) : ?string { - $binary = \function_exists('shell_exec') ? \trim((string) \shell_exec('which $name')) : ''; + $binary = \function_exists('shell_exec') ? \trim((string) \shell_exec('which ' . \escapeshellarg($name))) : ''; if ($binary && \RainLoop\Utils::inOpenBasedir($binary) && \is_executable($binary)) { return $binary; } diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/pgp.php b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/pgp.php index f3921112f..30d9051f0 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/pgp.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/pgp.php @@ -50,7 +50,7 @@ class PGP extends Base implements \SnappyMail\PGP\PGPInterface // How to use gpgme-json ? $this->binary = static::findBinary('gpg'); - $info = \preg_replace('/\R +/', ' ', `$this->binary --with-colons --list-config`); + $info = \preg_replace('/\R +/', ' ', \shell_exec(\escapeshellcmd($this->binary) . ' --with-colons --list-config')); if (\preg_match('/cfg:version:([0-9]+\\.[0-9]+\\.[0-9]+)/', $info, $match)) { $this->version = $match[1]; } diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php index 55a40301b..ec17fdd9e 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php @@ -43,7 +43,7 @@ class SMIME extends Base // How to use gpgme-json ? $this->binary = static::findBinary('gpgsm'); - $info = \preg_replace('/\R +/', ' ', \shell_exec("{$this->binary} --version")); + $info = \preg_replace('/\R +/', ' ', \shell_exec(\escapeshellcmd($this->binary) . ' --version') ); if (\preg_match('/gpgsm.+([0-9]+\\.[0-9]+\\.[0-9]+)/', $info, $match)) { $this->version = $match[1]; }