Continued work.

This commit is contained in:
Brad Arant committed 2022-12-07 15:00:04 -08:00
1 parent 30cd31c171
commit c9cdc822a2
21 files changed
+1531 -148

No files matched your search

+33 -33
View File
@@ -3,55 +3,55 @@
#include "SMTPServer.h"
namespace mail {
int __SMTP_AUTH::processCommand(coreutils::ZString &request, SMTPSession &session, SMTPServer &server) {
switch(session.authState) {
case USER_UNKNOWN:
if(request[1].equals("LOGIN")) {
session.out << "334 VXNlcm5hbWU6" << CRLF;
if(request[1].equals("LOGIN")) {
session.out << "334 VXNlcm5hbWU6" << CRLF;
// setTimer(10.0f);
session.authState = USER_QUERY;
grabInput(session);
}
else {
session.out << "504 AUTH method not supported." << CRLF;
}
return 1;
session.authState = USER_QUERY;
grabInput(session);
}
else {
session.out << "504 AUTH method not supported." << CRLF;
}
return 1;
case USER_QUERY:
session.userName = request[0];
session.userName = request[0];
// setTimer(0.0f);
session.out << "334 UGFzc3dvcmQ6" << CRLF;
session.out << "334 UGFzc3dvcmQ6" << CRLF;
// setTimer(10.0f);
session.authState = USER_SECRET_QUERY;
return 1;
session.authState = USER_SECRET_QUERY;
return 1;
case USER_SECRET_QUERY:
session.password = request[0];
session.password = request[0];
// setTimer(0.0f);
coreutils::Base64 base64;
if(authLogin(session.userName, session.password, server)) {
session.out << "235 2.7.0 Authentication successful" << CRLF;
session.relay = true;
session.authState = USER_KNOWN;
clearGrab(session);
}
else {
session.out << "530 Login was unsuccessful." << CRLF;
}
return 1;
coreutils::Base64 base64;
if(authLogin(session.userName, session.password, server)) {
session.out << "235 2.7.0 Authentication successful" << CRLF;
session.relay = true;
session.authState = USER_KNOWN;
clearGrab(session);
}
else {
session.out << "530 Login was unsuccessful." << CRLF;
}
return 1;
}
return 0;
}
bool __SMTP_AUTH::authLogin(coreutils::ZString &userName, coreutils::ZString &password, SMTPServer &server) {
coreutils::MString secretPath;
secretPath << server.mailFileSystem.getMailBoxPath(userName) << "/.password";
secretPath << server.mailFileSystem.getMailBoxPath(userName) << "/.password";
coreutils::File secret(secretPath);
secret.read();
return password == secret.asString();
}
}