stable now but there are GIANT PIECES MISSING
[citadel.git] / citadel / modules / inetcfg / serv_inetcfg.c
index 6d29311b3a5ef1da074abce2edf9f9d5ef2cb33b..71155c8b09c4d8033f0c2869f72ad66d47e79856 100644 (file)
@@ -4,21 +4,15 @@
  * wrote it as a module merely to keep things as clean and loosely coupled
  * as possible.
  *
- * Copyright (c) 1987-2009 by the citadel.org team
+ * Copyright (c) 1987-2021 by the citadel.org team
  *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
+ * 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.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 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>
@@ -57,8 +40,6 @@
 #include "internet_addressing.h"
 #include "genstamp.h"
 #include "domain.h"
-
-
 #include "ctdl_module.h"
 
 
@@ -66,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 {
@@ -85,25 +66,30 @@ void inetcfg_setTo(struct CtdlMessage *msg) {
  * 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 */
                        }
                }
@@ -122,32 +108,24 @@ void inetcfg_init_backend(long msgnum, void *userdata) {
                msg = CtdlFetchMessage(msgnum, 1);
                if (msg != NULL) {
                inetcfg_setTo(msg);
-                       CtdlFreeMessage(msg);
+                       CM_Free(msg);
        }
 }
 
 
 void inetcfg_init(void) {
-       if (CtdlGetRoom(&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                          */
 /*****************************************************************************/
-void clenaup_inetcfg(void)
-{
-       char *buf;
 
-       buf = inetcfg;
-       inetcfg = NULL;
-       if (buf != NULL)
-               free(buf);
-}
 
 CTDL_MODULE_INIT(inetcfg)
 {
@@ -155,10 +133,8 @@ CTDL_MODULE_INIT(inetcfg)
        {
                CtdlRegisterMessageHook(inetcfg_aftersave, EVT_AFTERSAVE);
                inetcfg_init();
-               CtdlRegisterCleanupHook(clenaup_inetcfg);
        }
        
-       /* return our Subversion id for the Log */
+       /* return our module name for the log */
        return "inetcfg";
 }
-