]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Adding log report to scarmt.c
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 11:49:03 +0000 (07:49 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 11:49:03 +0000 (07:49 -0400)
app/Makefile
app/scarmt.c
conf/blacklister.conf
sql/datatest.sql
sql/mailleur.sql

index 06647e8ece4e47d8b0c15376df174c308bb3e40c..5fc92cdf66c9cdefecd9be0d5bd834ee41b48027 100644 (file)
@@ -116,6 +116,7 @@ sorter.o:  sorter.c                                 \
           ../lib/subrou.h
 
 scarmt.o:  scarmt.c                                    \
+          ../lib/devlog.h                              \
           ../lib/devsql.h                              \
           ../lib/gessql.h                              \
           ../lib/unidns.h                              \
index 2a7f231f9c8139fc341b2dcc7abb3c576f817a0b..523b573bb1d982f98d319078b16b980896f5c652 100644 (file)
@@ -16,6 +16,7 @@
 #include        <unistd.h>
 
 #include        "devsql.h"
+#include        "devlog.h"
 #include        "gessql.h"
 #include        "unidns.h"
 #include        "unipar.h"
 #include        "subrou.h"
 
 #define SCANNER "scarmt"       //application name
+
+typedef struct  {
+    LOGPTR *logptr;     //session log refrence pointer
+    SQLPTR *sqlptr;     //sesion database reference pointer
+    }SCATYP;
 /*
 \f
 */
@@ -34,7 +40,7 @@
 /*      remote ip credibility.                          */
 /*                                                     */
 /********************************************************/
-static void check_credibility(SQLPTR *sqlptr,char **dnsbls,char *rmtip)
+static void check_credibility(SCATYP *scanref,char **dnsbls,int num,char *rmtip)
 
 {
 #define OPEP    "scarmt.c:check_credibilty,"
@@ -60,7 +66,7 @@ while (proceed==true) {
         }
       break;
     case 1      :       //loading rmtip record
-      if (sql_mngremote(sqlptr,sql_select,rmtip,&srv)==false) {
+      if (sql_mngremote(scanref->sqlptr,sql_select,rmtip,&srv)==false) {
         (void) rou_alert(0,"%s Unable to get remote <%s> data (database?)",
                             OPEP,rmtip);
         phase=999;      //Trouble trouble
@@ -71,24 +77,32 @@ while (proceed==true) {
       srv->credit=0;
       srv->lastscan=time((time_t *)0);
       if (dnsbls!=(char **)0) {
+        char cst[100];
+
+        (void) snprintf(cst,sizeof(cst),"IP[%02d]: %s",num,rmtip);
         while (*dnsbls!=(char *)0) {
+          char *report;
           char *listed;
 
+          report=(char *)0;
           listed=dns_is_blacklisted(*dnsbls,reversip);
           if (listed!=(char *)0) {
+            (void) rou_asprintf(&report,"%s\tlisted->'%s'",cst,listed);
             srv->credit-=10;
             if (srv->listing==(char *)0)
               srv->listing=strdup(listed);
-            (void) rou_alert(4,"%s JMPDBG scan <%s> against <%s> result=<%s>",
-                                   OPEP,rmtip,*dnsbls,listed);
             }
+          else
+            (void) rou_asprintf(&report,"%s\tNOT listed",cst);
+          (void) log_fprintlog(scanref->logptr,true,report); 
+          report=rou_freestr(report);
           listed=rou_freestr(listed);
           dnsbls++;
           }
         }
       break;
     case 3      :       //updating record
-      if (sql_mngremote(sqlptr,sql_update,rmtip,&srv)==false) {
+      if (sql_mngremote(scanref->sqlptr,sql_update,rmtip,&srv)==false) {
         (void) rou_alert(0,"%s Unable to update remote <%s> data (database?)",
                             OPEP,rmtip);
         }
@@ -202,16 +216,16 @@ static void doscanning()
 {
 #define OPEP    "scarmt.c:doscanning,"
 
-SQLPTR *sqlptr;
 unsigned int cycle;
+SCATYP scanref;
 char **dnsbls;
 char **rmtip;
 int delay;
 int phase;
 _Bool proceed;
 
-sqlptr=(SQLPTR *)0;
 cycle=0;
+(void) memset(&scanref,'\000',sizeof(scanref));
 dnsbls=load_dnsbls();
 rmtip=(char **)0;
 delay=10;       //10 second sleeping time
@@ -220,21 +234,19 @@ if (debug>0)
 phase=0;
 proceed=(dnsbls!=(char **)0);
 while (proceed==true) {
+  (void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
   switch (phase) {
-    case 0      :       //opening database
-      if ((sqlptr=sql_opensql())==(SQLPTR *)0) {
-        (void) rou_alert(0,"%s Unable to open database (Config?)",OPEP);
-        phase=999;      //Trouble trouble
-        }
+    case 0      :       //empty phase
       break;
     case 1      :       //check about signal
-      sleep(delay);
+      (void) sleep(delay);
       if ((hangup==true)||((reload==true))) {
         (void) rou_alert(0,"%s got hangup or reload signal",OPEP);
         phase=999;
         }
       break;
     case 2      :       //refreshing the dnsbls list
+      cycle++;
       if ((cycle%100)==0) {
         dnsbls=(char **)rou_freelist((void **)dnsbls,(genfree_t)rou_freestr);
         dnsbls=load_dnsbls();
@@ -242,23 +254,48 @@ while (proceed==true) {
         }
       proceed=(dnsbls!=(char **)0);
       break;
-    case 3      :       //check for new entry
-      if ((rmtip=sql_getnewrmtip(sqlptr))==(char **)0)
+    case 3      :       //opening database
+      if ((scanref.sqlptr=sql_opensql())==(SQLPTR *)0) {
+        (void) rou_alert(0,"%s Unable to open database (Config?)",OPEP);
+        phase=999;      //Trouble trouble
+        }
+      break;
+    case 4      :       //check for new entry
+      if ((rmtip=sql_getnewrmtip(scanref.sqlptr))==(char **)0) {
+        scanref.sqlptr=sql_closesql(scanref.sqlptr);
         phase=0;        //nothing to be done
+        }
+      break;
+    case 5      :  {    //opening log
+      char *sessid;
+      int numip;
+      char cmt[200];
+
+      sessid=eml_getmainsesid();
+      numip=rou_nbrlist((void **)rmtip);
+      (void) snprintf(cmt,sizeof(cmt),"%d remote IP to scan",numip);
+      if ((scanref.logptr=log_openlog(sessid,cmt))==(LOGPTR *)0) {
+        (void) rou_alert(0,"%s Unable to open log file (Bug?)",OPEP);
+        rmtip=(char **)rou_freelist((void **)rmtip,(genfree_t)rou_freestr);
+        phase=999;
+        }
+      sessid=rou_freestr(sessid);
+      }
       break;
-    case 4      :       //check entries
+    case 6      :       //check entries
       for (int i=0;rmtip[i]!=(char *)0;i++) {
-        (void) check_credibility(sqlptr,dnsbls,rmtip[i]);
+        (void) check_credibility(&scanref,dnsbls,i,rmtip[i]);
         if ((hangup==true)||((reload==true))) 
           break;        //No need to check other remote
         }
       rmtip=(char **)rou_freelist((void **)rmtip,(genfree_t)rou_freestr);
       break;
-    case 5      :       //let continue
+    case 7      :       //let continue
+      scanref.logptr=log_closelog(scanref.logptr);
+      scanref.sqlptr=sql_closesql(scanref.sqlptr);
       phase=0;          //looping the job again
       break;
     default     :       //SAFE Guard
-      sqlptr=sql_closesql(sqlptr);
       proceed=false;
       break;
     }
index fa54dc86b528fa8442846b821f152006ab24c911..e283cb40b32442530722121ffc47a39e1d5e66ee 100644 (file)
@@ -9,3 +9,5 @@ b.barracudacentral.org
 bl.blocklist.de
 ips.backscatterer.org
 dnsbl.dronebl.org
+all.s5h.net                    #http://s5h.net/rbl
+hostkarma.junkemailfilter.com  #
index aa0e57f6c885a9ac4fe138511e76dbfaab31160a..b48ff854914afd627f33d29a0b3effdaf6432f94 100644 (file)
@@ -46,8 +46,8 @@ INSERT INTO remotes (remoteip)                                        \
          values ('209.85.218.68');
 INSERT INTO remotes (remoteip)                                 \
          values ('216.246.113.145');
-#ifdef BIGRE
-#endif
+INSERT INTO remotes (remoteip)                                 \
+         values ('193.111.208.122');
 
 //selected IP from from 'clean' server
 INSERT INTO remotes (remoteip)                                 \
index 594af647a52b9b3fad34db4d54b2cc8d11c08758..410032d4e22e05f6b469903355ffbc5e82ee2fab 100644 (file)
@@ -107,7 +107,7 @@ CREATE TABLE remotes        (
        lastupdate      DBTIMESTAMP     //record creation
                        DFLT NOW(),
        credit          INTEGER //Remote IP current credit (-100..+100)
-                       DFLT -100,
+                       DFLT -1,
        listing         TEXT            //explaination obout black listing
                        DFLT NULL,
        links           INTEGER