diff --git a/dev/View/Popup/Domain.js b/dev/View/Popup/Domain.js index 0bdc82c80..98f6bc4a7 100644 --- a/dev/View/Popup/Domain.js +++ b/dev/View/Popup/Domain.js @@ -365,6 +365,8 @@ export class DomainPopupView extends AbstractViewPopup { this[key]?.(value); } }); + this.name(IDN.toUnicode(this.name())); + this.aliasName(IDN.toUnicode(this.aliasName())); this.imapCapabilities(this.imapCapabilities.concat(this.imapDisabled_capabilities()).unique()); this.enableSmartPorts(true); } diff --git a/snappymail/v/0.0.0/app/domains/default.json b/snappymail/v/0.0.0/app/domains/default.json index 8f6a37243..b93d7dd59 100644 --- a/snappymail/v/0.0.0/app/domains/default.json +++ b/snappymail/v/0.0.0/app/domains/default.json @@ -1,5 +1,4 @@ { - "name": "*", "IMAP": { "host": "localhost", "port": 143, 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 fbb017e22..551c99cb5 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 @@ -695,13 +695,11 @@ abstract class Utils public static function IdnToUtf8(string $sStr) : string { $trace = \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]; - \trigger_error("Deprecated function IdnToAscii called at {$trace['file']}#{$trace['line']}", \E_USER_DEPRECATED); + \SnappyMail\Log::warning('MailSo', "Deprecated function IdnToUtf8 called at {$trace['file']}#{$trace['line']}"); if (\preg_match('/(^|\.|@)xn--/i', $sStr)) { - try - { - $sStr = \SnappyMail\IDN::anyToUtf8($sStr); - } - catch (\Throwable $oException) {} + $sStr = \str_contains($sStr, '@') + ? \SnappyMail\IDN::emailToUtf8($string) + : \idn_to_utf8($string); } return $sStr; } @@ -712,15 +710,11 @@ abstract class Utils public static function IdnToAscii(string $sStr, bool $bLowerCase = false) : string { $trace = \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]; - \trigger_error("Deprecated function IdnToAscii called at {$trace['file']}#{$trace['line']}", \E_USER_DEPRECATED); + \SnappyMail\Log::warning('MailSo', "Deprecated function IdnToAscii called at {$trace['file']}#{$trace['line']}"); $aParts = \explode('@', $sStr); $sDomain = \array_pop($aParts); - if (\strlen($sDomain) && \preg_match('/[^\x20-\x7E]/', $sDomain)) { - try - { - $sDomain = \SnappyMail\IDN::anyToAscii($sDomain); - } - catch (\Throwable $oException) {} + if (\preg_match('/[^\x20-\x7E]/', $sDomain)) { + $sDomain = \idn_to_ascii($string); } if ($bLowerCase) { $sDomain = \strtolower($sDomain); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php index 82efe716d..769216e6f 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/AdminDomains.php @@ -10,8 +10,13 @@ trait AdminDomains public function DoAdminDomainLoad() : array { $this->IsAdminLoggined(); - - return $this->DefaultResponse($this->DomainProvider()->Load($this->GetActionParam('name', ''), false, false)); + $mResult = false; + $oDomain = $this->DomainProvider()->Load($this->GetActionParam('name', ''), false, false); + if ($oDomain) { + $mResult = $oDomain->jsonSerialize(); + $mResult['name'] = $oDomain->Name(); + } + return $this->DefaultResponse($mResult); } public function DoAdminDomainList() : array @@ -24,8 +29,7 @@ trait AdminDomains public function DoAdminDomainDelete() : array { $this->IsAdminLoggined(); - - return $this->DefaultResponse($this->DomainProvider()->Delete((string) $this->GetActionParam('name', ''))); + return $this->DefaultResponse($this->DomainProvider()->Delete($this->GetActionParam('name', ''))); } public function DoAdminDomainDisable() : array @@ -77,7 +81,7 @@ trait AdminDomains public function DoAdminDomainAutoconfig() : array { $this->IsAdminLoggined(); - $sDomain = $this->GetActionParam('domain'); + $sDomain = \strtolower(\idn_to_ascii($this->GetActionParam('domain'))); $sEmail = "test@{$sDomain}"; return $this->DefaultResponse(array( 'email' => $sEmail, diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Domain.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Domain.php index cd0000fce..56aa35a77 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Domain.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Domain.php @@ -240,14 +240,13 @@ class Domain implements \JsonSerializable { $aResult = array( // '@Object' => 'Object/Domain', - 'name' => \idn_to_utf8($this->Name), 'IMAP' => $this->IMAP, 'SMTP' => $this->SMTP, 'Sieve' => $this->Sieve, 'whiteList' => $this->whiteList ); if ($this->aliasName) { - $aResult['aliasName'] = \idn_to_utf8($this->aliasName); + $aResult['aliasName'] = $this->aliasName; } return $aResult; } 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 2e69fb1d6..32a4c3c72 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/idn.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/idn.php @@ -7,28 +7,6 @@ namespace SnappyMail; abstract class IDN { - public static function anyToAscii(string $string) : string - { - if (\strspn($string, ':/')) { - return static::uri($string, true); - } - if (\str_contains($string, '@')) { - return static::emailToAscii($string); - } - return \idn_to_ascii($string); - } - - public static function anyToUtf8(string $string) : string - { - if (\strspn($string, ':/')) { - return static::uri($string, false); - } - if (\str_contains($string, '@')) { - return static::emailToUtf8($string); - } - return \idn_to_utf8($string); - } - /** * Converts IDN domain part to lowercased punycode * Like: 'Smile😀@📧.SnappyMail.eu' to 'Smile😀@xn--du8h.snappymail.eu'