add logging every sended email and which email should be sended if email was enabled

This commit is contained in:
Dario 2020-07-20 15:38:07 +02:00
parent 5e83681bab
commit c74f27b458
5 changed files with 75 additions and 6 deletions

View File

@ -130,6 +130,8 @@ int Gradido_LoginServer::main(const std::vector<std::string>& args)
createConsoleFileAsyncLogger("errorLog", log_Path + "errorLog.txt");
Poco::Logger& errorLog = Poco::Logger::get("errorLog");
createConsoleFileAsyncLogger("emailLog", log_Path + "emailLog.txt");
// *************** load from config ********************************************
std::string cfg_Path = Poco::Path::config() + "grd_login/";

View File

@ -11,7 +11,7 @@
EmailManager::EmailManager()
: Thread("emails", false), mInitalized(false), mDisableEmail(false)
: Thread("emails", false), mEmailLog(Poco::Logger::get("emailLog")), mInitalized(false), mDisableEmail(false)
{
@ -55,6 +55,26 @@ bool EmailManager::init(const Poco::Util::LayeredConfiguration& cfg)
return true;
}
void EmailManager::addEmail(model::Email* email) {
if (mDisableEmail) {
std::string log_message = "Email should be sended to: ";
auto email_user = email->getUser();
if (email_user && email_user->getModel()) {
log_message += email_user->getModel()->getNameWithEmailHtml();
}
else {
log_message += "<missing>";
}
log_message += ", type: ";
log_message += model::Email::emailTypeString(email->getType());
mEmailLog.log(log_message);
delete email;
return;
}
mPendingEmails.push(email);
condSignal();
}
void EmailManager::exit()
{
model::Email* email = nullptr;
@ -113,8 +133,19 @@ int EmailManager::ThreadFunction()
mailClientSession.sendMessage(mailMessage);
// add for debugging
if (email->getUser()) {
//printf("send email to %s\n", user_model->getEmail().data());
auto user_model = email->getUser()->getModel();
printf("send email to %s\n", user_model->getEmail().data());
std::string log_message = "Email sended to: ";
auto email_user = email->getUser();
if (user_model) {
log_message += email_user->getModel()->getNameWithEmailHtml();
}
else {
log_message += "<missing>";
}
log_message += ", type: ";
log_message += model::Email::emailTypeString(email->getType());
mEmailLog.log(log_message);
}
}
else {

View File

@ -30,10 +30,7 @@ public:
inline const std::string& getAdminReceiver() { return mEmailAccount.admin_receiver; }
//! \brief call delete on email after sending it
inline void addEmail(model::Email* email) {
if (mDisableEmail) { delete email; return; }
mPendingEmails.push(email); condSignal();
}
void addEmail(model::Email* email);
protected:
EmailManager();
@ -49,6 +46,7 @@ protected:
std::string url;
int port;
};
Poco::Logger& mEmailLog;
EmailAccount mEmailAccount;
bool mInitalized;

View File

@ -348,4 +348,40 @@ Gradido Login-Server\n\
}
return (EmailType)type;
}
/*
EMAIL_DEFAULT,
EMAIL_ERROR,
EMAIL_USER_VERIFICATION_CODE,
EMAIL_USER_VERIFICATION_CODE_RESEND,
EMAIL_USER_VERIFICATION_CODE_RESEND_AFTER_LONG_TIME,
EMAIL_ADMIN_USER_VERIFICATION_CODE,
EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND,
EMAIL_USER_RESET_PASSWORD,
EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE,
EMAIL_NOTIFICATION_TRANSACTION_CREATION,
EMAIL_NOTIFICATION_TRANSACTION_TRANSFER,
EMAIL_USER_REGISTER_OLD_ELOPAGE,
EMAIL_MAX
*/
const char* Email::emailTypeString(EmailType type)
{
switch (type) {
case EMAIL_DEFAULT: return "default";
case EMAIL_ERROR: return "error";
case EMAIL_USER_VERIFICATION_CODE: return "email user verification code";
case EMAIL_USER_VERIFICATION_CODE_RESEND: return "email user verification code resend";
case EMAIL_USER_VERIFICATION_CODE_RESEND_AFTER_LONG_TIME: return "email user verification code resend after long time";
case EMAIL_ADMIN_USER_VERIFICATION_CODE: return "email admin user verification code";
case EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND: return "email admin user verification code resend";
case EMAIL_USER_RESET_PASSWORD: return "user reset Password";
case EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE: return "user reset password without memorized passphrase";
case EMAIL_NOTIFICATION_TRANSACTION_CREATION: return "email notification transaction creation";
case EMAIL_NOTIFICATION_TRANSACTION_TRANSFER: return "email notification transaction transfer";
case EMAIL_USER_REGISTER_OLD_ELOPAGE: return "user register automatic throw elopage";
case EMAIL_MAX: return "<last entry, invalid>";
}
return "<unknown>";
}
}

View File

@ -50,11 +50,13 @@ namespace model {
static EmailType convertTypeFromInt(int type);
inline EmailType getType() { return mType; }
static const char* emailTypeString(EmailType type);
inline controller::User* getUser() { if (!mUser.isNull()) return mUser.get(); return nullptr; }
virtual bool draft(Net::MailMessage* mailMessage, LanguageCatalog* langCatalog);
inline void addContent(Poco::Net::StringPartSource* str_content) { mAdditionalStringPartSrcs.push(str_content); }
protected:
std::string replaceUserNamesAndLink(const char* src, const std::string& first_name, const std::string& last_name, const std::string& link);
std::string replaceEmail(const char* src, const std::string& email);