From 1d082a46e1676e7ec13928d588c4a25e062713cc Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 6 Aug 2013 16:54:33 +0300 Subject: [PATCH] doveadm-server: Include client's IP address in logs. --- 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(-) diff --git a/src/doveadm/client-connection.c b/src/doveadm/client-connection.c index 262c1af9e9..e740abc53a 100644 --- a/src/doveadm/client-connection.c +++ b/src/doveadm/client-connection.c @@ -397,6 +397,7 @@ struct client_connection * 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 @@ client_connection_create(int fd, int listen_fd, bool ssl) 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 --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index ba2dd9bfdb..33f7cbb785 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -270,10 +270,14 @@ doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx, 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 @@ int doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx, { 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 @@ doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[], { 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 @@ doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[], } 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 --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index ce07bdf159..9c8a512f1d 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -54,6 +54,7 @@ struct doveadm_mail_cmd_context { /* 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; -- 2.47.3