changeset 8217:c47b78e843aa HEAD

Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
author Timo Sirainen <tss@iki.fi>
date Wed, 24 Sep 2008 19:01:23 +0300
parents 11ff5d768660
children 2df7a88a5458
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-sia.c src/auth/passdb-sql.c src/auth/passdb-vpopmail.c src/auth/passdb.c src/auth/userdb-ldap.c src/auth/userdb-nss.c src/auth/userdb-passwd-file.c src/auth/userdb-passwd.c src/auth/userdb-prefetch.c src/auth/userdb-sql.c src/auth/userdb-static.c src/auth/userdb-vpopmail.c src/auth/userdb.c
diffstat 20 files changed, 98 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/passdb-bsdauth.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-bsdauth.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,11 +1,11 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_BSDAUTH
 
 #include "safe-memset.h"
-#include "passdb.h"
 #include "mycrypt.h"
 
 #include <login_cap.h>
@@ -78,5 +78,8 @@
 	NULL,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_bsdauth = {
+	MEMBER(name) "bsdauth"
+};
 #endif
--- a/src/auth/passdb-checkpassword.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-checkpassword.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2004-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_CHECKPASSWORD
 
@@ -10,7 +11,6 @@
 #include "ioloop.h"
 #include "hash.h"
 #include "env-util.h"
-#include "passdb.h"
 #include "safe-memset.h"
 
 #include <stdlib.h>
@@ -478,5 +478,8 @@
 	NULL,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_checkpassword = {
+	MEMBER(name) "checkpassword"
+};
 #endif
--- a/src/auth/passdb-ldap.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-ldap.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2003-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_LDAP
 
@@ -11,7 +12,6 @@
 #include "password-scheme.h"
 #include "auth-cache.h"
 #include "db-ldap.h"
-#include "passdb.h"
 
 #include <ldap.h>
 #include <stdlib.h>
@@ -430,5 +430,8 @@
 	ldap_lookup_credentials,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_ldap = {
+	MEMBER(name) "ldap"
+};
 #endif
--- a/src/auth/passdb-pam.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-pam.c	Wed Sep 24 19:01:23 2008 +0300
@@ -8,6 +8,7 @@
 */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_PAM
 
@@ -15,7 +16,6 @@
 #include "str.h"
 #include "var-expand.h"
 #include "network.h"
-#include "passdb.h"
 #include "safe-memset.h"
 #include "auth-cache.h"
 
@@ -320,5 +320,8 @@
 	NULL,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_pam = {
+	MEMBER(name) "pam"
+};
 #endif
--- a/src/auth/passdb-passwd-file.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-passwd-file.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,13 +1,13 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_PASSWD_FILE
 
 #include "str.h"
 #include "auth-cache.h"
 #include "var-expand.h"
-#include "passdb.h"
 #include "password-scheme.h"
 #include "db-passwd-file.h"
 
@@ -187,5 +187,8 @@
 	passwd_file_lookup_credentials,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_passwd_file = {
+	MEMBER(name) "passwd-file"
+};
 #endif
--- a/src/auth/passdb-passwd.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-passwd.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,11 +1,11 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_PASSWD
 
 #include "safe-memset.h"
-#include "passdb.h"
 
 #include <pwd.h>
 
@@ -83,4 +83,8 @@
 	NULL
 };
 
+#else
+struct passdb_module_interface passdb_passwd = {
+	MEMBER(name) "passwd"
+};
 #endif
--- a/src/auth/passdb-shadow.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-shadow.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,11 +1,11 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_SHADOW
 
 #include "safe-memset.h"
-#include "passdb.h"
 
 #include <shadow.h>
 
@@ -82,5 +82,8 @@
 	NULL,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_shadow = {
+	MEMBER(name) "shadow"
+};
 #endif
--- a/src/auth/passdb-sia.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-sia.c	Wed Sep 24 19:01:23 2008 +0300
@@ -3,11 +3,11 @@
 /* Tru64 SIA support */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_SIA
 
 #include "safe-memset.h"
-#include "passdb.h"
 
 #include <sia.h>
 #include <siad.h>
@@ -59,5 +59,8 @@
 	NULL,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_sia = {
+	MEMBER(name) "sia"
+};
 #endif
--- a/src/auth/passdb-sql.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-sql.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2004-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_SQL
 
@@ -11,7 +12,6 @@
 #include "password-scheme.h"
 #include "auth-cache.h"
 #include "db-sql.h"
-#include "passdb.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -273,5 +273,8 @@
 	sql_lookup_credentials,
 	sql_set_credentials
 };
-
+#else
+struct passdb_module_interface passdb_sql = {
+	MEMBER(name) "sql"
+};
 #endif
