]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Display reverss-address within scanrmt logs
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 22:07:31 +0000 (18:07 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 14 Jul 2025 22:07:31 +0000 (18:07 -0400)
app/scarmt.c
lib/gessql.c
lib/unidns.c
lib/unidns.h
lib/unisql.h
sql/mailleur.sql

index 857ac23e4591ccbbe017cec0442028ba6cc2227f..82a17bfbf0df2ecaac6bd330788291ecb6ca4eb5 100644 (file)
@@ -72,8 +72,12 @@ while (proceed==true) {
         phase=999;      //Trouble trouble
         }
       break;
-    case 2      :       //updating record according blacklisting
+    case 2      :       //getting the reverss-address
       reversip=afn_reversipnum(*afns);
+      srv->reverse=rou_freestr(srv->reverse);
+      srv->reverse=dns_get_reverse_addr(reversip);
+      break;
+    case 3      :       //updating record according blacklisting
       srv->credit=0;
       srv->lastscan=time((time_t *)0);
       if (dnsbls!=(char **)0) {
@@ -98,13 +102,14 @@ while (proceed==true) {
           listed=rou_freestr(listed);
           dnsbls++;
           }
-        (void) log_fprintlog(scanref->logptr,true,"IP[%02d]: %s\tCurrent "
+        (void) log_fprintlog(scanref->logptr,true,"IP[%02d]: %s\tRVS='%s'\tCurrent "
                                                   "credit='%3d'",
-                                                  num,rmtip,srv->credit);
+                                                  num,rmtip,
+                                                  srv->reverse,srv->credit);
         (void) log_fprintlog(scanref->logptr,false,"");
         }
       break;
-    case 3      :       //updating record
+    case 4      :       //updating record
       if (sql_mngremote(scanref->sqlptr,sql_update,rmtip,&srv)==false) {
         (void) rou_alert(0,"%s Unable to update remote <%s> data (database?)",
                             OPEP,rmtip);
index 293c5d058a6dced944b9c55ce1721c8ce3b1ff04..21b8d7bc860dd481ab79ce5612999a3c4983f4ac 100644 (file)
@@ -26,6 +26,7 @@ static const FLDTYP usrfield[]={
           {4,"links"},
           {5,"credit"},
           {6,"listing"},
+          {7,"reverse"},
           {0,(char *)0}
           };
 
@@ -344,6 +345,9 @@ while (proceed==true) {
           case 6        :       //scanning status
             locsrv->listing=strdup(locval);
             break;
+          case 7        :       //scanning status
+            locsrv->reverse=strdup(locval);
+            break;
           default       :
             (void) rou_alert(0,"%s field <%d:%s> not implemented (Bug?)",
                                    OPEP,usrfield[i].num,usrfield[i].name);
@@ -379,20 +383,25 @@ static _Bool update_remote(SQLPTR *sqlptr,char *rmtip,SRVTYP *srv)
 {
 #define OPEP    "gessql.c:update_remote,"
 
-static const char *upd="UPDATE "RMTTBL" SET lastscan='%s',credit=%d,listing=%s WHERE remoteip='%s'";
+static const char *upd= "UPDATE "RMTTBL
+                        " SET lastscan='%s',credit=%d,listing=%s,reverse=%s"
+                        " WHERE remoteip='%s'";
 
 _Bool isok;
 const char *lastscan;
 char *listing;
+char *reverse;
 
 isok=true;
 lastscan=sql_fromunixtime(sqlptr,srv->lastscan);
 listing=sql_gooddata(sqlptr,srv->listing);
-if (sql_request(sqlptr,upd,lastscan,srv->credit,listing,srv->rmtip)!=1) {
+reverse=sql_gooddata(sqlptr,srv->reverse);
+if (sql_request(sqlptr,upd,lastscan,srv->credit,listing,reverse,srv->rmtip)!=1) {
   (void) rou_alert(0,"%s Unable to update remote_ip <%s> (Database?)",
                     OPEP,srv->rmtip);
   isok=false;
   }
+reverse=rou_freestr(reverse);
 listing=rou_freestr(listing);
 return isok;
 
index 0a2b48aa42eda75331a6b8ab5842fe54682f6ab7..6432858908383778a1752ab879c5788efacee67d 100644 (file)
@@ -548,7 +548,7 @@ char dnsquest[300];
 
 listed=(char *)0;
 (void) snprintf(dnsquest,sizeof(dnsquest),"%s.%s",reversip,blssite);
-(void) rou_alert(12,"%s, checking <%s>",OPEP,dnsquest);
+//(void) rou_alert(0,"%s, JMPDBG checking <%s>",OPEP,dnsquest);
 if ((txt=gettxt(dnsquest,T_TXT,"TXT"))!=(char **)0) {
   (void) rou_asprintf(&listed,"%s -> %s",blssite,txt[0]);
   txt=(char **)rou_freelist((void **)txt,(genfree_t)rou_freestr);
@@ -557,3 +557,34 @@ return listed;
 
 #undef  OPEP
 }
+/*
+\f
+*/
+/********************************************************/
+/*                                                     */
+/*     Procedure to extract the IP reverse address     */
+/*      Return "No-reverse" if unknown.                 */
+/*                                                     */
+/********************************************************/
+PUBLIC char *dns_get_reverse_addr(char *reversip)
+
+{
+#define OPEP    "unidns.c:dns_get_reverse_addr,"
+
+char *reverse;
+char **txt;
+char dnsquest[300];
+
+reverse=(char *)0;
+(void) snprintf(dnsquest,sizeof(dnsquest),"%s.%s",reversip,"in-addr.arpa");
+//(void) rou_alert(0,"%s JMPDBG checking <%s>",OPEP,dnsquest);
+if ((txt=gettxt(dnsquest,T_PTR,"PTR"))!=(char **)0) {
+  (void) rou_asprintf(&reverse,"%s",txt[0]);
+  txt=(char **)rou_freelist((void **)txt,(genfree_t)rou_freestr);
+  }
+if (reverse==(char *)0)
+  reverse=strdup(NORVERS);
+return reverse;
+
+#undef  OPEP
+}
index 489548d42cdae8d1f3e5e134eb4e842d9421ccf3..27547b628fad4e5bc072440588fc88208290f891 100644 (file)
@@ -10,6 +10,8 @@
 
 #include       "subafn.h"
 
+#define NORVERS "No.Reverse"
+
 //defining an MX structure
 typedef        struct  {
        int preference; //MX preference
@@ -45,4 +47,7 @@ extern LOCTYP dns_is_domain_local(const char *domain,AFNTYP **afns);
 //procedure returning a string if remote IP si blacklisted
 extern char *dns_is_blacklisted(char *blssite,char *reversip);
 
+//procedure returning the IP reverss address as a string 
+extern char *dns_get_reverse_addr(char *reversip);
+
 #endif
index 6254cf6b4cdfa878e5c4b130536841c930025af1..fec9fb4ff57773adfa9fd44401f78748056ea1a7 100644 (file)
@@ -63,6 +63,7 @@ typedef struct  {
         time_t update;  //last update time
         int links;      //Number of connection from this remote 
         int credit;     //Remote credit number
+        char *reverse;  //Remote serveur reverss-address
         char *listing;  //Remote listing explaination
         }SRVTYP;
 
index 410032d4e22e05f6b469903355ffbc5e82ee2fab..7c803ceeb37bed66484f349ebc33b396d82a03dd 100644 (file)
@@ -108,7 +108,9 @@ CREATE TABLE remotes        (
                        DFLT NOW(),
        credit          INTEGER //Remote IP current credit (-100..+100)
                        DFLT -1,
-       listing         TEXT            //explaination obout black listing
+       reverse         TEXT            //Remote official revers address
+                       DFLT NULL,
+       listing         TEXT            //explaination about black listing
                        DFLT NULL,
        links           INTEGER
                        DFLT 1          //how many time the remote connected