]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Able to find user within database
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 25 Jun 2025 11:11:39 +0000 (07:11 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Wed, 25 Jun 2025 11:11:39 +0000 (07:11 -0400)
lib/devsql.c
lib/lvleml.c
sql/Makefile
sql/datatest.sql

index ddbbe4cc637db81e36ad42b13f4bc08de235abbf..c3aeb721457f2f22f5b777f9364f802371408cbc 100644 (file)
@@ -343,7 +343,7 @@ PUBLIC USRTYP *sql_getusr(SQLPTR *sqlptr,char *email)
 
 {
 #define OPEP    "devsql.c:sql_getuser,"
-#define SELUSR  "%s %s WHERE username=%s"
+#define SELUSR  "%s %s WHERE email='%s'"
 
 USRTYP *usr;
 SQLTYP *sql;
@@ -371,27 +371,37 @@ while (proceed==true) {
       break;
     case 2      :       //check email structure
       for (int i=0,l=strlen(email);i<l;i++) {
-        char car;
+        register char car;
       
         car=email[i];
-        if (isalnum((int)car)!=0)
-          continue;
-        if (car=='@')
-          continue;
+        switch (car) {
+          case '@'      :
+          case '.'      :
+            continue;
+            break;
+          default       :
+            if (isalnum((int)car)!=0)
+              continue;
+            break;
+          }
         (void) rou_alert(0,"%s Email <%s> not accepted, '%c' not an email char",
                             OPEP,email,car);
         phase=999; 
+        break;
         }
       break;
     case 3      :       //getting user information
-      if ((rs=gettupple(sql,SELUSR,SELFROM,EMAILS,email))!=(SQLRES *)0) {
+      if ((rs=gettupple(sql,SELUSR,SELFROM,EMAILS,email))==(SQLRES *)0) {
         (void) rou_alert(0,"%s Unable to get data for user <%s> (Database?)",
                             OPEP,email);
         phase=999;      //Trouble trouble
         } 
       break;
     case 4      :       //getting user information
-      if (nbrtupple(sql,rs)>0) {
+      int nbr;
+
+      if ((nbr=nbrtupple(sql,rs))>0) {
+        (void) rou_alert(0,"%s jmpdbg NBR='%d'",OPEP,nbr);
         }
       rs=dropresult(rs);
       break;
index 80a1e348b079743ddd356643b2b8b18190f61c0b..7de19f3fe4743dee16333690a1363e324bbdb247 100644 (file)
@@ -264,25 +264,31 @@ return status;
 /*     checking if local recipient is acceptable.      */
 /*                                                      */
 /********************************************************/
-static _Bool is_user_good(CONTYP *contact,RCPTYP *user)
+static _Bool is_user_good(CONTYP *contact,char *rcptto)
 
 {
 _Bool isok;
+USRTYP *usr;
 int phase;
 _Bool proceed;
 
-isok=true;
+isok=false;
+usr=(USRTYP *)0;
 phase=0;
 proceed=true;
 while (proceed==true) {
   switch (phase) {
     case 0      :       //is user a local user
-      if (user->code!='L') 
-        phase=999;      //User is Not local
+      if ((usr=sql_getusr(contact->sqlptr,rcptto))==(USRTYP *)0) {
+        (void) transmit(contact,true,"%d 5.6.5 <%s> unknown user",UKNUSER,rcptto);
+        phase=999;      //No user found in database
+        }
       break;
-    case 1      :       //is user existing within database
+    case 1      :       //user is existing
+      isok=true;       
       break;
     default     :       //SAFE Guard
+      usr=sql_freeusr(usr);
       proceed=false;
       break;
     }
@@ -815,8 +821,8 @@ while (proceed==true) {
         phase=999;      //no need to go further
         }
       break;
-    case 5      :       //if the user is acceptable
-      if (is_user_good(contact,neu)==false) {
+    case 5      :       //if the local user acceptable
+      if ((neu->code=='L')&&(is_user_good(contact,rcptto)==false)) {
         neu=eml_freerecipient(neu);
         phase=999;
         }
index 39bcfdf588ef5b9a05643d94533f79185e1b6872..3243dd28d01e7b1d92cea785b97525bbf93e422e 100644 (file)
@@ -55,7 +55,6 @@ ndbpostg:
 #procedure to dele or craate a postgresql test database
 
 newtest        :  dbpostg dbmysql
-          @ echo NEWTEST?
 
 deltest        :  ndbpostg ndbmysql
 
index 7e22d5c926be24475d2053b27b4cb1214c8bdd3e..be869a576369124c3b3abc555e4e2472b6267521 100644 (file)
@@ -13,5 +13,5 @@
 #endif
 
 //adding a list of local email
-INSERT INTO emails (email) values ('postmaster@localdomain');
-INSERT INTO emails (email) values ('webmaster@localdomain');
+INSERT INTO emails (email) values ('postmaster@example.com');
+INSERT INTO emails (email) values ('webmaster@example.com');