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) {
(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);
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) {
{
#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;
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;
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 <line=%s> (config?)",OPEP,line);
phase=999; //No data within line
}
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);
}
#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;
char strcode[10];
char *gid;
char *gsfrom; //SMTP "mail from:"
+ char *gefrom; //email Header "From:"
char *grcpt;
char *gcode;
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;
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++;
}
gcode=rou_freestr(gcode);
grcpt=rou_freestr(grcpt);
+ gefrom=rou_freestr(gefrom);
gsfrom=rou_freestr(gsfrom);
gid=rou_freestr(gid);
isok=true;
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);
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++;