#include "__SMTP_AUTH.h" #include "Base64.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; // setTimer(10.0f); session.authState = USER_QUERY; grabInput(session); } else { session.out << "504 AUTH method not supported." << CRLF; } return 1; case USER_QUERY: session.userName = request[0].str(); // setTimer(0.0f); session.out << "334 UGFzc3dvcmQ6" << CRLF; // setTimer(10.0f); session.authState = USER_SECRET_QUERY; return 1; case USER_SECRET_QUERY: session.password = request[0].str(); // setTimer(0.0f); coreutils::Base64 base64; if(authLogin(session.userName, session.password)) { 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) { // std::string secretPath = server.mailFileSystem.getMailBoxPath(userName) + "/.password"; // coreutils::File secret(secretPath); // secret.read(); // return secret.asString() == password; return true; } }