From: Jean-Marc Pigeon (Delson) Date: Thu, 15 Aug 2024 22:56:41 +0000 (-0400) Subject: Adding checkip procedure (still to be implemented) X-Git-Tag: tag-0.4.2-end~26 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=9cd036011151b976e2407e7e0eb752b4900226fa;p=jmp%2Fmailleur Adding checkip procedure (still to be implemented) --- diff --git a/lib/subrou.c b/lib/subrou.c index a33c296..8b86a47 100644 --- a/lib/subrou.c +++ b/lib/subrou.c @@ -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 diff --git a/lib/unidns.c b/lib/unidns.c index 4fb861f..909576b 100644 --- a/lib/unidns.c +++ b/lib/unidns.c @@ -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; +} +/* + +*/ +/********************************************************/ +/* */ /* 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;