On Sat, Feb 22, 2003 at 11:40:24AM +0200, Kostas Kalevras wrote:
> Where's the patch?
Heh. Sure enough, I forgot to attach the patch. It's attached this time,
I swear! :)
--
Derrik Pates
[EMAIL PROTECTED]
[EMAIL PROTECTED]
--- /root/radiusd/src/modules/rlm_ldap/rlm_ldap.c Fri Jan 24 08:35:30 2003
+++ radiusd/src/modules/rlm_ldap/rlm_ldap.c Fri Feb 21 20:19:28 2003
@@ -186,6 +186,9 @@
typedef struct {
char *server;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+ char *server_uri;
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
int port;
int timelimit;
struct timeval net_timeout;
@@ -223,6 +226,9 @@
static CONF_PARSER module_config[] = {
{"server", PW_TYPE_STRING_PTR, offsetof(ldap_instance,server), NULL,
"localhost"},
{"port", PW_TYPE_INTEGER, offsetof(ldap_instance,port), NULL, "389"},
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+ {"server_uri", PW_TYPE_STRING_PTR, offsetof(ldap_instance,server_uri), NULL,
NULL},
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
/* wait forever on network activity */
{"net_timeout", PW_TYPE_INTEGER, offsetof(ldap_instance,net_timeout.tv_sec),
NULL, "10"},
/* wait forever for search results */
@@ -320,11 +326,17 @@
return -1;
}
- if (inst->server == NULL) {
- radlog(L_ERR, "rlm_ldap: missing 'server' directive.");
- free(inst);
- return -1;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+ if (inst->server_uri == NULL) {
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
+ if (inst->server == NULL) {
+ radlog(L_ERR, "rlm_ldap: missing 'server' directive.");
+ free(inst);
+ return -1;
+ }
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
}
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
inst->timeout.tv_usec = 0;
inst->net_timeout.tv_usec = 0;
@@ -1352,12 +1364,26 @@
int ldap_errno = 0;
LDAPMessage *res;
- DEBUG("rlm_ldap: (re)connect to %s:%d, authentication %d", inst->server,
inst->port, auth);
- if ((ld = ldap_init(inst->server, inst->port)) == NULL) {
- radlog(L_ERR, "rlm_ldap: ldap_init() failed");
- *result = RLM_MODULE_FAIL;
- return (NULL);
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
+ if (inst->server_uri) {
+ DEBUG("rlm_ldap: (re)connect to %s, authentication %d",
inst->server_uri, auth);
+ if (ldap_initialize(&ld, inst->server_uri) != LDAP_SUCCESS) {
+ radlog(L_ERR, "rlm_ldap: ldap_initialize() failed");
+ *result = RLM_MODULE_FAIL;
+ return (NULL);
+ }
+ }
+ else {
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
+ DEBUG("rlm_ldap: (re)connect to %s:%d, authentication %d",
inst->server, inst->port, auth);
+ if ((ld = ldap_init(inst->server, inst->port)) == NULL) {
+ radlog(L_ERR, "rlm_ldap: ldap_init() failed");
+ *result = RLM_MODULE_FAIL;
+ return (NULL);
+ }
+#ifdef LDAP_API_FEATURE_X_OPENLDAP
}
+#endif /* LDAP_API_FEATURE_X_OPENLDAP */
if (ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, (void *)
&(inst->net_timeout)) != LDAP_OPT_SUCCESS) {
radlog(L_ERR, "rlm_ldap: Could not set LDAP_OPT_NETWORK_TIMEOUT
%ld.%ld", inst->net_timeout.tv_sec, inst->net_timeout.tv_usec);
}