*/
/********************************************************/
/* */
+/* 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
+}
+/*
+\f
+*/
+/********************************************************/
+/* */
/* Procedure to check database and check new */
/* remote ip credibility. */
/* */
#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
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)))
}
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
}
phase++;
}
+dnsbls=(char **)rou_freelist((void **)dnsbls,(genfree_t)rou_freestr);
#undef OPEP
}