Buf = NewStrBuf();
CfgToken = NULL;
StrBuf_ServGetln(Buf);
- if (ChrPtr(Buf)[0] == '2') {
+ if (GetServerStatus(Buf, NULL) == 2) {
StrBufCutLeft(Buf, 4);
CfgToken = NewStrBuf();
}
serv_puts("GPEX mailboxes");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
+ StrBuf_ServGetln(Buf);
+ if (GetServerStatus(Buf, NULL) == 2) {
StrBufCutLeft(Buf, 4);
CfgToken = NewStrBuf();
StrBufExtract_token(CfgToken, Buf, 1, '|');
Put(Cfg, HKEY("mboxvalue"), CfgToken, HFreeStrBuf);
}
+ FreeStrBuf(&Buf);
}
serv_getln(buf, sizeof buf);
serv_printf("SPEX mailboxes|%d|%d", ibstr("mboxpolicy"), ibstr("mboxvalue"));
serv_getln(buf, sizeof buf);
-
- strcpy(serv_info.serv_default_cal_zone, bstr("c_default_cal_zone"));
+ FreeStrBuf(&WCC->serv_info->serv_default_cal_zone);
+ WCC->serv_info->serv_default_cal_zone = NewStrBufDup(sbstr("c_default_cal_zone"));
safestrncpy(WCC->ImportantMessage, _("Your system configuration has been updated."),
sizeof WCC->ImportantMessage);
display_aide_menu();
}
-void tmplput_servcfg(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
+void tmplput_servcfg(StrBuf *Target, WCTemplputParams *TP)
{
wcsession *WCC = WC;
void *vBuf;
load_siteconfig();
GetHash(WCC->ServCfg, TKEY(0), &vBuf);
Buf = (StrBuf*) vBuf;
- StrBufAppendTemplate(Target, nArgs, Tokens, Context, ContextType, Buf, 1);
+ StrBufAppendTemplate(Target, TP, Buf, 1);
}
}
-int ConditionalServCfg(WCTemplateToken *Tokens, void *Context, int ContextType)
+int ConditionalServCfg(StrBuf *Target, WCTemplputParams *TP)
{
wcsession *WCC = WC;
void *vBuf;
GetHash(WCC->ServCfg, TKEY(2), &vBuf);
if (vBuf == NULL) return 0;
Buf = (StrBuf*) vBuf;
- if (Tokens->nParameters == 3) {
+ if (TP->Tokens->nParameters == 3) {
return 1;
}
- else if (Tokens->Params[3]->Type == TYPE_STR)
- return (strcmp(Tokens->Params[3]->Start, ChrPtr(Buf)) == 0);
- else return (StrTol(Buf) == Tokens->Params[3]->lvalue);
+ else if (TP->Tokens->Params[3]->Type == TYPE_STR)
+ return (strcmp(TP->Tokens->Params[3]->Start, ChrPtr(Buf)) == 0);
+ else return (StrTol(Buf) == TP->Tokens->Params[3]->lvalue);
}
else return 0;
}
-int ConditionalServCfgSubst(WCTemplateToken *Tokens, void *Context, int ContextType)
+int ConditionalServCfgSubst(StrBuf *Target, WCTemplputParams *TP)
{
wcsession *WCC = WC;
void *vBuf;
if (vBuf == NULL) return 0;
Buf = (StrBuf*) vBuf;
- return CompareSubstToStrBuf(Buf, Tokens->Params[3]);
+ return CompareSubstToStrBuf(Buf, TP->Tokens->Params[3]);
}
else return 0;
}
+void CfgZoneTempl(StrBuf *TemplBuffer, WCTemplputParams *TP)
+{
+ StrBuf *Zone = (StrBuf*) CTX;
+
+ SVPutBuf("ZONENAME", Zone, 1);
+}
+
void
InitModule_SITECONFIG
(void)
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);
+ RegisterIterator("PREF:ZONE", 0, ZoneHash, NULL, CfgZoneTempl, NULL, CTX_PREF, CTX_NONE, IT_NOFLAG);
+}
+
+void
+ServerStartModule_SITECONFIG
+(void)
+{
+ LoadZoneFiles();
+}
+
+void
+ServerShutdownModule_SITECONFIG
+(void)
+{
+ DeleteHash(&ZoneHash);
+}
+
+
+void
+SessionDestroyModule_SITECONFIG
+(wcsession *sess)
+{
+ DeleteHash(&sess->ServCfg);
}