stable now but there are GIANT PIECES MISSING
[citadel.git] / citadel / modules / inetcfg / serv_inetcfg.c
index 90f4431fd2613701274b810a661fa27673424359..71155c8b09c4d8033f0c2869f72ad66d47e79856 100644 (file)
@@ -1,11 +1,18 @@
 /*
- * $Id$ 
- *
  * This module handles the loading/saving and maintenance of the
  * system's Internet configuration.  It's not an optional component; I
  * wrote it as a module merely to keep things as clean and loosely coupled
  * as possible.
  *
+ * Copyright (c) 1987-2021 by the citadel.org team
+ *
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  */
 
 #include "sysdep.h"
 #include <pwd.h>
 #include <errno.h>
 #include <sys/types.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
+#include <time.h>
 #include <sys/wait.h>
 #include <string.h>
 #include <limits.h>
+#include <libcitadel.h>
 #include "citadel.h"
 #include "server.h"
 #include "citserver.h"
 #include "support.h"
 #include "config.h"
-#include "room_ops.h"
 #include "user_ops.h"
-#include "policy.h"
 #include "database.h"
 #include "msgbase.h"
-#include "tools.h"
 #include "internet_addressing.h"
 #include "genstamp.h"
 #include "domain.h"
-
-
 #include "ctdl_module.h"
 
 
@@ -55,8 +47,8 @@ void inetcfg_setTo(struct CtdlMessage *msg) {
        char *conf;
        char buf[SIZ];
        
-       if (msg->cm_fields['M']==NULL) return;
-       conf = strdup(msg->cm_fields['M']);
+       if (CM_IsEmpty(msg, eMesageText)) return;
+       conf = strdup(msg->cm_fields[eMesageText]);
 
        if (conf != NULL) {
                do {
@@ -70,62 +62,34 @@ void inetcfg_setTo(struct CtdlMessage *msg) {
 }
 
 
-#ifdef ___NOT_CURRENTLY_IN_USE___
-void spamstrings_setTo(struct CtdlMessage *msg) {
-       char buf[SIZ];
-       char *conf;
-       struct spamstrings_t *sptr;
-       int i, n;
-
-       /* Clear out the existing list */
-       while (spamstrings != NULL) {
-               sptr = spamstrings;
-               spamstrings = spamstrings->next;
-               free(sptr->string);
-               free(sptr);
-       }
-
-       /* Read in the new list */
-       if (msg->cm_fields['M']==NULL) return;
-       conf = strdup(msg->cm_fields['M']);
-       if (conf == NULL) return;
-
-       n = num_tokens(conf, '\n');
-       for (i=0; i<n; ++i) {
-               extract_token(buf, conf, i, '\n', sizeof buf);
-               sptr = malloc(sizeof(struct spamstrings_t));
-               sptr->string = strdup(buf);
-               sptr->next = spamstrings;
-               spamstrings = sptr;
-       }
-
-}
-#endif
-
-
 /*
  * This handler detects changes being made to the system's Internet
  * configuration.
  */
-int inetcfg_aftersave(struct CtdlMessage *msg) {
+int inetcfg_aftersave(struct CtdlMessage *msg, recptypes *recp) {
        char *ptr;
        int linelen;
 
        /* If this isn't the configuration room, or if this isn't a MIME
         * message, don't bother.
         */
-       if (strcasecmp(msg->cm_fields['O'], SYSCONFIGROOM)) return(0);
-       if (msg->cm_format_type != 4) return(0);
+       if ((msg->cm_fields[eOriginalRoom]) && (strcasecmp(msg->cm_fields[eOriginalRoom], SYSCONFIGROOM))) {
+               return(0);
+       }
+       if (msg->cm_format_type != 4) {
+               return(0);
+       }
 
-       ptr = msg->cm_fields['M'];
+       ptr = msg->cm_fields[eMesageText];
        while (ptr != NULL) {
        
                linelen = strcspn(ptr, "\n");
-               if (linelen == 0) return(0);    /* end of headers */    
+               if (linelen == 0) {
+                       return(0);      /* end of headers */    
+               }
                
                if (!strncasecmp(ptr, "Content-type: ", 14)) {
-                       if (!strncasecmp(&ptr[14], INTERNETCFG,
-                          strlen(INTERNETCFG))) {
+                       if (!strncasecmp(&ptr[14], INTERNETCFG, strlen(INTERNETCFG))) {
                                inetcfg_setTo(msg);     /* changing configs */
                        }
                }
@@ -144,33 +108,20 @@ void inetcfg_init_backend(long msgnum, void *userdata) {
                msg = CtdlFetchMessage(msgnum, 1);
                if (msg != NULL) {
                inetcfg_setTo(msg);
-                       CtdlFreeMessage(msg);
+                       CM_Free(msg);
        }
 }
 
 
-#ifdef ___NOT_CURRENTLY_IN_USE___
-void spamstrings_init_backend(long msgnum, void *userdata) {
-       struct CtdlMessage *msg;
-
-               msg = CtdlFetchMessage(msgnum, 1);
-               if (msg != NULL) {
-               spamstrings_setTo(msg);
-                       CtdlFreeMessage(msg);
-       }
-}
-#endif
-
-
 void inetcfg_init(void) {
-       if (getroom(&CC->room, SYSCONFIGROOM) != 0) return;
-       CtdlForEachMessage(MSGS_LAST, 1, NULL, INTERNETCFG, NULL,
-               inetcfg_init_backend, NULL);
+       syslog(LOG_DEBUG, "EVQ: called inetcfg_init()");
+       if (CtdlGetRoom(&CC->room, SYSCONFIGROOM) != 0) {
+               return;
+       }
+       CtdlForEachMessage(MSGS_LAST, 1, NULL, INTERNETCFG, NULL, inetcfg_init_backend, NULL);
 }
 
 
-
-
 /*****************************************************************************/
 /*                      MODULE INITIALIZATION STUFF                          */
 /*****************************************************************************/
@@ -178,10 +129,12 @@ void inetcfg_init(void) {
 
 CTDL_MODULE_INIT(inetcfg)
 {
-       CtdlRegisterMessageHook(inetcfg_aftersave, EVT_AFTERSAVE);
-       inetcfg_init();
-
-       /* return our Subversion id for the Log */
-       return "$Id$";
+       if (!threading)
+       {
+               CtdlRegisterMessageHook(inetcfg_aftersave, EVT_AFTERSAVE);
+               inetcfg_init();
+       }
+       
+       /* return our module name for the log */
+       return "inetcfg";
 }
-