/* Match with the user provided. */
/* */
/********************************************************/
-static _Bool checklogin(SQLPTR *sqlptr,char *sequence)
+static _Bool checklogin(CONTYP *contact,char **rmtpass,char *sequence)
{
#define OPEP "lvleml.c:checklogin,"
USRTYP *usr;
usr=(USRTYP *)0;
- if (sql_mngusr(sqlptr,sql_select,data[1],&usr)==true) {
- char *crypted;
+ contact->authname=rou_freestr(contact->authname);
+ contact->authname=strdup(data[1]);
+ if (sql_mngusr(contact->sqlptr,sql_select,data[1],&usr)==true) {
+ char *givenpass;
- crypted=data[2];
- if (usr->passwd[0]=='$')
- crypted=crypt(data[2],usr->passwd);
- if ((crypted!=(char *)0)&&(strcmp(crypted,usr->passwd)==0))
- isok=true; //Passord match
+ givenpass=data[2];
+ if (givenpass!=(char *)0) {
+ *rmtpass=strdup(givenpass);
+ if (strncmp(usr->passwd,"$1",2)==0)
+ givenpass=crypt("$1",givenpass);
+ isok=(strcmp(givenpass,usr->passwd)==0);
+ }
usr=sql_freeusr(usr);
}
}
/* mode, return "decoded", NULL if not extracted */
/* */
/********************************************************/
-static _Bool get_auth_plain(CONTYP *contact,char *received,char **rmtpass)
+static void get_auth_plain(CONTYP *contact,char *received,char **rmtpass)
{
#define OPEP "lvleml.c:get_auth_plain,"
-_Bool goodpass;
char *decoded;
-goodpass=false;
*rmtpass=(char *)0;
decoded=(char *)0;
if ((received==(char *)0)||(strlen(received)==0)) {
else
decoded=cnv_getb64(received);
if (decoded!=(char *)0) {
- goodpass=checklogin(contact->sqlptr,decoded);
+ contact->authenticated=checklogin(contact,rmtpass,decoded);
decoded=rou_freestr(decoded);
}
-return goodpass;
#undef OPEP
}
line=rou_freestr(line);
}
if (strlen(local)>0)
- goodpass=checklogin(contact->sqlptr,local);
+ goodpass=checklogin(contact,rmtpass,local);
return goodpass;
}
/*
(void) transmit(contact,true,"%d 5.7.4 authentication failed",BADAUTH);
}
else {
- (void) log_fprintlog(contact->logptr,true,fmt,auth[1]);
+ (void) log_fprintlog(contact->logptr,true,fmt,auth);
(void) transmit(contact,true,"%d 5.7.5 Authentication successful",IDOK);
}
}
//adding a list of local email
INSERT INTO emails (email,password) \
- values ('postmaster@example.com','mailleur1');
+ values ('postmaster@example.com','postmaster');
INSERT INTO emails (email,password) \
- values ('webmaster@example.com','mailleur2');
+ values ('webmaster@example.com','webmaster');
INSERT INTO emails (email,password) \
- values ('utf8-áö_üñ@example.com','mailleur3');
+ values ('utf8-áö_üñ@example.com','utf8-áö_üñ');
//Set for Postgresql database
INSERT INTO emails (email,password) \
- values ('user1@posdb.example.com','$1$cBO23lDG$7l.Ooe7pF.gf8t6tD2mKp0');
+ values ('user1@posdb.example.com','user1');
INSERT INTO emails (email,password) \
- values ('user2@posdb.example.com','$1$cBO23lDG$7l.Ooe7pF.gf8t6tD2mKp0');
+ values ('user2@posdb.example.com','user2');
//Set for MySQL database
INSERT INTO emails (email,password) \
- values ('user1@mardb.example.com','$1$cBO23lDG$7l.Ooe7pF.gf8t6tD2mKp0');
+ values ('user1@mardb.example.com','user1');
INSERT INTO emails (email,password) \
- values ('user2@mardb.example.com','$1$cBO23lDG$7l.Ooe7pF.gf8t6tD2mKp0');
+ values ('user2@mardb.example.com','user2');