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,
(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");
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);
{
#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;
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;
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 <line=%s> (config?)",OPEP,line);
phase=999; //No data within line
}
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);
#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;
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:"
(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);
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;
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);
}
ghsubject=rou_freestr(ghsubject);
ghfrom=rou_freestr(ghfrom);
gsfrom=rou_freestr(gsfrom);
+ greverse=rou_freestr(greverse);
gid=rou_freestr(gid);
isok=true;
}
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;
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);
{
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;
}
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;
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
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:"
}
$status=substr($action['info'],0,4);
$date=$action['creation'];
+ $reverse=$action['reverse'];
$smtpfrom=$action['smtpfrom'];
$emailfrom=$action['emailfrom'];
$emailfrom=htmlspecialchars($emailfrom,ENT_QUOTES);
$line=$line."<TR>\r\n";
$line=$line."<TD align=left>$count $status</TD>\r\n";
$line=$line."<TD align=left>$date</TD>\r\n";
+ $line=$line."<TD align=left>$reverse</TD>\r\n";
$line=$line."<TD align=left>";
$line=$line."$emailfrom<BR>";
$line=$line."<FONT SIZE=-1>$smtpfrom</FONT>";
<TR>
<TH align=center>Status</TH>
<TH align=center>Date</TH>
+<TH align=center>Remote</TH>
<TH align=center>Originator</TH>
<TH align=center>Recipient</TH>
<TH align=center>subject</TH>