changeset 2942:c7d426f8cb58 HEAD

Added name variable for userdb_module and passdb_module and changed their initialization a bit.
author Timo Sirainen <tss@iki.fi>
date Mon, 06 Dec 2004 18:39:02 +0200
parents 89ab5c72430d
children 6a6e794bb6d3
files src/auth/passdb-bsdauth.c src/auth/passdb-checkpassword.c src/auth/passdb-ldap.c src/auth/passdb-pam.c src/auth/passdb-passwd-file.c src/auth/passdb-passwd.c src/auth/passdb-shadow.c src/auth/passdb-sql.c src/auth/passdb-vpopmail.c src/auth/passdb.c src/auth/passdb.h src/auth/userdb-ldap.c src/auth/userdb-passwd-file.c src/auth/userdb-passwd.c src/auth/userdb-sql.c src/auth/userdb-static.c src/auth/userdb-vpopmail.c src/auth/userdb.c src/auth/userdb.h
diffstat 19 files changed, 107 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/passdb-bsdauth.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-bsdauth.c	Mon Dec 06 18:39:02 2004 +0200
@@ -65,6 +65,8 @@
 }
 
 struct passdb_module passdb_bsdauth = {
+	"bsdauth",
+
 	NULL, NULL,
 	bsdauth_deinit,
 
--- a/src/auth/passdb-checkpassword.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-checkpassword.c	Mon Dec 06 18:39:02 2004 +0200
@@ -317,6 +317,8 @@
 }
 
 struct passdb_module passdb_checkpassword = {
+	"checkpassword",
+
 	NULL,
 	checkpassword_init,
 	checkpassword_deinit,
--- a/src/auth/passdb-ldap.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-ldap.c	Mon Dec 06 18:39:02 2004 +0200
@@ -253,6 +253,8 @@
 }
 
 struct passdb_module passdb_ldap = {
+	"ldap",
+
 	passdb_ldap_preinit,
 	passdb_ldap_init,
 	passdb_ldap_deinit,
--- a/src/auth/passdb-pam.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-pam.c	Mon Dec 06 18:39:02 2004 +0200
@@ -404,6 +404,8 @@
 }
 
 struct passdb_module passdb_pam = {
+	"pam",
+
 	NULL,
 	pam_init,
 	pam_deinit,
--- a/src/auth/passdb-passwd-file.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-passwd-file.c	Mon Dec 06 18:39:02 2004 +0200
@@ -83,6 +83,8 @@
 }
 
 struct passdb_module passdb_passwd_file = {
+	"passwd-file",
+
 	NULL,
 	passwd_file_init,
 	passwd_file_deinit,
--- a/src/auth/passdb-passwd.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-passwd.c	Mon Dec 06 18:39:02 2004 +0200
@@ -62,6 +62,8 @@
 }
 
 struct passdb_module passdb_passwd = {
+	"passwd",
+
 	NULL, NULL,
 	passwd_deinit,
 
--- a/src/auth/passdb-shadow.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-shadow.c	Mon Dec 06 18:39:02 2004 +0200
@@ -62,6 +62,8 @@
 }
 
 struct passdb_module passdb_shadow = {
+	"shadow",
+
 	NULL, NULL,
 	shadow_deinit,
 
--- a/src/auth/passdb-sql.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-sql.c	Mon Dec 06 18:39:02 2004 +0200
@@ -213,6 +213,8 @@
 }
 
 struct passdb_module passdb_sql = {
+	"sql",
+
 	passdb_sql_preinit,
 	passdb_sql_init,
 	passdb_sql_deinit,
--- a/src/auth/passdb-vpopmail.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb-vpopmail.c	Mon Dec 06 18:39:02 2004 +0200
@@ -97,6 +97,8 @@
 }
 
 struct passdb_module passdb_vpopmail = {
+	"vpopmail",
+
 	NULL, NULL,
 	vpopmail_deinit,
 
--- a/src/auth/passdb.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb.c	Mon Dec 06 18:39:02 2004 +0200
@@ -13,6 +13,37 @@
 static struct auth_module *passdb_module = NULL;
 #endif
 
+struct passdb_module *passdbs[] = {
+#ifdef PASSDB_PASSWD
+	&passdb_passwd,
+#endif
+#ifdef PASSDB_BSDAUTH
+	&passdb_bsdauth,
+#endif
+#ifdef PASSDB_PASSWD_FILE
+	&passdb_passwd_file,
+#endif
+#ifdef PASSDB_PAM
+	&passdb_pam,
+#endif
+#ifdef PASSDB_CHECKPASSWORD
+	&passdb_checkpassword,
+#endif
+#ifdef PASSDB_SHADOW
+	&passdb_shadow,
+#endif
+#ifdef PASSDB_VPOPMAIL
+	&passdb_vpopmail,
+#endif
+#ifdef PASSDB_LDAP
+	&passdb_ldap,
+#endif
+#ifdef PASSDB_SQL
+	&passdb_sql,
+#endif
+	NULL
+};
+
 struct passdb_module *passdb;
 static char *passdb_args;
 
@@ -81,8 +112,7 @@
 	callback(password, auth_request);
 }
 
