/*
- * $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-2012 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 "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 "internet_addressing.h"
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 {
}
-#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 (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");
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);
+ 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;
+ 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)
{
- 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();
+ CtdlRegisterCleanupHook(clenaup_inetcfg);
+ }
+
+ /* return our module name for the log */
+ return "inetcfg";
}