* @package Turba */ class Turba_Test extends Horde_Test { /** * The module list * * @var array */ protected $_moduleList = array(); /** * PHP settings list. * * @var array */ protected $_settingsList = array(); /** * PEAR modules list. * * @var array */ protected $_pearList = array(); /** * Inter-Horde application dependencies. * * @var array */ protected $_appList = array(); /** */ public function __construct() { parent::__construct(); $this->_fileList += array( 'config/attributes.php' => null, 'config/backends.php' => null, 'config/mime_drivers.php' => null, 'config/prefs.php' => null ); } /** * Any application specific tests that need to be done. * * @return string HTML output. */ public function appTests() { $ret = '

LDAP Support Test

'; $params = array( 'server' => Horde_Util::getPost('server'), 'port' => Horde_Util::getPost('port', 389), 'basedn' => Horde_Util::getPost('basedn'), 'user' => Horde_Util::getPost('user'), 'passwd' => Horde_Util::getPost('passwd'), 'filter' => Horde_Util::getPost('filter'), 'proto' => Horde_Util::getPost('proto') ); if (!empty($params['server']) && !empty($params['basedn']) && !empty($params['filter'])) { $ret .= $this->_doConnectionTest($params); } $self_url = Horde::selfUrl()->add('app', 'turba'); Horde::startBuffer(); require TURBA_TEMPLATES . '/test/ldapserver.inc'; return $ret . Horde::endBuffer(); } /** * Perform LDAP server support test. * * @param array $params Connection parameters. * * @return string HTML output. */ protected function _doConnectionTest($params) { $ret .= 'server="' . htmlspecialchars($params['server']) . '" ' . 'basedn="' . htmlspecialchars($params['basedn']) . '" ' . 'filter="' . htmlspecialchars($params['filter']) . '"
'; if (!empty($params['user'])) { $ret .= 'bind as user="' . htmlspecialchars($params['user']) . '"
'; } else { $ret .= 'bind anonymously
'; } $ldap = ldap_connect($params['server'], $params['port']); if ($ldap) { if (!empty($params['proto']) && ($params['proto'] == '3')) { ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); } if (!empty($params['user']) && !ldap_bind($ldap, $params['user'], $params['passwd'])) { $ret .= '

unable to bind as ' . htmlspecialchars($params['user']) . ' to LDAP server

'; ldap_close($ldap); $ldap = ''; } elseif (empty($params['user']) && !ldap_bind($ldap)) { $ret .= "

unable to bind anonymously to LDAP server

\n"; ldap_close($ldap); $ldap = ''; } if ($ldap) { $result = ldap_search($ldap, $params['basedn'], $params['filter']); if ($result) { $ret .= '

search returned ' . ldap_count_entries($ldap, $result) . " entries

\n"; $info = ldap_get_entries($ldap, $result); for ($i = 0; $i < $info['count']; ++$i) { $ret .= '

dn is: ' . $info[$i]['dn'] . '
' . 'first cn entry is: ' . $info[$i]['cn'][0] . '
' . 'first mail entry is: ' . $info[$i]['mail'][0] . '

'; if ($i >= 10) { $ret .= '

(only first 10 entries displayed)

'; break; } } } else { $ret .= '

unable to search LDAP server

'; } } } else { $ret .= '

unable to connect to LDAP server

'; } return $ret; } }