diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php index f4a1ac8ec2..71236c55af 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php @@ -49,24 +49,17 @@ class ImapClient extends \MailSo\Net\NetClient private bool $bIsLoggined = false; - private string $sLogginedUser = ''; - private bool $UTF8 = false; public function Hash() : string { return \md5('ImapClientHash/'. - $this->GetLogginedUser() . '@' . + $this->Settings->Login . '@' . $this->GetConnectedHost() . ':' . $this->GetConnectedPort() ); } - public function GetLogginedUser() : string - { - return $this->sLogginedUser; - } - /** * @throws \InvalidArgumentException * @throws \MailSo\RuntimeException @@ -109,23 +102,26 @@ private function StartTLS() : void */ public function Login(Settings $oSettings) : self { + if ($this->bIsLoggined) { + return $this; + } + if (!empty($oSettings->ProxyAuthUser) && !empty($oSettings->ProxyAuthPassword)) { - $sLogin = \MailSo\Base\Utils::IdnToAscii(\MailSo\Base\Utils::Trim($oSettings->ProxyAuthUser)); + $sLogin = $oSettings->ProxyAuthUser; $sPassword = $oSettings->ProxyAuthPassword; $sProxyAuthUser = $oSettings->Login; } else { - $sLogin = \MailSo\Base\Utils::IdnToAscii(\MailSo\Base\Utils::Trim($oSettings->Login)); + $sLogin = $oSettings->Login; $sPassword = $oSettings->Password; $sProxyAuthUser = ''; } - if (!\strlen($sLogin) || !\strlen($sPassword)) - { + $sLogin = \MailSo\Base\Utils::IdnToAscii(\MailSo\Base\Utils::Trim($sLogin)); + + if (!\strlen($sLogin) || !\strlen($sPassword)) { $this->writeLogException(new \InvalidArgumentException, \LOG_ERR); } - $this->sLogginedUser = $sLogin; - $type = ''; foreach ($oSettings->SASLMechanisms as $sasl_type) { if ($this->hasCapability("AUTH={$sasl_type}") && \SnappyMail\SASL::isSupported($sasl_type)) { diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Net/NetClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Net/NetClient.php index f857a2dd1f..321156ca19 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Net/NetClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Net/NetClient.php @@ -93,7 +93,8 @@ public function Connect(ConnectSettings $oSettings) : void if ($this->IsConnected()) { $this->writeLogException(new Exceptions\SocketAlreadyConnectedException, \LOG_ERR, false); - $this->Disconnect(); +// $this->Disconnect(); + return; } $this->Settings = $oSettings; @@ -202,6 +203,7 @@ public function Disconnect() : void } } +// abstract public function Login(ConnectSettings $oSettings) : self; abstract public function Logout() : void; public function IsConnected(bool $bThrowExceptionOnFalse = false) : bool diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Sieve/SieveClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Sieve/SieveClient.php index 2e2efd590d..18bee7c6e8 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Sieve/SieveClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Sieve/SieveClient.php @@ -78,6 +78,10 @@ private function StartTLS() : void */ public function Login(Settings $oSettings) : self { + if ($this->bIsLoggined) { + return $this; + } + $sLogin = $oSettings->Login; $sPassword = $oSettings->Password; $sLoginAuthKey = ''; diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php index 934d05534a..fc7dd3c817 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Smtp/SmtpClient.php @@ -19,6 +19,8 @@ */ class SmtpClient extends \MailSo\Net\NetClient { + private bool $bIsLoggined = false; + private string $sEhlo = ''; private bool $bRcpt = false; @@ -103,11 +105,15 @@ private function StartTLS() : void /** * @throws \InvalidArgumentException * @throws \MailSo\RuntimeException - * @throws \MailSo\Net\* + * @throws \MailSo\Net\Exceptions\* * @throws \MailSo\Smtp\Exceptions\* */ public function Login(Settings $oSettings) : self { + if ($this->bIsLoggined) { + return $this; + } + $sLogin = \MailSo\Base\Utils::IdnToAscii(\MailSo\Base\Utils::Trim($oSettings->Login)); $sPassword = $oSettings->Password; @@ -183,6 +189,8 @@ public function Login(Settings $oSettings) : self ); } + $this->bIsLoggined = true; + return $this; }