dovecot-2.2: *-login: Added postlogin_socket=path passdb extra f...

dovecot at dovecot.org dovecot at dovecot.org
Tue Nov 17 15:27:25 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/605dd1749578
changeset: 19384:605dd1749578
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Nov 17 17:26:56 2015 +0200
description:
*-login: Added postlogin_socket=path passdb extra field.
By default e.g. "imap" or "pop3" is the post-login socket, but this can
override it. This could be used for example for per-user debugging (e.g.
setting executable to be run via strace or valgrind).

diffstat:

 src/login-common/client-common-auth.c |  5 +++--
 src/login-common/client-common.h      |  2 +-
 src/login-common/sasl-server.c        |  5 +++++
 3 files changed, 9 insertions(+), 3 deletions(-)

diffs (56 lines):

diff -r 8fa5d235065b -r 605dd1749578 src/login-common/client-common-auth.c
--- a/src/login-common/client-common-auth.c	Tue Nov 17 17:23:31 2015 +0200
+++ b/src/login-common/client-common-auth.c	Tue Nov 17 17:26:56 2015 +0200
@@ -133,8 +133,9 @@
 				PROXY_SSL_FLAG_STARTTLS;
 			if (strcmp(value, "any-cert") == 0)
 				reply_r->ssl_flags |= PROXY_SSL_FLAG_ANY_CERT;
-		} else if (strcmp(key, "user") == 0) {
-			/* already handled in login-common */
+		} else if (strcmp(key, "user") == 0 ||
+			   strcmp(key, "postlogin_socket") == 0) {
+			/* already handled in sasl-server.c */
 		} else if (client->set->auth_debug)
 			i_debug("Ignoring unknown passdb extra field: %s", key);
 	}
diff -r 8fa5d235065b -r 605dd1749578 src/login-common/client-common.h
--- a/src/login-common/client-common.h	Tue Nov 17 17:23:31 2015 +0200
+++ b/src/login-common/client-common.h	Tue Nov 17 17:26:56 2015 +0200
@@ -113,7 +113,7 @@
 	struct ssl_proxy *ssl_proxy;
 	const struct login_settings *set;
 	const struct master_service_ssl_settings *ssl_set;
-	const char *session_id, *listener_name;
+	const char *session_id, *listener_name, *postlogin_socket_path;
 
 	int fd;
 	struct istream *input;
diff -r 8fa5d235065b -r 605dd1749578 src/login-common/sasl-server.c
--- a/src/login-common/sasl-server.c	Tue Nov 17 17:23:31 2015 +0200
+++ b/src/login-common/sasl-server.c	Tue Nov 17 17:26:56 2015 +0200
@@ -155,6 +155,7 @@
 
 	memset(&params, 0, sizeof(params));
 	params.client_fd = client->fd;
+	params.socket_path = client->postlogin_socket_path;
 	params.request = req;
 	params.data = buf->data;
 	master_auth_request_full(master_auth, &params, master_auth_callback,
@@ -246,6 +247,7 @@
 		client->auth_request = NULL;
 		client->auth_successes++;
 		client->auth_passdb_args = p_strarray_dup(client->pool, args);
+		client->postlogin_socket_path = NULL;
 
 		nologin = FALSE;
 		for (i = 0; args[i] != NULL; i++) {
@@ -261,6 +263,9 @@
 				i_free(client->virtual_auth_user);
 				client->virtual_auth_user =
 					i_strdup(args[i] + 10);
+			} else if (strncmp(args[i], "postlogin_socket=", 17) == 0) {
+				client->postlogin_socket_path =
+					p_strdup(client->pool, args[i] + 17);
 			} else if (strcmp(args[i], "nologin") == 0 ||
 				   strcmp(args[i], "proxy") == 0) {
 				/* user can't login */


More information about the dovecot-cvs mailing list