R:235 5.7.5 Authentication successful
S:AUTH PLAIN AHVzZXIxQG1haWxwb3N0Zy5leGFtcGxlLmNvbQBtYWlsbGV1cg==
R:504 5.7.4 authentication failed
-S:AUTH PLAIN QmlncmVfYmlncmUgbm91c2Vy
+#\0bigre_bigre\0nouser
+S:AUTH PLAIN XDBiaWdyZV9iaWdyZVwwbm91c2Vy
R:504 5.7.4 authentication failed
-S:AUTH PLAIN cG9zdG1hc3RlckBleGFtcGxlLmNvbSBub3Bhc3N3ZA==
+#\0postmaster@example.com\0nopasswd
+S:AUTH PLAIN XDBwb3N0bWFzdGVyQGV4YW1wbGUuY29tXDBub3Bhc3N3ZA==
R:504 5.7.4 authentication failed
S:QUIT
R:221 2.0.0 Bye, closing connection...
decoded=(char *)0;
(void) memset(local,'\000',sizeof(local));
(void) strncpy(local,received,sizeof(local)-1);
-(void) rou_alert(0,"%s received=<%s",OPEP,received);
if (strlen(local)==0) {
char *line;
int got;
}
if (strlen(local)>0)
decoded=cnv_getb64(local);
-(void) rou_alert(0,"%s decoded=<%s",OPEP,decoded);
return decoded;
#undef OPEP
}
break;
case 4 : //we have a decoded sequence, check password
- if (checklogin(contact->sqlptr,decoded)==false) {
+ isok=checklogin(contact->sqlptr,decoded);
+ break;
+ case 5 : //we have login status
+ if (strlen(decoded)>0) { //always
char *data[3];
const char *fmt;
(void) memset(data,'\000',sizeof(data));
(void) split_auth_plain(decoded,data);
- fmt=" Auth Rejected status='%d' for user=<%s> pass=<%s>";
- (void) log_fprintlog(contact->logptr,true,fmt,BADAUTH,data[1],data[2]);
- (void) sleep(2);
- (void) transmit(contact,true,"%d 5.7.4 authentication failed",BADAUTH);
+ fmt=" Auth accepted for user=<%s>";
+ if (isok==false) {
+ fmt=" Auth Rejected status='%d' for user=<%s> pass=<%s>";
+ (void) log_fprintlog(contact->logptr,true,fmt,BADAUTH,data[1],data[2]);
+ (void) sleep(2);
+ (void) transmit(contact,true,"%d 5.7.4 authentication failed",BADAUTH);
+ }
+ else {
+ (void) log_fprintlog(contact->logptr,true,fmt,data[1]);
+ (void) transmit(contact,true,"%d 5.7.5 Authentication successful",IDOK);
+ }
for (int i=0;i<3;i++)
data[i]=rou_freestr(data[i]);
- phase=999;
}
decoded=rou_freestr(decoded);
break;
- case 5 : //everything is fine
- (void) transmit(contact,true,"%d 5.7.5 Authentication successful",IDOK);
- isok=true;
- break;
default : //SAFE Guard
proceed=false;
break;
ptr++;
}
seg=strdup(data);
- (void) rou_alert(0,"JMPDBG seg=<%s>",seg);
confargv=(char **)rou_addlist((void **)confargv,(void *)seg);
data=ptr;
}
//(void) rou_alert(0,"JMPDBG %s phase='%d'",OPEP,phase);
switch (phase) {
case 0 : //preparing iteration
- //JMPDBG
- for (int i=0;i<argc;i++)
- (void) rou_alert(0,"%s JMPDBG argv[%d]=<%s>",OPEP,i,argv[i]);
- //JMPDBG
if ((nbrbind=prepbinding(&bindings,argc,argv))==0) {
(void) rou_alert(0,"%s, No listening IP found (config?)",OPEP);
phase=999;