]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: sasl-server - Make settings available to mechansims
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 22 Mar 2023 17:30:36 +0000 (18:30 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
src/auth/auth-sasl.c
src/auth/auth-sasl.h
src/auth/auth.c
src/auth/sasl-server-private.h
src/auth/sasl-server-protected.h
src/auth/sasl-server-request.c
src/auth/sasl-server.c
src/auth/sasl-server.h

index 9bcbd5f9c5cc70392dcb0bb576235bc91d4f3830..2071b0ba6b012663881a0e6f66bae12dc4af065d 100644 (file)
@@ -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 =
index 1031d6964442315f959016b163d115712104cbe9..c9d1b9f29814c3006c2c3acb063ccbedf895453c 100644 (file)
@@ -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);
 
 /*
index 7fb92186328b10ae13143c00d6fdf4d3d1553e7a..813183f08f50389c24f9aa86671a05a8dcc9adaf 100644 (file)
@@ -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;
 }
index e9576b123c88b0acd47cf0eacf32996546d3952b..6ef13ebb51f5c6034a393d5f9da0bf35997df691 100644 (file)
@@ -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;
 };
index ba1da40e6f0198cafa8df2033dd095d94350565f..4bbc496b5e93175383888f16b779e7bfffc3eeef 100644 (file)
@@ -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;
 };
index 149c124d89bb9ab337c5e87b4ad099fa7f596251..03f2dcbf46e9c1153aa98a2e20a13a832d3070de 100644 (file)
@@ -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);
index 25cc5cf9f9711f855af0b2526bbf7ff8d961c131..fe38ccbd3159ea613d58a522f967168ca56e1733 100644 (file)
@@ -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 {
index ae5773dd4fe141cfc53073117676cc70b3f93c84..eadbd57625f463c869de885e529863ea03623a4e 100644 (file)
@@ -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;
 };
 
 /*