changeset 8301:d46579bb7a3c HEAD

Print a help message about authentication at startup until the first successful authentication.
author Timo Sirainen <tss@iki.fi>
date Sun, 19 Oct 2008 13:32:01 +0300
parents 9d963e3bbe65
children 0db37acdc59f
files src/master/auth-process.c src/master/common.h src/master/main.c
diffstat 3 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/master/auth-process.c	Sun Oct 19 02:07:34 2008 +0300
+++ b/src/master/auth-process.c	Sun Oct 19 13:32:01 2008 +0300
@@ -19,6 +19,7 @@
 
 #include <stdlib.h>
 #include <unistd.h>
+#include <fcntl.h>
 #include <pwd.h>
 #include <syslog.h>
 
@@ -125,6 +126,17 @@
 		return FALSE;
 	}
 
+	if (!auth_success_written) {
+		int fd;
+
+		fd = creat(AUTH_SUCCESS_PATH, 0666);
+		if (fd == -1)
+			i_error("creat(%s) failed: %m", AUTH_SUCCESS_PATH);
+		else
+			(void)close(fd);
+		auth_success_written = TRUE;
+	}
+
 	auth_master_callback(list[1], list + 2, request);
 	hash_remove(process->requests, POINTER_CAST(id));
 	return TRUE;
--- a/src/master/common.h	Sun Oct 19 02:07:34 2008 +0300
+++ b/src/master/common.h	Sun Oct 19 13:32:01 2008 +0300
@@ -6,12 +6,15 @@
 #include "lib.h"
 #include "master-settings.h"
 
+#define AUTH_SUCCESS_PATH PKG_STATEDIR"/auth-success"
+
 extern struct ioloop *ioloop;
 extern int null_fd, inetd_login_fd;
 extern uid_t master_uid;
 extern char program_path[];
 extern char ssl_manual_key_password[];
 extern const char *env_tz;
+extern bool auth_success_written;
 #ifdef DEBUG
 extern bool gdb;
 #endif
--- a/src/master/main.c	Sun Oct 19 02:07:34 2008 +0300
+++ b/src/master/main.c	Sun Oct 19 13:32:01 2008 +0300
@@ -42,6 +42,7 @@
 char program_path[PATH_MAX];
 char ssl_manual_key_password[100];
 const char *env_tz;
+bool auth_success_written;
 #ifdef DEBUG
 bool gdb;
 #endif
@@ -99,6 +100,19 @@
 		i_error("unlink(%s) failed: %m", path);
 }
 
+static void auth_warning_print(void)
+{
+	struct stat st;
+
+	auth_success_written = stat(AUTH_SUCCESS_PATH, &st) == 0;
+	if (!auth_success_written) {
+		i_info("If you have trouble with authentication failures,\n"
+		       "enable auth_debug setting. "
+		       "See http://wiki.dovecot.org/WhyDoesItNotWork");
+
+	}
+}
+
 static void set_logfile(struct settings *set)
 {
 	int facility;
@@ -559,6 +573,8 @@
 		open_fds();
 
 	fatal_log_check();
+	if (strcmp(settings_root->defaults->protocols, "none") != 0)
+		auth_warning_print();
 	if (!foreground)
 		daemonize(settings_root->defaults);