Compilable SMTP
This commit is contained in:
1 parent
6c844983d9
commit
e1f33291f7
70 files changed
+308
-362
No files matched your search
+40
-43
@@ -1,59 +1,56 @@
|
||||
#include "__SMTP_AUTH.h"
|
||||
#include "SMTPServer.h"
|
||||
#include "Base64.h"
|
||||
|
||||
namespace mail {
|
||||
|
||||
int __SMTP_AUTH::processCommand(coreutils::ZString &request, core::TCPSession &session) {
|
||||
|
||||
SMTPSession &s = dynamic_cast<SMTPSession &>(session);
|
||||
SMTPServer &server = session.server;
|
||||
|
||||
switch((SMTPSession &)session.authState) {
|
||||
|
||||
case USER_UNKNOWN:
|
||||
if(request[1].equals("LOGIN") {
|
||||
data << "334 VXNlcm5hbWU6" << CRLF;
|
||||
// setTimer(10.0f);
|
||||
s.authState = USER_QUERY;
|
||||
server.commands.grabInput(&session, *this);
|
||||
}
|
||||
else {
|
||||
s.out << "504 AUTH method not supported." << CRLF;
|
||||
}
|
||||
return 1;
|
||||
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:
|
||||
s.userName = request[0].str();
|
||||
// setTimer(0.0f);
|
||||
s.out << "334 UGFzc3dvcmQ6" << CRLF;
|
||||
// setTimer(10.0f);
|
||||
s.authState = USER_SECRET_QUERY;
|
||||
return 1;
|
||||
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:
|
||||
s.password = request[0].str();
|
||||
// setTimer(0.0f);
|
||||
coreutils::Base64 base64;
|
||||
if(authLogin(s.userName, s.password, server)) {
|
||||
s.out << "235 2.7.0 Authentication successful" << CRLF;
|
||||
s.relay = true;
|
||||
s.authState = USER_KNOWN;
|
||||
server.commands.clearGrab(&session);
|
||||
}
|
||||
else {
|
||||
s.out << "530 Login was unsuccessful." << CRLF;
|
||||
}
|
||||
return 1;
|
||||
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, SMTPServer &server) {
|
||||
std::string secretPath = server.mailFileSystem.getMailBoxPath(userName) + "/.password";
|
||||
coreutils::File secret(secretPath);
|
||||
secret.read();
|
||||
return secret.asString() == password;
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user