WebCit (classic) now loads obsolete "directory" domains as "localhost" domains
[citadel.git] / webcit / inetconf.c
index d7707f019c3804df68354361b2cb9f047fce1f88..265f3f6bd1f61fc177eef28bd72c247fb0df1ca5 100644 (file)
@@ -61,20 +61,22 @@ void load_inetconf(void)
                
        if (GetServerStatus(Buf, NULL) == 1) {
                CfgToken = NewStrBuf();
-               while ((len = StrBuf_ServGetln(Buf),
-                       ((len >= 0) && 
-                        ((len != 3) ||
-                         strcmp(ChrPtr(Buf), "000")))))
+               while ((len = StrBuf_ServGetln(Buf), ((len >= 0) && ((len != 3) || strcmp(ChrPtr(Buf), "000")))))
                {
                        Value = NewStrBuf();
                        StrBufExtract_token(CfgToken, Buf, 1, '|');
+
+                       // VILE SLEAZY HACK: change obsolete "directory" domains to "localhost" domains
+                       if (!strcasecmp(ChrPtr(CfgToken), "directory")) {
+                               FreeStrBuf(&CfgToken);
+                               CfgToken = NewStrBufPlain(HKEY("localhost"));
+                       }
+
                        StrBufExtract_token(Value, Buf, 0, '|');
                        GetHash(WCC->InetCfg, ChrPtr(CfgToken), StrLength(CfgToken), &vHash);
                        Hash = (HashList*) vHash;
                        if (Hash == NULL) {
-                               syslog(1, "ERROR Loading inet config line: [%s]\n", 
-                                       ChrPtr(Buf));
+                               syslog(LOG_WARNING, "ERROR Loading inet config line: [%s]", ChrPtr(Buf));
                                FreeStrBuf(&Value);
                                continue;
                        }
@@ -165,9 +167,7 @@ void new_save_inetconf(void) {
                                while (GetNextHashPos(Hash, where, &KeyLen, &Key, &vStr)) {
                                        Str = (StrBuf*) vStr;
                                        if ((Str!= NULL) && (StrLength(Str) > 0))
-                                               serv_printf("%s|%s", 
-                                                           ChrPtr(Str),
-                                                           CfgNames[i].Key); 
+                                               serv_printf("%s|%s", ChrPtr(Str), CfgNames[i].Key); 
                                }
                                DeleteHashPos(&where);
                        }                       
@@ -179,6 +179,7 @@ void new_save_inetconf(void) {
        url_do_template();
 }
 
+
 void DeleteInetConfHash(StrBuf *Target, WCTemplputParams *TP)
 {
        wcsession *WCC = WC;
@@ -201,6 +202,48 @@ HashList *GetInetConfHash(StrBuf *Target, WCTemplputParams *TP)
        return vHash;
 }
 
+
+HashList *GetValidDomainNames(StrBuf *Target, WCTemplputParams *TP) 
+{
+       StrBuf *Line;
+       HashList *ValidDomainNames = NULL;
+       long State;
+       int gvdnlevel = 0;
+       
+       serv_printf("GVDN %d", gvdnlevel);
+       Line = NewStrBuf();
+       StrBuf_ServGetln(Line);
+       if (GetServerStatus(Line, &State) == 1) 
+       {
+               int Done = 0;
+               int n = 0;
+
+               ValidDomainNames = NewHash(1, NULL);
+               while(!Done && (StrBuf_ServGetln(Line) >= 0))
+                       if ( (StrLength(Line)==3) && 
+                            !strcmp(ChrPtr(Line), "000"))
+                       {
+                               Done = 1;
+                       }
+                       else
+                       {
+                               Put(ValidDomainNames, 
+                                   IKEY(n),
+                                   NewStrBufDup(Line), 
+                                   HFreeStrBuf);
+                               n++; /* #0 is the type... */
+                       }
+       }
+       else if (State == 550)
+               AppendImportantMessage(_("Higher access is required to access this function."), -1);
+
+       FreeStrBuf(&Line);
+
+       return ValidDomainNames;
+}
+
+
+
 void 
 InitModule_INETCONF
 (void)
@@ -208,4 +251,5 @@ InitModule_INETCONF
        WebcitAddUrlHandler(HKEY("save_inetconf"), "", 0, new_save_inetconf, 0);
        RegisterIterator("SERVCFG:INET", 1, NULL, GetInetConfHash, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG);
        RegisterNamespace("SERVCFG:FLUSHINETCFG",0, 0, DeleteInetConfHash, NULL, CTX_NONE);
+       RegisterIterator("ITERATE:VALID:DOMAINNAMES", 1, NULL, GetValidDomainNames, NULL, DeleteHash, CTX_STRBUF, CTX_NONE, IT_NOFLAG);
 }