]> SAFE projects GIT repository - jmp/mailleur/commitdiff
start to insert "efrom" within action database base
authorJean-Marc Pigeon <jmp@safe.c>
Thu, 11 Sep 2025 12:52:14 +0000 (08:52 -0400)
committerJean-Marc Pigeon <jmp@safe.c>
Thu, 11 Sep 2025 12:52:14 +0000 (08:52 -0400)
lib/geseml.c
lib/gessql.c
lib/lvleml.c

index 23da02b43b2d92e14e5f04572d948e7669365be2..36f0c49fb779114c6eb28a50b52c3bbf7c31354d 100644 (file)
@@ -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 <line=%s> (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); 
           }
index 25796cfde0c1ef95f9077ef1e97d356a9a6698df..173be49fe9ce900f05045835c99a1f92db311409 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,%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); 
index ff4f67fc3f8abe3bc283b77587dbb55b45629419..03cc7181274110c58085739b8773223908e34df5 100644 (file)
@@ -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++;