From cbefdcbc070b5b192aba1deb4991cb16306275e0 Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Mon, 14 Jul 2025 23:39:28 -0400 Subject: [PATCH] ORGN command is working within receiver and feeder --- app/feeder.c | 5 ++++- data-feed/feed05.tst | 5 +++-- lib/Makefile | 2 +- lib/devsoc.c | 3 ++- lib/lvleml.c | 26 ++++++++++++++++++++------ 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/feeder.c b/app/feeder.c index b080e19..31056a0 100644 --- a/app/feeder.c +++ b/app/feeder.c @@ -433,7 +433,10 @@ switch (getcmd(line)) { break; case cmd_orgn : //send command to override client IP if (param!=(char *)0) { - (void) sendout(fd->socptr,line); + char cmd[100]; + + (void) snprintf(cmd,sizeof(cmd)-1,"%s %s",line,param); + (void) sendout(fd->socptr,cmd); } else { (void) report(*numline,line,"Missing new PEER IP value"); diff --git a/data-feed/feed05.tst b/data-feed/feed05.tst index 5f1ac1f..a203b49 100644 --- a/data-feed/feed05.tst +++ b/data-feed/feed05.tst @@ -1,10 +1,11 @@ T:(feed05) Email testing remote server +C:CONNECT #==================================================== R:220 mailleur.example.com, ESMTP (cleartext) mailleur... C:ORGN: 91.199.160.44 -R:220 xxxmailleur.example.com, ESMTP (cleartext) mailleur... +R:220 mailleur.example.com, ESMTP (cleartext) mailleur... S:helo example.com -R:250 mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.99.25/No.Reverse] +R:250 mailleur.example.com, link (cleartext) ready, your IP/FQDN=[91.199.160.44/painsmille.shop] S:MAIL FROM: R:457-4.5.7 Your Credential need to be checked R:457 5.5.3 Closing connection diff --git a/lib/Makefile b/lib/Makefile index 9617ca3..2824fc1 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -78,7 +78,7 @@ devlog.o: \ devsoc.o: \ subafn.h subrou.h \ - unieml.h uniprc.h \ + unidns.h unieml.h uniprc.h \ devsoc.h devsoc.c devsql.o: \ diff --git a/lib/devsoc.c b/lib/devsoc.c index f3cd433..2664005 100644 --- a/lib/devsoc.c +++ b/lib/devsoc.c @@ -19,6 +19,7 @@ #include "subrou.h" #include "subafn.h" +#include "unidns.h" #include "unieml.h" #include "uniprc.h" #include "unitls.h" @@ -1402,7 +1403,7 @@ if (soc!=(SOCTYP *)0) { case EAI_AGAIN : case EAI_NONAME : if (getname==true) - (void) strcpy(host,"No.Reverse"); + (void) strcpy(host,NORVERS); //NO reverse name default : (void) rou_alert(0,"%s, Unable to get name (local=%d, error=<%s>)", OPEP,local,strerror(errno)); diff --git a/lib/lvleml.c b/lib/lvleml.c index 04f3f74..eeea431 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -18,6 +18,7 @@ #include #include +#include "subafn.h" #include "subrou.h" #include "subcnv.h" #include "unidig.h" @@ -353,8 +354,8 @@ while (proceed==true) { case 2 : //freeing memory if (srv->credit<0) { status=NEWSITE; - (void) transmit(contact,true,"%d-4.5.7 Your Credential need to be checked", - status); + (void) transmit(contact,true,"%d-4.5.7 Your Credential (%3d) need " + "to be checked",status,srv->credit); phase=999; //To many server connected } break; @@ -1335,13 +1336,26 @@ return done; /* */ /************************************************/ #ifdef MODEDEBUG -static _Bool setnewrmtip(CONTYP *contact,char *rmtip) +static _Bool set_orgn_rmtip(CONTYP *contact,char *rmtip) { _Bool isok; +AFNTYP **afns; -isok=true; -(void) rou_alert(0,"JMPDBG"); +isok=false; +if ((afns=afn_getipnum(rmtip))!=(AFNTYP **)0) { + char *reverse; + + reverse=afn_reversipnum(afns[0]); + contact->peerip=rou_freestr(contact->peerip); + contact->peerip=strdup(rmtip); + contact->peername=rou_freestr(contact->peername); + contact->peername=dns_get_reverse_addr(reverse); + reverse=rou_freestr(reverse); + afns=(AFNTYP **)rou_freelist((void **)afns,(genfree_t)afn_freeipnum); + isok=true; + } +(void) signon(contact); return isok; } #endif @@ -2210,7 +2224,7 @@ while (proceed==true) { break; #ifdef MODEDEBUG case c_orgn : //Debug mode to override remote IP - proceed=setnewrmtip(contact,line); + proceed=set_orgn_rmtip(contact,line); break; #endif case c_auth : //Auth request -- 2.47.3