]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Able to insert remote reverse addresse within actions db table.
authorJean-Marc Pigeon <jmp@safe.c>
Thu, 18 Sep 2025 20:11:37 +0000 (16:11 -0400)
committerJean-Marc Pigeon <jmp@safe.c>
Thu, 18 Sep 2025 20:11:37 +0000 (16:11 -0400)
lib/geseml.c
lib/gessql.c
lib/lvleml.c
lib/unieml.c
lib/unieml.h
lib/unisql.h
sql/mailleur.sql
www/lvlmai.php

index df161acd467aa407942bfdc0c562be1848a31d65..b5fea419e9b5dda672ad4ae3c1f3aba8eda4c250 100644 (file)
@@ -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 <line=%s> (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);
index 20aaee1a045e0bf87a066771bd6c9a561dfc12c0..131e8ef094d224ec9a0cd53fa7a0b6764608a407 100644 (file)
@@ -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;
index ea0937b7614519df719e9d07a28ebaf38032a65c..03883a8bba056e70da743ff9a8b52d2b4f308224 100644 (file)
@@ -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);
index fe7d0906d2f7cfa74fce7472b366c2ee30e501a2..54efb0a92a6e0dd9aecc2da018dde67db0e0cadb 100644 (file)
@@ -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;
   }
index a90747cf184dc070bd4db0f2ca68fd3acbeccb7c..3c10e981a075e36c3859c8eaf094a032276a48a7 100644 (file)
@@ -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;
index 83d7ae72dc5cceeb746248d076f3f6f1fe1e2e77..a0a49fc7067e1bf3e0345f24406722a308b53574 100644 (file)
@@ -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
index 1d6ce229b9a6cae53ee533cca0770efb65a6bf8d..878ffbbeab8c8a67f48f295e3da6a97a6482c81f 100644 (file)
@@ -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:"
index ecab24121f5d409ba1dec498e677babd4b9cfd9b..86e63a5c1a02516d982523986dbb6bc1afc86971 100644 (file)
@@ -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."<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>";
@@ -87,6 +89,7 @@ $top
 <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>