--- a/src/auth/passdb-vpopmail.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb-vpopmail.c	Wed Sep 24 19:01:23 2008 +0300
@@ -3,11 +3,11 @@
 /* Thanks to Courier-IMAP for showing how the vpopmail API should be used */
 
 #include "common.h"
+#include "passdb.h"
 
 #ifdef PASSDB_VPOPMAIL
 
 #include "safe-memset.h"
-#include "passdb.h"
 #include "password-scheme.h"
 #include "auth-cache.h"
 
@@ -194,5 +194,8 @@
 	vpopmail_lookup_credentials,
 	NULL
 };
-
+#else
+struct passdb_module_interface passdb_vpopmail = {
+	MEMBER(name) "vpopmail"
+};
 #endif
--- a/src/auth/passdb.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/passdb.c	Wed Sep 24 19:01:23 2008 +0300
@@ -139,10 +139,10 @@
         auth_passdb->id = id;
 
 	iface = passdb_interface_find(driver);
-	if (iface == NULL) {
-		i_fatal("Unknown passdb driver '%s' "
-			"(typo, or Dovecot was built without support for it? "
-			"Check with dovecot --build-options)",
+	if (iface == NULL)
+		i_fatal("Unknown passdb driver '%s'", driver);
+	if (iface->verify_plain == NULL) {
+		i_fatal("Support not compiled in for passdb driver '%s'",
 			driver);
 	}
 
@@ -191,36 +191,16 @@
 void passdbs_init(void)
 {
 	i_array_init(&passdb_interfaces, 16);
-#ifdef PASSDB_PASSWD
 	passdb_register_module(&passdb_passwd);
-#endif
-#ifdef PASSDB_BSDAUTH
 	passdb_register_module(&passdb_bsdauth);
-#endif
-#ifdef PASSDB_PASSWD_FILE
 	passdb_register_module(&passdb_passwd_file);
-#endif
-#ifdef PASSDB_PAM
 	passdb_register_module(&passdb_pam);
-#endif
-#ifdef PASSDB_CHECKPASSWORD
 	passdb_register_module(&passdb_checkpassword);
-#endif
-#ifdef PASSDB_SHADOW
 	passdb_register_module(&passdb_shadow);
-#endif
-#ifdef PASSDB_VPOPMAIL
 	passdb_register_module(&passdb_vpopmail);
-#endif
-#if defined(PASSDB_LDAP) && defined(BUILTIN_LDAP)
 	passdb_register_module(&passdb_ldap);
-#endif
-#ifdef PASSDB_SQL
 	passdb_register_module(&passdb_sql);
-#endif
-#ifdef PASSDB_SIA
 	passdb_register_module(&passdb_sia);
-#endif
 }
 
 void passdbs_deinit(void)
--- a/src/auth/userdb-ldap.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-ldap.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2003-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_LDAP
 
@@ -9,7 +10,6 @@
 #include "var-expand.h"
 #include "auth-cache.h"
 #include "db-ldap.h"
-#include "userdb.h"
 
 #include <ldap.h>
 #include <stdlib.h>
@@ -161,5 +161,8 @@
 
 	userdb_ldap_lookup
 };
-
+#else
+struct userdb_module_interface userdb_ldap = {
+	MEMBER(name) "ldap"
+};
 #endif
--- a/src/auth/userdb-nss.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-nss.c	Wed Sep 24 19:01:23 2008 +0300
@@ -3,11 +3,11 @@
 /* Currently supports only GLIBC-compatible NSS modules */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_NSS
 
 #include "module-dir.h"
-#include "userdb.h"
 
 #include <pwd.h>
 #include <unistd.h>
@@ -148,5 +148,8 @@
 
 	userdb_nss_lookup
 };
-
+#else
+struct userdb_module_interface userdb_nss = {
+	MEMBER(name) "nss"
+};
 #endif
--- a/src/auth/userdb-passwd-file.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-passwd-file.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,13 +1,13 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_PASSWD_FILE
 
 #include "str.h"
 #include "auth-cache.h"
 #include "var-expand.h"
-#include "userdb.h"
 #include "db-passwd-file.h"
 
 #define PASSWD_FILE_CACHE_KEY "%u"
@@ -137,5 +137,8 @@
 
 	passwd_file_lookup
 };
-
+#else
+struct userdb_module_interface userdb_passwd_file = {
+	MEMBER(name) "passwd-file"
+};
 #endif
--- a/src/auth/userdb-passwd.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-passwd.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,10 +1,10 @@
 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_PASSWD
 
