From: Wilfried Göesgens Date: Sat, 10 Oct 2009 16:44:48 +0000 (+0000) Subject: * register mimetypes and send them to citserver on _every_ connect. X-Git-Tag: v7.86~782 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=49961a114060cea882cbc726ad6f2d6bb8e0cafd * register mimetypes and send them to citserver on _every_ connect. --- diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index e16ae34ba..5c01b640d 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -61,14 +61,18 @@ void RegisterMsgHdr(const char *HeaderName, long HdrNLen, ExamineMsgHeaderFunc e Put(MsgHeaderHandler, HeaderName, HdrNLen, ev, NULL); } -void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, RenderMimeFunc MimeRenderer) +void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, + RenderMimeFunc MimeRenderer, + int InlineRenderable, + int Priority) { RenderMimeFuncStruct *f; f = (RenderMimeFuncStruct*) malloc(sizeof(RenderMimeFuncStruct)); f->f = MimeRenderer; Put(MimeRenderHandler, HeaderName, HdrNLen, f, NULL); - + if (InlineRenderable) + RegisterEmbeddableMimeType(HeaderName, HdrNLen, 10000 - Priority); } /*----------------------------------------------------------------------------*/ @@ -1551,17 +1555,19 @@ InitModule_MSGRENDERERS NULL, NULL, CTX_MIME_ATACH, CTX_NONE, IT_NOFLAG); /* mime renderers translate an attachment into webcit viewable html text */ - RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL); - RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote); - RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard); - RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard); - RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS); - RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS); - RegisterMimeRenderer(HKEY("text/x-citadel-variformat"), render_MAIL_variformat); - RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain); - RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain); - RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html); - RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN); + RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL, 1, 150); + RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote, 1, 300); + RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard, 1, 201); + RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard, 1, 200); + RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS, 1, 501); + RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS, 1, 500); + RegisterMimeRenderer(HKEY("text/x-citadel-variformat"), render_MAIL_variformat, 1, 2); + RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3); + RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1); + RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100); + RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0); + /* and finalize the anouncement to the server... */ + CreateMimeStr(); /* these headers are citserver replies to MSG4 and friends. one evaluator for each */ RegisterMsgHdr(HKEY("nhdr"), examine_nhdr, 0); diff --git a/webcit/serv_func.c b/webcit/serv_func.c index 9e12d1afb..ddc94f9af 100644 --- a/webcit/serv_func.c +++ b/webcit/serv_func.c @@ -1,4 +1,4 @@ -/* + /* * $Id$ */ @@ -8,6 +8,23 @@ int is_uds = 0; char serv_sock_name[PATH_MAX] = ""; +HashList *EmbeddableMimes = NULL; +StrBuf *EmbeddableMimeStrs = NULL; + + +void SetInlinMimeRenderers(void) +{ + StrBuf *Buf; + + Buf = NewStrBuf(); + /** Tell the server what kind of richtext we prefer */ + serv_putbuf(EmbeddableMimeStrs); + StrBuf_ServGetln(Buf); + + FreeStrBuf(&Buf); +} + + void DeleteServInfo(ServInfo **FreeMe) { if (*FreeMe == NULL) @@ -48,10 +65,6 @@ ServInfo *get_serv_info(StrBuf *browser_host, StrBuf *user_agent) ); StrBuf_ServGetln(Buf); - /** Tell the server what kind of richtext we prefer */ - serv_puts("MSGP text/calendar|text/vnote|text/html|text/plain");//// TODO: register me... - StrBuf_ServGetln(Buf); - /* * Tell the server that when we save a calendar event, we * want invitations to be generated by the Citadel server @@ -206,6 +219,7 @@ int GetConnected (void) end_webcit_session(); return 1; } + SetInlinMimeRenderers(); } return 0; } @@ -723,6 +737,52 @@ void tmplput_mesg(StrBuf *Target, WCTemplputParams *TP) FreeStrBuf(&Line); } + +void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority) +{ + StrBuf *MT; + printf("%s - %ld\n", MimeType, Priority); + MT = NewStrBufPlain(MimeType, MTLen); + Put(EmbeddableMimes, IKEY(Priority), MT, HFreeStrBuf); +} + +void CreateMimeStr(void) +{ + HashPos *it; + void *vMime; + long len = 0; + const char *Key; + + it = GetNewHashPos(EmbeddableMimes, 0); + while (GetNextHashPos(EmbeddableMimes, it, &len, &Key, &vMime) && + (vMime != NULL)) { + printf("%s - \n", ChrPtr((StrBuf*) vMime)); + if (StrLength(EmbeddableMimeStrs) > 0) + StrBufAppendBufPlain(EmbeddableMimeStrs, HKEY("|"), 0); + else + StrBufAppendBufPlain(EmbeddableMimeStrs, HKEY("MSGP "), 0); + StrBufAppendBuf(EmbeddableMimeStrs, (StrBuf*) vMime, 0); + } + printf("------%ld-------------%s------%s------------\n", len, ChrPtr(EmbeddableMimeStrs), ChrPtr((StrBuf*) vMime)); +} + +void +ServerStartModule_SERV_FUNC +(void) +{ + EmbeddableMimes = NewHash(1, Flathash); + EmbeddableMimeStrs = NewStrBuf(); +} + + +void +ServerShutdownModule_SERV_FUNC +(void) +{ + FreeStrBuf(&EmbeddableMimeStrs); + DeleteHash(&EmbeddableMimes); +} + void InitModule_SERVFUNC (void) diff --git a/webcit/webcit.h b/webcit/webcit.h index 3a0035561..497a1555b 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -604,6 +604,7 @@ void display_aide_menu(void); void display_advanced_menu(void); void slrp_highest(void); ServInfo *get_serv_info(StrBuf *, StrBuf *); +void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority); int GetConnected(void); void DeleteServInfo(ServInfo **FreeMe); int uds_connectsock(char *);