diff options
Diffstat (limited to 'includes/pear/Auth/Container/KADM5.php')
| -rw-r--r-- | includes/pear/Auth/Container/KADM5.php | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/includes/pear/Auth/Container/KADM5.php b/includes/pear/Auth/Container/KADM5.php new file mode 100644 index 0000000..2853580 --- /dev/null +++ b/includes/pear/Auth/Container/KADM5.php @@ -0,0 +1,171 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */ + +/** + * Storage driver for Authentication on a Kerberos V server. + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.01 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_01.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Authentication + * @package Auth + * @author Andrew Teixeira <ateixeira@gmail.com> + * @author Adam Ashley <aashley@php.net> + * @copyright 2001-2006 The PHP Group + * @license http://www.php.net/license/3_01.txt PHP License 3.01 + * @version CVS: $Id: KADM5.php 237449 2007-06-12 03:11:27Z aashley $ + * @link http://pear.php.net/package/Auth + * @since File available since Release 1.4.0 + */ + +/** + * Include Auth_Container base class + */ +require_once 'Auth/Container.php'; +/** + * Include PEAR for error handling + */ +require_once 'PEAR.php'; + +/** + * Storage driver for Authentication on a Kerberos V server. + * + * Available options: + * hostname: The hostname of the kerberos server + * realm: The Kerberos V realm + * timeout: The timeout for checking the server + * checkServer: Set to true to check if the server is running when + * constructing the object + * + * @category Authentication + * @package Auth + * @author Andrew Teixeira <ateixeira@gmail.com> + * @author Adam Ashley <aashley@php.net> + * @copyright 2001-2006 The PHP Group + * @license http://www.php.net/license/3_01.txt PHP License 3.01 + * @version Release: @package_version@ File: $Revision: 237449 $ + * @link http://pear.php.net/package/Auth + * @since Class available since Release 1.4.0 + */ +class Auth_Container_KADM5 extends Auth_Container { + + // {{{ properties + + /** + * Options for the class + * @var string + */ + var $options = array(); + + // }}} + // {{{ Auth_Container_KADM5() + + /** + * Constructor of the container class + * + * $options can have these keys: + * 'hostname' The hostname of the kerberos server + * 'realm' The Kerberos V realm + * 'timeout' The timeout for checking the server + * 'checkServer' Set to true to check if the server is running when + * constructing the object + * + * @param $options associative array + * @return object Returns an error object if something went wrong + */ + function Auth_Container_KADM5($options) { + if (!extension_loaded('kadm5')) { + return PEAR::raiseError("Cannot use Kerberos V authentication, KADM5 extension not loaded!", 41, PEAR_ERROR_DIE); + } + + $this->_setDefaults(); + + if (isset($options['hostname'])) { + $this->options['hostname'] = $options['hostname']; + } + if (isset($options['realm'])) { + $this->options['realm'] = $options['realm']; + } + if (isset($options['timeout'])) { + $this->options['timeout'] = $options['timeout']; + } + if (isset($options['checkServer'])) { + $this->options['checkServer'] = $options['checkServer']; + } + + if ($this->options['checkServer']) { + $this->_checkServer(); + } + } + + // }}} + // {{{ fetchData() + + /** + * Try to login to the KADM5 server + * + * @param string Username + * @param string Password + * @return boolean + */ + function fetchData($username, $password) { + $this->log('Auth_Container_KADM5::fetchData() called.', AUTH_LOG_DEBUG); + if ( ($username == NULL) || ($password == NULL) ) { + return false; + } + + $server = $this->options['hostname']; + $realm = $this->options['realm']; + $check = @kadm5_init_with_password($server, $realm, $username, $password); + + if ($check == false) { + return false; + } else { + return true; + } + } + + // }}} + // {{{ _setDefaults() + + /** + * Set some default options + * + * @access private + */ + function _setDefaults() { + $this->options['hostname'] = 'localhost'; + $this->options['realm'] = NULL; + $this->options['timeout'] = 10; + $this->options['checkServer'] = false; + } + + // }}} + // {{{ _checkServer() + + /** + * Check if the given server and port are reachable + * + * @access private + */ + function _checkServer() { + $fp = @fsockopen ($this->options['hostname'], 88, $errno, $errstr, $this->options['timeout']); + if (is_resource($fp)) { + @fclose($fp); + } else { + $message = "Error connecting to Kerberos V server " + .$this->options['hostname'].":".$this->options['port']; + return PEAR::raiseError($message, 41, PEAR_ERROR_DIE); + } + } + + // }}} + +} + +?> |
