Mercurial > dovecot > core-2.2
changeset 19384:605dd1749578
*-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).
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 17 Nov 2015 17:26:56 +0200 |
parents | 8fa5d235065b |
children | 392b4cd7a47a |
files | src/login-common/client-common-auth.c src/login-common/client-common.h src/login-common/sasl-server.c |
diffstat | 3 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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); }
--- 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;
--- 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(¶ms, 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, ¶ms, 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 */