more places to fix the new linebreak behaviour of the base64 encoder.
[citadel.git] / citadel / modules / dspam / serv_dspam.c
index 7d5e4f0cbb77563515a2bdb22a5280ae8dbb2216..7454634f780cd040d428ae9e9543fa9da0d41aa7 100644 (file)
@@ -1,24 +1,22 @@
 /*
- * $Id$
- *
  * This module glues libDSpam to the Citadel server in order to implement
  * DSPAM Spamchecking 
  *
- * Copyright (c) 2009 by the citadel.org team
+ * Copyright (c) 2012 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
+ *  
+ *  
+ *  
  */
 
 #include "sysdep.h"
@@ -159,25 +157,29 @@ void dspam_do_msg(long msgnum, void *userdata)
        if (dspam_process (CTX, msgtext) != 0)
        {
                free(msgtext);
-               CtdlLogPrintf(CTDL_CRIT, "ERROR: dspam_process failed");
+               syslog(LOG_CRIT, "ERROR: dspam_process failed");
                return;
        }
        if (CTX->signature == NULL)
        {
-               CtdlLogPrintf(CTDL_CRIT,"No signature provided\n");
+               syslog(LOG_CRIT,"No signature provided\n");
        }
        else
        {
 /* Copy to a safe place */
+               // TODO: len -> cm_fields?
+               msg->cm_fields[eErrorMsg] = malloc (CTX->signature->length * 2);
+               size_t len = CtdlEncodeBase64(msg->cm_fields[eErrorMsg], CTX->signature->data, CTX->signature->length, 0);
 
-               msg->cm_fields['G'] = malloc (CTX->signature->length * 2);
-               CtdlEncodeBase64(msg->cm_fields['G'], CTX->signature->data, CTX->signature->length, 0);
+               if (msg->cm_fields[eErrorMsg][len - 1] == '\n') {
+                       msg->cm_fields[eErrorMsg][len - 1] = '\0';
+               }
        }
        free(msgtext);
 
        SIG.length = CTX->signature->length;
        /* Print processing results */
-       CtdlLogPrintf (CTDL_DEBUG, "Probability: %2.4f Confidence: %2.4f, Result: %s\n",
+       syslog(LOG_DEBUG, "Probability: %2.4f Confidence: %2.4f, Result: %s\n",
                CTX->probability,
                CTX->confidence,
                (CTX->result == DSR_ISSPAM) ? "Spam" : "Innocent");
@@ -216,7 +218,7 @@ int serv_dspam_room(struct ctdlroom *room)
        /// else -> todo: global user for public rooms etc.
        if (CTX == NULL)
        {
-               CtdlLogPrintf(CTDL_CRIT, "ERROR: dspam_init failed!\n");
+               syslog(LOG_CRIT, "ERROR: dspam_init failed!\n");
                return ERROR + INTERNAL_ERROR;
        }
        /* Use graham and robinson algorithms, graham's p-values */
@@ -240,7 +242,7 @@ void serv_dspam_shutdown (void)
 
 CTDL_MODULE_INIT(dspam)
 {
-       return "$Id$" "disabled.";
+       return "disabled.";
        if (!threading)
        {
 #ifdef HAVE_LIBDSPAM
@@ -255,12 +257,12 @@ CTDL_MODULE_INIT(dspam)
 
 #else  /* HAVE_LIBDSPAM */
 
-               CtdlLogPrintf(CTDL_INFO, "This server is missing libdspam Spam filtering will be disabled.\n");
+               syslog(LOG_INFO, "This server is missing libdspam Spam filtering will be disabled.\n");
 
 #endif /* HAVE_LIBDSPAM */
        }
        
-        /* return our Subversion id for the Log */
-       return "$Id$";
+        /* return our module name for the log */
+       return "dspam";
 }