From: Jean-Marc Pigeon (Delson) Date: Mon, 14 Jul 2025 11:49:03 +0000 (-0400) Subject: Adding log report to scarmt.c X-Git-Tag: tag-0.14~99 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=d3333b3b747d93f51077f24ec7b18489ec534199;p=jmp%2Fmailleur Adding log report to scarmt.c --- diff --git a/app/Makefile b/app/Makefile index 06647e8..5fc92cd 100644 --- a/app/Makefile +++ b/app/Makefile @@ -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 \ diff --git a/app/scarmt.c b/app/scarmt.c index 2a7f231..523b573 100644 --- a/app/scarmt.c +++ b/app/scarmt.c @@ -16,6 +16,7 @@ #include #include "devsql.h" +#include "devlog.h" #include "gessql.h" #include "unidns.h" #include "unipar.h" @@ -25,6 +26,11 @@ #include "subrou.h" #define SCANNER "scarmt" //application name + +typedef struct { + LOGPTR *logptr; //session log refrence pointer + SQLPTR *sqlptr; //sesion database reference pointer + }SCATYP; /* */ @@ -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; } diff --git a/conf/blacklister.conf b/conf/blacklister.conf index fa54dc8..e283cb4 100644 --- a/conf/blacklister.conf +++ b/conf/blacklister.conf @@ -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 # diff --git a/sql/datatest.sql b/sql/datatest.sql index aa0e57f..b48ff85 100644 --- a/sql/datatest.sql +++ b/sql/datatest.sql @@ -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) \ diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 594af64..410032d 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -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