/** * @param \RainLoop\Plugins\Manager $oPlugins * @param \MailSo\Mail\MailClient $oMailClient * @param \RainLoop\Application $oConfig * * @return bool */ public function IncConnectAndLoginHelper($oPlugins, $oMailClient, $oConfig) { $bLogin = false; $aImapCredentials = array('UseConnect' => true, 'UseAuth' => true, 'Host' => $this->DomainIncHost(), 'Port' => $this->DomainIncPort(), 'Secure' => $this->DomainIncSecure(), 'Login' => $this->IncLogin(), 'Password' => $this->Password(), 'ProxyAuthUser' => $this->ProxyAuthUser(), 'ProxyAuthPassword' => $this->ProxyAuthPassword(), 'VerifySsl' => !!$oConfig->Get('ssl', 'verify_certificate', false), 'AllowSelfSigned' => !!$oConfig->Get('ssl', 'allow_self_signed', true), 'UseAuthPlainIfSupported' => !!$oConfig->Get('labs', 'use_imap_auth_plain')); $oPlugins->RunHook('filter.imap-credentials', array($this, &$aImapCredentials)); $oPlugins->RunHook('event.imap-pre-connect', array($this, $aImapCredentials['UseConnect'], $aImapCredentials)); if ($aImapCredentials['UseConnect']) { $oMailClient->Connect($aImapCredentials['Host'], $aImapCredentials['Port'], $aImapCredentials['Secure'], $aImapCredentials['VerifySsl'], $aImapCredentials['AllowSelfSigned']); } $oPlugins->RunHook('event.imap-pre-login', array($this, $aImapCredentials['UseAuth'], $aImapCredentials)); if ($aImapCredentials['UseAuth']) { if (0 < \strlen($aImapCredentials['ProxyAuthUser']) && 0 < \strlen($aImapCredentials['ProxyAuthPassword'])) { $oMailClient->Login($aImapCredentials['ProxyAuthUser'], $aImapCredentials['ProxyAuthPassword'], $aImapCredentials['Login'], $aImapCredentials['UseAuthPlainIfSupported']); } else { $iGatLen = \strlen(APP_GOOGLE_ACCESS_TOKEN_PREFIX); $sPassword = $aImapCredentials['Password']; if (APP_GOOGLE_ACCESS_TOKEN_PREFIX === \substr($sPassword, 0, $iGatLen)) { $oMailClient->LoginWithXOauth2(\base64_encode('user='******'Login'] . "" . 'auth=Bearer ' . \substr($sPassword, $iGatLen) . "")); } else { $oMailClient->Login($aImapCredentials['Login'], $aImapCredentials['Password'], '', $aImapCredentials['UseAuthPlainIfSupported']); } } $bLogin = true; } $oPlugins->RunHook('event.imap-post-login', array($this, $aImapCredentials['UseAuth'], $bLogin, $aImapCredentials)); return $bLogin; }
/** * @param \RainLoop\Plugins\Manager $oPlugins * @param \MailSo\Mail\MailClient $oMailClient * @param \RainLoop\Application $oConfig * * @return bool */ public function IncConnectAndLoginHelper($oPlugins, $oMailClient, $oConfig) { $bLogin = false; $aImapCredentials = array('UseConnect' => true, 'UseAuth' => true, 'Host' => $this->DomainIncHost(), 'Port' => $this->DomainIncPort(), 'Secure' => $this->DomainIncSecure(), 'Login' => $this->IncLogin(), 'Password' => $this->Password(), 'ProxyAuthUser' => $this->ProxyAuthUser(), 'ProxyAuthPassword' => $this->ProxyAuthPassword(), 'VerifySsl' => !!$oConfig->Get('ssl', 'verify_certificate', false), 'AllowSelfSigned' => !!$oConfig->Get('ssl', 'allow_self_signed', true), 'UseAuthPlainIfSupported' => !!$oConfig->Get('labs', 'use_imap_auth_plain')); $oPlugins->RunHook('filter.imap-credentials', array($this, &$aImapCredentials)); $oPlugins->RunHook('event.imap-pre-connect', array($this, $aImapCredentials['UseConnect'], $aImapCredentials)); if ($aImapCredentials['UseConnect']) { $oMailClient->Connect($aImapCredentials['Host'], $aImapCredentials['Port'], $aImapCredentials['Secure'], $aImapCredentials['VerifySsl'], $aImapCredentials['AllowSelfSigned']); } $oPlugins->RunHook('event.imap-pre-login', array($this, $aImapCredentials['UseAuth'], $aImapCredentials)); if ($aImapCredentials['UseAuth']) { if (0 < \strlen($aImapCredentials['ProxyAuthUser']) && 0 < \strlen($aImapCredentials['ProxyAuthPassword'])) { $oMailClient->Login($aImapCredentials['ProxyAuthUser'], $aImapCredentials['ProxyAuthPassword'], $aImapCredentials['Login'], $aImapCredentials['UseAuthPlainIfSupported']); } else { $oMailClient->Login($aImapCredentials['Login'], $aImapCredentials['Password'], '', $aImapCredentials['UseAuthPlainIfSupported']); } $bLogin = true; } $oPlugins->RunHook('event.imap-post-login', array($this, $aImapCredentials['UseAuth'], $bLogin, $aImapCredentials)); return $bLogin; }