dovecot-2.2: doveadm-server: Include client's IP address in logs.

dovecot at dovecot.org dovecot at dovecot.org
Tue Aug 6 16:54:46 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/6c4917396b0d
changeset: 16671:6c4917396b0d
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Aug 06 16:54:33 2013 +0300
description:
doveadm-server: Include client's IP address in logs.

diffstat:

 src/doveadm/client-connection.c |   5 +++++
 src/doveadm/doveadm-mail.c      |  17 +++++++++++++----
 src/doveadm/doveadm-mail.h      |   1 +
 3 files changed, 19 insertions(+), 4 deletions(-)

diffs (83 lines):

diff -r 0cf837972a32 -r 6c4917396b0d src/doveadm/client-connection.c
--- a/src/doveadm/client-connection.c	Tue Aug 06 16:32:03 2013 +0300
+++ b/src/doveadm/client-connection.c	Tue Aug 06 16:54:33 2013 +0300
@@ -397,6 +397,7 @@
 client_connection_create(int fd, int listen_fd, bool ssl)
 {
 	struct client_connection *conn;
+	const char *ip;
 	pool_t pool;
 
 	pool = pool_alloconly_create("doveadm client", 1024*16);
@@ -414,6 +415,10 @@
 	i_stream_set_name(conn->input, net_ip2addr(&conn->remote_ip));
 	o_stream_set_name(conn->output, net_ip2addr(&conn->remote_ip));
 
+	ip = net_ip2addr(&conn->remote_ip);
+	if (ip[0] != '\0')
+		i_set_failure_prefix("doveadm(%s): ", ip);
+
 	if (client_connection_read_settings(conn) < 0) {
 		client_connection_destroy(&conn);
 		return NULL;
diff -r 0cf837972a32 -r 6c4917396b0d src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c	Tue Aug 06 16:32:03 2013 +0300
+++ b/src/doveadm/doveadm-mail.c	Tue Aug 06 16:54:33 2013 +0300
@@ -270,10 +270,14 @@
 		       const struct mail_storage_service_input *input,
 		       const char **error_r)
 {
-	const char *error;
+	const char *error, *ip;
 	int ret;
 
-	i_set_failure_prefix("doveadm(%s): ", input->username);
+	ip = net_ip2addr(&input->remote_ip);
+	if (ip[0] == '\0')
+		i_set_failure_prefix("doveadm(%s): ", input->username);
+	else
+		i_set_failure_prefix("doveadm(%s,%s): ", ip, input->username);
 
 	/* see if we want to execute this command via (another)
 	   doveadm server */
@@ -321,6 +325,7 @@
 {
 	i_assert(input->username != NULL);
 
+	ctx->cur_client_ip = input->remote_ip;
 	ctx->cur_username = input->username;
 	ctx->storage_service_input = *input;
 	ctx->storage_service = mail_storage_service_init(master_service, NULL,
@@ -343,7 +348,7 @@
 {
 	struct mail_storage_service_input input;
 	unsigned int user_idx;
-	const char *user, *error;
+	const char *ip, *user, *error;
 	int ret;
 
 	ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
@@ -396,7 +401,11 @@
 	}
 	if (doveadm_verbose)
 		printf("\n");
-	i_set_failure_prefix("doveadm: ");
+	ip = net_ip2addr(&ctx->cur_client_ip);
+	if (ip[0] == '\0')
+		i_set_failure_prefix("doveadm: ");
+	else
+		i_set_failure_prefix("doveadm(%s): ", ip);
 	if (ret < 0) {
 		i_error("Failed to iterate through some users");
 		ctx->exit_code = EX_TEMPFAIL;
diff -r 0cf837972a32 -r 6c4917396b0d src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h	Tue Aug 06 16:32:03 2013 +0300
+++ b/src/doveadm/doveadm-mail.h	Tue Aug 06 16:54:33 2013 +0300
@@ -54,6 +54,7 @@
 	/* search args aren't set for all mail commands */
 	struct mail_search_args *search_args;
 
+	struct ip_addr cur_client_ip;
 	const char *cur_username;
 	struct mail_storage_service_user *cur_service_user;
 	struct mail_user *cur_mail_user;


More information about the dovecot-cvs mailing list