This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/AuthHandler.php

263 lines
5.5 KiB
PHP
Raw Normal View History

2011-01-07 02:50:53 +00:00
<?php
/*
2011-01-07 02:53:49 +00:00
* This file is part of SwiftMailer.
* (c) 2004-2009 Chris Corbyn
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
2011-01-07 02:50:53 +00:00
*/
//@require 'Swift/TransportException.php';
//@require 'Swift/Transport/EsmtpHandler.php';
//@require 'Swift/Transport/SmtpAgent.php';
/**
* An ESMTP handler for AUTH support.
* @package Swift
* @subpackage Transport
* @author Chris Corbyn
*/
class Swift_Transport_Esmtp_AuthHandler implements Swift_Transport_EsmtpHandler
{
/**
* Authenticators available to process the request.
* @var Swift_Transport_Esmtp_Authenticator[]
* @access private
*/
private $_authenticators = array();
/**
* The username for authentication.
* @var string
* @access private
*/
private $_username;
/**
* The password for authentication.
* @var string
* @access private
*/
private $_password;
2011-01-07 02:53:49 +00:00
/**
* The auth mode for authentication.
* @var string
* @access private
*/
private $_auth_mode;
2011-01-07 02:50:53 +00:00
/**
* The ESMTP AUTH parameters available.
* @var string[]
* @access private
*/
private $_esmtpParams = array();
/**
* Create a new AuthHandler with $authenticators for support.
* @param Swift_Transport_Esmtp_Authenticator[] $authenticators
*/
public function __construct(array $authenticators)
{
$this->setAuthenticators($authenticators);
}
/**
* Set the Authenticators which can process a login request.
* @param Swift_Transport_Esmtp_Authenticator[] $authenticators
*/
public function setAuthenticators(array $authenticators)
{
$this->_authenticators = $authenticators;
}
/**
* Get the Authenticators which can process a login request.
* @return Swift_Transport_Esmtp_Authenticator[]
*/
public function getAuthenticators()
{
return $this->_authenticators;
}
/**
* Set the username to authenticate with.
* @param string $username
*/
public function setUsername($username)
{
$this->_username = $username;
}
/**
* Get the username to authenticate with.
* @return string
*/
public function getUsername()
{
return $this->_username;
}
/**
* Set the password to authenticate with.
* @param string $password
*/
public function setPassword($password)
{
$this->_password = $password;
}
/**
* Get the password to authenticate with.
* @return string
*/
public function getPassword()
{
return $this->_password;
}
2011-01-07 02:53:49 +00:00
/**
* Set the auth mode to use to authenticate.
* @param string $mode
*/
public function setAuthMode($mode)
{
$this->_auth_mode = $mode;
}
/**
* Get the auth mode to use to authenticate.
* @return string
*/
public function getAuthMode()
{
return $this->_auth_mode;
}
2011-01-07 02:50:53 +00:00
/**
* Get the name of the ESMTP extension this handles.
* @return boolean
*/
public function getHandledKeyword()
{
return 'AUTH';
}
/**
* Set the parameters which the EHLO greeting indicated.
* @param string[] $parameters
*/
public function setKeywordParams(array $parameters)
{
$this->_esmtpParams = $parameters;
}
/**
* Runs immediately after a EHLO has been issued.
* @param Swift_Transport_SmtpAgent $agent to read/write
*/
public function afterEhlo(Swift_Transport_SmtpAgent $agent)
{
if ($this->_username)
{
$count = 0;
2011-01-07 02:53:49 +00:00
foreach ($this->_getAuthenticatorsForAgent() as $authenticator)
2011-01-07 02:50:53 +00:00
{
if (in_array(strtolower($authenticator->getAuthKeyword()),
array_map('strtolower', $this->_esmtpParams)))
{
$count++;
if ($authenticator->authenticate($agent, $this->_username, $this->_password))
{
return;
}
}
}
throw new Swift_TransportException(
'Failed to authenticate on SMTP server with username "' .
$this->_username . '" using ' . $count . ' possible authenticators'
);
}
}
/**
* Not used.
*/
public function getMailParams()
{
return array();
}
/**
* Not used.
*/
public function getRcptParams()
{
return array();
}
/**
* Not used.
*/
public function onCommand(Swift_Transport_SmtpAgent $agent,
$command, $codes = array(), &$failedRecipients = null, &$stop = false)
{
}
/**
* Returns +1, -1 or 0 according to the rules for usort().
* This method is called to ensure extensions can be execute in an appropriate order.
* @param string $esmtpKeyword to compare with
* @return int
*/
public function getPriorityOver($esmtpKeyword)
{
return 0;
}
/**
* Returns an array of method names which are exposed to the Esmtp class.
* @return string[]
*/
public function exposeMixinMethods()
{
2011-01-07 02:53:49 +00:00
return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode');
2011-01-07 02:50:53 +00:00
}
/**
* Not used.
*/
public function resetState()
{
}
2011-01-07 02:53:49 +00:00
// -- Protected methods
/**
* Returns the authenticator list for the given agent.
* @param Swift_Transport_SmtpAgent $agent
* @return array
* @access protected
*/
protected function _getAuthenticatorsForAgent()
{
if (!$mode = strtolower($this->_auth_mode))
{
return $this->_authenticators;
}
foreach ($this->_authenticators as $authenticator)
{
if (strtolower($authenticator->getAuthKeyword()) == $mode)
{
return array($authenticator);
}
}
throw new Swift_TransportException('Auth mode '.$mode.' is invalid');
}
2011-01-07 02:50:53 +00:00
}