From 8896f6d392af58e432577e100353f5ffb4d02e21 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 26 Oct 2006 03:33:11 +0000 Subject: [PATCH] VACATION and REJECT messages now appear to come from the owner of the mailbox rather than from Citadel. Our back end Sieve implementation is now complete. --- citadel/file_ops.c | 2 +- citadel/msgbase.c | 18 ++++++++++++++++-- citadel/msgbase.h | 4 ++-- citadel/serv_listsub.c | 2 ++ citadel/serv_sieve.c | 16 +++++++++------- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/citadel/file_ops.c b/citadel/file_ops.c index e5c442515..bf4cee5b1 100644 --- a/citadel/file_ops.c +++ b/citadel/file_ops.c @@ -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); diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 3361b0c44..1a1f984f1 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -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) { diff --git a/citadel/msgbase.h b/citadel/msgbase.h index 6cfa6e481..4295d7be3 100644 --- a/citadel/msgbase.h +++ b/citadel/msgbase.h @@ -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); diff --git a/citadel/serv_listsub.c b/citadel/serv_listsub.c index e9099c0dd..bab07a74b 100644 --- a/citadel/serv_listsub.c +++ b/citadel/serv_listsub.c @@ -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, diff --git a/citadel/serv_sieve.c b/citadel/serv_sieve.c index 5a80cba19..d5f667c19 100644 --- a/citadel/serv_sieve.c +++ b/citadel/serv_sieve.c @@ -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" -- 2.30.2