diff options
Diffstat (limited to 'Postman/Postman-Mail/PostmanZendMailTransportConfigurationFactory.php')
-rw-r--r-- | Postman/Postman-Mail/PostmanZendMailTransportConfigurationFactory.php | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/Postman/Postman-Mail/PostmanZendMailTransportConfigurationFactory.php b/Postman/Postman-Mail/PostmanZendMailTransportConfigurationFactory.php deleted file mode 100644 index 23fdc41..0000000 --- a/Postman/Postman-Mail/PostmanZendMailTransportConfigurationFactory.php +++ /dev/null @@ -1,133 +0,0 @@ -<?php -if ( ! defined( 'ABSPATH' ) ) { - exit; // Exit if accessed directly -} - -if (! interface_exists ( 'PostmanZendMailTransportConfigurationFactory' )) { - interface PostmanZendMailTransportConfigurationFactory { - static function createConfig(PostmanTransport $transport); - } -} - -if (! class_exists ( 'PostmanBasicAuthConfigurationFactory' )) { - class PostmanBasicAuthConfigurationFactory implements PostmanZendMailTransportConfigurationFactory { - public static function createConfig(PostmanTransport $transport) { - - // create Logger - $logger = new PostmanLogger ( "PostmanBasicAuthConfigurationFactory" ); - - // retrieve the hostname and port form the transport - $hostname = $transport->getHostname (); - $port = $transport->getPort (); - $securityType = $transport->getSecurityType (); - $authType = $transport->getAuthenticationType (); - $username = $transport->getCredentialsId (); - $password = $transport->getCredentialsSecret (); - - // create the Configuration structure for Zend_Mail - $config = array ( - 'port' => $port - ); - $logger->debug ( sprintf ( 'Using %s:%s ', $hostname, $port ) ); - if ($securityType != PostmanOptions::SECURITY_TYPE_NONE) { - $config ['ssl'] = $securityType; - $logger->debug ( 'Using encryption ' . $securityType ); - } else { - $logger->debug ( 'Using no encryption' ); - } - if ($authType != PostmanOptions::AUTHENTICATION_TYPE_NONE) { - $config ['auth'] = $authType; - $config ['username'] = $username; - $config ['password'] = $password; - $logger->debug ( sprintf ( 'Using auth %s with username %s and password %s', $authType, $username, PostmanUtils::obfuscatePassword ( $password ) ) ); - } else { - $logger->debug ( 'Using no authentication' ); - } - - // return the Configuration structure - return $config; - } - } -} - -if (! class_exists ( 'PostmanOAuth2ConfigurationFactory' )) { - class PostmanOAuth2ConfigurationFactory implements PostmanZendMailTransportConfigurationFactory { - public static function createConfig(PostmanTransport $transport) { - - // create Logger - $logger = new PostmanLogger ( 'PostmanOAuth2ConfigurationFactory' ); - - // retrieve the hostname and port form the transport - $hostname = $transport->getHostname (); - $port = $transport->getPort (); - - // the sender email is needed for the OAuth2 Bearer token - $senderEmail = PostmanOptions::getInstance ()->getEnvelopeSender (); - assert ( ! empty ( $senderEmail ) ); - - // the vendor is required for Yahoo's OAuth2 implementation - $vendor = self::createVendorString ( $hostname ); - - // create the OAuth2 SMTP Authentication string - $initClientRequestEncoded = self::createAuthenticationString ( $senderEmail, PostmanOAuthToken::getInstance ()->getAccessToken (), $vendor ); - - // create the Configuration structure for Zend_Mail - $config = self::createConfiguration ( $logger, $hostname, $port, $transport->getSecurityType (), $transport->getAuthenticationType (), $initClientRequestEncoded ); - - // return the Configuration structure - return $config; - } - - /** - * - * Create the Configuration structure for Zend_Mail - * - * @param mixed $hostname - * @param mixed $port - * @param mixed $securityType - * @param mixed $authenticationType - * @param mixed $initClientRequestEncoded - * @return multitype:unknown NULL - */ - private static function createConfiguration($logger, $hostname, $port, $securityType, $authenticationType, $initClientRequestEncoded) { - $config = array ( - 'ssl' => $securityType, - 'port' => $port, - 'auth' => $authenticationType, - 'xoauth2_request' => $initClientRequestEncoded - ); - $logger->debug ( sprintf ( 'Using auth %s with encryption %s to %s:%s ', $config ['auth'], $config ['ssl'], $hostname, $config ['port'] ) ); - return $config; - } - - /** - * Create the vendor string (for Yahoo servers only) - * - * @param mixed $hostname - * @return string - */ - private static function createVendorString($hostname) { - // the vendor is required for Yahoo's OAuth2 implementation - $vendor = ''; - if (PostmanUtils::endsWith ( $hostname, 'yahoo.com' )) { - // Yahoo Mail requires a Vendor - see http://imapclient.freshfoo.com/changeset/535%3A80ae438f4e4a/ - $pluginData = apply_filters ( 'postman_get_plugin_metadata', null ); - $vendor = sprintf ( "vendor=Postman SMTP %s\1", $pluginData ['version'] ); - } - return $vendor; - } - - /** - * Create the standard OAuth2 SMTP Authentication string - * - * @param mixed $senderEmail - * @param mixed $oauth2AccessToken - * @param mixed $vendor - * @return string - */ - private static function createAuthenticationString($senderEmail, $oauth2AccessToken, $vendor) { - $initClientRequestEncoded = base64_encode ( sprintf ( "user=%s\1auth=Bearer %s\1%s\1", $senderEmail, $oauth2AccessToken, $vendor ) ); - return $initClientRequestEncoded; - } - } -} |