userdb.c revision d5abbb932a0a598f002da39a8b3326643b1b5efc
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler/* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilerstatic ARRAY_DEFINE(userdb_interfaces, struct userdb_module_interface *);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilerstatic struct userdb_module_interface *userdb_interface_find(const char *name)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler struct userdb_module_interface *const *ifaces;
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler unsigned int i, count;
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler ifaces = array_get(&userdb_interfaces, &count);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler for (i = 0; i < count; i++) {
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilervoid userdb_register_module(struct userdb_module_interface *iface)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler if (userdb_interface_find(iface->name) != NULL) {
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler i_panic("userdb_register_module(%s): Already registered",
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler array_append(&userdb_interfaces, &iface, 1);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilervoid userdb_unregister_module(struct userdb_module_interface *iface)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler struct userdb_module_interface *const *ifaces;
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler unsigned int i, count;
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler ifaces = array_get(&userdb_interfaces, &count);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler for (i = 0; i < count; i++) {
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler i_panic("userdb_unregister_module(%s): Not registered", iface->name);
b4578c5b380130a41a69b5b49c970157acaf1dbbDwight Engenuid_t userdb_parse_uid(struct auth_request *request, const char *str)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler if (*p == '\0')
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilergid_t userdb_parse_gid(struct auth_request *request, const char *str)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler if (*p == '\0')
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seilervoid userdb_preinit(struct auth *auth, const char *driver, const char *args)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler auth_userdb = p_new(auth->pool, struct auth_userdb, 1);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler auth_userdb->args = p_strdup(auth->pool, args);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler for (dest = &auth->userdbs; *dest != NULL; dest = &(*dest)->next)
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler i_fatal("Unknown userdb driver '%s'", driver);
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler i_fatal("Support not compiled in for userdb driver '%s'",
49ee6cdcbf79d8b6fa617479ec8ab753ccca923dChristian Seiler p_new(auth->pool, struct userdb_module, 1);
e13eeea2db3743bf8d3fe2833e069a80e2c4102cChristian Seiler iface->preinit(auth_userdb, auth_userdb->args);
e13eeea2db3743bf8d3fe2833e069a80e2c4102cChristian Seiler userdb->userdb->iface->init(userdb->userdb, userdb->args);
e13eeea2db3743bf8d3fe2833e069a80e2c4102cChristian Seiler /* blocking userdb - we need an auth server */
e13eeea2db3743bf8d3fe2833e069a80e2c4102cChristian Seilervoid userdb_deinit(struct auth_userdb *userdb)
e13eeea2db3743bf8d3fe2833e069a80e2c4102cChristian Seiler userdb->userdb->iface->deinit(userdb->userdb);
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_prefetch;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_static;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_passwd;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_passwd_file;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_vpopmail;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_ldap;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_sql;
7a0b0b5672a33c190eefb4b2d3e3693241c130f2Christian Seilerextern struct userdb_module_interface userdb_nss;