Migrated more to the new config system
[citadel.git] / citadel / modules / network / serv_netspool.c
index 500d931bf0c57cce635bb116a0283449fe8956ac..9698c3694f1f3aceb4f3100459a539505601f4f5 100644 (file)
@@ -2,15 +2,15 @@
  * This module handles shared rooms, inter-Citadel mail, and outbound
  * mailing list processing.
  *
- * Copyright (c) 2000-2012 by the citadel.org team
+ * Copyright (c) 2000-2015 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 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.
+ * 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.
  *
  * ** NOTE **   A word on the S_NETCONFIGS semaphore:
  * This is a fairly high-level type of critical section.  It ensures that no
@@ -168,10 +168,10 @@ void Netmap_AddMe(struct CtdlMessage *msg, const char *defl, long defllen)
        if (CM_IsEmpty(msg, eMessagePath)) {
                CM_SetField(msg, eMessagePath, defl, defllen);
        }
-       node_len = configlen.c_nodename;
+       node_len = strlen(CtdlGetConfigStr("c_nodename"));
        if (node_len >= SIZ) 
                node_len = SIZ - 1;
-       memcpy(buf, config.c_nodename, node_len);
+       memcpy(buf, CtdlGetConfigStr("c_nodename"), node_len);
        buf[node_len] = '!';
        buf[node_len + 1] = '\0';
        CM_PrependToField(msg, eMessagePath, buf, node_len + 1);
@@ -182,6 +182,7 @@ void InspectQueuedRoom(SpoolControl **pSC,
                       HashList *working_ignetcfg,
                       HashList *the_netmap)
 {
+       struct CitContext *CCC = CC;
        SpoolControl *sc;
        int i = 0;
 
@@ -204,7 +205,7 @@ void InspectQueuedRoom(SpoolControl **pSC,
        }
        if (sc->room.QRhighest <= sc->lastsent)
        {
-               syslog(LOG_DEBUG, "nothing to do for <%s>\n", room_to_spool->name);
+               QN_syslog(LOG_DEBUG, "nothing to do for <%s>\n", room_to_spool->name);
                free(sc);
                return;
        }
@@ -306,7 +307,7 @@ void CalcListID(SpoolControl *sc)
                StrBufAppendBufPlain(sc->ListID, HKEY("room_"), 0);
                StrBufAppendBuf(sc->ListID, RoomName, 0);
                StrBufAppendBufPlain(sc->ListID, HKEY("."), 0);
-               StrBufAppendBufPlain(sc->ListID, config.c_fqdn, -1, 0);
+               StrBufAppendBufPlain(sc->ListID, CtdlGetConfigStr("c_fqdn"), -1, 0);
                /*
                 * this used to be:
                 * roomname <Room-Number.list-id.fqdn>
@@ -324,7 +325,7 @@ void CalcListID(SpoolControl *sc)
                StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("room_"), 0);
                StrBufAppendBuf(sc->Users[roommailalias], RoomName, 0);
                StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("@"), 0);
-               StrBufAppendBufPlain(sc->Users[roommailalias], config.c_fqdn, -1, 0);
+               StrBufAppendBufPlain(sc->Users[roommailalias], CtdlGetConfigStr("c_fqdn"), -1, 0);
 
                StrBufLowerCase(sc->Users[roommailalias]);
        }
@@ -353,16 +354,6 @@ void network_spoolout_room(SpoolControl *sc)
 
        syslog(LOG_INFO, "Networking started for <%s>\n", CCC->room.QRname);
 
-       /* If there are digest recipients, we have to build a digest */
-       if (sc->Users[digestrecp] != NULL) {
-               
-               sc->digestfp = create_digest_file(&sc->room);
-               sc->haveDigest = ftell(sc->digestfp) > 0;
-               if (!sc->haveDigest) {
-                       fprintf(sc->digestfp, "Content-type: text/plain\n\n");
-               }
-       }
-
        CalcListID(sc);
 
        /* remember where we started... */
@@ -383,8 +374,7 @@ void network_spoolout_room(SpoolControl *sc)
        }
        else
        {
-               snprintf(buf, sizeof buf, "room_%s@%s",
-                        CCC->room.QRname, config.c_fqdn);
+               snprintf(buf, sizeof buf, "room_%s@%s", CCC->room.QRname, CtdlGetConfigStr("c_fqdn"));
        }
 
        for (i=0; buf[i]; ++i) {
@@ -394,7 +384,7 @@ void network_spoolout_room(SpoolControl *sc)
 
 
        /* If we wrote a digest, deliver it and then close it */
-       if (sc->digestfp != NULL) {
+       if (sc->Users[digestrecp] != NULL) {
                time_t now = time(NULL);
                time_t secs_today = now % (24 * 60 * 60);
                long delta = 0;
@@ -404,25 +394,31 @@ void network_spoolout_room(SpoolControl *sc)
                        delta = (24 * 60 * 60) - delta;
                }
 
-               if (sc->haveDigest     &&
-                   (secs_today < 300) && 
-                   (delta < 300) )
+               if ((secs_today < 300) && 
+                   (delta < 300))
                {
-                       last_digest_delivery = now;
-                       fprintf(sc->digestfp,
-                               " -----------------------------------"
-                               "------------------------------------"
-                               "-------\n"
-                               "You are subscribed to the '%s' "
-                               "list.\n"
-                               "To post to the list: %s\n",
-                               CCC->room.QRname, buf
-                               );
-                       network_deliver_digest(sc);     /* deliver */
+                       if (sc->digestfp == NULL) {
+                               sc->digestfp = create_digest_file(&sc->room, 0);
+                       }
+                       if (sc->digestfp != NULL) {
+                               last_digest_delivery = now;
+                               fprintf(sc->digestfp,
+                                       " -----------------------------------"
+                                       "------------------------------------"
+                                       "-------\n"
+                                       "You are subscribed to the '%s' "
+                                       "list.\n"
+                                       "To post to the list: %s\n",
+                                       CCC->room.QRname, buf
+                                       );
+                               network_deliver_digest(sc);     /* deliver */
+                               remove_digest_file(&sc->room);
+                       }
                }
+       }
+       if (sc->digestfp != NULL) {
                fclose(sc->digestfp);
                sc->digestfp = NULL;
-               remove_digest_file(&sc->room);
        }
 
        /* Now rewrite the config file */
@@ -488,7 +484,7 @@ void network_process_buffer(char *buffer, long size, HashList *working_ignetcfg,
 
        /* Check for message routing */
        if (!CM_IsEmpty(msg, eDestination)) {
-               if (strcasecmp(msg->cm_fields[eDestination], config.c_nodename)) {
+               if (strcasecmp(msg->cm_fields[eDestination], CtdlGetConfigStr("c_nodename"))) {
 
                        /* route the message */
                        Buf = NewStrBufPlain(CM_KEY(msg,eDestination));