From 728286d16c5ac35d1c2ecbc1ceb5c94e348878c5 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 6 Feb 2024 18:31:11 +0100 Subject: [PATCH] Cleanup some mail address parsing --- .../v/0.0.0/app/libraries/MailSo/Base/Utils.php | 11 ++--------- .../0.0.0/app/libraries/RainLoop/Actions/UserAuth.php | 4 ++-- .../RainLoop/Providers/Domain/Autoconfig.php | 3 +-- snappymail/v/0.0.0/app/libraries/snappymail/idn.php | 6 ++++-- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php index 1d794ae95..7a4c5f9b8 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php @@ -433,15 +433,8 @@ abstract class Utils public static function GetDomainFromEmail(string $sEmail) : string { - $sResult = ''; - if (\strlen($sEmail)) { - $iPos = \strrpos($sEmail, '@'); - if (false !== $iPos && 0 < $iPos) { - $sResult = \substr($sEmail, $iPos + 1); - } - } - - return $sResult; + $aParts = \explode('@', $sEmail); + return isset($aParts[1]) ? \array_pop($aParts) : ''; } public static function GetClearDomainName(string $sDomain) : string diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php index 2895f7709..2511e99b2 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/UserAuth.php @@ -27,13 +27,13 @@ trait UserAuth string &$sPassword, string &$sLogin): void { - $this->Plugins()->RunHook('login.credentials.step-1', array(&$sEmail)); - $sEmail = \MailSo\Base\Utils::Trim($sEmail); if ($this->Config()->Get('login', 'login_lowercase', true)) { $sEmail = \mb_strtolower($sEmail); } + $this->Plugins()->RunHook('login.credentials.step-1', array(&$sEmail)); + if (!\str_contains($sEmail, '@')) { $this->logWrite('The email address "' . $sEmail . '" is not complete', \LOG_INFO, 'LOGIN'); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/Domain/Autoconfig.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/Domain/Autoconfig.php index b78df9e8d..9c101fe50 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/Domain/Autoconfig.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/Domain/Autoconfig.php @@ -9,8 +9,7 @@ abstract class Autoconfig { public static function discover(string $emailaddress) : ?array { - $domain = \explode('@', $emailaddress); - $domain = \array_pop($domain); + $domain = \MailSo\Base\Utils::GetDomainFromEmail($emailaddress); // First try $autoconfig = static::resolve($domain, $emailaddress); if ($autoconfig) { diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/idn.php b/snappymail/v/0.0.0/app/libraries/snappymail/idn.php index 4c5faa42c..4ae9c935d 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/idn.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/idn.php @@ -62,8 +62,10 @@ abstract class IDN private static function emailAddress(string $address, bool $toAscii) : string { - if (\strpos($address, '@')) { - list($local, $domain) = \explode('@', $address, 2); + if (\str_contains($address, '@')) { + $local = \explode('@', $address); + $domain = \array_pop($local); + $local = \implode('@', $local); $arr = \explode('.', $domain); foreach ($arr as $k => $v) { $conv = $toAscii ? static::toAscii($v) : static::toUtf8($v);