Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3502:5e78500f1aee HEAD
user_global_uid and user_global_gid settings weren't working. Also changed
them to now allow named user/group.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 22 Jul 2005 14:32:57 +0300 |
parents | 51ffafcee2b8 |
children | c727a35c9602 |
files | src/auth/db-ldap.c src/auth/db-ldap.h src/auth/userdb-ldap.c |
diffstat | 3 files changed, 51 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/db-ldap.c Fri Jul 22 14:18:55 2005 +0300 +++ b/src/auth/db-ldap.c Fri Jul 22 14:32:57 2005 +0300 @@ -9,6 +9,7 @@ #include "hash.h" #include "str.h" #include "settings.h" +#include "userdb.h" #include "db-ldap.h" #include <stddef.h> @@ -41,8 +42,8 @@ DEF(SET_STR, pass_attrs), DEF(SET_STR, pass_filter), DEF(SET_STR, default_pass_scheme), - DEF(SET_INT, user_global_uid), - DEF(SET_INT, user_global_gid) + DEF(SET_STR, user_global_uid), + DEF(SET_STR, user_global_gid) }; struct ldap_settings default_ldap_settings = { @@ -59,8 +60,8 @@ MEMBER(pass_attrs) "uid,userPassword", MEMBER(pass_filter) "(&(objectClass=posixAccount)(uid=%u))", MEMBER(default_pass_scheme) "crypt", - MEMBER(user_global_uid) (uid_t)-1, - MEMBER(user_global_gid) (gid_t)-1 + MEMBER(user_global_uid) "", + MEMBER(user_global_gid) "" }; static struct ldap_connection *ldap_connections = NULL; @@ -381,7 +382,29 @@ i_fatal("LDAP: No base given"); conn->set.ldap_deref = deref2str(conn->set.deref); - conn->set.ldap_scope = scope2str(conn->set.scope); + conn->set.ldap_scope = scope2str(conn->set.scope); + + if (*conn->set.user_global_uid == '\0') + conn->set.uid = (uid_t)-1; + else { + conn->set.uid = + userdb_parse_uid(NULL, conn->set.user_global_uid); + if (conn->set.uid == (uid_t)-1) { + i_fatal("LDAP: Invalid user_global_uid: %s", + conn->set.user_global_uid); + } + } + + if (*conn->set.user_global_gid == '\0') + conn->set.gid = (gid_t)-1; + else { + conn->set.gid = + userdb_parse_gid(NULL, conn->set.user_global_gid); + if (conn->set.gid == (gid_t)-1) { + i_fatal("LDAP: Invalid user_global_gid: %s", + conn->set.user_global_gid); + } + } conn->next = ldap_connections; ldap_connections = conn;
--- a/src/auth/db-ldap.h Fri Jul 22 14:18:55 2005 +0300 +++ b/src/auth/db-ldap.h Fri Jul 22 14:32:57 2005 +0300 @@ -26,10 +26,12 @@ const char *pass_filter; const char *default_pass_scheme; - unsigned int user_global_uid; - unsigned int user_global_gid; + const char *user_global_uid; + const char *user_global_gid; int ldap_deref, ldap_scope; + uid_t uid; + gid_t gid; }; struct ldap_connection {
--- a/src/auth/userdb-ldap.c Fri Jul 22 14:18:55 2005 +0300 +++ b/src/auth/userdb-ldap.c Fri Jul 22 14:32:57 2005 +0300 @@ -109,14 +109,27 @@ } if (!seen_uid) { - auth_request_log_error(auth_request, "ldap", - "uid not in user_attrs and no default given in " - "user_global_uid"); + } + + if (!seen_uid) { + if (conn->set.uid == (uid_t)-1) { + auth_request_log_error(auth_request, "ldap", + "uid not in user_attrs and no default given in " + "user_global_uid"); + } + + str_append(str, "\tuid="); + str_append(str, dec2str(conn->set.uid)); } if (!seen_gid) { - auth_request_log_error(auth_request, "ldap", - "gid not in user_attrs and no default given in " - "user_global_gid"); + if (conn->set.gid == (gid_t)-1) { + auth_request_log_error(auth_request, "ldap", + "gid not in user_attrs and no default given in " + "user_global_gid"); + } + + str_append(str, "\tgid="); + str_append(str, dec2str(conn->set.gid)); } return str_c(str);