From: Stephan Bosch Date: Wed, 22 Mar 2023 17:30:36 +0000 (+0100) Subject: auth: sasl-server - Make settings available to mechansims X-Git-Tag: 2.4.2~233 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=974558a0a16f773e1c72495f1f2c313dcfb51b5b;p=thirdparty%2Fdovecot%2Fcore.git auth: sasl-server - Make settings available to mechansims --- diff --git a/src/auth/auth-sasl.c b/src/auth/auth-sasl.c index 9bcbd5f9c5..2071b0ba6b 100644 --- a/src/auth/auth-sasl.c +++ b/src/auth/auth-sasl.c @@ -1,6 +1,7 @@ /* Copyright (c) 2023 Dovecot authors, see the included COPYING file */ #include "lib.h" +#include "settings-parser.h" #include "sasl-server-private.h" // FIXME: remove #include "auth.h" #include "auth-common.h" @@ -375,10 +376,13 @@ auth_sasl_mech_module_find(const char *name) * Instance */ -void auth_sasl_instance_init(struct auth *auth) +void auth_sasl_instance_init(struct auth *auth, + const struct auth_settings *set) { const struct sasl_server_settings sasl_set = { + .realms = settings_boollist_get(&set->realms), .event_parent = auth_event, + .verbose = set->verbose, }; auth->sasl_inst = diff --git a/src/auth/auth-sasl.h b/src/auth/auth-sasl.h index 1031d69644..c9d1b9f298 100644 --- a/src/auth/auth-sasl.h +++ b/src/auth/auth-sasl.h @@ -40,7 +40,8 @@ auth_sasl_mech_module_find(const char *name); * Instance */ -void auth_sasl_instance_init(struct auth *auth); +void auth_sasl_instance_init(struct auth *auth, + const struct auth_settings *set); void auth_sasl_instance_deinit(struct auth *auth); /* diff --git a/src/auth/auth.c b/src/auth/auth.c index 7fb9218632..813183f08f 100644 --- a/src/auth/auth.c +++ b/src/auth/auth.c @@ -361,7 +361,7 @@ auth_preinit(const struct auth_settings *set, const char *protocol, auth_userdb_preinit(auth, &userdb_dummy_set); } - auth_sasl_instance_init(auth); + auth_sasl_instance_init(auth, set); return auth; } diff --git a/src/auth/sasl-server-private.h b/src/auth/sasl-server-private.h index e9576b123c..6ef13ebb51 100644 --- a/src/auth/sasl-server-private.h +++ b/src/auth/sasl-server-private.h @@ -25,6 +25,7 @@ struct sasl_server_instance { int refcount; struct sasl_server_instance *prev, *next; struct event *event; + struct sasl_server_settings set; unsigned int requests; }; diff --git a/src/auth/sasl-server-protected.h b/src/auth/sasl-server-protected.h index ba1da40e6f..4bbc496b5e 100644 --- a/src/auth/sasl-server-protected.h +++ b/src/auth/sasl-server-protected.h @@ -48,6 +48,8 @@ struct sasl_server_mech_request { struct event *mech_event; const char *protocol; + const struct sasl_server_settings *set; + // FIXME: To be removed struct auth_request *request; }; diff --git a/src/auth/sasl-server-request.c b/src/auth/sasl-server-request.c index 149c124d89..03f2dcbf46 100644 --- a/src/auth/sasl-server-request.c +++ b/src/auth/sasl-server-request.c @@ -41,6 +41,7 @@ void sasl_server_request_create(struct sasl_server_req_ctx *rctx, mreq->pool = pool; mreq->req = req; mreq->request = request; + mreq->set = &sinst->set; mreq->mech = mech; mreq->mech_event = event_parent; mreq->protocol = p_strdup(mreq->pool, protocol); diff --git a/src/auth/sasl-server.c b/src/auth/sasl-server.c index 25cc5cf9f9..fe38ccbd31 100644 --- a/src/auth/sasl-server.c +++ b/src/auth/sasl-server.c @@ -27,6 +27,10 @@ sasl_server_instance_create(struct sasl_server *server, sinst->refcount = 1; sinst->server = server; + sinst->set = *set; + if (set->realms != NULL) + sinst->set.realms = p_strarray_dup(pool, set->realms); + if (set->event_parent == NULL) sinst->event = event_create(server->event); else { diff --git a/src/auth/sasl-server.h b/src/auth/sasl-server.h index ae5773dd4f..eadbd57625 100644 --- a/src/auth/sasl-server.h +++ b/src/auth/sasl-server.h @@ -69,8 +69,13 @@ struct sasl_passdb_result { }; struct sasl_server_settings { + const char *const *realms; + /* Event to use for the SASL server instance. */ struct event *event_parent; + + /* Enable logging verbosity */ + bool verbose:1; }; /*