Lines Matching defs:auth
3 #include "auth-common.h"
12 #include "auth.h"
27 static ARRAY(struct auth *) auths;
69 auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set,
74 auth_passdb = p_new(auth->pool, struct auth_passdb, 1);
85 passdb_template_build(auth->pool, set->default_fields);
87 passdb_template_build(auth->pool, set->override_fields);
96 auth_passdb->passdb = passdb_preinit(auth->pool, set);
100 p_strconcat(auth->pool, auth_passdb->passdb->default_cache_key,
109 auth_userdb_preinit(struct auth *auth, const struct auth_userdb_settings *set)
113 auth_userdb = p_new(auth->pool, struct auth_userdb, 1);
124 userdb_template_build(auth->pool, set->driver,
127 userdb_template_build(auth->pool, set->driver,
130 for (dest = &auth->userdbs; *dest != NULL; dest = &(*dest)->next) ;
133 auth_userdb->userdb = userdb_preinit(auth->pool, set);
137 p_strconcat(auth->pool, auth_userdb->userdb->default_cache_key,
145 static bool auth_passdb_list_have_verify_plain(const struct auth *auth)
149 for (passdb = auth->passdbs; passdb != NULL; passdb = passdb->next) {
156 static bool auth_passdb_list_have_lookup_credentials(const struct auth *auth)
160 for (passdb = auth->passdbs; passdb != NULL; passdb = passdb->next) {
167 static bool auth_passdb_list_have_set_credentials(const struct auth *auth)
171 for (passdb = auth->masterdbs; passdb != NULL; passdb = passdb->next) {
175 for (passdb = auth->passdbs; passdb != NULL; passdb = passdb->next) {
183 auth_mech_verify_passdb(const struct auth *auth, const struct mech_module_list *list)
189 if (!auth_passdb_list_have_verify_plain(auth))
194 if (!auth_passdb_list_have_lookup_credentials(auth))
198 if (!auth_passdb_list_have_lookup_credentials(auth))
200 if (!auth_passdb_list_have_set_credentials(auth))
207 static void auth_mech_list_verify_passdb(const struct auth *auth)
211 for (list = auth->reg->modules; list != NULL; list = list->next) {
212 if (!auth_mech_verify_passdb(auth, list))
217 if (auth->passdbs == NULL) {
227 static struct auth * ATTR_NULL(2)
233 struct auth *auth;
236 auth = p_new(pool, struct auth, 1);
237 auth->pool = pool;
238 auth->service = p_strdup(pool, service);
239 auth->set = set;
240 auth->reg = reg;
257 if (auth->passdbs == NULL &&
261 auth_passdb_preinit(auth, passdbs[i], &auth->passdbs);
273 if (auth->masterdbs == NULL &&
283 auth_passdb_preinit(auth, passdbs[i], &auth->masterdbs);
289 auth_userdb_preinit(auth, userdbs[i]);
292 if (auth->userdbs == NULL) {
294 auth_userdb_preinit(auth, &userdb_dummy_set);
296 return auth;
307 static void auth_init(struct auth *auth)
312 for (passdb = auth->masterdbs; passdb != NULL; passdb = passdb->next)
314 for (passdb = auth->passdbs; passdb != NULL; passdb = passdb->next)
316 for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next)
320 static void auth_deinit(struct auth *auth)
325 for (passdb = auth->masterdbs; passdb != NULL; passdb = passdb->next)
327 for (passdb = auth->passdbs; passdb != NULL; passdb = passdb->next)
329 for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next)
333 struct auth *auth_find_service(const char *name)
335 struct auth *const *a;
354 struct auth *auth_default_service(void)
356 struct auth *const *a;
369 struct auth *auth, *const *authp;
376 auth = auth_preinit(set, NULL, pool, reg);
377 array_append(&auths, &auth, 1);
390 auth = auth_preinit(service_set, services[i], pool, reg);
391 array_append(&auths, &auth, 1);
405 struct auth *const *auth;
416 array_foreach(&auths, auth)
417 auth_init(*auth);
422 struct auth *const *auth;
424 array_foreach(&auths, auth)
425 auth_deinit(*auth);
430 struct auth **auth;
434 the first auth pool that used them */
435 auth = array_get_modifiable(&auths, &count);
437 pool_unref(&auth[i-1]->pool);