dovecot-2.2: auth: Added %{session_pid} variable for userdb look...

dovecot at dovecot.org dovecot at dovecot.org
Sat Nov 2 13:52:45 EET 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/9ef23179892a
changeset: 16909:9ef23179892a
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Nov 02 13:52:30 2013 +0200
description:
auth: Added %{session_pid} variable for userdb lookups in login requests.
session_pid is now always sent to auth process. A new request_auth_token
parameter was added to specify if auth_token should be returned or not.

diffstat:

 src/auth/auth-request-handler.c    |  3 ++-
 src/auth/auth-request.c            |  7 ++++++-
 src/auth/auth-request.h            |  3 ++-
 src/lib-master/master-login-auth.c |  3 ++-
 4 files changed, 12 insertions(+), 4 deletions(-)

diffs (78 lines):

diff -r 58dfed53ab43 -r 9ef23179892a src/auth/auth-request-handler.c
--- a/src/auth/auth-request-handler.c	Sat Nov 02 13:34:17 2013 +0200
+++ b/src/auth/auth-request-handler.c	Sat Nov 02 13:52:30 2013 +0200
@@ -669,7 +669,8 @@
 			str_append(str, "\tanonymous");
 		}
 		/* generate auth_token when master service provided session_pid */
-		if (request->session_pid != (pid_t)-1) {
+		if (request->request_auth_token &&
+		    request->session_pid != (pid_t)-1) {
 			const char *auth_token =
 				auth_token_get(request->service,
 					       dec2str(request->session_pid),
diff -r 58dfed53ab43 -r 9ef23179892a src/auth/auth-request.c
--- a/src/auth/auth-request.c	Sat Nov 02 13:34:17 2013 +0200
+++ b/src/auth/auth-request.c	Sat Nov 02 13:52:30 2013 +0200
@@ -331,7 +331,9 @@
 	if (strcmp(key, "session_pid") == 0) {
 		if (str_to_pid(value, &pid) == 0)
 			request->session_pid = pid;
-	} else
+	} else if (strcmp(key, "request_auth_token") == 0)
+		request->request_auth_token = TRUE;
+	else
 		return FALSE;
 	return TRUE;
 }
@@ -1950,6 +1952,7 @@
 	{ '\0', NULL, "domain_first" },
 	{ '\0', NULL, "domain_last" },
 	{ '\0', NULL, "master_user" },
+	{ '\0', NULL, "session_pid" },
 	/* be sure to update AUTH_REQUEST_VAR_TAB_COUNT */
 	{ '\0', NULL, NULL }
 };
@@ -2037,6 +2040,8 @@
 		tab[24].value = escape_func(tab[24].value+1, auth_request);
 	tab[25].value = auth_request->master_user == NULL ? NULL :
 		escape_func(auth_request->master_user, auth_request);
+	tab[26].value = auth_request->session_pid == (pid_t)-1 ? NULL :
+		dec2str(auth_request->session_pid);
 	return ret_tab;
 }
 
diff -r 58dfed53ab43 -r 9ef23179892a src/auth/auth-request.h
--- a/src/auth/auth-request.h	Sat Nov 02 13:34:17 2013 +0200
+++ b/src/auth/auth-request.h	Sat Nov 02 13:52:30 2013 +0200
@@ -108,6 +108,7 @@
 	unsigned int no_penalty:1;
 	unsigned int valid_client_cert:1;
 	unsigned int cert_username:1;
+	unsigned int request_auth_token:1;
 
 	/* success/failure states: */
 	unsigned int successful:1;
@@ -143,7 +144,7 @@
 #define AUTH_REQUEST_VAR_TAB_USER_IDX 0
 #define AUTH_REQUEST_VAR_TAB_USERNAME_IDX 1
 #define AUTH_REQUEST_VAR_TAB_DOMAIN_IDX 2
-#define AUTH_REQUEST_VAR_TAB_COUNT 26
+#define AUTH_REQUEST_VAR_TAB_COUNT 27
 extern const struct var_expand_table
 auth_request_var_expand_static_tab[AUTH_REQUEST_VAR_TAB_COUNT+1];
 
diff -r 58dfed53ab43 -r 9ef23179892a src/lib-master/master-login-auth.c
--- a/src/lib-master/master-login-auth.c	Sat Nov 02 13:34:17 2013 +0200
+++ b/src/lib-master/master-login-auth.c	Sat Nov 02 13:52:30 2013 +0200
@@ -440,8 +440,9 @@
 	str_printfa(str, "REQUEST\t%u\t%u\t%u\t", req->id,
 		    req->client_pid, req->auth_id);
 	binary_to_hex_append(str, req->cookie, sizeof(req->cookie));
+	str_printfa(str, "\tsession_pid=%s", my_pid);
 	if (auth->request_auth_token)
-		str_printfa(str, "\tsession_pid=%s", my_pid);
+		str_append(str, "\trequest_auth_token");
 	str_append_c(str, '\n');
 	o_stream_nsend(auth->output, str_data(str), str_len(str));
 }


More information about the dovecot-cvs mailing list