-#include "userdb.h"
 #include "userdb-static.h"
 
 #include <pwd.h>
@@ -92,5 +92,8 @@
 
 	passwd_lookup
 };
-
+#else
+struct userdb_module_interface userdb_passwd = {
+	MEMBER(name) "passwd"
+};
 #endif
--- a/src/auth/userdb-prefetch.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-prefetch.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,12 +1,12 @@
 /* Copyright (c) 2004-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_PREFETCH
 
 #include "str.h"
 #include "var-expand.h"
-#include "userdb.h"
 
 #include <stdlib.h>
 
@@ -44,5 +44,8 @@
 
 	prefetch_lookup
 };
-
+#else
+struct userdb_module_interface userdb_prefetch = {
+	MEMBER(name) "prefetch"
+};
 #endif
--- a/src/auth/userdb-sql.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-sql.c	Wed Sep 24 19:01:23 2008 +0300
@@ -1,6 +1,7 @@
 /* Copyright (c) 2004-2008 Dovecot authors, see the included COPYING file */
 
 #include "common.h"
+#include "userdb.h"
 
 #ifdef USERDB_SQL
 
@@ -9,7 +10,6 @@
 #include "var-expand.h"
 #include "auth-cache.h"
 #include "db-sql.h"
-#include "userdb.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -151,5 +151,8 @@
 
 	userdb_sql_lookup
 };
-
+#else
+struct userdb_module_interface userdb_sql = {
+	MEMBER(name) "sql"
+};
 #endif
--- a/src/auth/userdb-static.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-static.c	Wed Sep 24 19:01:23 2008 +0300
@@ -238,5 +238,8 @@
 
 	static_lookup
 };
-
+#else
+struct userdb_module_interface userdb_static = {
+	MEMBER(name) "static"
+};
 #endif
--- a/src/auth/userdb-vpopmail.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb-vpopmail.c	Wed Sep 24 19:01:23 2008 +0300
@@ -3,11 +3,11 @@
 /* Thanks to Courier-IMAP for showing how the vpopmail API should be used */
 
 #include "common.h"
+#include "userdb.h"
 
 #if defined(PASSDB_VPOPMAIL) || defined(USERDB_VPOPMAIL)
 #include "str.h"
 #include "var-expand.h"
-#include "userdb.h"
 #include "userdb-vpopmail.h"
 
 struct vpopmail_userdb_module {
@@ -48,9 +48,9 @@
 
 	return vpw;
 }
+#endif
 
 #ifdef USERDB_VPOPMAIL
-
 static const char *
 userdb_vpopmail_get_quota(const char *template, const char *vpop_str)
 {
@@ -172,6 +172,8 @@
 
 	vpopmail_lookup
 };
-
+#else
+struct userdb_module_interface userdb_vpopmail = {
+	MEMBER(name) "vpopmail"
+};
 #endif
-#endif
--- a/src/auth/userdb.c	Tue Sep 23 19:58:07 2008 +0300
+++ b/src/auth/userdb.c	Wed Sep 24 19:01:23 2008 +0300
@@ -116,10 +116,10 @@
 	*dest = auth_userdb;
 
 	iface = userdb_interface_find(driver);
-	if (iface == NULL) {
-		i_fatal("Unknown userdb driver '%s' "
-			"(typo, or Dovecot was built without support for it? "
-			"Check with dovecot --build-options)",
+	if (iface == NULL)
+		i_fatal("Unknown userdb driver '%s'", driver);
+	if (iface->lookup == NULL) {
+		i_fatal("Support not compiled in for userdb driver '%s'",
 			driver);
 	}
 
@@ -162,30 +162,14 @@
 void userdbs_init(void)
 {
 	i_array_init(&userdb_interfaces, 16);
-#ifdef USERDB_PASSWD
 	userdb_register_module(&userdb_passwd);
-#endif
-#ifdef USERDB_PASSWD_FILE
 	userdb_register_module(&userdb_passwd_file);
-#endif
-#ifdef USERDB_PREFETCH
 	userdb_register_module(&userdb_prefetch);
-#endif
-#ifdef USERDB_STATIC
 	userdb_register_module(&userdb_static);
-#endif
-#ifdef USERDB_VPOPMAIL
 	userdb_register_module(&userdb_vpopmail);
-#endif
-#if defined(USERDB_LDAP) && defined(BUILTIN_LDAP)
 	userdb_register_module(&userdb_ldap);
-#endif
-#ifdef USERDB_SQL
 	userdb_register_module(&userdb_sql);
-#endif
-#ifdef USERDB_NSS
 	userdb_register_module(&userdb_nss);
-#endif
 }
 
 void userdbs_deinit(void)