LDAP: check if php-ldap is installed. If not, give an error output. FIX: blank Users page when the module is not installed.

This commit is contained in:
Arthur Schiwon 2012-07-25 18:21:16 +02:00
parent 9b0870bb91
commit 3c9919e475
1 changed files with 20 additions and 0 deletions

View File

@ -440,6 +440,10 @@ class OC_LDAP {
*/
static public function readAttribute($dn, $attr) {
$cr = self::getConnectionResource();
if(!is_resource($cr)) {
//LDAP not available
return false;
}
$rr = ldap_read($cr, $dn, 'objectClass=*', array($attr));
$er = ldap_first_entry($cr, $rr);
//LDAP attributes are not case sensitive
@ -495,6 +499,11 @@ class OC_LDAP {
if(!is_null($attr) && !is_array($attr)) {
$attr = array(strtolower($attr));
}
$cr = self::getConnectionResource();
if(!is_resource($cr)) {
//LDAP not available
return array();
}
$sr = @ldap_search(self::getConnectionResource(), $base, $filter, $attr);
$findings = @ldap_get_entries(self::getConnectionResource(), $sr );
// if we're here, probably no connection ressource is returned.
@ -686,11 +695,22 @@ class OC_LDAP {
* Connects and Binds to LDAP
*/
static private function establishConnection() {
static $phpLDAPinstalled = true;
if(!$phpLDAPinstalled) {
return false;
}
if(!self::$configured) {
OCP\Util::writeLog('ldap', 'Configuration is invalid, cannot connect', OCP\Util::INFO);
return false;
}
if(!self::$ldapConnectionRes) {
//check if php-ldap is installed
if(!function_exists('ldap_connect')) {
$phpLDAPinstalled = false;
OCP\Util::writeLog('user_ldap', 'function ldap_connect is not available. Make sure that the PHP ldap module is installed.', OCP\Util::ERROR);
return false;
}
self::$ldapConnectionRes = ldap_connect(self::$ldapHost, self::$ldapPort);
if(ldap_set_option(self::$ldapConnectionRes, LDAP_OPT_PROTOCOL_VERSION, 3)) {
if(ldap_set_option(self::$ldapConnectionRes, LDAP_OPT_REFERRALS, 0)) {