From: Timo Sirainen Date: Sun, 19 Oct 2008 10:32:01 +0000 (+0300) Subject: Print a help message about authentication at startup until the first successful authe... X-Git-Tag: 1.2.alpha3~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5568683cf2fc457bcab299b3f1086828d78655e0;p=thirdparty%2Fdovecot%2Fcore.git Print a help message about authentication at startup until the first successful authentication. --HG-- branch : HEAD --- diff --git a/src/master/auth-process.c b/src/master/auth-process.c index 5846b54ba7..597c425ef0 100644 --- a/src/master/auth-process.c +++ b/src/master/auth-process.c @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -125,6 +126,17 @@ auth_process_input_user(struct auth_process *process, const char *args) 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; diff --git a/src/master/common.h b/src/master/common.h index d654bf31c0..fc25c0d57d 100644 --- a/src/master/common.h +++ b/src/master/common.h @@ -6,12 +6,15 @@ struct ip_addr; #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 diff --git a/src/master/main.c b/src/master/main.c index 9f7557153d..aeff137315 100644 --- a/src/master/main.c +++ b/src/master/main.c @@ -42,6 +42,7 @@ uid_t master_uid; 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 @@ static void fatal_log_check(void) 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 @@ int main(int argc, char *argv[]) open_fds(); fatal_log_check(); + if (strcmp(settings_root->defaults->protocols, "none") != 0) + auth_warning_print(); if (!foreground) daemonize(settings_root->defaults);