]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Removing "wrong IP" from remote tables
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 26 Jul 2025 11:20:29 +0000 (07:20 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sat, 26 Jul 2025 11:20:29 +0000 (07:20 -0400)
app/scanner.c
lib/devsoc.c
lib/gessql.c
lib/lvleml.c

index 062812e0399e835bc3d5a18b3718b51b0e61b065..66889902f64e1c520d47d554745a8f7e4df75ec7 100644 (file)
@@ -62,6 +62,7 @@ while (proceed==true) {
       if ((afn=afn_getoneipnum(rmtip))==(AFNTYP *)0) {
         (void) rou_alert(0,"%s Unable to get afn data for remote <%s> (WRONG IP?)",
                             OPEP,rmtip);
+        (void) sql_mngremote(scanref->sqlptr,sql_delete,rmtip,&srv);
         phase=999;      //Trouble trouble
         }
       break;
index 465b7253c7f92674b0c42ba837797d537ab2f518..187966087544034af780c3b551b52d0d29c59ac2 100644 (file)
@@ -1359,10 +1359,12 @@ if (soc!=(SOCTYP *)0) {
     case -1     :               //trouble to read socket data
       switch(errno) {
         case ENOTCONN   :       //other side just vanished
+          (void) rou_alert(0,"%s, Remote side vanished (local=%d, error=<%s>)",
+                              OPEP,local,strerror(errno));
           break;
         default         :
           (void) rou_alert(0,"%s, Unable to socket data (local=%d, error=<%s>)",
-                          OPEP,local,strerror(errno));
+                              OPEP,local,strerror(errno));
           break;
         }
       break;
index 21b8d7bc860dd481ab79ce5612999a3c4983f4ac..77704db7829da11d0d0cb583903860b90ae08c24 100644 (file)
@@ -30,7 +30,6 @@ static const FLDTYP usrfield[]={
           {0,(char *)0}
           };
 
-_Bool isok;
 /*
 \f
 */
@@ -260,6 +259,53 @@ while (proceed==true) {
 *usr=locusr;
 return isok;
 
+#undef  OPEP
+}
+/*
+\f
+*/
+/********************************************************/
+/*                                                      */
+/*      Procedure to delete a remote record from the    */
+/*      table.                                          */
+/*                                                      */
+/********************************************************/
+static _Bool delete_remote(SQLPTR *sqlptr,char *rmtip,SRVTYP *srv)
+
+{
+#define OPEP    "gessql.c:delete_remote,"
+
+static const char *del="DELETE FROM "RMTTBL" WHERE remoteip=%s";
+
+_Bool isok;
+register int phase;
+register _Bool proceed;
+
+isok=false;
+phase=0;
+proceed=true;
+while (proceed==true) {
+  switch (phase) {
+    case 0      :       //checking parameters
+      if (strlen(rmtip)==0) {
+        (void) rou_alert(0,"%s rmtip=<%s> sing (Bug?)",OPEP,rmtip);
+        phase=999;
+        }
+      break;
+    case 1      :       //Selecting user
+      if (sql_request(sqlptr,del,rmtip)!=1) {
+        (void) rou_alert(0,"%s Unable to delete remote_ip <%s> (Database?)",
+                            OPEP,rmtip);
+        phase=999;      //Trouble trouble
+        }
+      break;
+    case 2      :       //everything fine
+      isok=true;
+      break;
+    }
+  }
+return isok;
+
 #undef  OPEP
 }
 /*
@@ -278,6 +324,7 @@ static _Bool select_remote(SQLPTR *sqlptr,char *rmtip,SRVTYP **srv)
 
 static const char *sel="SELECT * FROM "RMTTBL" WHERE remoteip=%s";
 
+_Bool isok;
 SRVTYP *locsrv;
 SQLRES *rs;
 register int phase;
@@ -292,7 +339,8 @@ while (proceed==true) {
   switch (phase) {
     case 0      :       //checking parameters
       if ((srv==(SRVTYP **)0)||(rmtip==(char *)0)||(strlen(rmtip)==0)) {
-        (void) rou_alert(0,"%s srv=<%p> or rmtip=<%s> sing (Bug?)",OPEP,srv,rmtip);
+        (void) rou_alert(0,"%s srv=<%p> or rmtip=<%s> missing (Bug?)",
+                            OPEP,srv,rmtip);
         phase=999;
         }
       break;
@@ -728,6 +776,9 @@ while (proceed==true) {
         case sql_update :
           isok=update_remote(sqlptr,gooddata,*srv);
           break;
+        case sql_delete :
+          isok=delete_remote(sqlptr,gooddata,*srv);
+          break;
         default :
           (void) rou_alert(0,"%s action='%d' not yet implemented!",OPEP,action);
           break;
index 5e112d4c69fd00a7768ccd8385e16472858efc64..27263de785d41d606a51e27018905c6fcec881b3 100644 (file)
@@ -2564,17 +2564,17 @@ while (proceed==true) {
       (void) rou_alert(0,"Contact from peer <%s> to port <%s> started",
                           contact->peerip,contact->locserv);
       break;
-    case 5      :       //checking if remote IP is relayable
-      if (afn_is_ip_relayable(contact->peerip,contact->relayok)==true)
-        contact->privilege=rel_isrelay;     //IP is relayable
-      break;
-    case 6      :       //check contact validity
+    case 5      :       //check contact validity
       if ((contact->locname==(char *)0)||(contact->peerip==(char *)0)) {
         (void) rou_alert(0,"%s Unable to establish contact entities",OPEP);
         contact=freecontact(contact);
         phase=999;      //no identity
         }
       break;
+    case 6      :       //checking if remote IP is relayable
+      if (afn_is_ip_relayable(contact->peerip,contact->relayok)==true)
+        contact->privilege=rel_isrelay;     //IP is relayable
+      break;
     case 7      :       //contact is good, then sending a signon
       (void) log_fprintlog(contact->logptr,true,"Start CNT=%s",contact->mainsesid);
       (void) log_fprintlog(contact->logptr,false,"(Contact open from [%s] to "