From: Timo Sirainen Date: Sat, 28 Apr 2012 14:41:14 +0000 (+0300) Subject: auth: Include session ID in log line prefix. X-Git-Tag: 2.1.6~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f016dec9837e6a41867708e4b89ca5308dedab05;p=thirdparty%2Fdovecot%2Fcore.git auth: Include session ID in log line prefix. --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index a6394fe32f..e34f71aaeb 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -237,6 +237,8 @@ bool auth_request_import_info(struct auth_request *request, request->local_port = atoi(value); else if (strcmp(key, "rport") == 0) request->remote_port = atoi(value); + else if (strcmp(key, "session") == 0) + request->session_id = p_strdup(request->pool, value); else return FALSE; return TRUE; @@ -1856,6 +1858,8 @@ static void get_log_prefix(string_t *str, struct auth_request *auth_request, } if (auth_request->requested_login_user != NULL) str_append(str, ",master"); + if (auth_request->session_id != NULL) + str_printfa(str, ",<%s>", auth_request->session_id); str_append(str, "): "); } diff --git a/src/auth/auth-request.h b/src/auth/auth-request.h index 1ba3c768f3..c218979949 100644 --- a/src/auth/auth-request.h +++ b/src/auth/auth-request.h @@ -71,7 +71,7 @@ struct auth_request { unsigned int id; time_t last_access; - const char *service, *mech_name; + const char *service, *mech_name, *session_id; struct ip_addr local_ip, remote_ip; unsigned int local_port, remote_port; diff --git a/src/lib-auth/auth-client-request.c b/src/lib-auth/auth-client-request.c index 430292a626..ceb79a6798 100644 --- a/src/lib-auth/auth-client-request.c +++ b/src/lib-auth/auth-client-request.c @@ -44,6 +44,10 @@ static void auth_server_send_new_request(struct auth_server_connection *conn, if ((info->flags & AUTH_REQUEST_FLAG_VALID_CLIENT_CERT) != 0) str_append(str, "\tvalid-client-cert"); + if (info->session_id != NULL) { + str_append(str, "\tsession="); + str_tabescape_write(str, info->session_id); + } if (info->cert_username != NULL) { str_append(str, "\tcert_username="); str_tabescape_write(str, info->cert_username); @@ -82,6 +86,8 @@ auth_client_request_new(struct auth_client *client, request->request_info = *request_info; request->request_info.mech = p_strdup(pool, request_info->mech); request->request_info.service = p_strdup(pool, request_info->service); + request->request_info.session_id = + p_strdup_empty(pool, request_info->session_id); request->request_info.cert_username = p_strdup_empty(pool, request_info->cert_username); request->request_info.initial_resp_base64 = diff --git a/src/lib-auth/auth-client.h b/src/lib-auth/auth-client.h index 77904ac87e..6282aa02fa 100644 --- a/src/lib-auth/auth-client.h +++ b/src/lib-auth/auth-client.h @@ -37,6 +37,7 @@ struct auth_connect_id { struct auth_request_info { const char *mech; const char *service; + const char *session_id; const char *cert_username; enum auth_request_flags flags; diff --git a/src/login-common/login-settings.c b/src/login-common/login-settings.c index ff028eebbe..df34108bea 100644 --- a/src/login-common/login-settings.c +++ b/src/login-common/login-settings.c @@ -56,7 +56,7 @@ static const struct setting_define login_setting_defines[] = { static const struct login_settings login_default_settings = { .login_trusted_networks = "", .login_greeting = PACKAGE_NAME" ready.", - .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c", + .login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}>", .login_log_format = "%$: %s", .login_access_sockets = "", .director_username_hash = "%u", diff --git a/src/login-common/sasl-server.c b/src/login-common/sasl-server.c index 3ae0e519ea..b0faba65bf 100644 --- a/src/login-common/sasl-server.c +++ b/src/login-common/sasl-server.c @@ -318,6 +318,7 @@ void sasl_server_auth_begin(struct client *client, memset(&info, 0, sizeof(info)); info.mech = mech->name; info.service = service; + info.session_id = client_get_session_id(client); info.cert_username = client->ssl_proxy == NULL ? NULL : ssl_proxy_get_peer_name(client->ssl_proxy); info.flags = client_get_auth_flags(client);