# HG changeset patch # User Timo Sirainen # Date 1042114747 -7200 # Node ID fdcc1cab13ff35a23d7b015acbe64b13eeff0def # Parent a763b3826762bf911cf4bf2221ba53c0e1edb5d5 Log username with logins. auth/login processes are getting a bit kludgy.. diff -r a763b3826762 -r fdcc1cab13ff src/auth/auth-digest-md5.c --- a/src/auth/auth-digest-md5.c Thu Jan 09 14:05:26 2003 +0200 +++ b/src/auth/auth-digest-md5.c Thu Jan 09 14:19:07 2003 +0200 @@ -536,6 +536,10 @@ if (auth->authenticated) { /* authentication is done, we were just waiting the last word from client */ + if (strocpy(reply.virtual_user, auth->cookie_reply.virtual_user, + sizeof(reply.virtual_user)) < 0) + i_panic("virtual_user overflow"); + auth->cookie_reply.success = TRUE; reply.result = AUTH_RESULT_SUCCESS; callback(&reply, NULL, context); diff -r a763b3826762 -r fdcc1cab13ff src/auth/auth-interface.h --- a/src/auth/auth-interface.h Thu Jan 09 14:05:26 2003 +0200 +++ b/src/auth/auth-interface.h Thu Jan 09 14:19:07 2003 +0200 @@ -68,6 +68,8 @@ unsigned char cookie[AUTH_COOKIE_SIZE]; enum auth_result result; + char virtual_user[AUTH_MAX_VUSER_LEN]; /* set at SUCCESS */ + size_t data_size; /* unsigned char data[]; */ }; diff -r a763b3826762 -r fdcc1cab13ff src/auth/auth-plain.c --- a/src/auth/auth-plain.c Thu Jan 09 14:05:26 2003 +0200 +++ b/src/auth/auth-plain.c Thu Jan 09 14:19:07 2003 +0200 @@ -46,6 +46,11 @@ if (userinfo->verify_plain(user, pass, cookie_reply)) { cookie_reply->success = TRUE; reply.result = AUTH_RESULT_SUCCESS; + + if (strocpy(reply.virtual_user, + cookie_reply->virtual_user, + sizeof(reply.virtual_user)) < 0) + i_panic("virtual_user overflow"); } if (*pass != '\0') { diff -r a763b3826762 -r fdcc1cab13ff src/login/auth-connection.c --- a/src/login/auth-connection.c Thu Jan 09 14:05:26 2003 +0200 +++ b/src/login/auth-connection.c Thu Jan 09 14:19:07 2003 +0200 @@ -106,7 +106,7 @@ request->callback(request, request->conn->auth_process, AUTH_RESULT_INTERNAL_FAILURE, (const unsigned char *) "Authentication process died", - 0, request->context); + 0, NULL, request->context); request_destroy(request); } @@ -209,7 +209,7 @@ t_push(); request->callback(request, request->conn->auth_process, reply_data->result, data, reply_data->data_size, - request->context); + reply_data->virtual_user, request->context); t_pop(); if (reply_data->result != AUTH_RESULT_CONTINUE) diff -r a763b3826762 -r fdcc1cab13ff src/login/auth-connection.h --- a/src/login/auth-connection.h Thu Jan 09 14:05:26 2003 +0200 +++ b/src/login/auth-connection.h Thu Jan 09 14:19:07 2003 +0200 @@ -8,7 +8,8 @@ typedef void (*AuthCallback)(struct auth_request *request, unsigned int auth_process, enum auth_result result, const unsigned char *reply_data, - size_t reply_data_size, void *context); + size_t reply_data_size, const char *virtual_user, + void *context); struct auth_request { enum auth_mech mech; diff -r a763b3826762 -r fdcc1cab13ff src/login/client-authenticate.c --- a/src/login/client-authenticate.c Thu Jan 09 14:05:26 2003 +0200 +++ b/src/login/client-authenticate.c Thu Jan 09 14:19:07 2003 +0200 @@ -83,7 +83,8 @@ switch (result) { case MASTER_RESULT_SUCCESS: - client_destroy(client, "Logged in."); + client_destroy(client, t_strconcat("Login: ", + client->virtual_user, NULL)); client_unref(client); break; case MASTER_RESULT_INTERNAL_FAILURE: @@ -117,7 +118,8 @@ static int auth_callback(struct auth_request *request, unsigned int auth_process, enum auth_result result, const unsigned char *reply_data, - size_t reply_data_size, void *context) + size_t reply_data_size, const char *virtual_user, + void *context) { struct client *client = context; @@ -129,6 +131,9 @@ case AUTH_RESULT_SUCCESS: client->auth_request = NULL; + i_free(client->virtual_user); + client->virtual_user = i_strdup(virtual_user); + master_request_imap(client->fd, auth_process, client->cmd_tag, request->cookie, &client->ip, master_callback, client); @@ -166,14 +171,15 @@ static void login_callback(struct auth_request *request, unsigned int auth_process, enum auth_result result, const unsigned char *reply_data, - size_t reply_data_size, void *context) + size_t reply_data_size, const char *virtual_user, + void *context) { struct client *client = context; const void *ptr; size_t size; if (auth_callback(request, auth_process, result, - reply_data, reply_data_size, context)) { + reply_data, reply_data_size, virtual_user, context)) { ptr = buffer_get_data(client->plain_login, &size); auth_continue_request(request, ptr, size); @@ -231,12 +237,13 @@ unsigned int auth_process, enum auth_result result, const unsigned char *reply_data, - size_t reply_data_size, void *context) + size_t reply_data_size, + const char *virtual_user, void *context) { struct client *client = context; if (auth_callback(request, auth_process, result, - reply_data, reply_data_size, context)) + reply_data, reply_data_size, virtual_user, context)) client_send_auth_data(client, reply_data, reply_data_size); } diff -r a763b3826762 -r fdcc1cab13ff src/login/client.c --- a/src/login/client.c Thu Jan 09 14:05:26 2003 +0200 +++ b/src/login/client.c Thu Jan 09 14:19:07 2003 +0200 @@ -14,8 +14,6 @@ #include "client-authenticate.h" #include "ssl-proxy.h" -#include - /* max. size of one parameter in line */ #define MAX_INBUF_SIZE 512 @@ -357,6 +355,7 @@ net_disconnect(client->fd); client->fd = -1; + i_free(client->virtual_user); client_unref(client); } diff -r a763b3826762 -r fdcc1cab13ff src/login/client.h --- a/src/login/client.h Thu Jan 09 14:05:26 2003 +0200 +++ b/src/login/client.h Thu Jan 09 14:19:07 2003 +0200 @@ -19,6 +19,7 @@ buffer_t *plain_login; struct auth_request *auth_request; + char *virtual_user; unsigned int tls:1; unsigned int cmd_finished:1;