125 lines
2.8 KiB
PHP
125 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* IMAPAuth class
|
|
* @version 08-11-2005
|
|
* @Author Samuel Tran
|
|
* @package IMAPAuth
|
|
*
|
|
* Copyright (C) 2005 - 2007 MailZu
|
|
* License: GPL, see LICENSE
|
|
*/
|
|
/**
|
|
* Base directory of application
|
|
*/
|
|
@define('BASE_DIR', dirname(__FILE__) . '/..');
|
|
/**
|
|
* CmnFns class
|
|
*/
|
|
include_once('lib/CmnFns.class.php');
|
|
|
|
/**
|
|
* Provide all database access/manipulation functionality for IMAP Auth
|
|
*/
|
|
class IMAPAuth {
|
|
|
|
// The IMAP hosts with port (hostname[:port])
|
|
var $imapHosts;
|
|
// IMAP authentication type
|
|
var $imapType;
|
|
|
|
// Username
|
|
var $imapUsername;
|
|
|
|
var $err_msg = '';
|
|
|
|
/**
|
|
* Constructor to initialize object
|
|
* @param none
|
|
*/
|
|
function IMAPAuth() {
|
|
global $conf;
|
|
|
|
$this->imapHosts = $conf['auth']['imap_hosts'];
|
|
$this->imapType = $conf['auth']['imap_type'];
|
|
$this->imapDomainName = $conf['auth']['imap_domain_name'];
|
|
}
|
|
|
|
// User methods -------------------------------------------
|
|
|
|
/**
|
|
* Authenticates user
|
|
* @param string $username
|
|
* @param string $password
|
|
* @return boolean
|
|
*/
|
|
|
|
function authUser ($username, $password) {
|
|
// Returns true if the username and password work
|
|
// and false if they are wrong or don't exist.
|
|
|
|
$this->imapUsername = $username;
|
|
|
|
foreach ($this->imapHosts as $host) { // Try each host in turn
|
|
|
|
$host = trim($host);
|
|
|
|
switch ($this->imapType) {
|
|
case "imapssl":
|
|
$host = '{'.$host."/imap/ssl}INBOX";
|
|
break;
|
|
|
|
case "imapcert":
|
|
$host = '{'.$host."/imap/ssl/novalidate-cert}INBOX";
|
|
break;
|
|
|
|
case "imaptls":
|
|
$host = '{'.$host."/imap/notls}INBOX";
|
|
break;
|
|
|
|
default:
|
|
$host = '{'.$host.'}INBOX';
|
|
}
|
|
|
|
//error_reporting(0);
|
|
$connection = imap_open($host, $username, $password, OP_HALFOPEN);
|
|
|
|
if ($connection) {
|
|
imap_close($connection);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
$this->err_msg = translate('IMAP Authentication: no match');
|
|
return false; // No match
|
|
}
|
|
|
|
/**
|
|
* Returns the last error message
|
|
* @param none
|
|
* @return last error message generated
|
|
*/
|
|
function get_err() {
|
|
return $this->err_msg;
|
|
}
|
|
|
|
// Helper methods -------------------------------------------
|
|
|
|
/**
|
|
* Returns user information
|
|
* @return array containing user information
|
|
*/
|
|
function getUserData() {
|
|
$return = array(
|
|
'logonName' => $this->imapUsername,
|
|
'firstName' => $this->imapUsername,
|
|
'emailAddress' => array( $this->imapUsername.
|
|
( empty($this->imapDomainName) ? '' :
|
|
'@'. $this->imapDomainName )
|
|
)
|
|
);
|
|
return $return;
|
|
}
|
|
|
|
}
|
|
?>
|