Hello,

the following patch for the mail_log plugin (source version = 1.2.13) adds a 
new logging event "mailbox_create". 
Perhaps this is also of interest to other people except me ;)

Best regards,
Tobias


Index: src/plugins/mail-log/mail-log-plugin.c
===================================================================
--- src/plugins/mail-log/mail-log-plugin.c      (revision 571)
+++ src/plugins/mail-log/mail-log-plugin.c      (working copy)
@@ -43,12 +43,14 @@
        MAIL_LOG_EVENT_MAILBOX_DELETE   = 0x10,
        MAIL_LOG_EVENT_MAILBOX_RENAME   = 0x20,
        MAIL_LOG_EVENT_FLAG_CHANGE      = 0x40,
-       MAIL_LOG_EVENT_APPEND           = 0x80
+       MAIL_LOG_EVENT_APPEND           = 0x80,
+       MAIL_LOG_EVENT_MAILBOX_CREATE   = 0x100
};
#define MAIL_LOG_DEFAULT_EVENTS \
        (MAIL_LOG_EVENT_DELETE | MAIL_LOG_EVENT_UNDELETE | \
         MAIL_LOG_EVENT_EXPUNGE | MAIL_LOG_EVENT_COPY | \
-        MAIL_LOG_EVENT_MAILBOX_DELETE | MAIL_LOG_EVENT_MAILBOX_RENAME)
+        MAIL_LOG_EVENT_MAILBOX_DELETE | MAIL_LOG_EVENT_MAILBOX_RENAME | \
+        MAIL_LOG_EVENT_MAILBOX_CREATE)

static const char *field_names[] = {
        "uid",
@@ -71,6 +73,7 @@
        "mailbox_rename",
        "flag_change",
        "append",
+       "mailbox_create",
        NULL
};

@@ -597,6 +600,22 @@
        return 0;
}

+static int
+mail_log_mailbox_create(struct mail_storage *storage, const char *name,
+                     bool directory)
+{
+       union mail_storage_module_context *lstorage = MAIL_LOG_CONTEXT(storage);
+
+       if (lstorage->super.mailbox_create(storage, name, directory) < 0)
+               return -1;
+
+       if ((mail_log_set.events & MAIL_LOG_EVENT_MAILBOX_CREATE) == 0)
+                       return 0;
+
+       i_info("Mailbox created: %s", str_sanitize(name, MAILBOX_NAME_LOG_LEN));
+       return 0;
+}
+
static void mail_log_mail_storage_created(struct mail_storage *storage)
{
        union mail_storage_module_context *lstorage;
@@ -604,6 +623,7 @@
        lstorage = p_new(storage->pool, union mail_storage_module_context, 1);
        lstorage->super = storage->v;
        storage->v.mailbox_open = mail_log_mailbox_open;
+       storage->v.mailbox_create = mail_log_mailbox_create;

        MODULE_CONTEXT_SET_SELF(storage, mail_log_storage_module, lstorage);


-- 
Tobias Joch
Dipl.-Informatiker (FH)

Head of Solution Development

inovex GmbH
Karlsruher Straße 71
D-75179 Pforzheim
Tel.      +49 7231 - 31 91 71
Fax      +49 7231 - 31 91 91
Mobil   +49 173 - 31 81 004
tobias.j...@inovex.de
www.inovex.de

Sitz der Gesellschaft: Pforzheim
AG Mannheim, HRB 502126
Geschäftsführer: Stephan Müller

Reply via email to