]> SAFE projects GIT repository - jmp/mailleur/commitdiff
TRying to add remoteip value to actions table.
authorJean-Marc Pigeon <jmp@safe.c>
Mon, 3 Nov 2025 18:39:05 +0000 (13:39 -0500)
committerJean-Marc Pigeon <jmp@safe.c>
Mon, 3 Nov 2025 18:39:05 +0000 (13:39 -0500)
lib/gessql.c
lib/lvleml.c
lib/unieml.c
lib/unieml.h
lib/unisql.h
sql/mailleur.sql
www/gessql.php
www/lvlrmt.php

index 31b973a9415ff77783a9d4bfdc92b4b1ae90f0e7..47bab391914013e9588244a53ae000585546bf49 100644 (file)
@@ -46,7 +46,7 @@ PUBLIC _Bool sql_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,%s,%d,%d,%s)";
+static const char *ins="INSERT INTO "ACTTBL" (%s) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%d,%d,%s)";
 
 _Bool isok;
 
@@ -54,7 +54,8 @@ isok=false;
 if (act!=(ACTTYP *)0) {
   char strcode[10];
   char *gid;
-  char *greverse;       //remote reverse address
+  char *gremoteip;      //remote IP address
+  char *greverse;       //remote reverse name
   char *gsfrom;         //SMTP "mail from:"
   char *ghfrom;         //email Header "From:"
   char *ghsubject;      //email Header "Subject:"
@@ -64,6 +65,7 @@ if (act!=(ACTTYP *)0) {
   (void) memset(strcode,'\000',sizeof(strcode));
   strcode[0]=act->code;
   gid=sql_gooddata(sqlptr,act->sessid);
+  gremoteip=sql_gooddata(sqlptr,act->remoteip);
   greverse=sql_gooddata(sqlptr,act->reverse);
   gsfrom=sql_gooddata(sqlptr,act->sfrom);
   ghsubject=sql_gooddata(sqlptr,act->hsubject);
@@ -73,7 +75,7 @@ if (act!=(ACTTYP *)0) {
   if (act->resp!=(char **)0) {
     char *field;
 
-    field="code,sessid,reverse,smtpfrom,emailfrom,subject,rcptto,numline,status,info";
+    field="code,sessid,remoteip,reverse,smtpfrom,emailfrom,subject,rcptto,numline,status,info";
     (void) sql_request(sqlptr,del,gid,grcpt);
     if (act->resp!=(char **)0) {
       char **resp;
@@ -94,7 +96,8 @@ if (act!=(ACTTYP *)0) {
           ginfo=sql_gooddata(sqlptr,(*resp)+3);
           (void) sql_request(sqlptr,ins,field,
                                         gcode,gid,
-                                        greverse,gsfrom,ghfrom,ghsubject,
+                                        gremoteip,greverse,
+                                        gsfrom,ghfrom,ghsubject,
                                         grcpt,num,status,ginfo);
           ginfo=rou_freestr(ginfo);
           }
@@ -156,6 +159,7 @@ if (tralist!=(TRATYP **)0) {
       (void) memset(&action,'\000',sizeof(ACTTYP));
       action.sessid=(*tralist)->sessid;
       action.code=(*tralist)->code;
+      action.remoteip=(*tralist)->remoteip;
       action.reverse=(*tralist)->reverse;
       action.sfrom=(*tralist)->sfrom;
       action.hfrom=(*tralist)->hfrom;
index f8196afd88c197733ebaf4db38e9701a5e04ebc3..7b0133ce99a1156e793f5abd1c37a5884cef83e9 100644 (file)
@@ -2882,6 +2882,7 @@ if ((contact!=(CONTYP *)0)&&(contact->recipients!=(RCPTYP **)0)) {
     tra->code=(*ptr)->code;
     tra->date=isnow;
     tra->delay=0;
+    tra->remoteip=strdup(contact->peerip);
     tra->reverse=strdup(contact->peername);
     tra->sessid=strdup(contact->session->sessid);
     tra->sfrom=strdup(contact->mailfrom);
index 54efb0a92a6e0dd9aecc2da018dde67db0e0cadb..5aedee3efa06e84f64879d02d7960cbcd6ec894a 100644 (file)
@@ -99,6 +99,7 @@ if (tra!=(TRATYP *)0) {
   tra->hfrom=rou_freestr(tra->hfrom);
   tra->hsubject=rou_freestr(tra->hsubject);
   tra->reverse=rou_freestr(tra->reverse);
+  tra->remoteip=rou_freestr(tra->remoteip);
   tra->rcptto=rou_freestr(tra->rcptto);
   tra->sessid=rou_freestr(tra->sessid);
   tra->sfrom=rou_freestr(tra->sfrom);
index 3c10e981a075e36c3859c8eaf094a032276a48a7..45623e99abbd61d3c819f3e65f11e1cbc707c113 100644 (file)
@@ -100,7 +100,8 @@ typedef struct  {
         u_int delay;    //Transaction execution delay
         char *hfrom;    //Email HEADER originator
         char *hsubject; //Email HEADER subject
-        char *reverse;  //remote reverse-address
+        char *remoteip; //remote server pure IP
+        char *reverse;  //remote server reverse-address
         char *rcptto;   //Email Recipient
         char *sessid;   //session id
         char *sfrom;    //Email SMTP Originator
index a0a49fc7067e1bf3e0345f24406722a308b53574..95afe3e54214a08bfcceb56bdc0eb2a3acbca947 100644 (file)
@@ -52,6 +52,7 @@ typedef struct  {
 typedef struct  {
         char *sessid;   //session id
         char code;      //Email status code
+        char *remoteip; //The remoter server IP number
         char *reverse;  //The remoter server reverse address
         char *sfrom;    //the "MAIL FROM:" within the SMTP exchange
         char *hfrom;    //the "From:" within the email header
index d02bc754620301991e8c81c26fbeb39e9d06d7c9..81cbecb88e5a054fe552c88aabbb13d51ce2c7b8 100644 (file)
@@ -95,7 +95,10 @@ CREATE TABLE actions (
                        DFLT NOW(),
        code            SHORTTEXT,      //action status (one char)
        sessid          TEXT,           //Session id
-       reverse         TEXT,           //IP reverse address name
+       remoteip        TEXT            //Remote serveur IP number
+                       DFLT NULL,
+       reverse         TEXT            //remote server reverse address name
+                       DFLT 'Unknown IP',
        smtpfrom        TEXT,           //SMTP Connection "MAIL FROM:"
        rcptto          TEXT,           //SMTP Connection "RCPT TO:"
        emailfrom       TEXT,           //email contents "From:"
index 02152cf40c8dd97a8459ef6a266673723bb35663..1abc672e60ca6a27f3f317764682ac6bcb30c59a 100644 (file)
@@ -160,6 +160,45 @@ while ($proceed==true) {
 rou_alert(0,"$OPEP, now logname=<$logname>");
 }
 
+//==============================================================
+//
+//      Function to retreive remote SMTP serveur list
+//
+//==============================================================
+function sql_getremotelist($dbsql,$remoteip,$limit,$skip)
+
+{
+$OPEP="gessql.php:sql_getremotelist";
+
+$strlim="";
+$strskip="";
+$select="";
+if ($remoteip!=NULL) 
+  $select="where remoteip like '%$remoteip%'";
+$strsel="Select * from remotes $select order by remoteip asc";
+if ($limit!=NULL) 
+  $strlim="limit $limit";
+if ($skip!=NULL) 
+  $strskip="offset $skip";
+$stmt=$dbsql->Select("$strsel $strlim $strskip");
+return $stmt->fetchAll();
+}
+//==============================================================
+//
+//      Function to return the number of record within remotes
+//      table according a select.
+//
+//==============================================================
+function sql_getnumremotes($dbsql,$remoteip)
+
+{
+$OPEP="gessql.php:sql_getnumremotes";
+
+$select=NULL;
+if ($remoteip!=NULL) 
+  $select="where remoteip like '%$remoteip%'";
+return sql_getnumrec($dbsql,$select,"remotes");
+}
 //==============================================================
 //
 //      Function to retreive user email list
index d466cf97d275b2294e3f9a226fb80345c31639e0..dceb0b40bab279612b40107de3006c231ea33f61 100644 (file)
@@ -2,7 +2,7 @@
 // vim: smarttab tabstop=8 shiftwidth=2 expandtab
 //==============================================================
 //
-//     Main screen management
+//     remote server management screen
 //
 //==============================================================
 include_once "subrou.php";
@@ -10,7 +10,7 @@ include_once "unienv.php";
 include_once "gesdis.php";
 include_once "gessql.php";
 
-function tblheader(string $username,int $numrec,int $offset,int $limit)
+function tblheader(string $remoteip,int $numrec,int $offset,int $limit)
 
 {
 global $userlang;
@@ -21,8 +21,8 @@ $email=gettranslate($userlang,"Remote SMTP server");
 $STR  = <<<EOT
 <TR>
 <TD align=left>
-<FORM action="lvlusr.php" method="post">
-<input type="hidden" name="username" value="$username"/>
+<FORM action="lvlrmt.php" method="post">
+<input type="hidden" name="remoteip" value="$remoteip"/>
 <input type="hidden" name="offset" value="$offset"/>
 <input type="hidden" name="limit" value="$limit"/>
 <button name="scanner" value="gofirst">
@@ -49,17 +49,17 @@ $STR  = <<<EOT
 </FORM>
 </TD>
 <TD align=left>
-<FORM action="lvlusr.php" method="post">
+<FORM action="lvlrmt.php" method="post">
 <FONT SIZE=+1>
 $email:
-<input type="text" value="$username" name="username" size=20 style="font-size: 100%;">
+<input type="text" value="$remoteip" name="remoteip" size=20 style="font-size: 100%;">
 <input type="submit" style="display:none"/>
 </FONT>
 </FORM>
 </TD>
 <TD align=right>
 <FORM method="post">
-<input type="hidden" name="username" value="$username"/>
+<input type="hidden" name="remoteip" value="$remoteip"/>
 <input type="hidden" name="offset" value="$offset"/>
 <input type="hidden" name="limit" value="$limit"/>
 <select name="limit" style="font-size: 130%;" onchange='if (this.value!=0) {this.form.submit();}'>
@@ -81,22 +81,22 @@ return $STR;
 function body($logname)
 
 {
-$OPEP="lvlusr.php:body";
+$OPEP="lvlrmt.php:body";
 
 global $isadmin;
 global $logname;
 
 $limit=20;
 $offset=0;
-$username="";
+$remoteip="";
 $dbsql=sql_connect();
-if (isset($_POST['username']))
-  $username=trim(($_POST['username']));
+if (isset($_POST['remoteip']))
+  $remoteip=trim(($_POST['remoteip']));
 if (isset($_POST['limit']))
   $limit=intval($_POST['limit']);
 if (isset($_POST['offset']))
   $offset=intval($_POST['offset']);
-$numrec=sql_getnumemail($dbsql,$username);
+$numrec=sql_getnumremotes($dbsql,$remoteip);
 if (isset($_POST['scanner'])) {
   $scanner=$_POST['scanner'];
   switch ($scanner) {
@@ -111,8 +111,6 @@ if (isset($_POST['scanner'])) {
       break;
     case "goprevious"   :
       $offset-=$limit;
-      if ($offset<0)
-        $offset=0;
       break;
     case "gofirst"       :
       $offset=0;
@@ -120,28 +118,29 @@ if (isset($_POST['scanner'])) {
     default             :
       break;
     }
+  if ($offset<0)
+    $offset=0;
+  rou_alert(0,"$OPEP JMPDBG offset=<$offset>");
   }
-$emails=sql_getemaillist($dbsql,$username,$limit,$offset);
+$remotes=sql_getremotelist($dbsql,$remoteip,$limit,$offset);
 $line="";
 $count=$offset;
-foreach($emails as $email) {
+foreach($remotes as $remote) {
   $count++;
   $bgcolor="white";
   if ($count & 1 ) {
     $bgcolor="green";
     }
-  $name=$email['email'];
-  $last=$email['lastemail'];
-  $max=$email['mxspace'];
-  $lock=$email['locked'];
+  $ip=$remote['remoteip'];
+  $last=$remote['lastupdate'];
+  $credit=$remote['credit'];
   $line=$line."<TR>\r\n";
   $line=$line."<TD><FONT SIZE=-1>$count&nbsp</FONT>\r\n";
   $line=$line."<INPUT TYPE=IMAGE SRC=\"/reg-icons/folder.gif\" alt=\"ouvrir le dossier\" title=\"ouvrir le dossier\">\r\n";
-  $line=$line."&nbsp;$name\r\n";
+  $line=$line."&nbsp;$ip\r\n";
   $line=$line."</TD>\r\n";
   $line=$line."<TD align=center>$last</TD>\r\n";
-  $line=$line."<TD align=center>$max</TD>\r\n";
-  $line=$line."<TD align=center>$lock</TD>\r\n";
+  $line=$line."<TD align=center>$credit</TD>\r\n";
   $line=$line."</TR>";
   }
 sql_close($dbsql);
@@ -149,8 +148,8 @@ sql_close($dbsql);
 $start=starthtml("directives");
 $stop=endhtml();
 $top=topper($isadmin,$logname,"lvlrmt");
-$footer=footer("lvlusr");
-$tblheader=tblheader($username,$numrec,$offset,$limit);
+$footer=footer("lvlrmt");
+$tblheader=tblheader($remoteip,$numrec,$offset,$limit);
 
 $STR  = <<<EOT
 $start
@@ -174,10 +173,9 @@ $top
 $tblheader
 <table class="table-userlist" WIDTH="100%" BORDER="1" CellSpacing="0">
 <TR>
-<TH align=center>Email</TH>
+<TH align=center>IP</TH>
 <TH align=center>lastemail</TH>
-<TH align=center>mxspace</TH>
-<TH align=center>locked</TH>
+<TH align=center>credit</TH>
 </TR>
 $line
 </Table>