* name it Tokens consistantly...
* use the generic token escaping logic
* QP-Decode Mime Name
}
}
-int ConditionalAide(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalAide(WCTemplateToken *Tokens, void *Context, int ContextType)
{
return (WC->is_aide == 0);
}
-int ConditionalRoomAide(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalRoomAide(WCTemplateToken *Tokens, void *Context, int ContextType)
{
return (WC->is_room_aide == 0);
}
-int ConditionalRoomAcessDelete(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalRoomAcessDelete(WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct wcsession *WCC = WC;
return ( (WCC->is_room_aide) || (WCC->is_mailbox) || (WCC->room_flags2 & QR2_COLLABDEL) );
* depending on the browser locale change the sequence of the
* language chooser.
*/
-void offer_languages(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void offer_languages(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
int i;
#ifndef HAVE_USELOCALE
char *Lang = getenv("LANG");
#endif /* ENABLE_NLS */
-void TmplGettext(StrBuf *Target, int nTokens, WCTemplateToken *Token)
+void TmplGettext(StrBuf *Target, int nTokens, WCTemplateToken *Tokens)
{
- StrBufAppendBufPlain(Target, _(Token->Params[0]->Start), -1, 0);
-
+ StrBufAppendBufPlain(Target, _(Tokens->Params[0]->Start), -1, 0);
}
#include "webcit.h"
#include "webserver.h"
-/*
- * display the inet config dialog
- */
-void display_inetconf(void)
-{
- char buf[SIZ];
- char ename[SIZ];
- char etype[SIZ];
- int i;
- int which;
- int bg = 0;
-
- enum {
- ic_localhost,
- ic_directory,
- ic_smarthost,
- ic_rbl,
- ic_spamass,
- ic_masq,
- ic_clamav,
- ic_max
- };
-
- char *ic_spec[ic_max];
- char *ic_misc;
- char *ic_keyword[ic_max];
- char *ic_boxtitle[ic_max];
- char *ic_desc[ic_max];
-
- /* These are server config keywords; do not localize! */
- ic_keyword[0] = "localhost";
- ic_keyword[1] = "directory";
- ic_keyword[2] = "smarthost";
- ic_keyword[3] = "rbl";
- ic_keyword[4] = "spamassassin";
- ic_keyword[5] = "masqdomain";
- ic_keyword[6] = "clamav";
-
- ic_boxtitle[0] = _("Local host aliases");
- ic_boxtitle[1] = _("Directory domains");
- ic_boxtitle[2] = _("Smart hosts");
- ic_boxtitle[3] = _("RBL hosts");
- ic_boxtitle[4] = _("SpamAssassin hosts");
- ic_boxtitle[5] = _("Masqueradable domains");
- ic_boxtitle[6] = _("ClamAV clamd hosts");
-
- ic_desc[0] = _("(domains for which this host receives mail)");
- ic_desc[1] = _("(domains mapped with the Global Address Book)");
- ic_desc[2] = _("(if present, forward all outbound mail to one of these hosts)");
- ic_desc[3] = _("(hosts running a Realtime Blackhole List)");
- ic_desc[4] = _("(hosts running the SpamAssassin service)");
- ic_desc[5] = _("(Domains as which users are allowed to masquerade)");
- ic_desc[6] = _("(hosts running the ClamAV clamd service)");
-
- for (i=0; i<ic_max; ++i) {
- ic_spec[i] = strdup("");
- }
-
- ic_misc = strdup("");
-
- serv_printf("CONF GETSYS|application/x-citadel-internet-config");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
-
- extract_token(ename, buf, 0, '|', sizeof ename);
- extract_token(etype, buf, 1, '|', sizeof etype);
- which = (-1);
- for (i=0; i<ic_max; ++i) {
- if (!strcasecmp(etype, ic_keyword[i])) {
- which = i;
- }
- }
-
- if (which >= 0) {
- ic_spec[which] = realloc(ic_spec[which], strlen(ic_spec[which]) + strlen(ename) + 2);
- if (!IsEmptyStr(ic_spec[which])) strcat(ic_spec[which], "\n");
- strcat(ic_spec[which], ename);
- }
- else {
- ic_misc = realloc(ic_misc, strlen(ic_misc) + strlen(buf) + 2);
- if (!IsEmptyStr(ic_misc)) strcat(ic_misc, "\n");
- strcat(ic_misc, buf);
- }
-
- }
-
- output_headers(1, 1, 2, 0, 0, 0);
- wprintf("<div id=\"banner\">\n");
- wprintf("<h1>");
- wprintf(_("Internet configuration"));
- wprintf("</h1>");
- wprintf("</div>\n");
-
- wprintf("<div id=\"content\" class=\"service\">\n");
-
- wprintf("<div class=\"fix_scrollbar_bug\">"
- "<table border=0 width=100%% cellspacing=\"10\" cellpadding=\"10\"> "
- "<tr><td valign=top width=50%%>\n");
- for (which=0; which<ic_max; ++which) {
- if (which == (ic_max / 2)) {
- wprintf("</td><td valign=top>");
- }
- svput("BOXTITLE", WCS_STRING, ic_boxtitle[which]);
- do_template("beginboxx", NULL);
- wprintf("<span class=\"menudesc\">");
- escputs(ic_desc[which]);
- wprintf("</span><br />");
- wprintf("<table border=0 cellspacing=\"2px\" cellpadding=\"2px\" width=94%% "
- "class=\"altern\" >\n");
- bg = 0;
- if (!IsEmptyStr(ic_spec[which])) {
- for (i=0; i<num_tokens(ic_spec[which], '\n'); ++i) {
- bg = 1 - bg;
- wprintf("<tr class=\"%s\">",
- (bg ? "even" : "odd")
- );
- wprintf("<td align=left>");
- extract_token(buf, ic_spec[which], i, '\n', sizeof buf);
- escputs(buf);
- wprintf("</td><td align=left>"
- "<span class=\"button_link\">"
- "<a href=\"save_inetconf?oper=delete&ename=");
- escputs(buf);
- wprintf("&etype=%s\" ", ic_keyword[which]);
- wprintf("onClick=\"return confirm('%s');\">",
- _("Delete this entry?"));
- wprintf(_("Delete"));
- wprintf("</a></span></td></tr>\n");
- }
-
- }
- wprintf("<form method=\"post\" action=\"save_inetconf\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
- wprintf("<tr><td>"
- "<input type=\"text\" name=\"ename\" maxlength=\"64\">"
- "<input type=\"hidden\" name=\"etype\" VALUE=\"%s\">", ic_keyword[which]);
- wprintf("</td><td align=left>"
- "<input type=\"submit\" name=\"oper\" value=\"Add\">"
- "</td></tr></table></form>\n");
- do_template("endbox", NULL);
- wprintf("<br />");
- }
- wprintf("</td></tr></table></div>\n");
- wDumpContent(1);
-
- for (i=0; i<ic_max; ++i) {
- free(ic_spec[i]);
- }
- free(ic_misc);
-}
-
-
-
-/*
- * save changes to the inet config
- */
-void save_inetconf(void) {
- char *buf;
- char *ename;
- char *etype;
- char *newconfig;
-
- buf = malloc(SIZ);
- ename = malloc(SIZ);
- etype = malloc(SIZ);
- newconfig = malloc(65536);
-
- strcpy(newconfig, "");
- serv_printf("CONF GETSYS|application/x-citadel-internet-config");
- serv_getln(buf, SIZ);
- if (buf[0] == '1') while (serv_getln(buf, SIZ), strcmp(buf, "000")) {
- extract_token(ename, buf, 0, '|', SIZ);
- extract_token(etype, buf, 1, '|', SIZ);
- if (IsEmptyStr(buf)) {
- /* skip blank lines */
- }
- else if ((!strcasecmp(ename, bstr("ename")))
- && (!strcasecmp(etype, bstr("etype")))
- && (!strcasecmp(bstr("oper"), "delete"))
- ) {
- sprintf(WC->ImportantMessage, _("%s has been deleted."), ename);
- }
- else {
- if (!IsEmptyStr(newconfig)) strcat(newconfig, "\n");
- strcat(newconfig, buf);
- }
- }
-
- serv_printf("CONF PUTSYS|application/x-citadel-internet-config");
- serv_getln(buf, SIZ);
- if (buf[0] == '4') {
- serv_puts(newconfig);
- if (!strcasecmp(bstr("oper"), "add")) {
- serv_printf("%s|%s", bstr("ename"), bstr("etype") );
- sprintf(WC->ImportantMessage, _("%s added."), bstr("ename"));
- }
- serv_puts("000");
- }
-
- display_inetconf();
-
- free(buf);
- free(ename);
- free(etype);
- free(newconfig);
-}
typedef enum _e_cfg {
ic_localhost,
void load_inetconf(void)
{
struct wcsession *WCC = WC;
- StrBuf *Buf, *Token, *Value;
+ StrBuf *Buf, *CfgToken, *Value;
void *vHash;
HashList *Hash;
char nnn[64];
if (buf[0] == '1') {
Buf = NewStrBuf();
- Token = NewStrBuf();
+ CfgToken = NewStrBuf();
while ((len = StrBuf_ServGetln(Buf),
strcmp(ChrPtr(Buf), "000"))) {
Value = NewStrBuf();
- StrBufExtract_token(Token, Buf, 1, '|');
+ StrBufExtract_token(CfgToken, Buf, 1, '|');
StrBufExtract_token(Value, Buf, 0, '|');
- GetHash(WCC->InetCfg, ChrPtr(Token), StrLength(Token), &vHash);
+ GetHash(WCC->InetCfg, ChrPtr(CfgToken), StrLength(CfgToken), &vHash);
Hash = (HashList*) vHash;
if (Hash == NULL) {
lprintf(1, "ERROR Loading inet config line: [%s]\n",
Put(Hash, nnn, nUsed, Value, HFreeStrBuf);
}
FreeStrBuf(&Buf);
- FreeStrBuf(&Token);
+ FreeStrBuf(&CfgToken);
}
}
url_do_template();
}
-void InetCfgSubst(StrBuf *TemplBuffer, void *vContext, WCTemplateToken *Token)
+void InetCfgSubst(StrBuf *TemplBuffer, void *vContext, WCTemplateToken *Tokens)
{
SVPutBuf("SERVCFG:INET:HOSTNAME", vContext, 1);
}
-void DeleteInetConfHash(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void DeleteInetConfHash(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct wcsession *WCC = WC;
InitModule_INETCONF
(void)
{
- WebcitAddUrlHandler(HKEY("display_inetconf"), display_inetconf, 0);
WebcitAddUrlHandler(HKEY("save_inetconf"), new_save_inetconf, AJAX);
RegisterIterator("SERVCFG:INET", 1, NULL, GetInetConfHash, InetCfgSubst, NULL, CTX_INETCFG, CTX_NONE);
RegisterNamespace("SERVCFG:FLUSHINETCFG",0, 0, DeleteInetConfHash, CTX_NONE);
*/
int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, int printable_view, const StrBuf *PartNum) {
StrBuf *Buf;
- StrBuf *Token;
+ StrBuf *HdrToken;
StrBuf *FoundCharset;
HashPos *it;
void *vMime;
/** begin everythingamundo table */
- Token = NewStrBuf();
+ HdrToken = NewStrBuf();
Msg = (message_summary *)malloc(sizeof(message_summary));
memset(Msg, 0, sizeof(message_summary));
Msg->msgnum = msgnum;
StrBufAppendPrintf(Target, " (1)</i><br /><br />\n");
StrBufAppendPrintf(Target, "</div>\n");
FreeStrBuf(&Buf);
- FreeStrBuf(&Token);
+ FreeStrBuf(&HdrToken);
DestroyMessageSummary(Msg);
FreeStrBuf(&FoundCharset);
return 0;
state ++;
break;
}
- StrBufExtract_token(Token, Buf, 0, '=');
- StrBufCutLeft(Buf, StrLength(Token) + 1);
+ StrBufExtract_token(HdrToken, Buf, 0, '=');
+ StrBufCutLeft(Buf, StrLength(HdrToken) + 1);
- lprintf(1, ":: [%s] = [%s]\n", ChrPtr(Token), ChrPtr(Buf));
- if (GetHash(MsgHeaderHandler, SKEY(Token), &vHdr) &&
+ lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf));
+ if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) &&
(vHdr != NULL)) {
Hdr = (headereval*)vHdr;
Hdr->evaluator(Msg, Buf, FoundCharset);
state++;
}
}
- else lprintf(1, "don't know how to handle message header[%s]\n", ChrPtr(Token));
+ else lprintf(1, "don't know how to handle message header[%s]\n", ChrPtr(HdrToken));
break;
case 1:/* Message Mime Header */
if (StrLength(Buf) == 0) {
}
else
{
- StrBufExtract_token(Token, Buf, 0, ':');
- if (StrLength(Token) > 0) {
- StrBufCutLeft(Buf, StrLength(Token) + 1);
- lprintf(1, ":: [%s] = [%s]\n", ChrPtr(Token), ChrPtr(Buf));
- if (GetHash(MsgHeaderHandler, SKEY(Token), &vHdr) &&
+ StrBufExtract_token(HdrToken, Buf, 0, ':');
+ if (StrLength(HdrToken) > 0) {
+ StrBufCutLeft(Buf, StrLength(HdrToken) + 1);
+ lprintf(1, ":: [%s] = [%s]\n", ChrPtr(HdrToken), ChrPtr(Buf));
+ if (GetHash(MsgHeaderHandler, SKEY(HdrToken), &vHdr) &&
(vHdr != NULL)) {
Hdr = (headereval*)vHdr;
Hdr->evaluator(Msg, Buf, FoundCharset);
DestroyMessageSummary(Msg);
FreeStrBuf(&FoundCharset);
- FreeStrBuf(&Token);
+ FreeStrBuf(&HdrToken);
FreeStrBuf(&Buf);
return 1;
}
Msg->from = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_to_Utf8(Msg->from, HdrLine, WC->DefaultCharset, FoundCharset);
}
-void tmplput_MAIL_SUMM_FROM(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_FROM(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->from, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->from, 0);
}
Msg->subj = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_to_Utf8(Msg->subj, HdrLine, WC->DefaultCharset, FoundCharset);
}
-void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{/////TODO: Fwd: and RE: filter!!
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->subj, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->subj, 0);
}
Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_to_Utf8(Msg->reply_inreplyto, HdrLine, WC->DefaultCharset, FoundCharset);
}
-void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->reply_inreplyto, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->reply_inreplyto, 0);
}
int Conditional_MAIL_SUMM_UNREAD(WCTemplateToken *Tokens, void *Context, int ContextType)
Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_to_Utf8(Msg->reply_references, HdrLine, WC->DefaultCharset, FoundCharset);
}
-void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->reply_references, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->reply_references, 0);
}
}
StrBufAppendBuf(Msg->AllRcpt, Msg->cccc, 0);
}
-void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->cccc, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->cccc, 0);
}
Msg->Room = NewStrBufDup(HdrLine);
}
}
-void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->Room, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->Room, 0);
}
FreeStrBuf(&Msg->Rfca);
Msg->Rfca = NewStrBufDup(HdrLine);
}
-void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->Rfca, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->Rfca, 0);
}
int Conditional_MAIL_SUMM_RFCA(WCTemplateToken *Tokens, void *Context, int ContextType)
{
Msg->OtherNode = NewStrBufDup(HdrLine);
}
}
-void tmplput_MAIL_SUMM_OTHERNODE(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_OTHERNODE(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->OtherNode, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->OtherNode, 0);
}
int Conditional_MAIL_SUMM_OTHERNODE(WCTemplateToken *Tokens, void *Context, int ContextType)
{
}
StrBufAppendBuf(Msg->AllRcpt, Msg->to, 0);
}
-void tmplput_MAIL_SUMM_TO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_TO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->to, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->to, 0);
}
-void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->AllRcpt, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->AllRcpt, 0);
}
{
Msg->date = StrTol(HdrLine);
}
-void tmplput_MAIL_SUMM_DATE_STR(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_DATE_STR(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
char datebuf[64];
message_summary *Msg = (message_summary*) Context;
webcit_fmt_date(datebuf, Msg->date, 1);
StrBufAppendBufPlain(Target, datebuf, -1, 0);
}
-void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
StrBufAppendPrintf(Target, "%ld", Msg->date, 0);
Buf = NewStrBuf();
Mime->Name = NewStrBuf();
- StrBufExtract_token(Mime->Name, HdrLine, 0, '|');
+ StrBufExtract_token(Buf, HdrLine, 0, '|');
+ StrBuf_RFC822_to_Utf8(Mime->Name, Buf, WC->DefaultCharset, FoundCharset);
StrBufTrim(Mime->Name);
StrBufExtract_token(Buf, HdrLine, 1, '|');
}
}
-void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
StrBufAppendPrintf(Target, "%ld", GetCount(Msg->Attachments));
Msg->hnod = NewStrBufPlain(NULL, StrLength(HdrLine));
StrBuf_RFC822_to_Utf8(Msg->hnod, HdrLine, WC->DefaultCharset, FoundCharset);
}
-void tmplput_MAIL_SUMM_H_NODE(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_H_NODE(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->hnod, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->hnod, 0);
}
int Conditional_MAIL_SUMM_H_NODE(WCTemplateToken *Tokens, void *Context, int ContextType)
{
*/
}
-void tmplput_MAIL_SUMM_N(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_SUMM_N(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
StrBufAppendPrintf(Target, "%ld", Msg->msgnum);
/*----------------------------------------------------------------------------*/
-void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
long MsgNum;
- MsgNum = LBstr(Token->Params[0]->Start, Token->Params[0]->len);
+ MsgNum = LBstr(Tokens->Params[0]->Start, Tokens->Params[0]->len);
read_message(Target, HKEY("view_message_replyquote"), MsgNum, 0, NULL);
}
-void tmplput_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MAIL_BODY(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
message_summary *Msg = (message_summary*) Context;
- StrBufAppendBuf(Target, Msg->MsgBody->Data, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Msg->MsgBody->Data, 0);
}
return Msg->AllAttach;
}
-void tmplput_MIME_Name(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Name(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->Name, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Name, 0);
}
-void tmplput_MIME_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->FileName, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->FileName, 0);
}
-void tmplput_MIME_PartNum(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_PartNum(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->PartNum, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->PartNum, 0);
}
-void tmplput_MIME_MsgNum(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_MsgNum(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
StrBufAppendPrintf(Target, "%ld", mime->msgnum);
}
-void tmplput_MIME_Disposition(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Disposition(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->Disposition, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Disposition, 0);
}
-void tmplput_MIME_ContentType(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_ContentType(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->ContentType, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->ContentType, 0);
}
-void tmplput_MIME_Charset(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Charset(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
- StrBufAppendBuf(Target, mime->Charset, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Charset, 0);
}
-void tmplput_MIME_Data(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Data(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
if (mime->Renderer != NULL)
mime->Renderer(mime, NULL, NULL);
- StrBufAppendBuf(Target, mime->Data, 0); /// TODO: check whether we need to load it now?
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, mime->Data, 0);
+ /// TODO: check whether we need to load it now?
}
-void tmplput_MIME_Length(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_MIME_Length(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_mime_attachment *mime = (wc_mime_attachment*) Context;
StrBufAppendPrintf(Target, "%ld", mime->length);
return WC->attachments;
}
-void tmplput_ATT_Length(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_Length(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_attachment *att = (wc_attachment*) Context;
StrBufAppendPrintf(Target, "%ld", att->length);
}
-void tmplput_ATT_Contenttype(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_Contenttype(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_attachment *att = (wc_attachment*) Context;
- StrBufAppendBuf(Target, att->content_type, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, att->content_type, 0);
}
-void tmplput_ATT_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_ATT_FileName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
wc_attachment *att = (wc_attachment*) Context;
- StrBufAppendBuf(Target, att->filename, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, att->filename, 0);
}
}
-void tmpl_vcard_put_posleft(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posleft(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", v->pos_left);
}
-void tmpl_vcard_put_postop(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_postop(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", v->pos_top);
}
-void tmpl_vcard_put_poswidth(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_poswidth(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", v->pos_width);
}
-void tmpl_vcard_put_posheight(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posheight(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", v->pos_height);
}
-void tmpl_vcard_put_posheight2(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_posheight2(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", (v->pos_height / 16) - 5);
}
-void tmpl_vcard_put_width2(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_width2(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%d", (v->pos_width / 9) - 1);
}
-void tmpl_vcard_put_color(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_color(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red, v->color_green, v->color_blue);
}
-void tmpl_vcard_put_bgcolor(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_bgcolor(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red/2, v->color_green/2, v->color_blue/2);
}
-void tmpl_vcard_put_message(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_message(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrEscAppend(Target, NULL, v->body, 0, 0); ///TODO?
}
-void tmpl_vcard_put_uid(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmpl_vcard_put_uid(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
struct vnote *v = (struct vnote *) Context;
StrBufAppendBufPlain(Target, v->uid, -1, 0);
StrBuf *buf, *encBuf;
int *time_format_cache;
- time_format_cache = &(WC->time_format_cache);
-
- if (!havebstr("change_button")) {
- safestrncpy(WC->ImportantMessage,
- _("Cancelled. No settings were changed."),
- sizeof WC->ImportantMessage);
- display_main_menu();
- return;
- }
-
- /**
- * Set the last argument to 1 only for the final setting, so
- * we don't send the prefs file to the server repeatedly
- */
- set_preference("roomlistview", NewStrBufPlain(bstr("roomlistview"), -1), 0);
- fmt = lbstr("calhourformat");
- set_pref_long("calhourformat", fmt, 0);
- if (fmt == 24)
- *time_format_cache = WC_TIMEFORMAT_24;
- else
- *time_format_cache = WC_TIMEFORMAT_AMPM;
-
- set_pref_long("weekstart", lbstr("weekstart"), 0);
- set_pref_yesno("use_sig", yesbstr("use_sig"), 0);
- set_pref_long("daystart", lbstr("daystart"), 0);
- set_pref_long("dayend", lbstr("dayend"), 0);
- set_preference("default_header_charset", NewStrBufPlain(bstr("default_header_charset"), -1), 0);
- set_preference("emptyfloors", NewStrBufPlain(bstr("emptyfloors"), -1), 0);
- set_preference("defaultfrom", NewStrBufDup(sbstr("defaultfrom")), 0);
- set_preference("defaultname", NewStrBufDup(sbstr("defaultname")), 0);
- set_preference("defaulthandle", NewStrBufDup(sbstr("defaulthandle")), 0);
+ time_format_cache = &(WC->time_format_cache);
+
+ if (!havebstr("change_button")) {
+ safestrncpy(WC->ImportantMessage,
+ _("Cancelled. No settings were changed."),
+ sizeof WC->ImportantMessage);
+ display_main_menu();
+ return;
+ }
+
+ /**
+ * Set the last argument to 1 only for the final setting, so
+ * we don't send the prefs file to the server repeatedly
+ */
+ set_preference("roomlistview", NewStrBufPlain(bstr("roomlistview"), -1), 0);
+ fmt = lbstr("calhourformat");
+ set_pref_long("calhourformat", fmt, 0);
+ if (fmt == 24)
+ *time_format_cache = WC_TIMEFORMAT_24;
+ else
+ *time_format_cache = WC_TIMEFORMAT_AMPM;
+
+ set_pref_long("weekstart", lbstr("weekstart"), 0);
+ set_pref_yesno("use_sig", yesbstr("use_sig"), 0);
+ set_pref_long("daystart", lbstr("daystart"), 0);
+ set_pref_long("dayend", lbstr("dayend"), 0);
+ set_preference("default_header_charset", NewStrBufPlain(bstr("default_header_charset"), -1), 0);
+ set_preference("emptyfloors", NewStrBufPlain(bstr("emptyfloors"), -1), 0);
+ set_preference("defaultfrom", NewStrBufDup(sbstr("defaultfrom")), 0);
+ set_preference("defaultname", NewStrBufDup(sbstr("defaultname")), 0);
+ set_preference("defaulthandle", NewStrBufDup(sbstr("defaulthandle")), 0);
buf = NewStrBufPlain(bstr("signature"), -1);
#define PRF_YESNO 4
-void tmplput_CFG_Value(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_CFG_Value(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
StrBuf *Setting;
- if (get_PREFERENCE(Token->Params[0]->Start,
- Token->Params[0]->len,
+ if (get_PREFERENCE(Tokens->Params[0]->Start,
+ Tokens->Params[0]->len,
&Setting))
- StrBufAppendBuf(Target, Setting, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Setting, 1);
}
-void tmplput_CFG_Descr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_CFG_Descr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
const char *SettingStr;
- SettingStr = PrefGetLocalStr(Token->Params[0]->Start,
- Token->Params[0]->len);
+ SettingStr = PrefGetLocalStr(Tokens->Params[0]->Start,
+ Tokens->Params[0]->len);
if (SettingStr != NULL)
StrBufAppendBufPlain(Target, SettingStr, -1, 0);
}
SVPutBuf("ZONENAME", Zone, 1);
}
-int ConditionalPreference(WCTemplateToken *Token, void *Context, int ContextType)
+int ConditionalPreference(WCTemplateToken *Tokens, void *Context, int ContextType)
{
StrBuf *Pref;
- if (!get_PREFERENCE(Token->Params[2]->Start,
- Token->Params[2]->len,
+ if (!get_PREFERENCE(Tokens->Params[2]->Start,
+ Tokens->Params[2]->len,
&Pref))
return 0;
- if (Token->nParameters == 3) {
+ if (Tokens->nParameters == 3) {
return 1;
}
- else if (Token->Params[3]->Type == TYPE_STR)
- return ((Token->Params[3]->len == StrLength(Pref)) &&
- (strcmp(Token->Params[3]->Start, ChrPtr(Pref)) == 0));
+ else if (Tokens->Params[3]->Type == TYPE_STR)
+ return ((Tokens->Params[3]->len == StrLength(Pref)) &&
+ (strcmp(Tokens->Params[3]->Start, ChrPtr(Pref)) == 0));
else
- return (StrTol(Pref) == Token->Params[3]->lvalue);
+ return (StrTol(Pref) == Tokens->Params[3]->lvalue);
}
HashList *GetGVEAHash(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
/**
* \brief read this room's info file (set v to 1 for verbose mode)
*/
-void readinfo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void readinfo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
char buf[256];
char briefinfo[128];
* keep the browser from using a cached icon from
* another room.
*/
-void embed_room_graphic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_room_graphic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
char buf[SIZ];
serv_puts("OIMG _roompic_");
/**
* \brief Display the current view and offer an option to change it
*/
-void embed_view_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_view_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
int i;
wprintf("<form name=\"viewomatic\" action=\"changeview\">\n");
/**
* \brief Display a search box
*/
-void embed_search_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType) {
+void embed_search_o_matic(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType) {
wprintf("<form name=\"searchomatic\" action=\"do_search\">\n");
wprintf("<div style=\"display: inline;\"><input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<label for=\"search_name\">");
}
-
-
-/*
- * display all configuration items
- */
-void display_siteconfig(void)
-{
- char buf[SIZ];
- int i, j;
- struct wcsession *WCC = WC;
- const char *VCZname;
-
- char general[65536];
- char access[SIZ];
- char network[SIZ];
- char tuning[SIZ];
- char directory[SIZ];
- char purger[SIZ];
- char idxjnl[SIZ];
- char funambol[SIZ];
- char pop3[SIZ];
-
- /** expire policy settings */
- int sitepolicy = 0;
- int sitevalue = 0;
- int mboxpolicy = 0;
- int mboxvalue = 0;
-
- output_headers(1, 1, 2, 0, 0, 0);
- wprintf("<div id=\"banner\">\n");
- wprintf("<h1>");
- wprintf(_("Site configuration"));
- wprintf("</h1>");
- wprintf("</div>\n");
-
- wprintf("<div id=\"content\" class=\"service fix_scrollbar_bug\">\n");
-
- serv_printf("CONF get");
- serv_getln(buf, sizeof buf);
- if (buf[0] != '1') {
- wprintf("<div class=\"errormsg\">");
- wprintf(_("Error"));
- wprintf("<br />\n");
- wprintf("%s<br />\n", &buf[4]);
- wDumpContent(1);
- wprintf("</div>\n");
- return;
- }
-
- wprintf("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" ><tr><td>");
-
- char *tabnames[] = {
- _("General"),
- _("Access"),
- _("Network"),
- _("Tuning"),
- _("Directory"),
- _("Auto-purger"),
- _("Indexing/Journaling"),
- _("Push Email"),
- _("Pop3")
- };
-
- sprintf(general, "<center><h1>%s</h1><table border=\"0\">",
- _("General site configuration items")
- );
-
- sprintf(access, "<center><h1>%s</h1><table border=\"0\">",
- _("Access controls and site policy settings")
- );
-
- sprintf(network, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
- _("Network services"),
- _("Changes made on this screen will not take effect "
- "until you restart the Citadel server.")
- );
-
- sprintf(tuning, "<center><h1>%s</h1><table border=\"0\">",
- _("Advanced server fine-tuning controls")
- );
-
- sprintf(directory, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
- _("Configure the LDAP connector for Citadel"),
- (serv_info.serv_supports_ldap
- ? _("Changes made on this screen will not take effect "
- "until you restart the Citadel server.")
- : _("NOTE: This Citadel server has been built without "
- "LDAP support. These options will have no effect.")
- )
- );
-
- sprintf(purger, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
- _("Configure automatic expiry of old messages"),
- _("These settings may be overridden on a per-floor or per-room basis.")
- );
-
- sprintf(idxjnl, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
- _("Indexing and Journaling"),
- _("Warning: these facilities are resource intensive.")
- );
- sprintf(funambol, "<center><h1>%s</h1><table border=\"0\">",
- _("Push Email")
- );
-
- sprintf(pop3, "<center><h1>%s</h1><table border=\"0\">",
- _("POP3")
- );
-
- wprintf("<form method=\"post\" action=\"siteconfig\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WCC->nonce);
-
- sprintf(&general[strlen(general)], "<tr><td><a href=\"display_edithello\"> %s </a></td>", _("Change Login Logo"));
- sprintf(&general[strlen(general)], "<td><a href=\"display_editgoodbuye\"> %s </a></td></tr>\n", _("Change Logout Logo"));
-
- i = 0;
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- switch (i++) {
- case 0:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Node name"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_nodename\" maxlength=\"15\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 1:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Fully qualified domain name"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_fqdn\" maxlength=\"63\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 2:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Human-readable node name"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_humannode\" maxlength=\"20\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 3:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Telephone number"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_phonenum\" maxlength=\"15\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 4:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Automatically grant room-aide status to users who create private rooms"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_creataide\" value=\"yes\" %s>",
- ((atoi(buf) != 0) ? "checked" : ""));
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 5:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Server connection idle timeout (in seconds)"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_sleeping\" maxlength=\"15\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 6:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Initial access level for new users"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<select name=\"c_initax\" size=\"1\">\n");
- for (j=0; j<=6; ++j) {
- sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
- ((atoi(buf) == j) ? "selected" : ""),
- j, j, axdefs[j]
- );
- }
- sprintf(&access[strlen(access)], "</select>");
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 7:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Require registration for new users"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_regiscall\" value=\"yes\" %s>",
- ((atoi(buf) != 0) ? "checked" : ""));
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 8:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Quarantine messages from problem users"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_twitdetect\" value=\"yes\" %s>",
- ((atoi(buf) != 0) ? "checked" : ""));
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 9:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Name of quarantine room"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_twitroom\" maxlength=\"63\" value=\"%s\">", buf);
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 10:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Paginator prompt (for text mode clients)"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_moreprompt\" maxlength=\"79\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 11:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Restrict access to Internet mail"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_restrict\" value=\"yes\" %s>",
- ((atoi(buf) != 0) ? "checked" : ""));
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 12:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Geographic location of this system"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_bbs_city\" maxlength=\"31\" value=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 13:
- sprintf(&general[strlen(general)], "<tr><td>");
- sprintf(&general[strlen(general)], _("Name of system administrator"));
- sprintf(&general[strlen(general)], "</td><td>");
- sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
- sprintf(&general[strlen(general)], "</td></tr>\n");
- break;
- case 14:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Maximum concurrent sessions (0 = no limit)"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxsessions\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 16:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Default user purge time (days)"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_userpurge\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 17:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Default room purge time (days)"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_roompurge\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 18:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Name of room to log pages"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_logpages\" maxlength=\"63\" value=\"%s\">", buf);
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 19:
- sprintf(&access[strlen(access)], "<tr><td>");
- sprintf(&access[strlen(access)], _("Access level required to create rooms"));
- sprintf(&access[strlen(access)], "</td><td>");
- sprintf(&access[strlen(access)], "<select name=\"c_createax\" size=\"1\">\n");
- for (j=0; j<=6; ++j) {
- sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
- ((atoi(buf) == j) ? "selected" : ""),
- j, j, axdefs[j]
- );
- }
- sprintf(&access[strlen(access)], "</select>");
- sprintf(&access[strlen(access)], "</td></tr>\n");
- break;
- case 20:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Maximum message length"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxmsglen\" maxlength=\"20\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 21:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Minimum number of worker threads"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_min_workers\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 22:
- sprintf(&tuning[strlen(tuning)], "<tr><td>");
- sprintf(&tuning[strlen(tuning)], _("Maximum number of worker threads"));
- sprintf(&tuning[strlen(tuning)], "</td><td>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_max_workers\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
- break;
- case 23:
- sprintf(&pop3[strlen(pop3)], "<tr><td>");
- sprintf(&pop3[strlen(pop3)], _("POP3 listener port (-1 to disable)"));
- sprintf(&pop3[strlen(pop3)], "</td><td>");
- sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_port\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
- break;
- case 24:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("SMTP MTA port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtp_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 25: /* note: reverse bool */
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Correct forged From: lines during authenticated SMTP"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_rfc822_strict_from\" VALUE=\"yes\" %s>",
- ((atoi(buf) == 0) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 26:
- sprintf(&access[strlen(access)], "<TR><TD>");
- sprintf(&access[strlen(access)], _("Allow aides to zap (forget) rooms"));
- sprintf(&access[strlen(access)], "</TD><TD>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_aide_zap\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&access[strlen(access)], "</TD></TR>\n");
- break;
- case 27:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("IMAP listener port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imap_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 28:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Network run frequency (in seconds)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_net_freq\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 29:
- sprintf(&access[strlen(access)], "<TR><TD>");
- sprintf(&access[strlen(access)], _("Disable self-service user account creation"));
- sprintf(&access[strlen(access)], "</TD><TD>");
- sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_disable_newu\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&access[strlen(access)], "</TD></TR>\n");
- break;
- case 31:
- sprintf(&purger[strlen(purger)], "<TR><TD>");
- sprintf(&purger[strlen(purger)], _("Hour to run database auto-purge"));
- sprintf(&purger[strlen(purger)], "</TD><TD>");
- sprintf(&purger[strlen(purger)], "<SELECT NAME=\"c_purge_hour\" SIZE=\"1\">\n");
- for (j=0; j<=23; ++j) {
- sprintf(&purger[strlen(purger)], "<OPTION %s VALUE=\"%d\">%d:00%s</OPTION>\n",
- ((atoi(buf) == j) ? "SELECTED" : ""),
- j,
- (get_time_format_cached() == WC_TIMEFORMAT_24) ? j : ((j == 0) ? 12 : ((j>12) ? j-12 : j)),
- (get_time_format_cached() == WC_TIMEFORMAT_24) ? "" : ((j >= 12) ? "pm" : "am")
- );
- }
- sprintf(&purger[strlen(purger)], "</SELECT>");
- sprintf(&purger[strlen(purger)], "</TD></TR>\n");
- break;
- case 32:
- sprintf(&directory[strlen(directory)], "<TR><TD>");
- sprintf(&directory[strlen(directory)], _("Host name of LDAP server (blank to disable)"));
- sprintf(&directory[strlen(directory)], "</TD><TD>");
- sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_host\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 33:
- sprintf(&directory[strlen(directory)], "<TR><TD>");
- sprintf(&directory[strlen(directory)], _("Port number of LDAP server (blank to disable)"));
- sprintf(&directory[strlen(directory)], "</TD><TD>");
- sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_port\" MAXLENGTH=\"127\" VALUE=\"%d\">", atoi(buf));
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 34:
- sprintf(&directory[strlen(directory)], "<TR><TD>");
- sprintf(&directory[strlen(directory)], _("Base DN"));
- sprintf(&directory[strlen(directory)], "</TD><TD>");
- sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_base_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 35:
- sprintf(&directory[strlen(directory)], "<TR><TD>");
- sprintf(&directory[strlen(directory)], _("Bind DN"));
- sprintf(&directory[strlen(directory)], "</TD><TD>");
- sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_bind_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 36:
- sprintf(&directory[strlen(directory)], "<TR><TD>");
- sprintf(&directory[strlen(directory)], _("Password for bind DN"));
- sprintf(&directory[strlen(directory)], "</TD><TD>");
- sprintf(&directory[strlen(directory)], "<input type=\"password\" NAME=\"c_ldap_bind_pw\" MAXLENGTH=\"255\" VALUE=\"%s\">",
- buf);
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 37:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Server IP address (0.0.0.0 for 'any')"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_ip_addr\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 38:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("SMTP MSA port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_msa_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 39:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("IMAP over SSL port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imaps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 40:
- sprintf(&pop3[strlen(pop3)], "<TR><TD>");
- sprintf(&pop3[strlen(pop3)], _("POP3 over SSL port (-1 to disable)"));
- sprintf(&pop3[strlen(pop3)], "</TD><TD>");
- sprintf(&pop3[strlen(pop3)], "<input type=\"text\" NAME=\"c_pop3s_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
- break;
- case 41:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("SMTP over SSL port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 42:
- sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], _("Enable full text index"));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_enable_fulltext\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
- break;
- case 43:
- sprintf(&tuning[strlen(tuning)], "<TR><TD>");
- sprintf(&tuning[strlen(tuning)], _("Automatically delete committed database logs"));
- sprintf(&tuning[strlen(tuning)], "</TD><TD>");
- sprintf(&tuning[strlen(tuning)], "<input type=\"checkbox\" NAME=\"c_auto_cull\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&tuning[strlen(tuning)], "</TD></TR>\n");
- break;
- case 44:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Instantly expunge deleted messages in IMAP"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_instant_expunge\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 45:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Allow unauthenticated SMTP clients to spoof this site's domains"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_allow_spoofing\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 46:
- sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of email messages"));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_email\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
- break;
- case 47:
- sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of non-email messages"));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_pubmsgs\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
- break;
- case 48:
- sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], _("Email destination of journalized messages"));
- sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
- sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"text\" NAME=\"c_journal_dest\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
- sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
- break;
- case 49:
- if (strlen(buf) == 0) {
- strcpy(buf, "UTC");
- }
- sprintf(&general[strlen(general)], "<TR><TD>");
- sprintf(&general[strlen(general)], _("Default timezone for unzoned calendar items"));
- sprintf(&general[strlen(general)], "</TD><TD>");
- sprintf(&general[strlen(general)], "<select name=\"c_default_cal_zone\" size=\"1\">\n");
-
- icalarray *zones;
- int z;
- long len;
- char this_zone[128];
- char *ZName;
- void *ZNamee;
- HashList *List;
- HashPos *it;
-
- List = NewHash(1, NULL);
- len = sizeof("UTC") + 1;
- ZName = malloc(len + 1);
- memcpy(ZName, "UTC", len + 1);
- Put(List, ZName, len, ZName, NULL);
- zones = icaltimezone_get_builtin_timezones();
- for (z = 0; z < zones->num_elements; ++z) {
- strcpy(this_zone, icaltimezone_get_location(icalarray_element_at(zones, z)));
- len = strlen(this_zone);
- ZName = (char*)malloc(len +1);
- memcpy(ZName, this_zone, len + 1);
- Put(List, ZName, len, ZName, NULL);
- }
- SortByHashKey(List, 0);
- it = GetNewHashPos();
- while (GetNextHashPos(List, it, &len, &VCZname, &ZNamee)) {
- sprintf(&general[strlen(general)], "<option %s value=\"%s\">%s</option>\n",
- (!strcasecmp((char*)ZName, buf) ? "selected" : ""),
- ZName, ZName
- );
- }
- DeleteHashPos(&it);
- DeleteHash(&List);
-
- sprintf(&general[strlen(general)], "</select>");
- sprintf(&general[strlen(general)], "</TD></TR>\n");
- break;
- case 50:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("<a href=\"http://www.postfix.org/tcp_table.5.html\">Postfix TCP Dictionary Port </a> (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_pftcpdict_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 51:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("ManageSieve Port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_mgesve_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 52:
- sprintf(&access[strlen(access)], "<TR><TD>");
- sprintf(&access[strlen(access)], _("Enable host based authentication mode"));
- sprintf(&access[strlen(access)], "</TD><TD><input type=\"hidden\" NAME=\"c_auth_mode\" VALUE=\"%s\">%s",
- buf,
- ((atoi(buf) != 0) ? "Yes" : "No"));
- sprintf(&access[strlen(access)], "</TD></TR>\n");
- break;
- case 53:
- sprintf(&funambol[strlen(funambol)], "<TR><TD>");
- sprintf(&funambol[strlen(funambol)], _("Funambol server host (blank to disable)"));
- sprintf(&funambol[strlen(funambol)], "</TD><TD>");
- sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_host\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
- break;
- case 54:
- sprintf(&funambol[strlen(funambol)], "<TR><TD>");
- sprintf(&funambol[strlen(funambol)], _("Funambol server port "));
- sprintf(&funambol[strlen(funambol)], "</TD><TD>");
- sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
- sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
- break;
- case 55:
- sprintf(&funambol[strlen(funambol)], "<TR><TD>");
- sprintf(&funambol[strlen(funambol)], _("Funambol sync source"));
- sprintf(&funambol[strlen(funambol)], "</TD><TD>");
- sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_source\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
- break;
- case 56:
- sprintf(&funambol[strlen(funambol)], "<TR><TD>");
- sprintf(&funambol[strlen(funambol)], _("Funambol auth details (user:pass)"));
- sprintf(&funambol[strlen(funambol)], "</TD><TD>");
- sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_auth\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
- break;
- case 57:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Perform RBL checks upon connect instead of after RCPT"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_rbl_at_greeting\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 58:
- sprintf(&access[strlen(access)], "<TR><TD>");
- sprintf(&access[strlen(access)], _("Master user name (blank to disable)"));
- sprintf(&access[strlen(access)], "</TD><TD>");
- sprintf(&access[strlen(access)], "<input type=\"text\" NAME=\"c_master_user\" MAXLENGTH=\"31\" VALUE=\"%s\">", buf);
- sprintf(&access[strlen(access)], "</TD></TR>\n");
- break;
- case 59:
- sprintf(&access[strlen(access)], "<TR><TD>");
- sprintf(&access[strlen(access)], _("Master user password"));
- sprintf(&access[strlen(access)], "</TD><TD>");
- sprintf(&access[strlen(access)], "<input type=\"password\" NAME=\"c_master_pass\" MAXLENGTH=\"31\" VALUE=\"%s\">",
- buf);
- sprintf(&directory[strlen(directory)], "</TD></TR>\n");
- break;
- case 60:
- sprintf(&funambol[strlen(funambol)], "<TR><TD>");
- sprintf(&funambol[strlen(funambol)], _("External pager tool (blank to disable)"));
- sprintf(&funambol[strlen(funambol)], "</TD><TD>");
- sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_pager_program\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
- sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
- break;
- case 61:
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Keep original from headers in IMAP"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_imap_keep_from\" VALUE=\"yes\" %s>",
- ((atoi(buf) != 0) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 62:
- sprintf(&network[strlen(network)], "<tr><td>");
- sprintf(&network[strlen(network)], _("XMPP (Jabber) client to server port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</td><td>");
- sprintf(&network[strlen(network)], "<input type=\"text\" name=\"c_xmpp_c2s_port\" maxlength=\"5\" value=\"%s\">", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 63:
- sprintf(&network[strlen(network)], "<tr><td>");
- sprintf(&network[strlen(network)], _("XMPP (Jabber) server to server port (-1 to disable)"));
- sprintf(&network[strlen(network)], "</td><td>");
- sprintf(&network[strlen(network)], "<input type=\"hidden\" name=\"c_xmpp_s2s_port\" value=\"%s\">\n", buf);
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
- case 64:
- sprintf(&pop3[strlen(pop3)], "<tr><td>");
- sprintf(&pop3[strlen(pop3)], _("POP3 fetch frequency in seconds"));
- sprintf(&pop3[strlen(pop3)], "</td><td>");
- sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_fetch\" MAXLENGTH=\"5\" value=\"%s\">\n", buf);
- sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
- break;
- case 65:
- sprintf(&pop3[strlen(pop3)], "<tr><td>");
- sprintf(&pop3[strlen(pop3)], _("POP3 fastest fetch frequency in seconds"));
- sprintf(&pop3[strlen(pop3)], "</td><td>");
- sprintf(&pop3[strlen(pop3)], "<input type=\"text\" name=\"c_pop3_fastest\" MAXLENGTH=\"5\" value=\"%s\">\n", buf);
- sprintf(&pop3[strlen(pop3)], "</TD></TR>\n");
- break;
- case 66: /* Flag spam */
- sprintf(&network[strlen(network)], "<TR><TD>");
- sprintf(&network[strlen(network)], _("Flag message as spam, instead of rejecting it"));
- sprintf(&network[strlen(network)], "</TD><TD>");
- sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_spam_flag_only\" VALUE=\"yes\" %s>",
- (atoi(buf) ? "CHECKED" : ""));
- sprintf(&network[strlen(network)], "</TD></TR>\n");
- break;
-
- }
-
- }
-
- serv_puts("GPEX site");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- sitepolicy = extract_int(&buf[4], 0);
- sitevalue = extract_int(&buf[4], 1);
- }
-
- serv_puts("GPEX mailboxes");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- mboxpolicy = extract_int(&buf[4], 0);
- mboxvalue = extract_int(&buf[4], 1);
- }
-
-
- sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
- sprintf(&purger[strlen(purger)], "<TR><TD>");
- sprintf(&purger[strlen(purger)], _("Default message expire policy for public rooms"));
- sprintf(&purger[strlen(purger)], "</TD><TD>");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"1\" %s>",
- ((sitepolicy == 1) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
- sprintf(&purger[strlen(purger)], "<br />\n");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"2\" %s>",
- ((sitepolicy == 2) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Expire by message count"));
- sprintf(&purger[strlen(purger)], "<br />\n");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"3\" %s>",
- ((sitepolicy == 3) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Expire by message age"));
- sprintf(&purger[strlen(purger)], "<br />");
- sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
- sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"sitevalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", sitevalue);
- sprintf(&purger[strlen(purger)], "</TD></TR>\n");
-
- sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
- sprintf(&purger[strlen(purger)], "<TR><TD>");
- sprintf(&purger[strlen(purger)], _("Default message expire policy for private mailboxes"));
- sprintf(&purger[strlen(purger)], "</TD><TD>");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"0\" %s>",
- ((mboxpolicy == 0) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Same policy as public rooms"));
- sprintf(&purger[strlen(purger)], "<br />\n");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"1\" %s>",
- ((mboxpolicy == 1) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
- sprintf(&purger[strlen(purger)], "<br />\n");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"2\" %s>",
- ((mboxpolicy == 2) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Expire by message count"));
- sprintf(&purger[strlen(purger)], "<br />\n");
- sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"3\" %s>",
- ((mboxpolicy == 3) ? "CHECKED" : "") );
- sprintf(&purger[strlen(purger)], _("Expire by message age"));
- sprintf(&purger[strlen(purger)], "<br />");
- sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
- sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"mboxvalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", mboxvalue);
- sprintf(&purger[strlen(purger)], "</TD></TR>\n");
-
- sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
-
-
- sprintf(&general[strlen(general)], "</table>");
- sprintf(&access[strlen(access)], "</table>");
- sprintf(&network[strlen(network)], "</table>");
- sprintf(&tuning[strlen(tuning)], "</table>");
- sprintf(&directory[strlen(directory)], "</table>");
- sprintf(&purger[strlen(purger)], "</table>");
- sprintf(&idxjnl[strlen(idxjnl)], "</table>");
- sprintf(&funambol[strlen(funambol)], "</table>");
- sprintf(&pop3[strlen(pop3)], "</table>");
-
- tabbed_dialog(9, tabnames);
-
- begin_tab(0, 9); StrBufAppendBufPlain(WCC->WBuf, general, strlen(general), 0); end_tab(0, 9);
- begin_tab(1, 9); StrBufAppendBufPlain(WCC->WBuf, access, strlen(access), 0); end_tab(1, 9);
- begin_tab(2, 9); StrBufAppendBufPlain(WCC->WBuf, network, strlen(network), 0); end_tab(2, 9);
- begin_tab(3, 9); StrBufAppendBufPlain(WCC->WBuf, tuning, strlen(tuning), 0); end_tab(3, 9);
- begin_tab(4, 9); StrBufAppendBufPlain(WCC->WBuf, directory, strlen(directory), 0); end_tab(4, 9);
- begin_tab(5, 9); StrBufAppendBufPlain(WCC->WBuf, purger, strlen(purger), 0); end_tab(5, 9);
- begin_tab(6, 9); StrBufAppendBufPlain(WCC->WBuf, idxjnl, strlen(idxjnl), 0); end_tab(6, 9);
- begin_tab(7, 9); StrBufAppendBufPlain(WCC->WBuf, funambol, strlen(funambol), 0); end_tab(7, 9);
- begin_tab(8, 9); StrBufAppendBufPlain(WCC->WBuf, pop3, strlen(pop3), 0); end_tab(8, 9);
-
- begin_tab(9, 9);
- wprintf("<input type=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Save changes"));
- wprintf(" ");
- wprintf("<input type=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">\n", _("Cancel"));
- end_tab(9, 9);
-
- wprintf("</FORM>\n");
- wprintf("</td></tr></table>\n");
- wDumpContent(1);
-}
-
typedef struct _CfgMapping {
int type;
const char *Key;
void load_siteconfig(void)
{
struct wcsession *WCC = WC;
- StrBuf *Buf, *Token;
+ StrBuf *Buf, *CfgToken;
HashList *Cfg;
char buf[SIZ];
long len;
serv_puts("GPEX site");
Buf = NewStrBuf();
- Token = NULL;
+ CfgToken = NULL;
StrBuf_ServGetln(Buf);
if (ChrPtr(Buf)[0] == '2') {
StrBufCutLeft(Buf, 4);
- Token = NewStrBuf();
- StrBufExtract_token(Token, Buf, 0, '|');
- Put(Cfg, HKEY("sitepolicy"), Token, HFreeStrBuf);
+ CfgToken = NewStrBuf();
+ StrBufExtract_token(CfgToken, Buf, 0, '|');
+ Put(Cfg, HKEY("sitepolicy"), CfgToken, HFreeStrBuf);
- Token = NewStrBuf();
- StrBufExtract_token(Token, Buf, 1, '|');
- Put(Cfg, HKEY("sitevalue"), Token, HFreeStrBuf);
+ CfgToken = NewStrBuf();
+ StrBufExtract_token(CfgToken, Buf, 1, '|');
+ Put(Cfg, HKEY("sitevalue"), CfgToken, HFreeStrBuf);
}
serv_puts("GPEX mailboxes");
if (buf[0] == '2') {
StrBufCutLeft(Buf, 4);
- Token = NewStrBuf();
- StrBufExtract_token(Token, Buf, 0, '|');
- Put(Cfg, HKEY("mboxpolicy"), Token, HFreeStrBuf);
+ CfgToken = NewStrBuf();
+ StrBufExtract_token(CfgToken, Buf, 0, '|');
+ Put(Cfg, HKEY("mboxpolicy"), CfgToken, HFreeStrBuf);
- Token = NewStrBuf();
- StrBufExtract_token(Token, Buf, 1, '|');
- Put(Cfg, HKEY("mboxvalue"), Token, HFreeStrBuf);
+ CfgToken = NewStrBuf();
+ StrBufExtract_token(CfgToken, Buf, 1, '|');
+ Put(Cfg, HKEY("mboxvalue"), CfgToken, HFreeStrBuf);
}
}
Tokens->Params[0]->len,
&vBuf);
Buf = (StrBuf*) vBuf;
- StrBufAppendBuf(Target, Buf, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Buf, 1);
}
}
InitModule_SITECONFIG
(void)
{
- WebcitAddUrlHandler(HKEY("display_siteconfig"), display_siteconfig, CTX_NONE);
WebcitAddUrlHandler(HKEY("siteconfig"), siteconfig, CTX_NONE);
- RegisterNamespace("SERV:CFG", 1, 1, tmplput_servcfg, CTX_NONE);
+ RegisterNamespace("SERV:CFG", 1, 2, tmplput_servcfg, CTX_NONE);
RegisterConditional(HKEY("COND:SERVCFG"), 3, ConditionalServCfg, CTX_NONE);
RegisterConditional(HKEY("COND:SERVCFG:SUBST"), 4, ConditionalServCfgSubst, CTX_NONE);
}
* \brief Print the value of a variable
* \param keyname get a key to print
*/
-void print_value_of(StrBuf *Target, WCTemplateToken *Token, void *Context, int ContextType) {
+void print_value_of(StrBuf *Target, WCTemplateToken *Tokens, void *Context, int ContextType) {
struct wcsession *WCC = WC;
wcsubst *ptr;
void *vVar;
/*if (WCC->vars != NULL) PrintHash(WCC->vars, VarPrintTransition, VarPrintEntry);*/
/// TODO: debricated!
- if (Token->pName[0] == '=') {
- DoTemplate(Token->pName+1, Token->NameEnd - 1, NULL, NULL, 0);
+ if (Tokens->pName[0] == '=') {
+ DoTemplate(Tokens->pName+1, Tokens->NameEnd - 1, NULL, NULL, 0);
}
//////TODO: if param[1] == "U" -> urlescape
/// X -> escputs
/** Page-local variables */
- if ((WCC->vars!= NULL) && GetHash(WCC->vars, Token->pName, Token->NameEnd, &vVar)) {
+ if ((WCC->vars!= NULL) && GetHash(WCC->vars, Tokens->pName, Tokens->NameEnd, &vVar)) {
ptr = (wcsubst*) vVar;
switch(ptr->wcs_type) {
case WCS_STRING:
pvo_do_cmd(Target, ptr->wcs_value);
break;
case WCS_FUNCTION:
- (*ptr->wcs_function) (Target, Token->nParameters, Token, Context, ContextType);
+ (*ptr->wcs_function) (Target, Tokens->nParameters, Tokens, Context, ContextType);
break;
case WCS_STRBUF:
case WCS_STRBUF_REF:
StrBufAppendPrintf(Target, "%ld", ptr->lvalue);
break;
default:
- lprintf(1,"WARNING: invalid value in SV-Hash at %s!\n", Token->pName);
- StrBufAppendPrintf(Target, "<pre>WARNING: \ninvalid value in SV-Hash at %s!\n</pre>", Token->pName);
+ lprintf(1,"WARNING: invalid value in SV-Hash at %s!\n", Tokens->pName);
+ StrBufAppendPrintf(Target, "<pre>WARNING: \ninvalid value in SV-Hash at %s!\n</pre>", Tokens->pName);
}
}
else {
lprintf(1, "didn't find Handler [%s] (in '%s' line %ld); "
" [%s]\n",
- Token->pName,
- ChrPtr(Token->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken));
+ Tokens->pName,
+ ChrPtr(Tokens->FileName),
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken));
wc_backtrace();
}
}
Template->Tokens[(Template->nTokensUsed)++] = NewToken;
}
-TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Token, WCTemplate *pTmpl)
+TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Tokens, WCTemplate *pTmpl)
{
const char *pch = *pCh;
const char *pchs, *pche;
lprintf(1, "Error (in '%s' line %ld); "
"evaluating template param [%s] in Token [%s]\n",
ChrPtr(pTmpl->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken),
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken),
*pCh);
pch ++;
free(Parm);
lprintf(1, "Error (in '%s' line %ld); "
"evaluating long template param [%s] in Token [%s]\n",
ChrPtr(pTmpl->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken),
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken),
*pCh);
free(Parm);
return NULL;
-int EvaluateConditional(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmpl, void *Context, int Neg, int state, int ContextType)
+int EvaluateConditional(StrBuf *Target, WCTemplateToken *Tokens, WCTemplate *pTmpl, void *Context, int Neg, int state, int ContextType)
{
ConditionalStruct *Cond;
- if ((Token->Params[0]->len == 1) &&
- (Token->Params[0]->Start[0] == 'X'))
- return (state != 0)?Token->Params[1]->lvalue:0;
+ if ((Tokens->Params[0]->len == 1) &&
+ (Tokens->Params[0]->Start[0] == 'X'))
+ return (state != 0)?Tokens->Params[1]->lvalue:0;
- Cond = (ConditionalStruct *) Token->PreEval;
+ Cond = (ConditionalStruct *) Tokens->PreEval;
if (Cond == NULL) {
lprintf(1, "Conditional [%s] (in '%s' line %ld); unknown![%s]\n",
- Token->Params[0]->Start,
+ Tokens->Params[0]->Start,
ChrPtr(pTmpl->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken));
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken));
return 1;
}
- if (Token->nParameters < Cond->nParams) {
+ if (Tokens->nParameters < Cond->nParams) {
lprintf(1, "Conditional [%s] (in '%s' line %ld); needs %ld Params![%s]\n",
- Token->Params[0]->Start,
+ Tokens->Params[0]->Start,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Cond->nParams,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
"<pre>\nConditional [%s] (in '%s' line %ld); needs %ld Params!\n[%s]\n</pre>\n",
- Token->Params[0]->Start,
+ Tokens->Params[0]->Start,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Cond->nParams,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
return 0;
}
- if (Cond->CondF(Token, Context, ContextType) == Neg)
- return Token->Params[1]->lvalue;
+ if (Cond->CondF(Tokens, Context, ContextType) == Neg)
+ return Tokens->Params[1]->lvalue;
return 0;
}
* \param state are we in conditional state?
* \param ContextType what type of information does context giv us?
*/
-int EvaluateToken(StrBuf *Target, WCTemplateToken *Token, WCTemplate *pTmpl, void *Context, int state, int ContextType)
+int EvaluateToken(StrBuf *Target, WCTemplateToken *Tokens, WCTemplate *pTmpl, void *Context, int state, int ContextType)
{
HashHandler *Handler;
void *vVar;
// much output, since pName is not terminated...
// lprintf(1,"Doing token: %s\n",Token->pName);
- switch (Token->Flags) {
+ switch (Tokens->Flags) {
case SV_GETTEXT:
- TmplGettext(Target, Token->nParameters, Token);
+ TmplGettext(Target, Tokens->nParameters, Tokens);
break;
case SV_CONDITIONAL: /** Forward conditional evaluation */
- return EvaluateConditional(Target, Token, pTmpl, Context, 1, state, ContextType);
+ return EvaluateConditional(Target, Tokens, pTmpl, Context, 1, state, ContextType);
break;
case SV_NEG_CONDITIONAL: /** Reverse conditional evaluation */
- return EvaluateConditional(Target, Token, pTmpl, Context, 0, state, ContextType);
+ return EvaluateConditional(Target, Tokens, pTmpl, Context, 0, state, ContextType);
break;
case SV_CUST_STR_CONDITIONAL: /** Conditional put custom strings from params */
- if (Token->nParameters >= 6) {
- if (EvaluateConditional(Target, Token, pTmpl, Context, 0, state, ContextType))
+ if (Tokens->nParameters >= 6) {
+ if (EvaluateConditional(Target, Tokens, pTmpl, Context, 0, state, ContextType))
StrBufAppendBufPlain(Target,
- Token->Params[5]->Start,
- Token->Params[5]->len,
+ Tokens->Params[5]->Start,
+ Tokens->Params[5]->len,
0);
else
StrBufAppendBufPlain(Target,
- Token->Params[4]->Start,
- Token->Params[4]->len,
+ Tokens->Params[4]->Start,
+ Tokens->Params[4]->len,
0);
}
else {
lprintf(1, "Conditional [%s] (in '%s' line %ld); needs at least 6 Params![%s]\n",
- Token->Params[0]->Start,
+ Tokens->Params[0]->Start,
ChrPtr(pTmpl->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken));
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
"<pre>\nConditional [%s] (in '%s' line %ld); needs 6 Params!\n[%s]\n</pre>\n",
- Token->Params[0]->Start,
+ Tokens->Params[0]->Start,
ChrPtr(pTmpl->FileName),
- Token->Line,
- ChrPtr(Token->FlatToken));
+ Tokens->Line,
+ ChrPtr(Tokens->FlatToken));
}
break;
case SV_SUBTEMPL:
- if (Token->nParameters == 1)
- DoTemplate(Token->Params[0]->Start, Token->Params[0]->len, NULL, NULL, ContextType);
+ if (Tokens->nParameters == 1)
+ DoTemplate(Tokens->Params[0]->Start, Tokens->Params[0]->len, NULL, NULL, ContextType);
break;
case SV_PREEVALUATED:
- Handler = (HashHandler*) Token->PreEval;
+ Handler = (HashHandler*) Tokens->PreEval;
if ((Handler->ContextRequired != CTX_NONE) &&
(Handler->ContextRequired != ContextType)) {
lprintf(1, "Handler [%s] (in '%s' line %ld); "
"requires context of type %ld, have %ld [%s]\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Handler->ContextRequired,
ContextType,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
"<pre>\nHandler [%s] (in '%s' line %ld);"
" requires context of type %ld, have %ld!\n[%s]\n</pre>\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Handler->ContextRequired,
ContextType,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
return -1;
}
Handler->HandlerFunc(Target,
- Token->nParameters,
- Token,
+ Tokens->nParameters,
+ Tokens,
Context,
ContextType);
break;
default:
- if (GetHash(GlobalNS, Token->pName, Token->NameEnd, &vVar)) {
+ if (GetHash(GlobalNS, Tokens->pName, Tokens->NameEnd, &vVar)) {
Handler = (HashHandler*) vVar;
if ((Handler->ContextRequired != CTX_NONE) &&
(Handler->ContextRequired != ContextType)) {
lprintf(1, "Handler [%s] (in '%s' line %ld); "
"requires context of type %ld, have %ld [%s]\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Handler->ContextRequired,
ContextType,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
"<pre>\nHandler [%s] (in '%s' line %ld);"
" requires context of type %ld, have %ld!\n[%s]\n</pre>\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
+ Tokens->Line,
Handler->ContextRequired,
ContextType,
- ChrPtr(Token->FlatToken));
+ ChrPtr(Tokens->FlatToken));
return -1;
}
- else if ((Token->nParameters < Handler->nMinArgs) ||
- (Token->nParameters > Handler->nMaxArgs)) {
+ else if ((Tokens->nParameters < Handler->nMinArgs) ||
+ (Tokens->nParameters > Handler->nMaxArgs)) {
lprintf(1, "Handler [%s] (in '%s' line %ld); "
"doesn't work with %ld params [%s]\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
- Token->nParameters,
- ChrPtr(Token->FlatToken));
+ Tokens->Line,
+ Tokens->nParameters,
+ ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
"<pre>\nHandler [%s] (in '%s' line %ld);"
" doesn't work with %ld params!\n[%s]\n</pre>\n",
- Token->pName,
+ Tokens->pName,
ChrPtr(pTmpl->FileName),
- Token->Line,
- Token->nParameters,
- ChrPtr(Token->FlatToken));
+ Tokens->Line,
+ Tokens->nParameters,
+ ChrPtr(Tokens->FlatToken));
}
else {
Handler->HandlerFunc(Target,
- Token->nParameters,
- Token,
+ Tokens->nParameters,
+ Tokens,
Context,
ContextType); /*TODO: subset of that */
}
}
else {
- print_value_of(Target, Token, Context, ContextType);
+ print_value_of(Target, Tokens, Context, ContextType);
}
}
return 0;
* preselect which user should be selected in the browser
*/
void select_user_to_edit(char *message, char *preselect)
-{/*
- char buf[SIZ];
- char username[SIZ];
- */
+{
output_headers(1, 0, 0, 0, 1, 0);
do_template("edituser_select", NULL);
end_burst();
-
-/*
-
- output_headers(1, 1, 2, 0, 0, 0);
- wprintf("<div id=\"banner\">\n");
- wprintf("<img src=\"static/usermanag_48x.gif\">");
- wprintf("<h1>");
- wprintf(_("Edit or delete users"));
- wprintf("</h1>");
- wprintf("</div>");
-
- wprintf("<div id=\"content\" class=\"service\">\n");
-
- if (message != NULL) wprintf(message);
-
- wprintf("<table border=0 cellspacing=10><tr valign=top><td>\n");
-
- svput("BOXTITLE", WCS_STRING, _("Add users"));
- do_template("beginbox", NULL);
-
- wprintf(_("To create a new user account, enter the desired "
- "user name in the box below and click 'Create'."));
- wprintf("<br /><br />");
-
- wprintf("<center><form method=\"POST\" action=\"create_user\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
- wprintf(_("New user: "));
- wprintf("<input type=\"text\" name=\"username\"><br />\n"
- "<input type=\"submit\" name=\"create_button\" value=\"%s\">"
- "</form></center>\n", _("Create"));
-
- do_template("endbox", NULL);
-
- wprintf("</td><td>");
-
- svput("BOXTITLE", WCS_STRING, _("Edit or Delete users"));
- do_template("beginbox", NULL);
-
- wprintf(_("To edit an existing user account, select the user "
- "name from the list and click 'Edit'."));
- wprintf("<br /><br />");
-
- wprintf("<center>"
- "<form method=\"POST\" action=\"display_edituser\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
- wprintf("<select name=\"username\" size=10 style=\"width:100%%\">\n");
- serv_puts("LIST");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '1') {
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- extract_token(username, buf, 0, '|', sizeof username);
- wprintf("<option");
- if (preselect != NULL)
- if (!strcasecmp(username, preselect))
- wprintf(" selected");
- wprintf(">");
- escputs(username);
- wprintf("\n");
- }
- }
- wprintf("</select><br />\n");
-
- wprintf("<input type=\"submit\" name=\"edit_config_button\" value=\"%s\">", _("Edit configuration"));
- wprintf("<input type=\"submit\" name=\"edit_abe_button\" value=\"%s\">", _("Edit address book entry"));
- wprintf("<input type=\"submit\" name=\"delete_button\" value=\"%s\" "
- "onClick=\"return confirm('%s');\">", _("Delete user"), _("Delete this user?"));
- wprintf("</form></center>\n");
- do_template("endbox", NULL);
-
- wprintf("</td></tr></table>\n");
-
- wDumpContent(1);
-*/
}
}
-void tmplput_USERLIST_UserName(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_UserName(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
-/// TODO: X
- StrBufAppendBuf(Target, ul->UserName, 0);
+ StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, ul->UserName, 0);
}
-void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target, "%d", ul->AccessLevel, 0);
}
-void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendBufPlain(Target, _(axdefs[ul->AccessLevel]), -1, 0);
}
-void tmplput_USERLIST_UID(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_UID(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target, "%d", ul->UID, 0);
}
-void tmplput_USERLIST_LastLogonNo(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_LastLogonNo(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target,"%ld", ul->LastLogonT, 0);
}
-void tmplput_USERLIST_LastLogonStr(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_LastLogonStr(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrEscAppend(Target, NULL, asctime(localtime(&ul->LastLogonT)), 0, 0);
}
-void tmplput_USERLIST_nLogons(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_nLogons(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target, "%d", ul->nLogons, 0);
}
-void tmplput_USERLIST_nPosts(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_nPosts(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target, "%d", ul->nPosts, 0);
}
-void tmplput_USERLIST_Flags(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_Flags(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
StrBufAppendPrintf(Target, "%d", ul->Flags, 0);
}
-void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context, int ContextType)
+void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
{
UserListEntry *ul = (UserListEntry*) Context;
FreeStrBuf(&Buf);
}
-
-
-/* *
- * Edit a user.
- * If supplied_username is null, look in the "username"
- * web variable for the name of the user to edit.
- *
- * If "is_new" is set to nonzero, this screen will set the web variables
- * to send the user to the vCard editor next.
- * supplied_username user to look up or NULL if to search in the environment
- * is_new should we create the user?
- * /
-void display_edituser(char *supplied_username, int is_new) {
- char buf[1024];
- char error_message[1024];
- time_t now;
-
- char username[256];
- char password[256];
- unsigned int flags;
- int timescalled;
- int msgsposted;
- int axlevel;
- long usernum;
- time_t lastcall;
- int purgedays;
- int i;
-
- if (supplied_username != NULL) {
- safestrncpy(username, supplied_username, sizeof username);
- }
- else {
- safestrncpy(username, bstr("username"), sizeof username);
- }
-
- serv_printf("AGUP %s", username);
- serv_getln(buf, sizeof buf);
- if (buf[0] != '2') {
- sprintf(error_message,
- "<img src=\"static/error.gif\" align=center>"
- "%s<br /><br />\n", &buf[4]);
- select_user_to_edit(error_message, username);
- return;
- }
-
- extract_token(username, &buf[4], 0, '|', sizeof username);
- extract_token(password, &buf[4], 1, '|', sizeof password);
- flags = extract_int(&buf[4], 2);
- timescalled = extract_int(&buf[4], 3);
- msgsposted = extract_int(&buf[4], 4);
- axlevel = extract_int(&buf[4], 5);
- usernum = extract_long(&buf[4], 6);
- lastcall = extract_long(&buf[4], 7);
- purgedays = extract_long(&buf[4], 8);
-
- if (havebstr("edit_abe_button")) {
- display_edit_address_book_entry(username, usernum);
- return;
- }
-
- if (havebstr("delete_button")) {
- delete_user(username);
- return;
- }
-
- output_headers(1, 1, 2, 0, 0, 0);
- wprintf("<div id=\"banner\">\n");
- wprintf("<h1>");
- wprintf(_("Edit user account: "));
- escputs(username);
- wprintf("</h1>");
- wprintf("</div>");
-
- wprintf("<div id=\"content\" class=\"service\">\n");
-
- wprintf("<div class=\"fix_scrollbar_bug\">"
- "<table class=\"useredit_background\"><tr><td>\n");
- wprintf("<form method=\"POST\" action=\"edituser\">\n"
- "<input type=\"hidden\" name=\"username\" value=\"");
- escputs(username);
- wprintf("\">\n");
- wprintf("<input type=\"hidden\" name=\"is_new\" value=\"%d\">\n"
- "<input type=\"hidden\" name=\"usernum\" value=\"%ld\">\n",
- is_new, usernum);
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-
- wprintf("<input type=\"hidden\" name=\"flags\" value=\"%d\">\n", flags);
-
- wprintf("<center><table>");
-
- wprintf("<tr><td>");
- wprintf(_("User name:"));
- wprintf("</td><td>"
- "<input type=\"text\" name=\"newname\" value=\"");
- escputs(username);
- wprintf("\" maxlength=\"63\"></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("Password"));
- wprintf("</td><td>"
- "<input type=\"password\" name=\"password\" value=\"");
- escputs(password);
- wprintf("\" maxlength=\"20\"></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("Permission to send Internet mail"));
- wprintf("</td><td>");
- wprintf("<input type=\"checkbox\" name=\"inetmail\" value=\"yes\" ");
- if (flags & US_INTERNET) {
- wprintf("checked ");
- }
- wprintf("></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("Number of logins"));
- wprintf("</td><td>"
- "<input type=\"text\" name=\"timescalled\" value=\"");
- wprintf("%d", timescalled);
- wprintf("\" maxlength=\"6\"></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("Messages submitted"));
- wprintf("</td><td>"
- "<input type=\"text\" name=\"msgsposted\" value=\"");
- wprintf("%d", msgsposted);
- wprintf("\" maxlength=\"6\"></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("Access level"));
- wprintf("</td><td>"
- "<select name=\"axlevel\">\n");
- for (i=0; i<7; ++i) {
- wprintf("<option ");
- if (axlevel == i) {
- wprintf("selected ");
- }
- wprintf("value=\"%d\">%d - %s</option>\n",
- i, i, axdefs[i]);
- }
- wprintf("</select></td></tr>\n");
-
- wprintf("<tr><td>");
- wprintf(_("User ID number"));
- wprintf("</td><td>"
- "<input type=\"text\" name=\"usernum\" value=\"");
- wprintf("%ld", usernum);
- wprintf("\" maxlength=\"7\"></td></tr>\n");
-
- now = time(NULL);
- wprintf("<tr><td>");
- wprintf(_("Date and time of last login"));
- wprintf("</td><td>"
- "<select name=\"lastcall\">\n");
-
- wprintf("<option selected value=\"%ld\">", lastcall);
- escputs(asctime(localtime(&lastcall)));
- wprintf("</option>\n");
-
- wprintf("<option value=\"%ld\">", now);
- escputs(asctime(localtime(&now)));
- wprintf("</option>\n");
-
- wprintf("</select></td></tr>");
-
- wprintf("<tr><td>");
- wprintf(_("Auto-purge after this many days"));
- wprintf("</td><td>"
- "<input type=\"text\" name=\"purgedays\" value=\"");
- wprintf("%d", purgedays);
- wprintf("\" maxlength=\"5\"></td></tr>\n");
-
- wprintf("</table>\n");
-
- wprintf("<input type=\"submit\" name=\"ok_button\" value=\"%s\">\n"
- " "
- "<input type=\"submit\" name=\"cancel\" value=\"%s\">\n"
- "<br /><br /></form>\n", _("Save changes"), _("Cancel"));
-
- wprintf("</center>\n");
- wprintf("</td></tr></table></div>\n");
- wDumpContent(1);
-
-}
-*/
-
/**
* do the backend operation of the user edit on the server
*/