Forking from Mailzu 0.8RC3
This commit is contained in:
124
lib/IMAPAuth.class.php
Normal file
124
lib/IMAPAuth.class.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?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('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;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user