]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_sieve.c
Remove the SieveRules room. Keep sieve config in My Citadel Config
[citadel.git] / citadel / serv_sieve.c
index ee19e60f5412fc70d534b6a59bb68e138fc375a4..5a80cba1918351ceff4848187446c76b811df008 100644 (file)
@@ -290,12 +290,20 @@ int ctdl_vacation(sieve2_context_t *s, void *my)
        int days = 1;
        const char *message;
        char *vacamsg_text = NULL;
+       char vacamsg_subject[1024];
 
        lprintf(CTDL_DEBUG, "Action is VACATION\n");
 
        message = sieve2_getvalue_string(s, "message");
        if (message == NULL) return SIEVE2_ERROR_BADARGS;
 
+       if (sieve2_getvalue_string(s, "subject") != NULL) {
+               safestrncpy(vacamsg_subject, sieve2_getvalue_string(s, "subject"), sizeof vacamsg_subject);
+       }
+       else {
+               snprintf(vacamsg_subject, sizeof vacamsg_subject, "Re: %s", cs->subject);
+       }
+
        days = sieve2_getvalue_int(s, "days");
        if (days < 1) days = 1;
        if (days > MAX_VACATION) days = MAX_VACATION;
@@ -331,7 +339,7 @@ int ctdl_vacation(sieve2_context_t *s, void *my)
                NULL,
                vacamsg_text,
                FMT_RFC822,
-               "Delivery status notification"
+               vacamsg_subject
        );
 
        free(vacamsg_text);
@@ -623,7 +631,6 @@ void parse_sieve_config(char *conf, struct sdm_userdata *u) {
                                ++c;
 
                                if (strncasecmp(vacrec, "vacation|", 9)) {
-                                       lprintf(CTDL_DEBUG, "VACACFG: <%s>\n", vacrec);
                                        vptr = malloc(sizeof(struct sdm_vacation));
                                        extract_token(vptr->fromaddr, vacrec, 0, '|', sizeof vptr->fromaddr);
                                        vptr->timestamp = extract_long(vacrec, 1);
@@ -708,7 +715,7 @@ void rewrite_ctdl_sieve_config(struct sdm_userdata *u) {
 
                sprintf(&text[strlen(text)], "vacation|\n");
                while (u->first_vacation != NULL) {
-                       if ( (time(NULL) - u->first_vacation->timestamp) < MAX_VACATION) {
+                       if ( (time(NULL) - u->first_vacation->timestamp) < (MAX_VACATION * 86400)) {
                                sprintf(&text[strlen(text)], "%s|%ld\n",
                                        u->first_vacation->fromaddr,
                                        u->first_vacation->timestamp
@@ -780,7 +787,7 @@ void sieve_do_room(char *roomname) {
        /* See if the user who owns this 'mailbox' has any Sieve scripts that
         * require execution.
         */
-       snprintf(u.config_roomname, sizeof u.config_roomname, "%010ld.%s", atol(roomname), SIEVERULES);
+       snprintf(u.config_roomname, sizeof u.config_roomname, "%010ld.%s", atol(roomname), USERCONFIGROOM);
        if (getroom(&CC->room, u.config_roomname) != 0) {
                lprintf(CTDL_DEBUG, "<%s> does not exist.  No processing is required.\n", u.config_roomname);
                return;
@@ -891,7 +898,7 @@ void msiv_load(struct sdm_userdata *u) {
        strcpy(hold_rm, CC->room.QRname);       /* save current room */
 
        /* Take a spin through the user's personal address book */
-       if (getroom(&CC->room, SIEVERULES) == 0) {
+       if (getroom(&CC->room, USERCONFIGROOM) == 0) {
        
                u->config_msgnum = (-1);
                strcpy(u->config_roomname, CC->room.QRname);
@@ -1097,7 +1104,7 @@ void cmd_msiv(char *argbuf) {
                extract_token(script_name, argbuf, 1, '|', sizeof script_name);
                script_content = msiv_getscript(&u, script_name);
                if (script_content != NULL) {
-                       cprintf("%d Script:\n", SEND_LISTING);
+                       cprintf("%d Script:\n", LISTING_FOLLOWS);
                        cprintf("%s000\n", script_content);
                }
                else {