text client <.A>ide <S>ysconfig <I>nternet , when encountering a "directory" domain...
[citadel.git] / citadel / modules / inetcfg / serv_inetcfg.c
index 051aae3bcb024e3619daa6bdb0a2e164d0b142ce..c0ddb356669726b8f0b1adce5e8b3ba88fc56441 100644 (file)
@@ -1,26 +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-2009 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.
+ * Copyright (c) 1987-2017 by the citadel.org team
  *
- *  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.
+ * 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.
  *
- *  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"
@@ -59,8 +51,6 @@
 #include "internet_addressing.h"
 #include "genstamp.h"
 #include "domain.h"
-
-
 #include "ctdl_module.h"
 
 
@@ -68,8 +58,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 {
@@ -83,62 +73,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 */
                        }
                }
@@ -154,39 +116,34 @@ int inetcfg_aftersave(struct CtdlMessage *msg) {
 void inetcfg_init_backend(long msgnum, void *userdata) {
        struct CtdlMessage *msg;
 
-               msg = CtdlFetchMessage(msgnum, 1);
+               msg = CtdlFetchMessage(msgnum, 1, 1);
                if (msg != NULL) {
                inetcfg_setTo(msg);
-                       CtdlFreeMessage(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);
+                       CM_Free(msg);
        }
 }
-#endif
 
 
 void inetcfg_init(void) {
-       if (CtdlGetRoom(&CC->room, SYSCONFIGROOM) != 0) return;
-       CtdlForEachMessage(MSGS_LAST, 1, NULL, INTERNETCFG, NULL,
-               inetcfg_init_backend, NULL);
+       if (CtdlGetRoom(&CC->room, SYSCONFIGROOM) != 0) {
+               return;
+       }
+       CtdlForEachMessage(MSGS_LAST, 1, NULL, INTERNETCFG, NULL, inetcfg_init_backend, NULL);
 }
 
 
-
-
 /*****************************************************************************/
 /*                      MODULE INITIALIZATION STUFF                          */
 /*****************************************************************************/
+void cleanup_inetcfg(void)
+{
+       char *buf;
+       buf = inetcfg;
+       inetcfg = NULL;
+       if (buf != NULL) {
+               free(buf);
+       }
+}
 
 
 CTDL_MODULE_INIT(inetcfg)
@@ -195,9 +152,9 @@ CTDL_MODULE_INIT(inetcfg)
        {
                CtdlRegisterMessageHook(inetcfg_aftersave, EVT_AFTERSAVE);
                inetcfg_init();
+               CtdlRegisterCleanupHook(cleanup_inetcfg);
        }
        
-       /* return our Subversion id for the Log */
-       return "$Id$";
+       /* return our module name for the log */
+       return "inetcfg";
 }
-