central function for LDAP connect
This commit is contained in:
parent
4f3eb2f7bb
commit
b227a55a2b
|
@ -629,6 +629,30 @@ function escapeDN($dn) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connects to an LDAP server using the given URL.
|
||||||
|
*
|
||||||
|
* @param string $serverURL URL
|
||||||
|
*/
|
||||||
|
function connectToLDAP($serverURL, $startTLS) {
|
||||||
|
$server = ldap_connect($serverURL);
|
||||||
|
if (!$server) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// use LDAPv3
|
||||||
|
ldap_set_option($server, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||||
|
// start TLS if possible
|
||||||
|
if ($startTLS) {
|
||||||
|
ldap_start_tls($server);
|
||||||
|
if (ldap_errno($server) != 0) {
|
||||||
|
ldap_close($server);
|
||||||
|
logNewMessage(LOG_ERR, 'Unable to start TLS encryption. Please check if your server certificate is valid and if the LDAP server supports TLS at all.');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $server;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This will search the given LDAP suffix for all entries which have the given attribute.
|
* This will search the given LDAP suffix for all entries which have the given attribute.
|
||||||
*
|
*
|
||||||
|
|
|
@ -95,22 +95,13 @@ class Ldap{
|
||||||
}
|
}
|
||||||
// save password und username encrypted
|
// save password und username encrypted
|
||||||
$this->encrypt_login($user, $passwd);
|
$this->encrypt_login($user, $passwd);
|
||||||
$this->server = @ldap_connect($this->conf->get_ServerURL());
|
$startTLS = $this->conf->getUseTLS();
|
||||||
if ($this->server) {
|
$startTLS = ($startTLS === 'yes');
|
||||||
// use LDAPv3
|
$this->server = connectToLDAP($this->conf->get_ServerURL(), $startTLS);
|
||||||
ldap_set_option($this->server, LDAP_OPT_PROTOCOL_VERSION, 3);
|
if ($this->server != null) {
|
||||||
// referral following
|
// referral following
|
||||||
$followReferrals = ($this->conf->getFollowReferrals() === 'true') ? 1 : 0;
|
$followReferrals = ($this->conf->getFollowReferrals() === 'true') ? 1 : 0;
|
||||||
ldap_set_option($this->server,LDAP_OPT_REFERRALS, $followReferrals);
|
ldap_set_option($this->server,LDAP_OPT_REFERRALS, $followReferrals);
|
||||||
// start TLS if specified
|
|
||||||
$useTLS = $this->conf->getUseTLS();
|
|
||||||
if (isset($useTLS) && ($useTLS == "yes")) {
|
|
||||||
@ldap_start_tls($this->server);
|
|
||||||
if (ldap_errno($this->server) != 0) {
|
|
||||||
logNewMessage(LOG_ERR, 'Unable to start TLS encryption. Please check if your server certificate is valid and if the LDAP server supports TLS at all.');
|
|
||||||
return ldap_errno($this->server);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$bind = @ldap_bind($this->server, $user, $passwd);
|
$bind = @ldap_bind($this->server, $user, $passwd);
|
||||||
if ($bind) {
|
if ($bind) {
|
||||||
$return = ldap_errno($this->server);
|
$return = ldap_errno($this->server);
|
||||||
|
|
Loading…
Reference in New Issue