]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Adding checkip procedure (still to be implemented)
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 15 Aug 2024 22:56:41 +0000 (18:56 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Thu, 15 Aug 2024 22:56:41 +0000 (18:56 -0400)
lib/subrou.c
lib/unidns.c

index a33c296918a235425bc82ebab5b281bb30081023..8b86a47cad1df92053094fb49a8db259362e20bc 100644 (file)
@@ -21,7 +21,7 @@
 
 //version definition 
 #define VERSION "0.4.2"
-#define RELEASE "9"
+#define RELEASE "10"
 
 //Public variables
 PUBLIC  int debug=0;            //debug level
index 4fb861ffeb396064565b2d842bf983b048b91734..909576b8351a07b354a9fabeb0c009e109f31ecf 100644 (file)
@@ -161,6 +161,24 @@ return seq;
 */
 /********************************************************/
 /*                                                      */
+/*     Procedure to check ip peerip is within an       */
+/*      spf sequence                                    */
+/*                                                      */
+/********************************************************/
+static _Bool checkip(char *peerip,char *seq)
+
+{
+_Bool bingo;
+
+bingo=false;
+(void) printf("JMPDBG checkip peerip=<%s> seq=<%s>\n",peerip,seq);
+return bingo;
+}
+/*
+\f
+*/
+/********************************************************/
+/*                                                      */
 /*     Procedure to return an spf status according     */
 /*      sequence contents                               */
 /*                                                      */
@@ -177,7 +195,6 @@ spf=spf_neutral;
 locspf=spf_pass;
 phase=0;
 proceed=true;
-(void) printf("JMPDBG checkseq seq=<%s>\n",seq);
 while (proceed==true) {
   switch (phase) {
     case 0      :       //is the sequence an SPF Mechanisms
@@ -208,8 +225,11 @@ while (proceed==true) {
         case mch_all            :       //usually last in sequence
           spf=locspf;
           break;
+        case mch_ip4            :       //include sub domain
+          if (checkip(peerip,seq+1)==true)
+            spf=locspf;
+          break;
         case mch_include        :       //include sub domain
-          (void) printf("JMPDBG should include <%s>\n",seq+1);
           if (seq[0]==':') {
             (*try)++;
             spf=dns_get_spf_status(try,seq+1,peerip);
@@ -495,7 +515,7 @@ SPFENU spf;
 int phase;
 _Bool proceed;
 
-spf=spf_permerr;
+spf=spf_neutral;
 phase=0;
 proceed=true;
 while (proceed==true) {
@@ -523,6 +543,8 @@ while (proceed==true) {
           spfrec+=strlen(seq);
           spf=checkseq(try,seq,peerip,spf);
           seq=rou_freestr(seq);
+          if (spf!=spf_neutral)
+            break;      //Found a status breaking loop
           }
         }
       break;
@@ -606,6 +628,7 @@ spf=spf_permerr;
 list=(char **)0;
 phase=0;
 proceed=true;
+(void) printf("JMPDBG try='%02d' domain=<%s> peerip=<%s>\n",*try,domain,peerip);
 while (proceed==true) {
   switch (phase) {
     case 0      :       //Are the parameters available
@@ -632,7 +655,6 @@ while (proceed==true) {
         }
       break;
     case 4      :       //gett the spf LIST related to SPF
-      (void) printf("JMPDBG peerip=<%s>, spf=<%s>\n",peerip,list[0]);
       spf=is_peerip_ok(try,peerip,list[0]);
       list=(char **)rou_freelist((void **)list,(freehandler_t)rou_freestr);
       break;