Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3088:441759ac4f6a HEAD
Support variables in LDAP base setting.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 11 Jan 2005 02:13:46 +0200 |
parents | 769e2e2bf1d5 |
children | a171aa34f0e8 |
files | doc/dovecot-ldap.conf src/auth/passdb-ldap.c src/auth/userdb-ldap.c |
diffstat | 3 files changed, 21 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/dovecot-ldap.conf Tue Jan 11 01:44:40 2005 +0200 +++ b/doc/dovecot-ldap.conf Tue Jan 11 02:13:46 2005 +0200 @@ -21,7 +21,7 @@ # LDAP protocol version to use. Likely 2 or 3. #ldap_version = 2 -# LDAP base +# LDAP base. %variables can be used here. base = uid=someone, dc=foo, dc=bar, dc=org # Dereference: never, searching, finding, always
--- a/src/auth/passdb-ldap.c Tue Jan 11 01:44:40 2005 +0200 +++ b/src/auth/passdb-ldap.c Tue Jan 11 02:13:46 2005 +0200 @@ -152,19 +152,23 @@ struct ldap_request *ldap_request) { struct ldap_connection *conn = passdb_ldap_conn->conn; + const struct var_expand_table *vars; const char **attr_names = (const char **)passdb_ldap_conn->attr_names; - const char *filter; + const char *filter, *base; string_t *str; + vars = auth_request_get_var_expand_table(auth_request, ldap_escape); + + str = t_str_new(512); + var_expand(str, conn->set.base, vars); + base = t_strdup(str_c(str)); + if (conn->set.pass_filter == NULL) { filter = t_strdup_printf("(&(objectClass=posixAccount)(%s=%s))", attr_names[ATTR_VIRTUAL_USER], ldap_escape(auth_request->user)); } else { - str = t_str_new(512); - var_expand(str, conn->set.pass_filter, - auth_request_get_var_expand_table(auth_request, - ldap_escape)); + var_expand(str, conn->set.pass_filter, vars); filter = str_c(str); } @@ -177,7 +181,7 @@ conn->set.base, conn->set.scope, filter, t_strarray_join(attr_names, ",")); - db_ldap_search(conn, conn->set.base, conn->set.ldap_scope, + db_ldap_search(conn, base, conn->set.ldap_scope, filter, passdb_ldap_conn->attr_names, ldap_request); }
--- a/src/auth/userdb-ldap.c Tue Jan 11 01:44:40 2005 +0200 +++ b/src/auth/userdb-ldap.c Tue Jan 11 02:13:46 2005 +0200 @@ -164,20 +164,24 @@ userdb_callback_t *callback, void *context) { struct ldap_connection *conn = userdb_ldap_conn->conn; + const struct var_expand_table *vars; const char **attr_names = (const char **)userdb_ldap_conn->attr_names; struct userdb_ldap_request *request; - const char *filter; + const char *filter, *base; string_t *str; + vars = auth_request_get_var_expand_table(auth_request, ldap_escape); + + str = t_str_new(512); + var_expand(str, conn->set.base, vars); + base = t_strdup(str_c(str)); + if (conn->set.user_filter == NULL) { filter = t_strdup_printf("(&(objectClass=posixAccount)(%s=%s))", attr_names[ATTR_VIRTUAL_USER], ldap_escape(auth_request->user)); } else { - str = t_str_new(512); - var_expand(str, conn->set.user_filter, - auth_request_get_var_expand_table(auth_request, - ldap_escape)); + var_expand(str, conn->set.user_filter, vars); filter = str_c(str); } @@ -192,7 +196,7 @@ conn->set.base, conn->set.scope, filter, t_strarray_join(attr_names, ",")); - db_ldap_search(conn, conn->set.base, conn->set.ldap_scope, + db_ldap_search(conn, base, conn->set.ldap_scope, filter, userdb_ldap_conn->attr_names, &request->request); }