]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Add event_ prefixed values from auth as event fields
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 1 Feb 2023 11:53:42 +0000 (13:53 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 8 Feb 2023 10:57:25 +0000 (10:57 +0000)
src/lib-auth-client/auth-client-request.c
src/login-common/client-common-auth.c
src/login-common/sasl-server.c

index a67c26f8d2bc45be84ff58d432a02a348cd216e1..788a1f4c2b75f9072576affb147e185eae1f358b 100644 (file)
@@ -6,6 +6,7 @@
 #include "strescape.h"
 #include "ostream.h"
 #include "auth-client-private.h"
+#include "strfuncs.h"
 
 static void auth_server_send_new_request(struct auth_client_connection *conn,
                                         struct auth_client_request *request,
@@ -328,8 +329,16 @@ void auth_client_request_server_input(struct auth_client_request *request,
        }
 
        for (tmp = args; *tmp != NULL; tmp++) {
-               (void)str_begins(*tmp, "resp=", &base64_data);
-               args_parse_user(request, *tmp);
+               const char *key;
+               const char *value;
+               t_split_key_value_eq(*tmp, &key, &value);
+               if (str_begins(key, "event_", &key)) {
+                       event_add_str(request->event, key, value);
+               } else if (strcmp(key, "resp") == 0) {
+                       base64_data = value;
+               } else {
+                       args_parse_user(request, *tmp);
+               }
        }
 
        switch (status) {
index ec7850d938b796c0efcd994021afa77f518ece50..96226f4804b242ea5601d116b3d90a2506b089c7 100644 (file)
@@ -206,6 +206,9 @@ static bool client_auth_parse_args(const struct client *client, bool success,
                        }
                } else if (str_begins_with(key, "forward_")) {
                        /* these are passed to upstream */
+               } else if (str_begins(key, "event_", &key)) {
+                       /* add key to event */
+                       event_add_str(client->event_auth, key, value);
                } else
                        e_debug(client->event_auth,
                                "Ignoring unknown passdb extra field: %s", key);
index faa0b9e466cdb7484ee9a7fca1046ff5fe37ee05..d9c66efc401d9bb3cbb085dcfaca4035b3a05662 100644 (file)
@@ -367,6 +367,8 @@ authenticate_callback(struct auth_client_request *request,
                                nologin = TRUE;
                        } else if (strcmp(key, "anonymous") == 0) {
                                client->auth_anonymous = TRUE;
+                       } else if (str_begins(args[i], "event_", &key)) {
+                               event_add_str(client->event_auth, key, value);
                        } else if (login_binary->sasl_support_final_reply &&
                                   strcmp(key, "resp") == 0) {
                                client->sasl_final_resp =