changeset 8097:4d6cc7bb3426 HEAD

Proxy: Log destuser in the "proxying" line if it's different from username.
author Timo Sirainen <tss@iki.fi>
date Thu, 14 Aug 2008 03:10:34 -0400
parents f35a8a3dc06d
children 8f0111854933
files src/imap-login/imap-proxy.c src/pop3-login/pop3-proxy.c
diffstat 2 files changed, 25 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap-login/imap-proxy.c	Wed Aug 13 18:08:45 2008 -0400
+++ b/src/imap-login/imap-proxy.c	Thu Aug 14 03:10:34 2008 -0400
@@ -50,7 +50,6 @@
 			    struct ostream *output, const char *line)
 {
 	string_t *str;
-	const char *msg;
 
 	i_assert(!client->destroyed);
 
@@ -91,10 +90,17 @@
 		(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 @@
 		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
--- a/src/pop3-login/pop3-proxy.c	Wed Aug 13 18:08:45 2008 -0400
+++ b/src/pop3-login/pop3-proxy.c	Thu Aug 14 03:10:34 2008 -0400
@@ -15,7 +15,7 @@
 			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 @@
 		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 @@
 		client->common.input = NULL;
 		client->output = NULL;
 		client->common.fd = -1;
-		client_destroy_success(client, msg);
+		client_destroy_success(client, str_c(str));
 		return;
 	}