diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-activate.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-activate.c index 15ffd9355e31c274671ba2b8d3f532d7def1305e..ae1f90f4e67ad5f76d962f38add8caae8bc4e57d 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-activate.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-activate.c @@ -21,6 +21,7 @@ static int cmd_sieve_activate_run(struct doveadm_sieve_cmd_context *_ctx) struct doveadm_sieve_activate_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_activate_cmd_context, ctx); + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage *storage = _ctx->storage; struct sieve_script *script; enum sieve_error error; @@ -28,7 +29,7 @@ static int cmd_sieve_activate_run(struct doveadm_sieve_cmd_context *_ctx) script = sieve_storage_open_script(storage, ctx->scriptname, NULL); if (script == NULL) { - i_error("Failed to activate Sieve script: %s", + e_error(event, "Failed to activate Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; @@ -64,7 +65,7 @@ static int cmd_sieve_activate_run(struct doveadm_sieve_cmd_context *_ctx) */ ret = sieve_script_activate(script, (time_t)-1); if (ret < 0) { - i_error("Failed to activate Sieve script: %s", + e_error(event, "Failed to activate Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; @@ -77,11 +78,12 @@ static int cmd_sieve_activate_run(struct doveadm_sieve_cmd_context *_ctx) static int cmd_sieve_deactivate_run(struct doveadm_sieve_cmd_context *_ctx) { + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage *storage = _ctx->storage; enum sieve_error error; if (sieve_storage_deactivate(storage, (time_t)-1) < 0) { - i_error("Failed to deactivate Sieve script: %s", + e_error(event, "Failed to deactivate Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-delete.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-delete.c index eea67a0a7534017d60317df50511238e63f93388..da82aabede4d4e7bbaaf6951116375ea1664193b 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-delete.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-delete.c @@ -23,6 +23,7 @@ static int cmd_sieve_delete_run(struct doveadm_sieve_cmd_context *_ctx) struct doveadm_sieve_delete_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_delete_cmd_context, ctx); + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage *storage = _ctx->storage; const ARRAY_TYPE(const_string) *scriptnames = &ctx->scriptnames; const char *scriptname; @@ -47,7 +48,7 @@ static int cmd_sieve_delete_run(struct doveadm_sieve_cmd_context *_ctx) } if (sret < 0) { - i_error("Failed to delete Sieve script: %s", + e_error(event, "Failed to delete Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c index 711e697dbd8aa81cd8847349a605a952822d294f..129c0a52b6ac7bef6220c96bddb55e35dd0ca0c4 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c @@ -21,6 +21,7 @@ static int cmd_sieve_get_run(struct doveadm_sieve_cmd_context *_ctx) { struct doveadm_sieve_get_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_get_cmd_context, ctx); + struct event *event = _ctx->ctx.cctx->event; struct sieve_script *script; struct istream *input; enum sieve_error error; @@ -30,7 +31,7 @@ static int cmd_sieve_get_run(struct doveadm_sieve_cmd_context *_ctx) &error); if (script == NULL || sieve_script_get_stream(script, &input, &error) < 0 ) { - i_error("Failed to open Sieve script: %s", + e_error(event, "Failed to open Sieve script: %s", sieve_storage_get_last_error(_ctx->storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); if (script != NULL) diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-list.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-list.c index 1b2224aa9e62d381b989001494729ad30edc41ca..79adf80bfd6eb3eededaa3dd854aadcfefc9f4d5 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-list.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-list.c @@ -12,6 +12,7 @@ static int cmd_sieve_list_run(struct doveadm_sieve_cmd_context *_ctx) { + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage *storage = _ctx->storage; struct sieve_storage_list_context *lctx; enum sieve_error error; @@ -20,7 +21,7 @@ static int cmd_sieve_list_run(struct doveadm_sieve_cmd_context *_ctx) lctx = sieve_storage_list_init(storage); if (lctx == NULL) { - i_error("Listing Sieve scripts failed: %s", + e_error(event, "Listing Sieve scripts failed: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; @@ -35,7 +36,7 @@ static int cmd_sieve_list_run(struct doveadm_sieve_cmd_context *_ctx) } if (sieve_storage_list_deinit(&lctx) < 0) { - i_error("Listing Sieve scripts failed: %s", + e_error(event, "Listing Sieve scripts failed: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c index 2bd1bbeb1ce464c32ee756c3f532ac7b4ff535e0..35fed10716d79bda678551e1812cf923895616f1 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c @@ -23,6 +23,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) { struct doveadm_sieve_put_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_put_cmd_context, ctx); + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage_save_context *save_ctx; struct sieve_storage *storage = _ctx->storage; struct istream *input = _ctx->ctx.cmd_input; @@ -32,7 +33,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) save_ctx = sieve_storage_save_init(storage, ctx->scriptname, input); if (save_ctx == NULL) { - i_error("Saving failed: %s", + e_error(event, "Saving failed: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); return -1; @@ -48,16 +49,16 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) i_assert(ret == -1); if (input->stream_errno != 0) { - i_error("read(script input) failed: %s", + e_error(event, "read(script input) failed: %s", i_stream_get_error(input)); doveadm_sieve_cmd_failed_error(&ctx->ctx, SIEVE_ERROR_TEMP_FAILURE); } else if (save_failed) { - i_error("Saving failed: %s", + e_error(event, "Saving failed: %s", sieve_storage_get_last_error(storage, NULL)); doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage); } else if (sieve_storage_save_finish(save_ctx) < 0) { - i_error("Saving failed: %s", + e_error(event, "Saving failed: %s", sieve_storage_get_last_error(storage, NULL)); doveadm_sieve_cmd_failed_storage(&ctx->ctx, storage); } else { @@ -78,7 +79,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) /* Check result */ if (script == NULL) { - i_error("Saving failed: %s", + e_error(event, "Saving failed: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; @@ -105,7 +106,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) /* Script is valid; commit it to storage */ ret = sieve_storage_save_commit(&save_ctx); if (ret < 0) { - i_error("Saving failed: %s", + e_error(event, "Saving failed: %s", sieve_storage_get_last_error( storage, &error)); doveadm_sieve_cmd_failed_error( @@ -126,7 +127,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx) NULL); if (script == NULL || sieve_script_activate(script, (time_t)-1) < 0) { - i_error("Failed to activate Sieve script: %s", + e_error(event, "Failed to activate Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c index d3fce4dcee926d1dfbc20debf0000fd06b2825a1..238635917015b4877af9e47c1d761516020752b7 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c @@ -21,6 +21,7 @@ static int cmd_sieve_rename_run(struct doveadm_sieve_cmd_context *_ctx) struct doveadm_sieve_rename_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_rename_cmd_context, ctx); + struct event *event = _ctx->ctx.cctx->event; struct sieve_storage *storage = _ctx->storage; struct sieve_script *script; enum sieve_error error; @@ -28,12 +29,12 @@ static int cmd_sieve_rename_run(struct doveadm_sieve_cmd_context *_ctx) script = sieve_storage_open_script(storage, ctx->oldname, NULL); if (script == NULL) { - i_error("Failed to rename Sieve script: %s", + e_error(event, "Failed to rename Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; } else if (sieve_script_rename(script, ctx->newname) < 0) { - i_error("Failed to rename Sieve script: %s", + e_error(event, "Failed to rename Sieve script: %s", sieve_storage_get_last_error(storage, &error)); doveadm_sieve_cmd_failed_error(_ctx, error); ret = -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c index b4a7d6aa58b659b466f56bf67a0f2aac9d591f98..662c977a34f3f8a3824c332383b560f2e3e778de 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c @@ -100,6 +100,7 @@ doveadm_sieve_cmd_run(struct doveadm_mail_cmd_context *_ctx, { struct doveadm_sieve_cmd_context *ctx = container_of(_ctx, struct doveadm_sieve_cmd_context, ctx); + struct event *event = _ctx->cctx->event; struct sieve_environment svenv; enum sieve_error error; @@ -120,15 +121,15 @@ doveadm_sieve_cmd_run(struct doveadm_mail_cmd_context *_ctx, switch (error) { case SIEVE_ERROR_NOT_POSSIBLE: error = SIEVE_ERROR_NOT_FOUND; - i_error("Failed to open Sieve storage: " + e_error(event, "Failed to open Sieve storage: " "Sieve is disabled for this user"); break; case SIEVE_ERROR_NOT_FOUND: - i_error("Failed to open Sieve storage: " + e_error(event, "Failed to open Sieve storage: " "User cannot manage personal Sieve scripts."); break; default: - i_error("Failed to open Sieve storage."); + e_error(event, "Failed to open Sieve storage."); } doveadm_sieve_cmd_failed_error(ctx, error); ret = -1; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c index 78421f829c3779eb2acf20ba3d9592ba3641af50..eab140447c7e6867f22efe52a7456e4bfce921cf 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c @@ -22,6 +22,7 @@ struct sieve_mail_user { union mail_user_module_context module_ctx; + struct event *event; struct sieve_instance *svinst; struct sieve_storage *sieve_storage; @@ -66,6 +67,7 @@ static void mail_sieve_user_deinit(struct mail_user *user) sieve_deinit(&suser->svinst); } + event_unref(&suser->event); suser->module_ctx.super.deinit(user); } @@ -376,6 +378,7 @@ sieve_attribute_set(struct mailbox_transaction_context *t, const struct mail_attribute_value *value) { struct mail_user *user = t->box->storage->user; + struct sieve_mail_user *suser = SIEVE_USER_CONTEXT(user); union mailbox_module_context *sbox = SIEVE_MAIL_CONTEXT(t->box); if (t->box->storage->user->dsyncing && @@ -383,24 +386,22 @@ sieve_attribute_set(struct mailbox_transaction_context *t, str_begins_with(key, MAILBOX_ATTRIBUTE_PREFIX_SIEVE)) { time_t ts = (value->last_change != 0 ? value->last_change : ioloop_time); + const char *change; if (sieve_attribute_set_sieve(t->box->storage, key, value) < 0) return -1; - - if (user->mail_debug) { - const char *change; - if (value->last_change != 0) { - change = t_strflocaltime( - "(last change: %Y-%m-%d %H:%M:%S)", - value->last_change); - } else { - change = t_strflocaltime( - "(time: %Y-%m-%d %H:%M:%S)", - ioloop_time); - } - i_debug("doveadm-sieve: Assigned value for key `%s' %s", - key, change); + + if (value->last_change != 0) { + change = t_strflocaltime( + "(last change: %Y-%m-%d %H:%M:%S)", + value->last_change); + } else { + change = t_strflocaltime( + "(time: %Y-%m-%d %H:%M:%S)", + ioloop_time); } + e_debug(suser->event, "Assigned value for key `%s' %s", + key, change); /* FIXME: set value len to sieve script size / active name length */ @@ -564,13 +565,14 @@ sieve_attribute_get(struct mailbox *box, { union mailbox_module_context *sbox = SIEVE_MAIL_CONTEXT(box); struct mail_user *user = box->storage->user; + struct sieve_mail_user *suser = SIEVE_USER_CONTEXT(user); int ret; if (box->storage->user->dsyncing && type == MAIL_ATTRIBUTE_TYPE_PRIVATE && str_begins_with(key, MAILBOX_ATTRIBUTE_PREFIX_SIEVE)) { ret = sieve_attribute_get_sieve(box->storage, key, value_r); - if (ret >= 0 && user->mail_debug) { + if (ret >= 0) { struct tm *tm = localtime(&value_r->last_change); char str[256]; const char *timestamp = ""; @@ -581,11 +583,11 @@ sieve_attribute_get(struct mailbox *box, timestamp = str; if (ret > 0) { - i_debug("doveadm-sieve: " + e_debug(user->event, "Retrieved value for key `%s'%s", key, timestamp); } else { - i_debug("doveadm-sieve: " + e_debug(suser->event, "Value missing for key `%s'%s", key, timestamp); } @@ -599,11 +601,11 @@ static int sieve_attribute_iter_script_init(struct sieve_mailbox_attribute_iter *siter) { struct mail_user *user = siter->iter.box->storage->user; + struct sieve_mail_user *suser = SIEVE_USER_CONTEXT(user); struct sieve_storage *svstorage; int ret; - if (user->mail_debug) - i_debug("doveadm-sieve: Iterating Sieve mailbox attributes"); + e_debug(suser->event, "Iterating Sieve mailbox attributes"); ret = mail_sieve_user_init(user, &svstorage); if (ret <= 0) @@ -698,16 +700,14 @@ sieve_attribute_iter_next(struct mailbox_attribute_iter *iter) (struct sieve_mailbox_attribute_iter *)iter; union mailbox_module_context *sbox = SIEVE_MAIL_CONTEXT(iter->box); struct mail_user *user = iter->box->storage->user; + struct sieve_mail_user *suser = SIEVE_USER_CONTEXT(user); const char *key; if (siter->sieve_list != NULL) { key = sieve_attribute_iter_next_script(siter); if (key != NULL) { - if (user->mail_debug) { - i_debug("doveadm-sieve: " - "Iterating Sieve mailbox attribute: %s", - key); - } + e_debug(suser->event, + "Iterating Sieve mailbox attribute: %s", key); return key; } } @@ -743,6 +743,9 @@ static void sieve_mail_user_created(struct mail_user *user) user->vlast = &suser->module_ctx.super; v->deinit = mail_sieve_user_deinit; MODULE_CONTEXT_SET(user, sieve_user_module, suser); + + suser->event = event_create(user->event); + event_set_append_log_prefix(suser->event, "doveadm-sieve: "); } static void sieve_mailbox_allocated(struct mailbox *box)