X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Finetcfg%2Fserv_inetcfg.c;h=c0ddb356669726b8f0b1adce5e8b3ba88fc56441;hb=d4d8a13594b84a4a051066cd6c9856d194f63783;hp=051aae3bcb024e3619daa6bdb0a2e164d0b142ce;hpb=0eea6dcc234e0f524bbf2a1d909455d41ed02314;p=citadel.git diff --git a/citadel/modules/inetcfg/serv_inetcfg.c b/citadel/modules/inetcfg/serv_inetcfg.c index 051aae3bc..c0ddb3566 100644 --- a/citadel/modules/inetcfg/serv_inetcfg.c +++ b/citadel/modules/inetcfg/serv_inetcfg.c @@ -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; istring = 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"; } -