diff --git a/login_server/src/cpp/HTTPInterface/ElopageWebhook.cpp b/login_server/src/cpp/HTTPInterface/ElopageWebhook.cpp index eb551b821..808695e10 100644 --- a/login_server/src/cpp/HTTPInterface/ElopageWebhook.cpp +++ b/login_server/src/cpp/HTTPInterface/ElopageWebhook.cpp @@ -15,8 +15,6 @@ using namespace Poco::Data::Keywords; #include "../ServerConfig.h" -#include "../tasks/PrepareEmailTask.h" -#include "../tasks/SendEmailTask.h" #include "../controller/EmailVerificationCode.h" #include "../model/table/ElopageBuy.h" diff --git a/login_server/src/cpp/model/Session.cpp b/login_server/src/cpp/model/Session.cpp index 86fad389c..dcad0d40a 100644 --- a/login_server/src/cpp/model/Session.cpp +++ b/login_server/src/cpp/model/Session.cpp @@ -12,8 +12,6 @@ #include "../SingletonManager/EmailManager.h" #include "../SingletonManager/SingletonTaskObserver.h" -#include "../tasks/PrepareEmailTask.h" -#include "../tasks/SendEmailTask.h" #include "../tasks/SigningTransaction.h" #include "../tasks/AuthenticatedEncryptionCreateKeyTask.h" #include "../tasks/VerificationEmailResendTask.h" @@ -348,12 +346,14 @@ bool Session::createUser(const std::string& first_name, const std::string& last_ */ //UniLib::controller::TaskPtr sendEmail(new SendEmailTask(message, ServerConfig::g_CPUScheduler, 1)); //Email(AutoPtr emailVerification, AutoPtr user, EmailType type); - UniLib::controller::TaskPtr sendEmail(new SendEmailTask(new model::Email(mEmailVerificationCodeObject, mNewUser, model::EMAIL_USER_VERIFICATION_CODE), ServerConfig::g_CPUScheduler, 1)); + auto em = EmailManager::getInstance(); + em->addEmail(new model::Email(mEmailVerificationCodeObject, mNewUser, model::EMAIL_USER_VERIFICATION_CODE)); + /*UniLib::controller::TaskPtr sendEmail(new SendEmailTask(new model::Email(mEmailVerificationCodeObject, mNewUser, model::EMAIL_USER_VERIFICATION_CODE), ServerConfig::g_CPUScheduler, 1)); //sendEmail->setParentTaskPtrInArray(prepareEmail, 0); sendEmail->setParentTaskPtrInArray(writeEmailVerification, 0); sendEmail->setFinishCommand(new SessionStateUpdateCommand(SESSION_STATE_EMAIL_VERIFICATION_SEND, this)); sendEmail->scheduleTask(sendEmail); - + */ // write user into db // generate and write email verification into db // send email diff --git a/login_server/src/cpp/tasks/PrepareEmailTask.cpp b/login_server/src/cpp/tasks/PrepareEmailTask.cpp deleted file mode 100644 index cc20d9472..000000000 --- a/login_server/src/cpp/tasks/PrepareEmailTask.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "PrepareEmailTask.h" -#include "../lib/Profiler.h" -#include "../ServerConfig.h" -#include "../SingletonManager/ErrorManager.h" - -#include "Poco/Net/SSLException.h" - -PrepareEmailTask::PrepareEmailTask(UniLib::controller::CPUSheduler* cpuScheduler) - : UniLib::controller::CPUTask(cpuScheduler), mMailClientSession(nullptr) -{ - -} - -PrepareEmailTask::~PrepareEmailTask() -{ - if (mMailClientSession) { - delete mMailClientSession; - } -} - -int PrepareEmailTask::run() -{ - if (ServerConfig::g_disableEmail) return 0; - Profiler timeUsed; - mMailClientSession = new Poco::Net::SecureSMTPClientSession(ServerConfig::g_EmailAccount.url, ServerConfig::g_EmailAccount.port); - mMailClientSession->login(); - try { - mMailClientSession->startTLS(ServerConfig::g_SSL_CLient_Context); - mMailClientSession->login(Poco::Net::SMTPClientSession::AUTH_LOGIN, ServerConfig::g_EmailAccount.username, ServerConfig::g_EmailAccount.password); - } catch(Poco::Net::SSLException& ex) { - printf("[PrepareEmailTask] ssl certificate error: %s\nPlease make sure you have cacert.pem (CA/root certificates) next to binary from https://curl.haxx.se/docs/caextract.html\n", ex.displayText().data()); - return -1; - } - - //printf("[PrepareEmailTask] time: %s\n", timeUsed.string().data()); - /* - session.login(); - session.startTLS(pContext); - if (!username.empty()) - { - session.login(SMTPClientSession::AUTH_LOGIN, username, password); - } - session.sendMessage(message); - session.close(); - */ - - return 0; -} - -int PrepareEmailTask::send(Poco::Net::MailMessage* message) -{ - if (ServerConfig::g_disableEmail) return 0; - - auto er = ErrorManager::getInstance(); - try { - mMailClientSession->sendMessage(*message); - mMailClientSession->close(); - } - catch (Poco::Exception& exc) { - er->addError(new ParamError("PrepareEmailTask::send", "error sending email", exc.displayText().data())); - printf("[PrepareEmailTask::%s] error sending email: %s\n", __FUNCTION__, exc.displayText().data()); - return -1; - } - return 0; -} \ No newline at end of file diff --git a/login_server/src/cpp/tasks/PrepareEmailTask.h b/login_server/src/cpp/tasks/PrepareEmailTask.h deleted file mode 100644 index 4036eefc2..000000000 --- a/login_server/src/cpp/tasks/PrepareEmailTask.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef GRADIDO_LOGIN_SERVER_TASKS_PREPAIRE_EMAIL_TASK_INCLUDE -#define GRADIDO_LOGIN_SERVER_TASKS_PREPAIRE_EMAIL_TASK_INCLUDE - -#include "CPUTask.h" -#include "Poco/Net/SecureSMTPClientSession.h" - - - -class PrepareEmailTask : public UniLib::controller::CPUTask -{ -public: - PrepareEmailTask(UniLib::controller::CPUSheduler* cpuScheduler); - virtual ~PrepareEmailTask(); - - virtual int run(); - int send(Poco::Net::MailMessage* message); - virtual const char* getResourceType() const { return "PrepareEmailTask"; }; -protected: - -private: - Poco::Net::SecureSMTPClientSession* mMailClientSession; -}; - - -#endif //GRADIDO_LOGIN_SERVER_TASKS_PREPAIRE_EMAIL_TASK_INCLUDE \ No newline at end of file diff --git a/login_server/src/cpp/tasks/SendEmailTask.cpp b/login_server/src/cpp/tasks/SendEmailTask.cpp deleted file mode 100644 index e3a5e0069..000000000 --- a/login_server/src/cpp/tasks/SendEmailTask.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "SendEmailTask.h" -#include "PrepareEmailTask.h" -#include "../lib/Profiler.h" -#include "../SingletonManager/ErrorManager.h" -#include "../SingletonManager/EmailManager.h" -#include "../ServerConfig.h" - -#include "Poco/Net/MediaType.h" - -SendEmailTask::SendEmailTask(Poco::Net::MailMessage* mailMessage, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount/* = 0*/) - : UniLib::controller::CPUTask(cpuScheduler, additionalTaskDependenceCount+1), mMailMessage(mailMessage), mEmail(nullptr) -{ -} - -SendEmailTask::SendEmailTask(model::Email*email, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount/* = 0*/) - : UniLib::controller::CPUTask(cpuScheduler, additionalTaskDependenceCount), mMailMessage(nullptr), mEmail(email) -{ - -} - -SendEmailTask::~SendEmailTask() -{ - if (mMailMessage) { - delete mMailMessage; - mMailMessage = nullptr; - } - if (mEmail) { - delete mEmail; - mEmail = nullptr; - } - -} - -int SendEmailTask::run() -{ - if(ServerConfig::g_disableEmail) return 0; - - Profiler timeUsed; - auto er = ErrorManager::getInstance(); - auto parent = getParent(0); - - if (mMailMessage) { - - if (strcmp(parent->getResourceType(), "PrepareEmailTask") != 0) { - er->addError(new Error("SendEmailTask", "first parent isn't PrepareEmailTask")); - er->sendErrorsAsEmail(); - return -1; - } - PrepareEmailTask* prepare = (PrepareEmailTask*)&(*parent); - mMailMessage->setSender(ServerConfig::g_EmailAccount.sender); - - if (prepare->send(mMailMessage)) { - er->sendErrorsAsEmail(); - return -1; - } - } - else if (mEmail) { - auto em = EmailManager::getInstance(); - em->addEmail(mEmail); - mEmail = nullptr; - } - //printf("[SendEmailTask] time: %s\n", timeUsed.string().data()); - return 0; -} \ No newline at end of file diff --git a/login_server/src/cpp/tasks/SendEmailTask.h b/login_server/src/cpp/tasks/SendEmailTask.h deleted file mode 100644 index 86e4b76dc..000000000 --- a/login_server/src/cpp/tasks/SendEmailTask.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef GRADIDO_LOGIN_SERVER_TASKS_SEND_EMAIL_TASK_INCLUDE -#define GRADIDO_LOGIN_SERVER_TASKS_SEND_EMAIL_TASK_INCLUDE - -#include "CPUTask.h" -#include "Poco/Net/MailMessage.h" - -#include "../model/email/Email.h" - -/* - * @author: Dario Rekowski - * - * @date: 29.09.19 - * @desc: Task for send an email, the first parent dependence pointer must be a prepare email task -*/ - - -class SendEmailTask : public UniLib::controller::CPUTask -{ -public: - - SendEmailTask(Poco::Net::MailMessage* mailMessage, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount = 0); - SendEmailTask(model::Email* email, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount = 0); - virtual ~SendEmailTask(); - - virtual int run(); - - virtual const char* getResourceType() const { return "SendEmailTask"; }; -protected: - -private: - Poco::Net::MailMessage* mMailMessage; - model::Email* mEmail; -}; - - -#endif //GRADIDO_LOGIN_SERVER_TASKS_SEND_EMAIL_TASK_INCLUDE \ No newline at end of file