-static void
-mech_list_verify_passdb(struct passdb_module *passdb, const char *name)
+static void mech_list_verify_passdb(struct passdb_module *passdb)
 {
 	struct mech_module_list *list;
 
@@ -97,16 +127,15 @@
 
 	if (list != NULL) {
 		i_fatal("Passdb %s doesn't support %s method",
-			name, list->module.mech_name);
+			passdb->name, list->module.mech_name);
 	}
 }
 
 void passdb_preinit(void)
 {
+	struct passdb_module **p;
 	const char *name, *args;
 
-	passdb = NULL;
-
 	name = getenv("PASSDB");
 	if (name == NULL)
 		i_fatal("PASSDB environment is unset");
@@ -120,42 +149,14 @@
 
 	passdb_args = i_strdup(args);
 
-#ifdef PASSDB_PASSWD
-	if (strcasecmp(name, "passwd") == 0)
-		passdb = &passdb_passwd;
-#endif
-#ifdef PASSDB_BSDAUTH
-	if (strcasecmp(name, "bsdauth") == 0)
-		passdb = &passdb_bsdauth;
-#endif
-#ifdef PASSDB_PASSWD_FILE
-	if (strcasecmp(name, "passwd-file") == 0)
-		passdb = &passdb_passwd_file;
-#endif
-#ifdef PASSDB_PAM
-	if (strcasecmp(name, "pam") == 0)
-		passdb = &passdb_pam;
-#endif
-#ifdef PASSDB_CHECKPASSWORD
-	if (strcasecmp(name, "checkpassword") == 0)
-		passdb = &passdb_checkpassword;
-#endif
-#ifdef PASSDB_SHADOW
-	if (strcasecmp(name, "shadow") == 0)
-		passdb = &passdb_shadow;
-#endif
-#ifdef PASSDB_VPOPMAIL
-	if (strcasecmp(name, "vpopmail") == 0)
-		passdb = &passdb_vpopmail;
-#endif
-#ifdef PASSDB_LDAP
-	if (strcasecmp(name, "ldap") == 0)
-		passdb = &passdb_ldap;
-#endif
-#ifdef PASSDB_SQL
-	if (strcasecmp(name, "sql") == 0)
-		passdb = &passdb_sql;
-#endif
+	passdb = NULL;
+	for (p = passdbs; *p != NULL; p++) {
+		if (strcmp((*p)->name, name) == 0) {
+			passdb = *p;
+			break;
+		}
+	}
+	
 #ifdef HAVE_MODULES
 	passdb_module = passdb != NULL ? NULL : auth_module_open(name);
 	if (passdb_module != NULL) {
@@ -170,7 +171,7 @@
 	if (passdb->preinit != NULL)
 		passdb->preinit(passdb_args);
 
-	mech_list_verify_passdb(passdb, name);
+	mech_list_verify_passdb(passdb);
 }
 
 void passdb_init(void)
--- a/src/auth/passdb.h	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/passdb.h	Mon Dec 06 18:39:02 2004 +0200
@@ -33,6 +33,8 @@
 					   struct auth_request *request);
 
 struct passdb_module {
+	const char *name;
+
 	void (*preinit)(const char *args);
 	void (*init)(const char *args);
 	void (*deinit)(void);
--- a/src/auth/userdb-ldap.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-ldap.c	Mon Dec 06 18:39:02 2004 +0200
@@ -208,6 +208,8 @@
 }
 
 struct userdb_module userdb_ldap = {
+	"ldap",
+
 	userdb_ldap_preinit,
 	userdb_ldap_init,
 	userdb_ldap_deinit,
--- a/src/auth/userdb-passwd-file.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-passwd-file.c	Mon Dec 06 18:39:02 2004 +0200
@@ -54,6 +54,8 @@
 }
 
 struct userdb_module userdb_passwd_file = {
+	"passwd-file",
+
 	NULL,
 	passwd_file_init,
 	passwd_file_deinit,
--- a/src/auth/userdb-passwd.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-passwd.c	Mon Dec 06 18:39:02 2004 +0200
@@ -37,6 +37,8 @@
 }
 
 struct userdb_module userdb_passwd = {
+	"passwd",
+
 	NULL, NULL, NULL,
 	passwd_lookup
 };
