]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mail-user - Add event_ prefixed values from userdb as event fields
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 1 Feb 2023 11:58:42 +0000 (13:58 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 8 Feb 2023 10:57:25 +0000 (10:57 +0000)
src/lib-storage/mail-storage-service.c
src/lib-storage/mail-user.c
src/lib-storage/mail-user.h

index 6fb3d05a3565976e730ce8feff4c0d02939c20d4..088ae195db33d01784d02917edc6be034bab91f4 100644 (file)
@@ -728,6 +728,7 @@ mail_storage_service_init_post(struct mail_storage_service_ctx *ctx,
 
        mail_user->userdb_fields = user->input.userdb_fields == NULL ? NULL :
                p_strarray_dup(mail_user->pool, user->input.userdb_fields);
+       mail_user_add_event_fields(mail_user);
 
        string_t *str = t_str_new(64);
 
index e61a66b66896f21481786c4cfb563b8e7438d407..4a5b4c23d4d1cee952ba820ddde51df7293e2f0c 100644 (file)
@@ -12,6 +12,7 @@
 #include "safe-mkstemp.h"
 #include "str.h"
 #include "strescape.h"
+#include "strfuncs.h"
 #include "var-expand.h"
 #include "settings-parser.h"
 #include "iostream-ssl.h"
@@ -47,6 +48,19 @@ static void mail_user_deinit_pre_base(struct mail_user *user ATTR_UNUSED)
 {
 }
 
+void mail_user_add_event_fields(struct mail_user *user)
+{
+       if (user->userdb_fields == NULL)
+               return;
+       for (unsigned int i = 0; user->userdb_fields[i] != NULL; i++) {
+               const char *field = user->userdb_fields[i];
+               const char *key, *value;
+               t_split_key_value_eq(field, &key, &value);
+               if (str_begins(key, "event_", &key))
+                       event_add_str(user->event, key, value);
+       }
+}
+
 static struct mail_user *
 mail_user_alloc_int(struct mail_storage_service_user *service_user,
                    struct setting_parser_context *unexpanded_set_parser,
index 557c5aff98307f3539324c9d1c9e0d05b2ebfed0..87b56f400d6552bbc1cff64acd1e71dbf4a897df 100644 (file)
@@ -213,6 +213,9 @@ const char *const *mail_user_get_alt_usernames(struct mail_user *user);
 struct mail_storage *
 mail_user_get_storage_class(struct mail_user *user, const char *name);
 
+/* Import any event_ fields from userdb fields to mail user event. */
+void mail_user_add_event_fields(struct mail_user *user);
+
 /* Initialize SSL client settings from mail_user settings. */
 void mail_user_init_ssl_client_settings(struct mail_user *user,
        struct ssl_iostream_settings *ssl_set_r);