From: Jean-Marc Pigeon (Delson) Date: Sun, 13 Jul 2025 12:59:01 +0000 (-0400) Subject: Starting to implement baclklister file parsing X-Git-Tag: tag-0.14~108 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=dead8bd7ade9f23d5527ceabe6ed4557d244e2a6;p=jmp%2Fmailleur Starting to implement baclklister file parsing --- diff --git a/app/scarmt.c b/app/scarmt.c index 42fa784..5aa3ad5 100644 --- a/app/scarmt.c +++ b/app/scarmt.c @@ -26,6 +26,49 @@ */ /********************************************************/ /* */ +/* Procedure to load the list of dnsbls server */ +/* remote ip credibility. */ +/* */ +/********************************************************/ +static char **load_dnsbls() + +{ +#define OPEP "scarmt.c:load_dnsbls," + +const char *blcklist="XBLACKLIST"; + +char **dnsbls; +const char *filename; +int phase; +_Bool proceed; + +dnsbls=(char **)0; +phase=0; +proceed=true; +while (proceed==true) { + switch (phase) { + case 0 : //Getting dnsbls server list filename + if ((filename=getenv(blcklist))==(char *)0) { + (void) rou_alert(0,"%s <%s> env variable missing (config?!)", + OPEP,blcklist); + phase=999; //no need to go further + } + break; + default : //SAFE Guard + proceed=false; + break; + } + phase++; + } +return dnsbls; + +#undef OPEP +} +/* + +*/ +/********************************************************/ +/* */ /* Procedure to check database and check new */ /* remote ip credibility. */ /* */ @@ -36,18 +79,22 @@ static void doscanning() #define OPEP "scarmt.c:doscanning," SQLPTR *sqlptr; +unsigned int cycle; +char **dnsbls; char **rmtip; int delay; int phase; _Bool proceed; sqlptr=(SQLPTR *)0; +cycle=0; +dnsbls=load_dnsbls(); rmtip=(char **)0; delay=10; //10 second sleeping time if (debug>0) delay=2; phase=0; -proceed=true; +proceed=(dnsbls!=(char **)0); while (proceed==true) { switch (phase) { case 0 : //opening database @@ -63,11 +110,19 @@ while (proceed==true) { phase=999; } break; - case 2 : //check for new entry + case 2 : //refreshing the dnsbls list + if ((cycle%100)==0) { + dnsbls=(char **)rou_freelist((void **)dnsbls,(genfree_t)rou_freestr); + dnsbls=load_dnsbls(); + cycle=0; + } + proceed=(dnsbls!=(char **)0); + break; + case 3 : //check for new entry if ((rmtip=sql_getnewrmtip(sqlptr))==(char **)0) phase=0; //nothing to be done break; - case 3 : //check entries + case 4 : //check entries for (int i=0;rmtip[i]!=(char *)0;i++) { (void) rou_alert(0,"%s JMPDBG need to scan <%s>",OPEP,rmtip[i]); if ((hangup==true)||((reload==true))) @@ -75,7 +130,7 @@ while (proceed==true) { } rmtip=(char **)rou_freelist((void **)rmtip,(genfree_t)rou_freestr); break; - case 4 : //let continue + case 5 : //let continue phase=0; //looping the job again break; default : //SAFE Guard @@ -85,6 +140,7 @@ while (proceed==true) { } phase++; } +dnsbls=(char **)rou_freelist((void **)dnsbls,(genfree_t)rou_freestr); #undef OPEP }