]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Starting to implement baclklister file parsing
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 13 Jul 2025 12:59:01 +0000 (08:59 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 13 Jul 2025 12:59:01 +0000 (08:59 -0400)
app/scarmt.c

index 42fa7848504021a13d38633d10e57c81d8852881..5aa3ad59fca63eb3c82fd00b9d5a566787527ace 100644 (file)
 */
 /********************************************************/
 /*                                                     */
+/*     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.                          */
 /*                                                     */
@@ -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
 }