From: Aki Tuomi Date: Wed, 1 Feb 2023 11:58:42 +0000 (+0200) Subject: lib-storage: mail-user - Add event_ prefixed values from userdb as event fields X-Git-Tag: 2.4.0~2995 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65c83d5dcbd6bfaaf6f4772855d020b1ae8a7e66;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mail-user - Add event_ prefixed values from userdb as event fields --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 6fb3d05a35..088ae195db 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -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); diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index e61a66b668..4a5b4c23d4 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -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, diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index 557c5aff98..87b56f400d 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -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);