]> code.citadel.org Git - citadel.git/blobdiff - webcit/messages.c
readfwd etc now work in anonymous guest mode
[citadel.git] / webcit / messages.c
index 32df5afe50462dbefff93685c58a7bbdec28a9eb..1ca4250619729fb79a8d05af3ef998f3e6f7b754 100644 (file)
@@ -1,8 +1,5 @@
 /*
- * $Id$
- *
  * Functions which deal with the fetching and displaying of messages.
- *
  */
 
 #include "webcit.h"
@@ -811,9 +808,15 @@ void readloop(long oper, eCustomRoomRenderer ForceRenderer)
        WCC->num_displayed = 0;
 
        /* Put some helpful data in vars for mailsummary_json */
-       svputlong("READLOOP:TOTALMSGS", Stat.nummsgs);
-       svputlong("READLOOP:STARTMSG", Stat.startmsg);
-       svputlong("WCVIEW", WCC->CurRoom.view);
+       {
+               StrBuf *Foo;
+               
+               Foo = NewStrBuf ();
+               StrBufPrintf(Foo, "%ld", Stat.nummsgs);
+               PutBstr(HKEY("__READLOOP:TOTALMSGS"), NewStrBufDup(Foo));
+               StrBufPrintf(Foo, "%ld", Stat.startmsg);
+               PutBstr(HKEY("__READLOOP:STARTMSG"), Foo);
+       }
 
        /*
         * iterate over each message. if we need to load an attachment, do it here. 
@@ -976,6 +979,9 @@ void post_mime_to_server(void) {
  */
 void post_message(void)
 {
+       StrBuf *UserName;
+       StrBuf *EmailAddress;
+       StrBuf *EncBuf;
        char buf[1024];
        StrBuf *encoded_subject = NULL;
        static long dont_post = (-1L);
@@ -1010,7 +1016,7 @@ void post_message(void)
                memset(att, 0, sizeof(wc_mime_attachment ));
                att->length = WCC->upload_length;
                att->ContentType = NewStrBufPlain(WCC->upload_content_type, -1);
-               att->FileName = NewStrBufPlain(WCC->upload_filename, -1);
+               att->FileName = NewStrBufDup(WCC->upload_filename);
                
                if (WCC->attachments == NULL) {
                        WCC->attachments = NewHash(1, Flathash);
@@ -1089,9 +1095,9 @@ void post_message(void)
                return;
        } else {
                const char CMD[] = "ENT0 1|%s|%d|4|%s|%s||%s|%s|%s|%s|%s";
-               const StrBuf *Recp = NULL; 
-               const StrBuf *Cc = NULL;
-               const StrBuf *Bcc = NULL;
+               StrBuf *Recp = NULL; 
+               StrBuf *Cc = NULL;
+               StrBuf *Bcc = NULL;
                const StrBuf *Wikipage = NULL;
                const StrBuf *my_email_addr = NULL;
                StrBuf *CmdBuf = NULL;
@@ -1137,9 +1143,18 @@ void post_message(void)
                        
                        StrBufRFC2047encode(&encoded_subject, Subj);
                }
-               Recp = sbstr("recp");
-               Cc = sbstr("cc");
-               Bcc = sbstr("bcc");
+               UserName = NewStrBuf();
+               EmailAddress = NewStrBuf();
+               EncBuf = NewStrBuf();
+
+               Recp = StrBufSanitizeEmailRecipientVector(sbstr("recp"), UserName, EmailAddress, EncBuf);
+               Cc = StrBufSanitizeEmailRecipientVector(sbstr("cc"), UserName, EmailAddress, EncBuf);
+               Bcc = StrBufSanitizeEmailRecipientVector(sbstr("bcc"), UserName, EmailAddress, EncBuf);
+
+               FreeStrBuf(&UserName);
+               FreeStrBuf(&EmailAddress);
+               FreeStrBuf(&EncBuf);
+
                Wikipage = sbstr("page");
                my_email_addr = sbstr("my_email_addr");
                
@@ -1216,10 +1231,14 @@ void post_message(void)
                                if (save_to_drafts) gotoroom(WCC->CurRoom.name);
                                display_enter();
                                FreeStrBuf(&Buf);
+                               FreeStrBuf(&Cc);
+                               FreeStrBuf(&Bcc);
                                return;
                        }
                }
                FreeStrBuf(&Buf);
+               FreeStrBuf(&Cc);
+               FreeStrBuf(&Bcc);
        }
 
        DeleteHash(&WCC->attachments);
@@ -1370,8 +1389,10 @@ void display_enter(void)
                        return;
                }
        }
-       svputlong("RCPTREQUIRED", recipient_required);
-       svputlong("SUBJREQUIRED", recipient_required || subject_required);
+       if (recipient_required)
+               PutBstr(HKEY("__RCPTREQUIRED"), NewStrBufPlain(HKEY("1")));
+       if (recipient_required || subject_required)
+               PutBstr(HKEY("__SUBJREQUIRED"), NewStrBufPlain(HKEY("1")));
 
        begin_burst();
        output_headers(1, 0, 0, 0, 1, 0);
@@ -1754,12 +1775,12 @@ InitModule_MSG
                           NULL);
        RegisterPreference("mailbox",_("Mailbox view mode"), PRF_STRING, NULL);
 
-       WebcitAddUrlHandler(HKEY("readnew"), "", 0, h_readnew, NEED_URL);
-       WebcitAddUrlHandler(HKEY("readold"), "", 0, h_readold, NEED_URL);
-       WebcitAddUrlHandler(HKEY("readfwd"), "", 0, h_readfwd, NEED_URL);
+       WebcitAddUrlHandler(HKEY("readnew"), "", 0, h_readnew, ANONYMOUS|NEED_URL);
+       WebcitAddUrlHandler(HKEY("readold"), "", 0, h_readold, ANONYMOUS|NEED_URL);
+       WebcitAddUrlHandler(HKEY("readfwd"), "", 0, h_readfwd, ANONYMOUS|NEED_URL);
        WebcitAddUrlHandler(HKEY("headers"), "", 0, h_headers, NEED_URL);
-       WebcitAddUrlHandler(HKEY("readgt"), "", 0, h_readgt, NEED_URL);
-       WebcitAddUrlHandler(HKEY("readlt"), "", 0, h_readlt, NEED_URL);
+       WebcitAddUrlHandler(HKEY("readgt"), "", 0, h_readgt, ANONYMOUS|NEED_URL);
+       WebcitAddUrlHandler(HKEY("readlt"), "", 0, h_readlt, ANONYMOUS|NEED_URL);
        WebcitAddUrlHandler(HKEY("do_search"), "", 0, h_do_search, 0);
        WebcitAddUrlHandler(HKEY("display_enter"), "", 0, display_enter, 0);
        WebcitAddUrlHandler(HKEY("post"), "", 0, post_message, PROHIBIT_STARTPAGE);