VACATION and REJECT messages now appear to come from
authorArt Cancro <ajc@citadel.org>
Thu, 26 Oct 2006 03:33:11 +0000 (03:33 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 26 Oct 2006 03:33:11 +0000 (03:33 +0000)
the owner of the mailbox rather than from Citadel.
Our back end Sieve implementation is now complete.

citadel/file_ops.c
citadel/msgbase.c
citadel/msgbase.h
citadel/serv_listsub.c
citadel/serv_sieve.c

index e5c442515644b4c5907b70cb5835eacd149c3cd0..bf4cee5b1f32c1393805b1b37868453e355b8a4f 100644 (file)
@@ -685,7 +685,7 @@ void cmd_ucls(char *cmd)
                snprintf(upload_notice, sizeof upload_notice,
                        "NEW UPLOAD: '%s'\n %s\n",
                        CC->upl_file, CC->upl_comment);
-               quickie_message(CC->curr_user, NULL, CC->room.QRname,
+               quickie_message(CC->curr_user, NULL, NULL, CC->room.QRname,
                                upload_notice, 0, NULL);
        } else {
                abort_upl(CC);
index 3361b0c440c26faacf5aa9b155659fb42f38984d..1a1f984f1aa6368ddf770f9307bbb0bb59443e97 100644 (file)
@@ -2647,7 +2647,7 @@ long CtdlSubmitMsg(struct CtdlMessage *msg,       /* message to save */
 /*
  * Convenience function for generating small administrative messages.
  */
-void quickie_message(char *from, char *to, char *room, char *text, 
+void quickie_message(char *from, char *fromaddr, char *to, char *room, char *text, 
                        int format_type, char *subject)
 {
        struct CtdlMessage *msg;
@@ -2658,7 +2658,21 @@ void quickie_message(char *from, char *to, char *room, char *text,
        msg->cm_magic = CTDLMESSAGE_MAGIC;
        msg->cm_anon_type = MES_NORMAL;
        msg->cm_format_type = format_type;
-       msg->cm_fields['A'] = strdup(from);
+
+       if (from != NULL) {
+               msg->cm_fields['A'] = strdup(from);
+       }
+       else if (fromaddr != NULL) {
+               msg->cm_fields['A'] = strdup(fromaddr);
+               if (strchr(msg->cm_fields['A'], '@')) {
+                       *strchr(msg->cm_fields['A'], '@') = 0;
+               }
+       }
+       else {
+               msg->cm_fields['A'] = strdup("Citadel");
+       }
+
+       if (fromaddr != NULL) msg->cm_fields['F'] = strdup(fromaddr);
        if (room != NULL) msg->cm_fields['O'] = strdup(room);
        msg->cm_fields['N'] = strdup(NODENAME);
        if (to != NULL) {
index 6cfa6e481cdbea75ce3207aa0e28583238d76679..4295d7be386566e4b0e54e430a1f73beb9635dc9 100644 (file)
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-#define aide_message(text)      quickie_message("Citadel",NULL,AIDEROOM,text,0,NULL)
+#define aide_message(text)      quickie_message("Citadel",NULL,NULL,AIDEROOM,text,0,NULL)
 
 enum {
        MSGS_ALL,
@@ -94,7 +94,7 @@ void cmd_opna (char *cmdbuf);
 long send_message (struct CtdlMessage *);
 void loadtroom (void);
 long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, char *);
-void quickie_message (char *, char *, char *, char *, int, char *);
+void quickie_message (char *, char *, char *, char *, char *, int, char *);
 void cmd_ent0 (char *entargs);
 void cmd_dele (char *delstr);
 void cmd_move (char *args);
index e9099c0dde3c511258ff5ddcd2c96bece0067351..bab07a74badc7867e504ccfc39cef58c93dde047 100644 (file)
@@ -204,6 +204,7 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) {
 
        quickie_message(        /* This delivers the message */
                "Citadel",
+               NULL,
                email,
                NULL,
                confirmation_request,
@@ -342,6 +343,7 @@ void do_unsubscribe(char *room, char *email, char *webpage) {
 
        quickie_message(        /* This delivers the message */
                "Citadel",
+               NULL,
                email,
                NULL,
                confirmation_request,
index 5a80cba1918351ceff4848187446c76b811df008..d5f667c19e81ca66f30bf3d3d5b25ce989326db3 100644 (file)
@@ -265,7 +265,8 @@ int ctdl_reject(sieve2_context_t *s, void *my)
        );
 
        quickie_message(        /* This delivers the message */
-               "Citadel",      /* FIXME make it myself */
+               NULL,
+               cs->envelope_to,
                cs->sender,
                NULL,
                reject_text,
@@ -334,7 +335,8 @@ int ctdl_vacation(sieve2_context_t *s, void *my)
        );
 
        quickie_message(        /* This delivers the message */
-               "Citadel",      /* FIXME make it myself */
+               NULL,
+               cs->envelope_to,
                cs->sender,
                NULL,
                vacamsg_text,
@@ -404,14 +406,14 @@ int ctdl_getenvelope(sieve2_context_t *s, void *my)
 
 /*
  * Callback function to fetch message body
- * FIXME implement this
- */
-#if 0
+ * (Uncomment the code if we implement this extension)
+ *
 int ctdl_getbody(sieve2_context_t *s, void *my)
 {
        return SIEVE2_ERROR_UNSUPPORTED;
 }
-#endif
+ *
+ */
 
 
 /*
@@ -729,7 +731,7 @@ void rewrite_ctdl_sieve_config(struct sdm_userdata *u) {
        }
 
        /* Save the config */
-       quickie_message("Citadel", NULL, u->config_roomname,
+       quickie_message("Citadel", NULL, NULL, u->config_roomname,
                        text,
                        4,
                        "Sieve configuration"