annotate src/auth/userdb-ldap.c @ 9575:0a00dcc4f0ea HEAD

lib-storage: Allow shared namespace prefix to use %variable modifiers.
author Timo Sirainen <tss@iki.fi>
date Wed, 26 May 2010 17:07:51 +0100
parents 00cd9aacd03c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9532
00cd9aacd03c Updated copyright notices to include year 2010.
Timo Sirainen <tss@iki.fi>
parents: 9066
diff changeset
1 /* Copyright (c) 2003-2010 Dovecot authors, see the included COPYING file */
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
3474
9096b7957413 Removed direct config.h including. I'm not sure why it was done before,
Timo Sirainen <tss@iki.fi>
parents: 3306
diff changeset
3 #include "common.h"
8217
c47b78e843aa Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents: 7293
diff changeset
4 #include "userdb.h"
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
8872
643a96aec996 Fixed --with-ldap=plugin and --with-gssapi=plugin
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
6 #if defined(USERDB_LDAP) && (defined(BUILTIN_LDAP) || defined(PLUGIN_BUILD))
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
3158
8849f2e380d1 userdb can now return extra parameters to master. Removed special handling
Timo Sirainen <tss@iki.fi>
parents: 3101
diff changeset
8 #include "hash.h"
1135
81930fff13cf passdb ldap added. fixes to userdb ldap.
Timo Sirainen <tss@iki.fi>
parents: 1092
diff changeset
9 #include "str.h"
81930fff13cf passdb ldap added. fixes to userdb ldap.
Timo Sirainen <tss@iki.fi>
parents: 1092
diff changeset
10 #include "var-expand.h"
4955
f0cc5486696e Authentication cache caches now also userdb data. Code by Tommi Saviranta.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4880
diff changeset
11 #include "auth-cache.h"
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 #include "db-ldap.h"
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 #include <ldap.h>
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 #include <stdlib.h>
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
17 struct ldap_userdb_module {
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
18 struct userdb_module module;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
19
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
20 struct ldap_connection *conn;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 };
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 struct userdb_ldap_request {
7050
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
24 struct ldap_request_search request;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 userdb_callback_t *userdb_callback;
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 };
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27
5872
93bd157917ca Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents: 5856
diff changeset
28 static void
3158
8849f2e380d1 userdb can now return extra parameters to master. Removed special handling
Timo Sirainen <tss@iki.fi>
parents: 3101
diff changeset
29 ldap_query_get_result(struct ldap_connection *conn, LDAPMessage *entry,
8849f2e380d1 userdb can now return extra parameters to master. Removed special handling
Timo Sirainen <tss@iki.fi>
parents: 3101
diff changeset
30 struct auth_request *auth_request)
8849f2e380d1 userdb can now return extra parameters to master. Removed special handling
Timo Sirainen <tss@iki.fi>
parents: 3101
diff changeset
31 {
5884
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
32 struct db_ldap_result_iterate_context *ldap_iter;
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
33 const char *name, *const *values;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34
6144
d779b7220e23 LDAP crashfixes. Based on patch by Katsu Yamamoto.
Timo Sirainen <tss@iki.fi>
parents: 5884
diff changeset
35 auth_request_init_userdb_reply(auth_request);
d779b7220e23 LDAP crashfixes. Based on patch by Katsu Yamamoto.
Timo Sirainen <tss@iki.fi>
parents: 5884
diff changeset
36
5884
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
37 ldap_iter = db_ldap_result_iterate_init(conn, entry, auth_request,
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
38 conn->user_attr_map);
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
39 while (db_ldap_result_iterate_next_all(ldap_iter, &name, &values)) {
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
40 auth_request_set_userdb_field_values(auth_request,
1c1dee40e495 Moved generic LDAP result iteration to db_ldap. It also supports now
Timo Sirainen <tss@iki.fi>
parents: 5872
diff changeset
41 name, values);
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44
7050
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
45 static void userdb_ldap_lookup_callback(struct ldap_connection *conn,
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
46 struct ldap_request *request,
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
47 LDAPMessage *res)
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 {
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 struct userdb_ldap_request *urequest =
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 (struct userdb_ldap_request *) request;
7293
f78b83bf16b7 Don't crash if ldap userdb lookup fails.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
51 struct auth_request *auth_request =
f78b83bf16b7 Don't crash if ldap userdb lookup fails.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
52 urequest->request.request.auth_request;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 LDAPMessage *entry;
4880
4ec6a4def05b We treated internal userdb lookup errors as "user unknown" errors. In such
Timo Sirainen <tss@iki.fi>
parents: 4750
diff changeset
54 enum userdb_result result = USERDB_RESULT_INTERNAL_FAILURE;
1210
8e6addbf12b3 minor ldap fixes
Timo Sirainen <tss@iki.fi>
parents: 1191
diff changeset
55
5038
b2921478f94f Several fixes to handling deinitialization without crashing.
Timo Sirainen <tss@iki.fi>
parents: 4955
diff changeset
56 if (res != NULL) {
7050
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
57 entry = ldap_first_entry(conn->ld, res);
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
58 if (entry == NULL) {
4880
4ec6a4def05b We treated internal userdb lookup errors as "user unknown" errors. In such
Timo Sirainen <tss@iki.fi>
parents: 4750
diff changeset
59 result = USERDB_RESULT_USER_UNKNOWN;
7050
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
60 auth_request_log_info(auth_request, "ldap",
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
61 "Unknown user");
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
62 } else {
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
63 ldap_query_get_result(conn, entry, auth_request);
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
64 if (ldap_next_entry(conn->ld, entry) == NULL)
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
65 result = USERDB_RESULT_OK;
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
66 else {
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
67 auth_request_log_error(auth_request, "ldap",
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
68 "Multiple replies found for user");
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
69 }
3042
4455da56ad87 Keep auth_request around so it can be used in error messages.
Timo Sirainen <tss@iki.fi>
parents: 3036
diff changeset
70 }
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72
5872
93bd157917ca Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents: 5856
diff changeset
73 urequest->userdb_callback(result, auth_request);
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
74 auth_request_unref(&auth_request);
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76
2057
5e0167577399 Fixed var_expand() to take a table of variables rather than a few predefined
Timo Sirainen <tss@iki.fi>
parents: 1716
diff changeset
77 static void userdb_ldap_lookup(struct auth_request *auth_request,
3166
e6a487d80288 Restructuring of auth code. Balancer auth processes were a bad idea. Usually
Timo Sirainen <tss@iki.fi>
parents: 3161
diff changeset
78 userdb_callback_t *callback)
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79 {
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
80 struct userdb_module *_module = auth_request->userdb->userdb;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
81 struct ldap_userdb_module *module =
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
82 (struct ldap_userdb_module *)_module;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
83 struct ldap_connection *conn = module->conn;
3088
441759ac4f6a Support variables in LDAP base setting.
Timo Sirainen <tss@iki.fi>
parents: 3069
diff changeset
84 const struct var_expand_table *vars;
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
85 const char **attr_names = (const char **)conn->user_attr_names;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 struct userdb_ldap_request *request;
1135
81930fff13cf passdb ldap added. fixes to userdb ldap.
Timo Sirainen <tss@iki.fi>
parents: 1092
diff changeset
87 string_t *str;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
89 auth_request_ref(auth_request);
3161
6a3254e3c3de Moved cache handling from sql/ldap-specific code to generic auth-request
Timo Sirainen <tss@iki.fi>
parents: 3158
diff changeset
90 request = p_new(auth_request->pool, struct userdb_ldap_request, 1);
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 request->userdb_callback = callback;
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92
3731
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
93 vars = auth_request_get_var_expand_table(auth_request, ldap_escape);
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
94
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
95 str = t_str_new(512);
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
96 var_expand(str, conn->set.base, vars);
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
97 request->request.base = p_strdup(auth_request->pool, str_c(str));
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
98
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
99 str_truncate(str, 0);
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
100 var_expand(str, conn->set.user_filter, vars);
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
101 request->request.filter = p_strdup(auth_request->pool, str_c(str));
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
102
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
103 request->request.attributes = conn->user_attr_names;
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
104
4750
c02b31f07299 Do better logging.
Timo Sirainen <tss@iki.fi>
parents: 4741
diff changeset
105 auth_request_log_debug(auth_request, "ldap", "user search: "
3069
131151e25e4b Added auth_request_log_*().
Timo Sirainen <tss@iki.fi>
parents: 3061
diff changeset
106 "base=%s scope=%s filter=%s fields=%s",
3731
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
107 request->request.base, conn->set.scope,
0a7beabfe332 If LDAP lookup fails because connection gets closed, try retrying it again
Timo Sirainen <tss@iki.fi>
parents: 3658
diff changeset
108 request->request.filter,
5223
b6bbf42908a6 Don't crash if user_attrs or pass_attrs is empty. It means all the
Timo Sirainen <tss@iki.fi>
parents: 5038
diff changeset
109 attr_names == NULL ? "(all)" :
3069
131151e25e4b Added auth_request_log_*().
Timo Sirainen <tss@iki.fi>
parents: 3061
diff changeset
110 t_strarray_join(attr_names, ","));
3036
fcecff14e470 Added authentication debugging logging.
Timo Sirainen <tss@iki.fi>
parents: 2994
diff changeset
111
7293
f78b83bf16b7 Don't crash if ldap userdb lookup fails.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
112 request->request.request.auth_request = auth_request;
7050
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
113 request->request.request.callback = userdb_ldap_lookup_callback;
0dcea80312b0 LDAP handling rewrite. Reconnections are handled a lot better now. If
Timo Sirainen <tss@iki.fi>
parents: 6999
diff changeset
114 db_ldap_request(conn, &request->request.request);
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
117 static struct userdb_module *
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
118 userdb_ldap_preinit(struct auth_userdb *auth_userdb, const char *args)
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 {
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
120 struct ldap_userdb_module *module;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
121 struct ldap_connection *conn;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
122
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
123 module = p_new(auth_userdb->auth->pool, struct ldap_userdb_module, 1);
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
124 module->conn = conn = db_ldap_init(args);
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
125 conn->user_attr_map =
8573
f9166a09423a Renamed hash_*() to hash_table_*() to avoid conflicts with OSX's strhash.h
Timo Sirainen <tss@iki.fi>
parents: 8217
diff changeset
126 hash_table_create(default_pool, conn->pool, 0, str_hash,
f9166a09423a Renamed hash_*() to hash_table_*() to avoid conflicts with OSX's strhash.h
Timo Sirainen <tss@iki.fi>
parents: 8217
diff changeset
127 (hash_cmp_callback_t *)strcmp);
3306
aebed9a9edac If both userdb and passdb used LDAP the later one was overriding first one's
Timo Sirainen <tss@iki.fi>
parents: 3212
diff changeset
128
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
129 db_ldap_set_attrs(conn, conn->set.user_attrs, &conn->user_attr_names,
6148
668a768fc8fd Removed deprecated pass_attrs and user_attrs configuration method.
Timo Sirainen <tss@iki.fi>
parents: 6144
diff changeset
130 conn->user_attr_map, NULL);
4955
f0cc5486696e Authentication cache caches now also userdb data. Code by Tommi Saviranta.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4880
diff changeset
131 module->module.cache_key =
f0cc5486696e Authentication cache caches now also userdb data. Code by Tommi Saviranta.
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4880
diff changeset
132 auth_cache_parse_key(auth_userdb->auth->pool,
6999
9e75e67420b4 If LDAP base contained variables, auth cache should have included them in
Timo Sirainen <tss@iki.fi>
parents: 6429
diff changeset
133 t_strconcat(conn->set.base,
9e75e67420b4 If LDAP base contained variables, auth cache should have included them in
Timo Sirainen <tss@iki.fi>
parents: 6429
diff changeset
134 conn->set.user_filter, NULL));
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
135 return &module->module;
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
136 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
138 static void userdb_ldap_init(struct userdb_module *_module,
6411
6a64e64fa3a3 Renamed __attr_*__ to ATTR_*. Renamed __attrs_used__ to ATTRS_DEFINED.
Timo Sirainen <tss@iki.fi>
parents: 6148
diff changeset
139 const char *args ATTR_UNUSED)
2648
cc2e39912eb3 Added preinit() call to userdb/passdbs, which is called before dropping
Timo Sirainen <tss@iki.fi>
parents: 2057
diff changeset
140 {
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
141 struct ldap_userdb_module *module =
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
142 (struct ldap_userdb_module *)_module;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
143
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
144 (void)db_ldap_connect(module->conn);
2648
cc2e39912eb3 Added preinit() call to userdb/passdbs, which is called before dropping
Timo Sirainen <tss@iki.fi>
parents: 2057
diff changeset
145 }
cc2e39912eb3 Added preinit() call to userdb/passdbs, which is called before dropping
Timo Sirainen <tss@iki.fi>
parents: 2057
diff changeset
146
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
147 static void userdb_ldap_deinit(struct userdb_module *_module)
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148 {
3658
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
149 struct ldap_userdb_module *module =
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
150 (struct ldap_userdb_module *)_module;
fc4622b1c1ef Separated userdb_module's interface and the actual data struct.
Timo Sirainen <tss@iki.fi>
parents: 3520
diff changeset
151
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
152 db_ldap_unref(&module->conn);
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153 }
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154
9066
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
155 #ifndef PLUGIN_BUILD
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
156 struct userdb_module_interface userdb_ldap =
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
157 #else
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
158 struct userdb_module_interface userdb_ldap_plugin =
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
159 #endif
a31fb9b7179a auth: Fixed using ldap plugin.
Timo Sirainen <tss@iki.fi>
parents: 8872
diff changeset
160 {
2942
c7d426f8cb58 Added name variable for userdb_module and passdb_module and changed their
Timo Sirainen <tss@iki.fi>
parents: 2842
diff changeset
161 "ldap",
c7d426f8cb58 Added name variable for userdb_module and passdb_module and changed their
Timo Sirainen <tss@iki.fi>
parents: 2842
diff changeset
162
2648
cc2e39912eb3 Added preinit() call to userdb/passdbs, which is called before dropping
Timo Sirainen <tss@iki.fi>
parents: 2057
diff changeset
163 userdb_ldap_preinit,
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
164 userdb_ldap_init,
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
165 userdb_ldap_deinit,
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
166
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
167 userdb_ldap_lookup
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
168 };
8217
c47b78e843aa Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents: 7293
diff changeset
169 #else
c47b78e843aa Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents: 7293
diff changeset
170 struct userdb_module_interface userdb_ldap = {
c47b78e843aa Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents: 7293
diff changeset
171 MEMBER(name) "ldap"
c47b78e843aa Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents: 7293
diff changeset
172 };
1062
0522a0315d2f Cleanups, LDAP support compiles again and generally looks ok, even if it
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
173 #endif