HashList *ZoneHash = NULL;
+ConstStr ExpirePolicyString = {CStrOf(roompolicy) };
+
+ConstStr ExpirePolicyStrings[][2] = {
+ { { CStrOf(roompolicy) } , { strof(roompolicy) "_value", sizeof(strof(roompolicy) "_value") - 1 } },
+ { { CStrOf(floorpolicy) } , { strof(floorpolicy) "_value", sizeof(strof(floorpolicy) "_value") - 1 } },
+ { { CStrOf(sitepolicy) } , { strof(sitepolicy) "_value", sizeof(strof(sitepolicy) "_value") - 1 } },
+ { { CStrOf(mailboxespolicy)} , { strof(mailboxespolicy)"_value", sizeof(strof(mailboxespolicy)"_value") - 1 } }
+};
+
+void LoadExpirePolicy(GPEXWhichPolicy which)
+{
+ StrBuf *Buf;
+ wcsession *WCC = WC;
+ long State;
+ const char *Pos = NULL;
+
+ serv_printf("GPEX %s", ExpirePolicyStrings[which][0].Key);
+ Buf = NewStrBuf();
+ StrBuf_ServGetln(Buf);
+ WCC->Policy[which].loaded = 1;
+ if (GetServerStatus(Buf, &State) == 2) {
+ Pos = ChrPtr(Buf) + 4;
+ WCC->Policy[which].expire_mode = StrBufExtractNext_long(Buf, &Pos, '|');
+ WCC->Policy[which].expire_value = StrBufExtractNext_long(Buf, &Pos, '|');
+ }
+ else if (State == 550)
+ StrBufAppendBufPlain(WCC->ImportantMsg,
+ _("Higher access is required to access this function."), -1, 0);
+ FreeStrBuf(&Buf);
+}
+
+void SaveExpirePolicyFromHTTP(GPEXWhichPolicy which)
+{
+ StrBuf *Buf;
+ long State;
+
+ serv_printf("SPEX %s|%d|%d",
+ ExpirePolicyStrings[which][0].Key,
+ ibcstr( ExpirePolicyStrings[which][1] ),
+ ibcstr( ExpirePolicyStrings[which][1] ) );
+
+ Buf = NewStrBuf();
+ StrBuf_ServGetln(Buf);
+ GetServerStatus(Buf, &State);
+ if (State == 550)
+ StrBufAppendBufPlain(WC->ImportantMsg,
+ _("Higher access is required to access this function."), -1, 0);
+ FreeStrBuf(&Buf);
+}
+
+int ConditionalExpire(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+ GPEXWhichPolicy which;
+ int CompareWith;
+
+ which = GetTemplateTokenNumber(Target, TP, 2, 0);
+ CompareWith = GetTemplateTokenNumber(Target, TP, 3, 0);
+
+ if (WCC->Policy[which].loaded == 0) LoadExpirePolicy(which);
+
+ return WCC->Policy[which].expire_mode == CompareWith;
+}
+
+void tmplput_ExpireValue(StrBuf *Target, WCTemplputParams *TP)
+{
+ GPEXWhichPolicy which;
+ wcsession *WCC = WC;
+
+ which = GetTemplateTokenNumber(Target, TP, 2, 0);
+ if (WCC->Policy[which].loaded == 0) LoadExpirePolicy(which);
+ StrBufAppendPrintf(Target, "%d", WCC->Policy[which].expire_value);
+}
+
+
+void tmplput_ExpireMode(StrBuf *Target, WCTemplputParams *TP)
+{
+ GPEXWhichPolicy which;
+ wcsession *WCC = WC;
+
+ which = GetTemplateTokenNumber(Target, TP, 2, 0);
+ if (WCC->Policy[which].loaded == 0) LoadExpirePolicy(which);
+ StrBufAppendPrintf(Target, "%d", WCC->Policy[which].expire_mode);
+}
+
void LoadZoneFiles(void)
void load_siteconfig(void)
{
wcsession *WCC = WC;
- StrBuf *Buf, *CfgToken;
+ StrBuf *Buf;
HashList *Cfg;
char buf[SIZ];
long len;
}
FreeStrBuf(&Buf);
- serv_puts("GPEX site");
- Buf = NewStrBuf();
- CfgToken = NULL;
- StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, NULL) == 2) {
- StrBufCutLeft(Buf, 4);
-
- CfgToken = NewStrBuf();
- StrBufExtract_token(CfgToken, Buf, 0, '|');
- Put(Cfg, HKEY("sitepolicy"), CfgToken, HFreeStrBuf);
-
- CfgToken = NewStrBuf();
- StrBufExtract_token(CfgToken, Buf, 1, '|');
- Put(Cfg, HKEY("sitevalue"), CfgToken, HFreeStrBuf);
- }
-
- serv_puts("GPEX mailboxes");
- StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, NULL) == 2) {
- StrBufCutLeft(Buf, 4);
-
- CfgToken = NewStrBuf();
- StrBufExtract_token(CfgToken, Buf, 0, '|');
- Put(Cfg, HKEY("mboxpolicy"), CfgToken, HFreeStrBuf);
-
- CfgToken = NewStrBuf();
- StrBufExtract_token(CfgToken, Buf, 1, '|');
- Put(Cfg, HKEY("mboxvalue"), CfgToken, HFreeStrBuf);
- }
- FreeStrBuf(&Buf);
+ LoadExpirePolicy(sitepolicy);
+ LoadExpirePolicy(mailboxespolicy);
}
+
/**
* parse siteconfig changes
*/
}
serv_puts("000");
- serv_printf("SPEX site|%d|%d", ibstr("sitepolicy"), ibstr("sitevalue"));
- serv_getln(buf, sizeof buf);
- serv_printf("SPEX mailboxes|%d|%d", ibstr("mboxpolicy"), ibstr("mboxvalue"));
- serv_getln(buf, sizeof buf);
+ SaveExpirePolicyFromHTTP(sitepolicy);
+ SaveExpirePolicyFromHTTP(mailboxespolicy);
+
FreeStrBuf(&WCC->serv_info->serv_default_cal_zone);
WCC->serv_info->serv_default_cal_zone = NewStrBufDup(sbstr("c_default_cal_zone"));
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);
+
+ REGISTERTokenParamDefine(roompolicy);
+ REGISTERTokenParamDefine(floorpolicy);
+ REGISTERTokenParamDefine(sitepolicy);
+ REGISTERTokenParamDefine(mailboxespolicy);
+
+ REGISTERTokenParamDefine(EXPIRE_NEXTLEVEL);
+ REGISTERTokenParamDefine(EXPIRE_MANUAL);
+ REGISTERTokenParamDefine(EXPIRE_NUMMSGS);
+ REGISTERTokenParamDefine(EXPIRE_AGE);
+
+ RegisterConditional(HKEY("COND:EXPIRE:MODE"), 2, ConditionalExpire, CTX_NONE);
+ RegisterNamespace("EXPIRE:VALUE", 1, 2, tmplput_ExpireValue, NULL, CTX_NONE);
+ RegisterNamespace("EXPIRE:MODE", 1, 2, tmplput_ExpireMode, NULL, CTX_NONE);
}
void
</td></tr>
<tr><td><?_("Default message expire policy for public rooms")></td><td>
-<input type="radio" NAME="sitepolicy" VALUE="1" <?%("COND:SERVCFG", 1, "sitepolicy", 1, "CHECKED", "")>>
+<input type="radio" NAME="sitepolicy" VALUE="<?DEF:VAL(#"EXPIRE_MANUAL")>" <?%("COND:EXPIRE:MODE", 1, #"sitepolicy", #"EXPIRE_MANUAL", "CHECKED", "")>>
<?_("Never automatically expire messages")>
<br />
-<input type="radio" NAME="sitepolicy" VALUE="2" <?%("COND:SERVCFG", 1, "sitepolicy", 2, "CHECKED", "")>>
+<input type="radio" NAME="sitepolicy" VALUE="<?DEF:VAL(#"EXPIRE_NUMMSGS")>" <?%("COND:EXPIRE:MODE", 1, #"sitepolicy", #"EXPIRE_NUMMSGS", "CHECKED", "")>>
<?_("Expire by message count")><br />
-<input type="radio" NAME="sitepolicy" VALUE="3" <?%("COND:SERVCFG", 1, "sitepolicy", 3, "CHECKED", "")>>
+<input type="radio" NAME="sitepolicy" VALUE="<?DEF:VAL( #"EXPIRE_AGE")>" <?%("COND:EXPIRE:MODE", 1, #"sitepolicy", #"EXPIRE_AGE", "CHECKED", "")>>
<?_("Expire by message age")>
<br />
<?_("Number of messages or days: ")>
-<input type="text" NAME="sitevalue" MAXLENGTH="5" VALUE='<?SERV:CFG("sitevalue")>'>
+<input type="text" NAME="sitepolicy_value" MAXLENGTH="5" VALUE='<?SERV:CFG("sitevalue")>'>
</td></tr>
<tr><td COLSPAN=2><hr /></td></tr>
<tr><td><?_("Default message expire policy for private mailboxes")></td><td>
-<input type="radio" NAME="mboxpolicy" VALUE="0" <?%("COND:SERVCFG", 1, "mboxpolicy", 0, "CHECKED", "")>>
+<input type="radio" NAME="mailboxespolicy" VALUE="<?DEF:VAL(#"EXPIRE_NEXTLEVEL")>" <?%("COND:EXPIRE:MODE", 1, #"mailboxespolicy", #"EXPIRE_NEXTLEVEL", "CHECKED", "")>>
<?_("Same policy as public rooms")>
<br />
-<input type="radio" NAME="mboxpolicy" VALUE="1" <?%("COND:SERVCFG", 1, "mboxpolicy", 1, "CHECKED", "")>>
+<input type="radio" NAME="mailboxespolicy" VALUE="<?DEF:VAL(#"EXPIRE_MANUAL")>" <?%("COND:EXPIRE:MODE", 1, #"mailboxespolicy", #"EXPIRE_MANUAL", "CHECKED", "")>>
<?_("Never automatically expire messages")>
<br />
-<input type="radio" NAME="mboxpolicy" VALUE="2" <?%("COND:SERVCFG", 1, "mboxpolicy", 2, "CHECKED", "")>>
+<input type="radio" NAME="mailboxespolicy" VALUE="<?DEF:VAL(#"EXPIRE_NUMMSGS")>" <?%("COND:EXPIRE:MODE", 1, #"mailboxespolicy", #"EXPIRE_NUMMSGS", "CHECKED", "")>>
<?_("Expire by message count")>
<br />
-<input type="radio" NAME="mboxpolicy" VALUE="3" <?%("COND:SERVCFG", 1, "mboxpolicy", 3, "CHECKED", "")>>
+<input type="radio" NAME="mailboxespolicy" VALUE="<?DEF:VAL( #"EXPIRE_AGE")>" <?%("COND:SERVCFG", 1, #"mailboxespolicy", #"EXPIRE_AGE", "CHECKED", "")>>
<?_("Expire by message age")>
<br />
<?_("Number of messages or days: ")>
-<input type="text" NAME="mboxvalue" MAXLENGTH="5" VALUE='<?SERV:CFG("mboxvalue")>'>
+<input type="text" NAME="mailboxespolicy_expire_value" MAXLENGTH="5" VALUE='<?EXPIRE:VALUE(#"mailboxespolicy")>'>
</td></tr>
<tr><td COLSPAN=2><hr /></td></tr>