changeset 930:fdcc1cab13ff HEAD

Log username with logins. auth/login processes are getting a bit kludgy..
author Timo Sirainen <tss@iki.fi>
date Thu, 09 Jan 2003 14:19:07 +0200
parents a763b3826762
children d458f318ab02
files src/auth/auth-digest-md5.c src/auth/auth-interface.h src/auth/auth-plain.c src/login/auth-connection.c src/login/auth-connection.h src/login/client-authenticate.c src/login/client.c src/login/client.h
diffstat 8 files changed, 30 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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[]; */
 };
--- 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') {
--- 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)
--- 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;
--- 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);
 }
 
--- 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 <syslog.h>
-
 /* 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);
 }
 
--- 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;