Continued work.

This commit is contained in:
Brad Arant committed 2022-07-26 16:05:55 -07:00
1 parent e1f33291f7
commit 8e7834a320
17 files changed
+152 -108

No files matched your search

+13 -15
View File
@@ -4,8 +4,6 @@
#include <chrono>
#include <iomanip>
#define CRLF "\r\n"
namespace mail {
int __SMTP_DATA::processCommand(coreutils::ZString &request, SMTPSession &session, SMTPServer &server) {
@@ -21,7 +19,7 @@ namespace mail {
session.mailData.str("");
session.mode = RECEIVE_DATA;
grabInput(session);
// setTimer(120.0f);
// session.setTimer(120.0f);
break;
case MAIL:
@@ -36,8 +34,8 @@ namespace mail {
break;
case RECEIVE_DATA:
if(request.str() != ".")
session.mailData << request.str() << CRLF;
if(request != ".")
session.mailData << request << CRLF;
else {
session.mode = WAIT_FOR_DATA;
session.state = READY;
@@ -45,7 +43,7 @@ namespace mail {
// if(filterMessage(session.mailData)) {
if(session.recipientList.size() > 0) {
if(session.mailData.str().size() > 0) {
std::string ID = queueMail(server, session.sender, session.recipientList, session.mailData);
coreutils::MString ID = queueMail(server, session.sender, session.recipientList, session.mailData);
if(ID != "") {
coreutils::Log(coreutils::LOG_INFO) << "Queued message " << ID << ".";
session.out << "250 OK Queued message " << ID << CRLF;
@@ -64,22 +62,22 @@ namespace mail {
return 1;
}
std::string __SMTP_DATA::generateMailFileName() {
std::stringstream temp;
coreutils::MString __SMTP_DATA::generateMailFileName() {
struct timespec timex;
clock_gettime(CLOCK_REALTIME, &timex);
temp << timex.tv_sec << "." << std::setfill('0') << std::setw(9) << timex.tv_nsec;
return temp.str();
std::stringstream temp;
temp << timex.tv_sec << "." << std::setfill('0') << std::setw(9) << timex.tv_nsec;
return coreutils::MString(temp.str());
}
std::string __SMTP_DATA::queueMail(SMTPServer &server, std::string sender, std::vector<std::string> recipientList, std::stringstream &mailData) {
std::string fileName = server.mailFileSystem.getMailPath() + "/.queue/" + generateMailFileName();
coreutils::MString __SMTP_DATA::queueMail(SMTPServer &server, coreutils::MString &sender, std::vector<coreutils::MString> &recipientList, std::stringstream &mailData) {
coreutils::MString fileName(server.mailFileSystem.getMailPath() + "/.queue/" + generateMailFileName().str());
coreutils::File mailFile(fileName, O_CREAT | O_WRONLY, 0660);
mailFile.write(mailData.str());
for(std::string recipient: recipientList) {
std::string newName = fileName + recipient;
link(fileName.c_str(), newName.c_str());
for(coreutils::MString recipient: recipientList) {
coreutils::MString newName(fileName.write(recipient));
link(fileName.c_str(), newName.c_str());
}
unlink(fileName.c_str());