--- a/src/auth/userdb-sql.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-sql.c	Mon Dec 06 18:39:02 2004 +0200
@@ -107,6 +107,8 @@
 }
 
 struct userdb_module userdb_sql = {
+	"sql",
+
 	userdb_sql_preinit,
 	userdb_sql_init,
 	userdb_sql_deinit,
--- a/src/auth/userdb-static.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-static.c	Mon Dec 06 18:39:02 2004 +0200
@@ -84,6 +84,8 @@
 }
 
 struct userdb_module userdb_static = {
+	"static",
+
 	NULL,
 	static_init,
 	static_deinit,
--- a/src/auth/userdb-vpopmail.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb-vpopmail.c	Mon Dec 06 18:39:02 2004 +0200
@@ -106,6 +106,8 @@
 }
 
 struct userdb_module userdb_vpopmail = {
+	"vpopmail",
+
 	NULL, NULL, NULL,
 	vpopmail_lookup
 };
--- a/src/auth/userdb.c	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb.c	Mon Dec 06 18:39:02 2004 +0200
@@ -10,15 +10,36 @@
 static struct auth_module *userdb_module = NULL;
 #endif
 
+struct userdb_module *userdbs[] = {
+#ifdef USERDB_PASSWD
+	&userdb_passwd,
+#endif
+#ifdef USERDB_PASSWD_FILE
+	&userdb_passwd_file,
+#endif
+#ifdef USERDB_STATIC
+	&userdb_static,
+#endif
+#ifdef USERDB_VPOPMAIL
+	&userdb_vpopmail,
+#endif
+#ifdef USERDB_LDAP
+	&userdb_ldap,
+#endif
+#ifdef USERDB_SQL
+	&userdb_sql,
+#endif
+	NULL
+};
+
 struct userdb_module *userdb;
 static char *userdb_args;
 
 void userdb_preinit(void)
 {
+	struct userdb_module **p;
 	const char *name, *args;
 
-	userdb = NULL;
-
 	name = getenv("USERDB");
 	if (name == NULL)
 		i_fatal("USERDB environment is unset");
@@ -32,30 +53,13 @@
 
 	userdb_args = i_strdup(args);
 
-#ifdef USERDB_PASSWD
-	if (strcasecmp(name, "passwd") == 0)
-		userdb = &userdb_passwd;
-#endif
-#ifdef USERDB_PASSWD_FILE
-	if (strcasecmp(name, "passwd-file") == 0)
-		userdb = &userdb_passwd_file;
-#endif
-#ifdef USERDB_STATIC
-	if (strcasecmp(name, "static") == 0)
-		userdb = &userdb_static;
-#endif
-#ifdef USERDB_VPOPMAIL
-	if (strcasecmp(name, "vpopmail") == 0)
-		userdb = &userdb_vpopmail;
-#endif
-#ifdef USERDB_LDAP
-	if (strcasecmp(name, "ldap") == 0)
-		userdb = &userdb_ldap;
-#endif
-#ifdef USERDB_SQL
-	if (strcasecmp(name, "sql") == 0)
-		userdb = &userdb_sql;
-#endif
+	userdb = NULL;
+	for (p = userdbs; *p != NULL; p++) {
+		if (strcmp((*p)->name, name) == 0) {
+			userdb = *p;
+			break;
+		}
+	}
 #ifdef HAVE_MODULES
 	userdb_module = userdb != NULL ? NULL : auth_module_open(name);
 	if (userdb_module != NULL) {
--- a/src/auth/userdb.h	Sun Dec 05 06:10:43 2004 +0200
+++ b/src/auth/userdb.h	Mon Dec 06 18:39:02 2004 +0200
@@ -16,6 +16,8 @@
 typedef void userdb_callback_t(const struct user_data *user, void *context);
 
 struct userdb_module {
+	const char *name;
+
 	void (*preinit)(const char *args);
 	void (*init)(const char *args);
 	void (*deinit)(void);