X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsieve%2Fserv_sieve.c;h=30e03100759b8272827a7792facf871325be1b96;hb=dc48bee02071eb3eb2f535e203c36c528e1547a8;hp=40779c598cd1ffea3624841b934c1ff53d540f0e;hpb=964604f73db61b2c82421eef207e05d0e9db0f82;p=citadel.git diff --git a/citadel/modules/sieve/serv_sieve.c b/citadel/modules/sieve/serv_sieve.c index 40779c598..30e031007 100644 --- a/citadel/modules/sieve/serv_sieve.c +++ b/citadel/modules/sieve/serv_sieve.c @@ -2,7 +2,7 @@ * This module glues libSieve to the Citadel server in order to implement * the Sieve mailbox filtering language (RFC 3028). * - * Copyright (c) 1987-2015 by the citadel.org team + * Copyright (c) 1987-2018 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -216,7 +216,6 @@ int ctdl_discard(sieve2_context_t *s, void *my) } - /* * Callback function to indicate that a message should be rejected */ @@ -267,7 +266,6 @@ int ctdl_reject(sieve2_context_t *s, void *my) } - /* * Callback function to indicate that a vacation message should be generated */ @@ -356,11 +354,11 @@ int ctdl_vacation(sieve2_context_t *s, void *my) } +#if 0 /* * Callback function to parse addresses per local system convention * It is disabled because we don't support subaddresses. */ -#if 0 int ctdl_getsubaddress(sieve2_context_t *s, void *my) { struct ctdl_sieve *cs = (struct ctdl_sieve *)my; @@ -418,16 +416,17 @@ int ctdl_getenvelope(sieve2_context_t *s, void *my) } +#if 0 /* * Callback function to fetch message body * (Uncomment the code if we implement this extension) * + */ int ctdl_getbody(sieve2_context_t *s, void *my) { return SIEVE2_ERROR_UNSUPPORTED; } - * - */ +#endif /* @@ -483,6 +482,7 @@ int ctdl_getscript(sieve2_context_t *s, void *my) { return SIEVE2_ERROR_GETSCRIPT; } + /* * Callback function to retrieve message headers */ @@ -496,7 +496,6 @@ int ctdl_getheaders(sieve2_context_t *s, void *my) { } - /* * Add a room to the list of those rooms which potentially require sieve processing */ @@ -515,7 +514,6 @@ void sieve_queue_room(struct ctdlroom *which_room) { } - /* * Perform sieve processing for one message (called by sieve_do_room() for each message) */ @@ -529,9 +527,8 @@ void sieve_do_msg(long msgnum, void *userdata) { size_t headers_len = 0; int len = 0; - if (u == NULL) - { - syslog(LOG_EMERG, "Can't process message <%ld> without userdata!", msgnum); + if (u == NULL) { + syslog(LOG_ERR, "Can't process message <%ld> without userdata!", msgnum); return; } @@ -578,9 +575,6 @@ void sieve_do_msg(long msgnum, void *userdata) { if (!CM_IsEmpty(msg, erFc822Addr)) { safestrncpy(my.sender, msg->cm_fields[erFc822Addr], sizeof my.sender); } - else if ( (!CM_IsEmpty(msg, eAuthor)) && (!CM_IsEmpty(msg, eNodeName)) ) { - snprintf(my.sender, sizeof my.sender, "%s@%s", msg->cm_fields[eAuthor], msg->cm_fields[eNodeName]); - } else if (!CM_IsEmpty(msg, eAuthor)) { safestrncpy(my.sender, msg->cm_fields[eAuthor], sizeof my.sender); } @@ -649,7 +643,7 @@ void sieve_do_msg(long msgnum, void *userdata) { syslog(LOG_DEBUG, "Calling sieve2_execute()"); res = sieve2_execute(sieve2_context, &my); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_execute() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_execute() returned %d: %s", res, sieve2_errstr(res)); } free(my.rfc822headers); @@ -905,7 +899,7 @@ void sieve_do_room(char *roomname) { syslog(LOG_DEBUG, "Rules found. Performing Sieve processing for <%s>", roomname); if (CtdlGetRoom(&CC->room, roomname) != 0) { - syslog(LOG_CRIT, "ERROR: cannot load <%s>", roomname); + syslog(LOG_ERR, "ERROR: cannot load <%s>", roomname); return; } @@ -913,13 +907,13 @@ void sieve_do_room(char *roomname) { res = sieve2_alloc(&sieve2_context); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_alloc() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_alloc() returned %d: %s", res, sieve2_errstr(res)); return; } res = sieve2_callbacks(sieve2_context, ctdl_sieve_callbacks); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_callbacks() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_callbacks() returned %d: %s", res, sieve2_errstr(res)); goto BAIL; } @@ -930,7 +924,7 @@ void sieve_do_room(char *roomname) { my.u = &u; res = sieve2_validate(sieve2_context, &my); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_validate() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_validate() returned %d: %s", res, sieve2_errstr(res)); goto BAIL; } @@ -945,7 +939,7 @@ void sieve_do_room(char *roomname) { BAIL: res = sieve2_free(&sieve2_context); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_free() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_free() returned %d: %s", res, sieve2_errstr(res)); } /* Rewrite the config if we have to */ @@ -1174,7 +1168,7 @@ void cmd_msiv(char *argbuf) { extract_token(script_name, argbuf, 1, '|', sizeof script_name); if (!IsEmptyStr(script_name)) { cprintf("%d Transmit script now\n", SEND_LISTING); - script_content = CtdlReadMessageBody(HKEY("000"), CtdlGetConfigLong("c_maxmsglen"), NULL, 0, 0); + script_content = CtdlReadMessageBody(HKEY("000"), CtdlGetConfigLong("c_maxmsglen"), NULL, 0); msiv_putscript(&u, script_name, script_content); changes_made = 1; } @@ -1285,13 +1279,13 @@ void ctdl_sieve_init(void) { */ res = sieve2_alloc(&sieve2_context); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_alloc() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_alloc() returned %d: %s", res, sieve2_errstr(res)); return; } res = sieve2_callbacks(sieve2_context, ctdl_sieve_callbacks); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_callbacks() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_callbacks() returned %d: %s", res, sieve2_errstr(res)); goto BAIL; } @@ -1300,11 +1294,12 @@ void ctdl_sieve_init(void) { BAIL: res = sieve2_free(&sieve2_context); if (res != SIEVE2_OK) { - syslog(LOG_CRIT, "sieve2_free() returned %d: %s", res, sieve2_errstr(res)); + syslog(LOG_ERR, "sieve2_free() returned %d: %s", res, sieve2_errstr(res)); } } + void cleanup_sieve(void) { struct RoomProcList *ptr, *ptr2; @@ -1324,6 +1319,7 @@ void cleanup_sieve(void) end_critical_section(S_SIEVELIST); } + int serv_sieve_room(struct ctdlroom *room) { if (!strcasecmp(&room->QRname[11], MAILROOM)) { @@ -1332,6 +1328,7 @@ int serv_sieve_room(struct ctdlroom *room) return 0; } + CTDL_MODULE_INIT(sieve) { if (!threading) @@ -1346,4 +1343,3 @@ CTDL_MODULE_INIT(sieve) /* return our module name for the log */ return "sieve"; } -