[dovecot-cvs] dovecot/src/auth auth-request.c, 1.51, 1.52 auth.c, 1.28, 1.29 auth.h, 1.20, 1.21

tss-movial at dovecot.org tss-movial at dovecot.org
Mon Mar 27 15:54:27 EEST 2006


Update of /var/lib/cvs/dovecot/src/auth
In directory talvi:/tmp/cvs-serv13212/src/auth

Modified Files:
	auth-request.c auth.c auth.h 
Log Message:
Added auth_master_user_separator setting which allows giving the master username inside the normal username.



Index: auth-request.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/auth-request.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- auth-request.c	25 Mar 2006 10:22:06 -0000	1.51
+++ auth-request.c	27 Mar 2006 12:54:24 -0000	1.52
@@ -562,6 +562,8 @@
 bool auth_request_set_username(struct auth_request *request,
 			       const char *username, const char **error_r)
 {
+	const char *p;
+
 	if (request->original_username == NULL) {
 		/* the username may change later, but we need to use this
 		   username when verifying at least DIGEST-MD5 password */
@@ -573,6 +575,18 @@
 		return TRUE;
 	}
 
+	if (request->auth->master_user_separator != '\0') {
+		/* check if the username contains a master user */
+		p = strchr(username, request->auth->master_user_separator);
+		if (p != NULL) {
+			/* it does, set it. */
+			if (!auth_request_set_login_username(request, p+1,
+							     error_r))
+				return FALSE;
+			username = t_strdup_until(username, p);
+		}
+	}
+
 	if (*username == '\0') {
 		/* Some PAM plugins go nuts with empty usernames */
 		*error_r = "Empty username";

Index: auth.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/auth.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- auth.c	25 Mar 2006 10:32:50 -0000	1.28
+++ auth.c	27 Mar 2006 12:54:24 -0000	1.29
@@ -243,6 +243,10 @@
 			auth->username_translation[(int)(uint8_t)*env] = env[1];
 	}
 
+	env = getenv("MASTER_USER_SEPARATOR");
+	if (env != NULL)
+		auth->master_user_separator = env[0];
+
 	auth->ssl_require_client_cert =
 		getenv("SSL_REQUIRE_CLIENT_CERT") != NULL;
 	auth->ssl_username_from_cert =

Index: auth.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/auth.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- auth.h	25 Mar 2006 10:22:06 -0000	1.20
+++ auth.h	27 Mar 2006 12:54:24 -0000	1.21
@@ -44,7 +44,8 @@
 	const char *default_realm;
 	const char *anonymous_username;
 	char username_chars[256];
-        char username_translation[256];
+	char username_translation[256];
+	char master_user_separator;
 	bool ssl_require_client_cert;
         bool ssl_username_from_cert;
 



More information about the dovecot-cvs mailing list