From 553ba6310be04656ee304f6ae64f15304bc3ff73 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Mon, 4 Nov 2013 22:28:15 +0100 Subject: [PATCH] LDAP: experimental implementation using ldap_initialize; activade with CFLAGS= -D LDAP_INITIALIZE ; most probably the config setting LDAP-ServerIP changes its meaning then. --- citadel/ldap.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/citadel/ldap.c b/citadel/ldap.c index a6f3db3c2..864ab4807 100644 --- a/citadel/ldap.c +++ b/citadel/ldap.c @@ -42,6 +42,7 @@ int CtdlTryUserLDAP(char *username, char **values; char *user_dn = NULL; +#ifndef LDAP_INITIALIZE if (fullname) safestrncpy(fullname, username, fullname_size); ldserver = ldap_init(config.c_ldap_host, config.c_ldap_port); @@ -67,6 +68,31 @@ int CtdlTryUserLDAP(char *username, syslog(LOG_ALERT, "LDAP: Cannot bind: %s (%d)\n", ldap_err2string(i), i); return(i); } +#else + if (ldap_initialize(&ldserver, config.c_ldap_host)) + { + syslog(LOG_ALERT, "LDAP: Could not connect to %s:%d : %s\n", + config.c_ldap_host, config.c_ldap_port, + strerror(errno) + ); + return(errno); + } + + striplt(config.c_ldap_bind_dn); + striplt(config.c_ldap_bind_pw); + + syslog(LOG_DEBUG, "LDAP bind DN: %s\n", config.c_ldap_bind_dn); + i = ldap_simple_bind_s(ldserver, + (!IsEmptyStr(config.c_ldap_bind_dn) ? config.c_ldap_bind_dn : NULL), + (!IsEmptyStr(config.c_ldap_bind_pw) ? config.c_ldap_bind_pw : NULL) + ); + + if (i != LDAP_SUCCESS) { + syslog(LOG_ALERT, "LDAP: Cannot bind: %s (%d)\n", ldap_err2string(i), i); + return(i); + } +#endif + tv.tv_sec = 10; tv.tv_usec = 0; -- 2.30.2