From: Jean-Marc Pigeon (Delson) Date: Tue, 6 May 2025 15:09:50 +0000 (-0400) Subject: Improving test function within Makefile X-Git-Tag: tag-0.8~129 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=2857cb40222aa60b61562da9097e1336eff273bc;p=jmp%2Fmailleur Improving test function within Makefile --- diff --git a/Makefile b/Makefile index d5cfc86..e9ed543 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ TESTITER= 3 #-------------------------------------------------------------------- #testing feed FEEDPAR = \ - -d3 \ + $(TESTIP) \ $(TESTPORT) \ $(TESTDIR)/$(DATATST)/feed*.tst \ @@ -60,12 +60,14 @@ onefeed : debug -c ./conf/feeder.conf.dvl \ $(TESTIP) \ $(TESTPORT) \ - $(DATATST)/feed01.tst + $(DATATST)/feedxx.tst # # -i 127.63.31.15 #direct test tstfeed : debug - @ bin/feeder $(FEEDPAR) + @ bin/feeder \ + -c ./conf/feeder.conf.dvl \ + $(FEEDPAR) #using gdb dbgfeed : debug diff --git a/app/feeder.c b/app/feeder.c index 9fc7551..0a42a33 100644 --- a/app/feeder.c +++ b/app/feeder.c @@ -134,19 +134,22 @@ static _Bool gomodetls(SOCPTR *socptr) { #define WTLS 5 /*wait 5 sec for TLS */ + _Bool status; char *got; +char *action; int phase; _Bool proceed; status=false; got=(char *)0; +action="starttls"; phase=0; proceed=true; while (proceed==true) { switch (phase) { case 0 : //Sending START TLS command - if (dooutgoing(socptr,GOTLS)!=(strlen(GOTLS)+2)) + if (dooutgoing(socptr,action)!=(strlen(action)+2)) phase=999; //Unable to send STARTTLS sequence break; case 1 : //Get STARTTLS command status diff --git a/data-tst/feed00.tst b/data-tst/feed00.tst index 24522d3..8bab494 100644 --- a/data-tst/feed00.tst +++ b/data-tst/feed00.tst @@ -19,9 +19,9 @@ C:COMMENT START #Definition to validate mailleur daemon (emlrcvr) server #The test serveur itself 127.127.10.25 mailleur.example.com mailleur -#The MX -127.127.0.1 mx1.example.com mx1 -127.127.0.2 mx2.example.com mx2 +#The example.com email feeder +127.127.0.1 feed1.example.com feed1 +127.127.0.2 feed2.example.com feed2 #remote access #127.168.0.1 no reverss address detection 127.168.10.1 foreign1.badserver.tld foreign1 diff --git a/data-tst/feed01.tst b/data-tst/feedxx.tst similarity index 75% rename from data-tst/feed01.tst rename to data-tst/feedxx.tst index 93655ca..9024eda 100644 --- a/data-tst/feed01.tst +++ b/data-tst/feedxx.tst @@ -3,11 +3,11 @@ T:Simple email sending R:220 mailleur.example.com ESMTP (cleartext) emlrcvr... S:ORGN 127.127.0.2 -R:250 2.9.9 New peer [127.127.0.2/mx2.example.com] set +R:250 2.9.9 New peer [127.127.0.2/feed2.example.com] set #==================================================== S:HELO example.com -R:250-mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.0.2/mx2.example.com] +R:250-mailleur.example.com, link (cleartext) ready, your IP/FQDN=[127.127.0.2/feed2.example.com] S:MAIL FROM: -R:Bigre +R:250 2.1.3 postmaster@example.com.. sender ok S:QUIT R:221 2.0.0 Bye, closing connection... diff --git a/lib/lvleml.c b/lib/lvleml.c index 2fae29c..747ab3e 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -230,23 +230,13 @@ done=false; phase=0; proceed=true; while (proceed==true) { - //(void) rou_alert(0,"JMPDBG %s phase='%d' parm=<%s>",OPEP,phase,parameter); + (void) rou_alert(0,"JMPDBG %s phase='%d' parm=<%s>",OPEP,phase,parameter); switch (phase) { case 0 : //checking if we have a parameter if ((parameter==(char *)0)||(strlen(parameter)==0)) phase=999; //no parameter break; - case 1 : //do we have space - if ((parameter[0]!=' ')&&(parameter[0]!='\t')) - phase=999; //parameter wrong format - break; - case 2 : //cleaning space character - while ((parameter[0]==' ')||(parameter[0]=='\t')) - parameter++; - if (strlen(parameter)==0) - phase=999; //no parameter? - break; - case 3 : //seems to be a good fqdn + case 1 : //seems to be a good fqdn contact->fqdn=rou_freestr(contact->fqdn); contact->fqdn=strdup(parameter); done=true; @@ -373,15 +363,15 @@ while (proceed==true) { switch (phase) { case 0 : //do we have an originator if ((mailfrom==(char *)0)||(strlen(mailfrom)<3)) { - (void) transmit(contact,"%d 5.5.0 %s %s originator not specified", - BADPAR,MAILF,mailfrom); + (void) transmit(contact,"%d 5.5.0 <%s> originator not specified", + BADPAR,mailfrom); phase=999; //no need to go further } break; case 1 : //do we have already a from if (contact->mailfrom!=(char *)0) { - (void) transmit(contact,"%d 5.5.1 %s '%s' %s", - BADPAR,MAILF,contact->mailfrom, + (void) transmit(contact,"%d 5.5.1 '%s' %s", + BADPAR,contact->mailfrom, "was previously defined as originator" ); phase=999; //no need to go further @@ -389,8 +379,8 @@ while (proceed==true) { break; case 2 : //check from format if ((mailfrom[0]!='<')||(mailfrom[strlen(mailfrom)-1]!='>')) { - (void) transmit(contact,"%d 5.5.2 %s %s Format error", - BADPAR,MAILF,mailfrom); + (void) transmit(contact,"%d 5.5.2 '%s' bad Format error", + BADPAR,mailfrom); phase=999; //no need to go further } mailfrom[strlen(mailfrom)-1]='\000'; diff --git a/lib/unieml.c b/lib/unieml.c index 83a0281..903e1b0 100644 --- a/lib/unieml.c +++ b/lib/unieml.c @@ -20,15 +20,16 @@ typedef struct { //this list order by key length static VOCTYP vocsmtp[]={ - {c_helo,"HELO"}, {c_ehlo,"EHLO"}, + {c_helo,"HELO"}, + {c_mail,"MAIL FROM:"}, {c_noop,"NOOP"}, #ifdef MODEDEBUG {c_orgn,"ORGN"}, #endif {c_quit,"QUIT"}, + {c_rcpt,"RCPT TO:"}, {c_rset,"RSET"}, - {c_mail,MAILF}, {c_starttls,"STARTTLS"}, {c_unknown,(const char *)0} }; @@ -100,6 +101,12 @@ for (ptr=vocsmtp;ptr->code!=c_unknown;ptr++) { code=ptr->code; par=keyword+strlen(ptr->key); + *keyword='\000'; //lets say no parameters + if ((*par=='\000')||((*par!=' ')&&(*par!='\t'))) + break; //space missing -> argument missing + //removing unneeded space + while ((*par==' ')||(*par=='\t')) + par++; (void) memmove(keyword,par,strlen(par)+1); break; } diff --git a/lib/unieml.h b/lib/unieml.h index 84ebb49..bb007b9 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -18,18 +18,19 @@ //SMTP avail command -#define MAILF "MAIL FROM:" //Mail from a sender -#define GOTLS "STARTTLS" //Requesting crypted mode +//#define MAILF "MAIL FROM:" //Mail from a sender +//#define GOTLS "STARTTLS" //Requesting crypted mode //list of keyword typedef enum { //list of SMTP protocol keyword - c_helo, //Basic Helo command c_ehlo, //EHLO command + c_helo, //Basic Helo command + c_mail, //'mail from:' sequence detected c_noop, //No Operation request c_orgn, //DEBUG PEERIP override c_quit, //quit exchange + c_rcpt, //'rcpt to:' sequence detected c_rset, //resetting session - c_mail, //mail from sequence detected c_starttls, //Starting a TLS crypted link c_unknown //key word unknown }CODTYP;