From cecb131786da4a1c9ed3e55001050c40af44e779 Mon Sep 17 00:00:00 2001 From: Jean-Marc Pigeon Date: Thu, 11 Sep 2025 08:52:14 -0400 Subject: [PATCH] start to insert "efrom" within action database base --- lib/geseml.c | 24 ++++++++++++++++-------- lib/gessql.c | 13 ++++++++++--- lib/lvleml.c | 2 ++ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/lib/geseml.c b/lib/geseml.c index 23da02b..36f0c49 100644 --- a/lib/geseml.c +++ b/lib/geseml.c @@ -194,13 +194,14 @@ if (tra!=(TRATYP *)0) { status=true; (void) strftime(temps,sizeof(temps),"#%Y-%m-%d %H:%M:%S", localtime(&(tra->date))); - (void) snprintf(line,sizeof(line),"%c\t%lu\t%04u\t%s\t%s\t%s", + (void) snprintf(line,sizeof(line),"%c\t%lu\t%05u%*s %*s %*s %*s", tra->code, tra->date, tra->delay, - tra->sessid, - tra->sfrom, - tra->rcptto + 32,tra->sessid, + 30,tra->rcptto, + 30,tra->sfrom, + 30,tra->efrom ); (void) print_tra(qfile,line,temps); if (tra->resp!=(char **)0) { @@ -241,8 +242,12 @@ if (tra!=(TRATYP **)0) { (void) fprintf(qfile,"#'C', completed email task\n"); (void) fprintf(qfile,"#'L', Local email\n"); (void) fprintf(qfile,"#'R', Remote email\n"); - (void) fprintf(qfile,"#code\tdate\t\tdelay\tsession-id\t\t\t" - "originator\t\trecipient\n"); + (void) fprintf(qfile,"#code\tdate\t\tdelay" + "%*s %*s %*s %*s\n", + 32,"session-id", + 30,"recipient", + 30,"sfrom", + 30,"efrom"); } while (*tra!=(TRATYP *)0) { (void) eml_dump_one_tra(qfile,*tra); @@ -297,6 +302,7 @@ if (tra!=(TRATYP *)0) { dup->date=tra->date; dup->delay=tra->delay; dup->sfrom=strdup(tra->sfrom); + dup->efrom=strdup(tra->efrom); dup->rcptto=strdup(tra->rcptto); dup->sessid=strdup(tra->sessid); if (tra->resp!=(char **)0) { @@ -324,7 +330,7 @@ PUBLIC TRATYP **eml_scanqfile(TRATYP **list,FILE *qfile) { #define OPEP "geseml.c:eml_scanqfile," -#define FMT "%c %ld %d %s %s %s" +#define FMT "%c %ld %d %s %s %s %s" TRATYP *cur; //previous trans record char *ptr; @@ -334,6 +340,7 @@ cur=(TRATYP *)0; while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { char id[300]; char sfrom[100]; + char efrom[100]; char to[100]; char code; u_long date; @@ -363,7 +370,7 @@ while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { case 'L' : case 'R' : case 'W' : - if (sscanf(line,FMT,&code,&date,&delay,id,sfrom,to)!=6) { + if (sscanf(line,FMT,&code,&date,&delay,id,to,sfrom,efrom)!=7) { (void) rou_alert(0,"%s Unable to scan (config?)",OPEP,line); phase=999; //No data within line } @@ -383,6 +390,7 @@ while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { cur->delay=delay; cur->sessid=strdup(id); cur->sfrom=strdup(sfrom); + cur->efrom=strdup(efrom); cur->rcptto=strdup(to); list=(TRATYP **)rou_addlist((void **)list,(void *)cur); } diff --git a/lib/gessql.c b/lib/gessql.c index 25796cf..173be49 100644 --- a/lib/gessql.c +++ b/lib/gessql.c @@ -46,7 +46,7 @@ static _Bool mngact(SQLPTR *sqlptr,ACTTYP *act) #define OPEP "gessql.c:sql_mngact," static const char *del="DELETE FROM "ACTTBL" WHERE sessid=%s AND rcptto=%s"; -static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%d,%s)"; +static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%s,%d,%s)"; _Bool isok; @@ -55,6 +55,7 @@ if (act!=(ACTTYP *)0) { char strcode[10]; char *gid; char *gsfrom; //SMTP "mail from:" + char *gefrom; //email Header "From:" char *grcpt; char *gcode; @@ -62,12 +63,13 @@ if (act!=(ACTTYP *)0) { strcode[0]=act->code; gid=sql_gooddata(sqlptr,act->sessid); gsfrom=sql_gooddata(sqlptr,act->sfrom); + gefrom=sql_gooddata(sqlptr,act->efrom); grcpt=sql_gooddata(sqlptr,act->rcptto); gcode=sql_gooddata(sqlptr,strcode); if (act->resp!=(char **)0) { char *field; - field="code,sessid,smtpfrom,rcptto,numline,info"; + field="code,sessid,smtpfrom,emailfrom,rcptto,numline,info"; (void) sql_request(sqlptr,del,gid,grcpt); if (act->resp!=(char **)0) { char **resp; @@ -79,7 +81,10 @@ if (act!=(ACTTYP *)0) { char *ginfo; ginfo=sql_gooddata(sqlptr,*resp); - (void) sql_request(sqlptr,ins,field,gcode,gid,gsfrom,grcpt,num,ginfo); + (void) sql_request(sqlptr,ins,field, + gcode,gid, + gsfrom,gefrom, + grcpt,num,ginfo); ginfo=rou_freestr(ginfo); resp++; num++; @@ -88,6 +93,7 @@ if (act!=(ACTTYP *)0) { } gcode=rou_freestr(gcode); grcpt=rou_freestr(grcpt); + gefrom=rou_freestr(gefrom); gsfrom=rou_freestr(gsfrom); gid=rou_freestr(gid); isok=true; @@ -136,6 +142,7 @@ if (tralist!=(TRATYP **)0) { action.sessid=(*tralist)->sessid; action.code=(*tralist)->code; action.sfrom=(*tralist)->sfrom; + action.efrom=(*tralist)->efrom; action.rcptto=(*tralist)->rcptto; action.resp=(*tralist)->resp; (void) mngact(sqlptr,&action); diff --git a/lib/lvleml.c b/lib/lvleml.c index ff4f67f..03cc718 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -2843,6 +2843,8 @@ if ((contact!=(CONTYP *)0)&&(contact->recipients!=(RCPTYP **)0)) { tra->delay=0; tra->sessid=strdup(contact->session->sessid); tra->sfrom=strdup(contact->mailfrom); + tra->sfrom=strdup(contact->mailfrom); + tra->efrom=strdup("XXX"); tra->rcptto=strdup(data); tralist=(TRATYP **)rou_addlist((void **)tralist,(void *)tra); ptr++; -- 2.47.3