X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsieve.c;h=214e7b4460759f252f02ed8be8e32fcfefd36ae7;hb=5d38a76f8f06640e3a3f097d584ac52336110f7c;hp=3761b11319efc22a03ef82f3beb1bc3ea2bcd42b;hpb=ac5438e4bce9943dafd0485161ed20939563b799;p=citadel.git diff --git a/webcit/sieve.c b/webcit/sieve.c index 3761b1131..214e7b446 100644 --- a/webcit/sieve.c +++ b/webcit/sieve.c @@ -14,6 +14,9 @@ #include "webcit.h" +CtxType CTX_SIEVELIST = CTX_NONE; +CtxType CTX_SIEVESCRIPT = CTX_NONE; + #define MAX_SCRIPTS 100 #define MAX_RULES 50 #define RULES_SCRIPT "__WebCit_Generated_Script__" @@ -420,6 +423,14 @@ void save_sieve(void) { } +void display_sieve_add_or_delete(void) { + output_headers(1, 1, 2, 0, 0, 0); + do_template("sieve_add"); + wDumpContent(1); +} + + + /* * create a new script * take the web environment script name and create it on the citadel server @@ -429,27 +440,22 @@ void create_script(void) { serv_printf("MSIV getscript|%s", bstr("script_name")); serv_getln(buf, sizeof buf); - if (buf[0] == '1') { + if (buf[0] == '1') { // does script exist already? while (serv_getln(buf, sizeof(buf)), strcmp(buf, "000")) { - /* flush */ + // yes -- flush the output } - return; } - - serv_printf("MSIV putscript|%s", bstr("script_name")); - serv_getln(buf, sizeof buf); - if (buf[0] == '4') { - serv_puts("keep;"); - serv_puts("000"); - output_headers(1, 1, 2, 0, 0, 0); - do_template("sieve_add"); - wDumpContent(1); - return; + else { + // no -- safe to create a new one by this name + serv_printf("MSIV putscript|%s", bstr("script_name")); + serv_getln(buf, sizeof buf); + if (buf[0] == '4') { + serv_puts("keep;"); + serv_puts("000"); + } } - output_headers(1, 1, 2, 0, 0, 0); - do_template("sieve_add"); - wDumpContent(1); + display_sieve_add_or_delete(); } @@ -461,9 +467,7 @@ void delete_script(void) { serv_printf("MSIV deletescript|%s", bstr("script_name")); serv_getln(buf, sizeof buf); - output_headers(1, 1, 2, 0, 0, 0); - do_template("sieve_add"); - wDumpContent(1); + display_sieve_add_or_delete(); } @@ -472,7 +476,7 @@ void delete_script(void) { */ void display_no_sieve(void) { - output_headers(1, 1, 2, 0, 0, 0); + output_headers(1, 1, 1, 0, 0, 0); do_template("sieve_none"); wDumpContent(1); } @@ -487,22 +491,22 @@ typedef struct __SieveListing { int ConditionalSieveScriptIsActive(StrBuf *Target, WCTemplputParams *TP) { - SieveListing *SieveList = (SieveListing *)CTX; + SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); return SieveList->IsActive; } int ConditionalSieveScriptIsRulesScript(StrBuf *Target, WCTemplputParams *TP) { - SieveListing *SieveList = (SieveListing *)CTX; + SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); return SieveList->IsActive; } void tmplput_SieveScriptName(StrBuf *Target, WCTemplputParams *TP) { - SieveListing *SieveList = (SieveListing *)CTX; + SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); StrBufAppendTemplate(Target, TP, SieveList->Name, 0); } void tmplput_SieveScriptContent(StrBuf *Target, WCTemplputParams *TP) { - SieveListing *SieveList = (SieveListing *)CTX; + SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); StrBufAppendTemplate(Target, TP, SieveList->Content, 0); } void FreeSieveListing(void *vSieveListing) @@ -682,7 +686,7 @@ typedef struct __SieveRule { int ConditionalSieveRule_hfield(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, @@ -693,7 +697,7 @@ int ConditionalSieveRule_hfield(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_compare(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, @@ -703,7 +707,7 @@ int ConditionalSieveRule_compare(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_action(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, @@ -713,7 +717,7 @@ int ConditionalSieveRule_action(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_sizecomp(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, @@ -723,7 +727,7 @@ int ConditionalSieveRule_sizecomp(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_final(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, @@ -733,7 +737,7 @@ int ConditionalSieveRule_final(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_ThisRoom(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, @@ -743,39 +747,39 @@ int ConditionalSieveRule_ThisRoom(StrBuf *Target, WCTemplputParams *TP) } int ConditionalSieveRule_Active(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return Rule->active; } void tmplput_SieveRule_htext(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->htext, 0); } void tmplput_SieveRule_fileinto(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->fileinto, 0); } void tmplput_SieveRule_redirect(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->redirect, 0); } void tmplput_SieveRule_automsg(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->automsg, 0); } void tmplput_SieveRule_sizeval(StrBuf *Target, WCTemplputParams *TP) { - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendPrintf(Target, "%d", Rule->sizeval); } void tmplput_SieveRule_lookup_FileIntoRoom(StrBuf *Target, WCTemplputParams *TP) { void *vRoom; - SieveRule *Rule = (SieveRule *)CTX; + SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); wcsession *WCC = WC; HashList *Rooms = GetRoomListHashLKRA(Target, TP); @@ -889,6 +893,8 @@ void InitModule_SIEVE (void) { + RegisterCTX(CTX_SIEVELIST); + RegisterCTX(CTX_SIEVESCRIPT); REGISTERTokenParamDefine(from); REGISTERTokenParamDefine(tocc); REGISTERTokenParamDefine(subject); @@ -955,4 +961,5 @@ InitModule_SIEVE WebcitAddUrlHandler(HKEY("save_sieve"), "", 0, save_sieve, 0); WebcitAddUrlHandler(HKEY("create_script"), "", 0, create_script, 0); WebcitAddUrlHandler(HKEY("delete_script"), "", 0, delete_script, 0); + WebcitAddUrlHandler(HKEY("display_sieve_add_or_delete"), "", 0, display_sieve_add_or_delete, 0); }