From: Jean-Marc Pigeon (Delson) Date: Mon, 10 Mar 2025 20:32:24 +0000 (-0400) Subject: Better way todefine listening port X-Git-Tag: tag-0.6~3 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=75df8ce8ac30c7b01d481e2c494aa9d53a192406;p=jmp%2Fmailleur Better way todefine listening port --- diff --git a/app/emlrcvr.c b/app/emlrcvr.c index eeba601..1762290 100644 --- a/app/emlrcvr.c +++ b/app/emlrcvr.c @@ -19,8 +19,6 @@ #define RECNAME "emlrcvr" //port listening format is "IP:PORT NUMBER:num iteration" -#define DFLTIP "127.168.0.1" //smtp test IP -#define SMTPORT "1025" //smtp test port /* */ @@ -49,7 +47,7 @@ proceed=true; while (proceed==true) { switch (phase) { case 0 : //checking parameters - if ((params=par_getparams(argc,argv,"d:fhr:v"))==(ARGTYP *)0) { + if ((params=par_getparams(argc,argv,"d:fh:r:v"))==(ARGTYP *)0) { phase=999; //no need to go further } break; @@ -64,7 +62,7 @@ while (proceed==true) { (void) sig_trapsignal(true,sig_alrm); break; case 2 : //doing main task - (void) rec_handlesmtp(DFLTIP,SMTPORT,1); + (void) rec_handlesmtp(params->argc,params->argv); break; case 3 : //doing main tash (void) prc_cleantitle(); diff --git a/lib/modrec.c b/lib/modrec.c index 52e1f03..5ed2c04 100644 --- a/lib/modrec.c +++ b/lib/modrec.c @@ -22,6 +22,44 @@ #include "modrec.h" static _Bool modopen; //boolean module open/close +#define DFLTIP "127.0.10.25" //smtp test IP +#define SMTPORT "1025" //smtp test port +/* + +*/ +/********************************************************/ +/* */ +/* Procedure to scan argument and generate binding */ +/* information. */ +/* build a SOCPTR list and return the number of */ +/* entries. */ +/* */ +/* Possible argument format are: */ +/* protocol:ipnum:port:iteration */ +/* example: */ +/* :ipnum::: -> smtp:ipnum:25:1 */ +/* smtps:ipnum:465:2 */ +/* -> smtps protocol,port 465,2 iteration */ +/* */ +/********************************************************/ +static int prepbinding(SOCPTR ***bindings,int argc,char *argv[]) + +{ +*bindings=(SOCPTR **)0; +for (int i=0;i",ipnum); - childs=(pid_t *)calloc(nbrbind,sizeof(pid_t)); - bindings=soc_mkbindinf((SOCPTR **)0,pro_smtp,ipnum,port,nbrbind); - if (bindings==(SOCPTR **)0) { - (void) rou_alert(0,"%s, No bindings definition found! (config?)",OPEP); + if ((nbrbind=prepbinding(&bindings,argc,argv))==0) { + (void) rou_alert(0,"%s, No listening IP found (config?)",OPEP); phase=999; } break; case 1 : //Opening ALL channels + childs=(pid_t *)calloc(nbrbind,sizeof(pid_t)); for (int i=0;i",ipnum); (void) prc_killchilds(childs,nbrbind,10); break; default : //SAFE Guard diff --git a/lib/modrec.h b/lib/modrec.h index 490fe9f..3c0955e 100644 --- a/lib/modrec.h +++ b/lib/modrec.h @@ -10,7 +10,7 @@ #include //procedure to receive email form outside -extern void rec_handlesmtp(const char *ipnum,const char *port,int nbrbind); +extern void rec_handlesmtp(int argc,char *argv[]); //homework to be done before starting/stoping module. extern int rec_modemodrec(_Bool mode);