From: Timo Sirainen Date: Thu, 14 Aug 2008 07:10:34 +0000 (-0400) Subject: Proxy: Log destuser in the "proxying" line if it's different from username. X-Git-Tag: 1.2.alpha1~64 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d67848ba944a3172c4834c591ddc921fa4ff16b1;p=thirdparty%2Fdovecot%2Fcore.git Proxy: Log destuser in the "proxying" line if it's different from username. --HG-- branch : HEAD --- diff --git a/src/imap-login/imap-proxy.c b/src/imap-login/imap-proxy.c index b38e24da24..104e38fd9e 100644 --- a/src/imap-login/imap-proxy.c +++ b/src/imap-login/imap-proxy.c @@ -50,7 +50,6 @@ static int proxy_input_line(struct imap_client *client, struct ostream *output, const char *line) { string_t *str; - const char *msg; i_assert(!client->destroyed); @@ -91,10 +90,17 @@ static int proxy_input_line(struct imap_client *client, (void)o_stream_send(client->output, str_data(str), str_len(str)); - msg = t_strdup_printf("proxy(%s): started proxying to %s:%u", - client->common.virtual_user, - login_proxy_get_host(client->proxy), - login_proxy_get_port(client->proxy)); + str_truncate(str, 0); + str_printfa(str, "proxy(%s): started proxying to %s:%u", + client->common.virtual_user, + login_proxy_get_host(client->proxy), + login_proxy_get_port(client->proxy)); + if (strcmp(client->common.virtual_user, + client->proxy_user) != 0) { + /* remote username is different, log it */ + str_append_c(str, '/'); + str_append(str, client->proxy_user); + } (void)client_skip_line(client); login_proxy_detach(client->proxy, client->common.input, @@ -104,7 +110,7 @@ static int proxy_input_line(struct imap_client *client, client->common.input = NULL; client->output = NULL; client->common.fd = -1; - client_destroy_success(client, msg); + client_destroy_success(client, str_c(str)); return -1; } else if (strncmp(line, "P ", 2) == 0) { /* If the backend server isn't Dovecot, the error message may diff --git a/src/pop3-login/pop3-proxy.c b/src/pop3-login/pop3-proxy.c index 30a68c16b4..061cc31b83 100644 --- a/src/pop3-login/pop3-proxy.c +++ b/src/pop3-login/pop3-proxy.c @@ -15,7 +15,7 @@ static void proxy_input(struct istream *input, struct ostream *output, struct pop3_client *client) { string_t *str; - const char *line, *msg; + const char *line; if (input == NULL) { if (client->io != NULL) { @@ -102,10 +102,17 @@ static void proxy_input(struct istream *input, struct ostream *output, line = t_strconcat(line, "\r\n", NULL); (void)o_stream_send_str(client->output, line); - msg = t_strdup_printf("proxy(%s): started proxying to %s:%u", - client->common.virtual_user, - login_proxy_get_host(client->proxy), - login_proxy_get_port(client->proxy)); + str = t_str_new(128); + str_printfa(str, "proxy(%s): started proxying to %s:%u", + client->common.virtual_user, + login_proxy_get_host(client->proxy), + login_proxy_get_port(client->proxy)); + if (strcmp(client->common.virtual_user, + client->proxy_user) != 0) { + /* remote username is different, log it */ + str_append_c(str, '/'); + str_append(str, client->proxy_user); + } login_proxy_detach(client->proxy, client->common.input, client->output); @@ -114,7 +121,7 @@ static void proxy_input(struct istream *input, struct ostream *output, client->common.input = NULL; client->output = NULL; client->common.fd = -1; - client_destroy_success(client, msg); + client_destroy_success(client, str_c(str)); return; }