From: Jean-Marc Pigeon Date: Thu, 18 Sep 2025 20:11:37 +0000 (-0400) Subject: Able to insert remote reverse addresse within actions db table. X-Git-Tag: tag-0.17~65 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=484e94d8ec54c939e7e0f5a06ee140dcebef7dab;p=jmp%2Fmailleur Able to insert remote reverse addresse within actions db table. --- diff --git a/lib/geseml.c b/lib/geseml.c index df161ac..b5fea41 100644 --- a/lib/geseml.c +++ b/lib/geseml.c @@ -194,11 +194,12 @@ 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%05u %*s %*s %*s \"%*s\" %s", + (void) snprintf(line,sizeof(line),"%c\t%lu\t%05u %*s %*s %*s %*s \"%*s\" %s", tra->code, tra->date, tra->delay, -32,tra->sessid, + -30,tra->reverse, -30,tra->rcptto, -30,tra->sfrom, -30,tra->hfrom, @@ -244,8 +245,9 @@ if (tra!=(TRATYP **)0) { (void) fprintf(qfile,"#'L', Local email\n"); (void) fprintf(qfile,"#'R', Remote email\n"); (void) fprintf(qfile,"#code\tdate\t\tdelay " - "%*s %*s %*s %*s subject\n", + "%*s %*s %*s %*s %*s subject\n", -32,"session-id", + -30,"reverss-address", -30,"recipient", -30,"sfrom", -30,"efrom"); @@ -302,6 +304,7 @@ if (tra!=(TRATYP *)0) { dup->code=tra->code; dup->date=tra->date; dup->delay=tra->delay; + dup->reverse=strdup(tra->reverse); dup->sfrom=strdup(tra->sfrom); dup->hfrom=strdup(tra->hfrom); dup->hsubject=strdup(tra->hsubject); @@ -332,7 +335,7 @@ PUBLIC TRATYP **eml_scanqfile(TRATYP **list,FILE *qfile) { #define OPEP "geseml.c:eml_scanqfile," -#define FMT "%c %ld %d %s %s %s \"%[^\"]\" %99[^\n]" +#define FMT "%c %ld %d %s %s %s %s \"%[^\"]\" %99[^\n]" TRATYP *cur; //previous trans record char *ptr; @@ -341,10 +344,11 @@ char line[300]; cur=(TRATYP *)0; while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { char id[300]; - char sfrom[100]; - char hfrom[100]; - char hsubject[100]; - char to[100]; + char reverse[300]; + char sfrom[300]; + char hfrom[300]; + char hsubject[300]; + char to[300]; char code; u_long date; u_int delay; @@ -375,7 +379,8 @@ while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { case 'W' : (void) memset(hfrom,'\000',sizeof(hfrom)); (void) memset(hsubject,'\000',sizeof(hsubject)); - if (sscanf(line,FMT,&code,&date,&delay,id,to,sfrom,hfrom,hsubject)!=8) { + if (sscanf(line,FMT,&code,&date,&delay, + id,reverse,to,sfrom,hfrom,hsubject)!=9) { (void) rou_alert(0,"%s Unable to scan (config?)",OPEP,line); phase=999; //No data within line } @@ -397,6 +402,7 @@ while ((ptr=fgets(line,sizeof(line),qfile))!=(char *)0) { cur->code=code; cur->date=date; cur->delay=delay; + cur->reverse=strdup(reverse); cur->sessid=strdup(id); cur->rcptto=strdup(to); cur->sfrom=strdup(sfrom); diff --git a/lib/gessql.c b/lib/gessql.c index 20aaee1..131e8ef 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,%s,%s,%d,%s)"; +static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%s,%s,%s,%d,%s)"; _Bool isok; @@ -54,6 +54,7 @@ isok=false; if (act!=(ACTTYP *)0) { char strcode[10]; char *gid; + char *greverse; //remote reverse address char *gsfrom; //SMTP "mail from:" char *ghfrom; //email Header "From:" char *ghsubject; //email Header "Subject:" @@ -63,6 +64,7 @@ if (act!=(ACTTYP *)0) { (void) memset(strcode,'\000',sizeof(strcode)); strcode[0]=act->code; gid=sql_gooddata(sqlptr,act->sessid); + greverse=sql_gooddata(sqlptr,act->reverse); gsfrom=sql_gooddata(sqlptr,act->sfrom); ghsubject=sql_gooddata(sqlptr,act->hsubject); ghfrom=sql_gooddata(sqlptr,act->hfrom); @@ -71,9 +73,8 @@ if (act!=(ACTTYP *)0) { if (act->resp!=(char **)0) { char *field; - field="code,sessid,smtpfrom,emailfrom,subject,rcptto,numline,info"; + field="code,sessid,reverse,smtpfrom,emailfrom,subject,rcptto,numline,info"; (void) sql_request(sqlptr,del,gid,grcpt); - (void) rou_alert(0,"%s JMPDBG DEL sessid=<%s> rcptto=<%s>",OPEP,gid,grcpt); if (act->resp!=(char **)0) { char **resp; int num; @@ -85,11 +86,9 @@ if (act!=(ACTTYP *)0) { char *ginfo; ginfo=sql_gooddata(sqlptr,*resp); - (void) rou_alert(0,"%s JMPDBG sessid=<%s> rcptto=<%s> info=<%s>", - OPEP,gid,grcpt,ginfo); (void) sql_request(sqlptr,ins,field, gcode,gid, - gsfrom,ghfrom,ghsubject, + greverse,gsfrom,ghfrom,ghsubject, grcpt,num,ginfo); ginfo=rou_freestr(ginfo); } @@ -103,6 +102,7 @@ if (act!=(ACTTYP *)0) { ghsubject=rou_freestr(ghsubject); ghfrom=rou_freestr(ghfrom); gsfrom=rou_freestr(gsfrom); + greverse=rou_freestr(greverse); gid=rou_freestr(gid); isok=true; } @@ -147,8 +147,10 @@ if (tralist!=(TRATYP **)0) { if ((*tralist)->resp!=(char **)0) { ACTTYP action; + (void) memset(&action,'\000',sizeof(ACTTYP)); action.sessid=(*tralist)->sessid; action.code=(*tralist)->code; + action.reverse=(*tralist)->reverse; action.sfrom=(*tralist)->sfrom; action.hfrom=(*tralist)->hfrom; action.hsubject=(*tralist)->hsubject; diff --git a/lib/lvleml.c b/lib/lvleml.c index ea0937b..03883a8 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -2841,6 +2841,7 @@ if ((contact!=(CONTYP *)0)&&(contact->recipients!=(RCPTYP **)0)) { tra->code=(*ptr)->code; tra->date=isnow; tra->delay=0; + tra->reverse=strdup(contact->peername); tra->sessid=strdup(contact->session->sessid); tra->sfrom=strdup(contact->mailfrom); tra->rcptto=strdup(data); diff --git a/lib/unieml.c b/lib/unieml.c index fe7d090..54efb0a 100644 --- a/lib/unieml.c +++ b/lib/unieml.c @@ -96,12 +96,12 @@ PUBLIC TRATYP *eml_freetra(TRATYP *tra) { if (tra!=(TRATYP *)0) { (void) eml_freetra_resp(tra); - tra->rcptto=rou_freestr(tra->rcptto); - tra->sfrom=rou_freestr(tra->sfrom); - tra->hsubject=rou_freestr(tra->hsubject); tra->hfrom=rou_freestr(tra->hfrom); + tra->hsubject=rou_freestr(tra->hsubject); + tra->reverse=rou_freestr(tra->reverse); tra->rcptto=rou_freestr(tra->rcptto); tra->sessid=rou_freestr(tra->sessid); + tra->sfrom=rou_freestr(tra->sfrom); (void) free(tra); tra=(TRATYP *)0; } diff --git a/lib/unieml.h b/lib/unieml.h index a90747c..3c10e98 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -98,11 +98,12 @@ typedef struct { char code; //Transaction code time_t date; //Transaction date u_int delay; //Transaction execution delay - char *sessid; //session id - char *sfrom; //Email SMTP Originator char *hfrom; //Email HEADER originator char *hsubject; //Email HEADER subject + char *reverse; //remote reverse-address char *rcptto; //Email Recipient + char *sessid; //session id + char *sfrom; //Email SMTP Originator int sendcode; //Email sending status; char **resp; //Transfer response status }TRATYP; diff --git a/lib/unisql.h b/lib/unisql.h index 83d7ae7..a0a49fc 100644 --- a/lib/unisql.h +++ b/lib/unisql.h @@ -52,6 +52,7 @@ typedef struct { typedef struct { char *sessid; //session id char code; //Email status code + char *reverse; //The remoter server reverse address char *sfrom; //the "MAIL FROM:" within the SMTP exchange char *hfrom; //the "From:" within the email header char *hsubject; //the "Subject:" within the email header diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 1d6ce22..878ffbb 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -95,6 +95,7 @@ CREATE TABLE actions ( DFLT NOW(), code SHORTTEXT, //action status (one char) sessid TEXT, //Session id + reverse TEXT, //IP reverse address name smtpfrom TEXT, //SMTP Connection "MAIL FROM:" rcptto TEXT, //SMTP Connection "RCPT TO:" emailfrom TEXT, //email contents "From:" diff --git a/www/lvlmai.php b/www/lvlmai.php index ecab241..86e63a5 100644 --- a/www/lvlmai.php +++ b/www/lvlmai.php @@ -45,6 +45,7 @@ foreach($actions as $action) { } $status=substr($action['info'],0,4); $date=$action['creation']; + $reverse=$action['reverse']; $smtpfrom=$action['smtpfrom']; $emailfrom=$action['emailfrom']; $emailfrom=htmlspecialchars($emailfrom,ENT_QUOTES); @@ -53,6 +54,7 @@ foreach($actions as $action) { $line=$line."\r\n"; $line=$line."$count $status\r\n"; $line=$line."$date\r\n"; + $line=$line."$reverse\r\n"; $line=$line.""; $line=$line."$emailfrom
"; $line=$line."$smtpfrom"; @@ -87,6 +89,7 @@ $top Status Date +Remote Originator Recipient subject