add email sending script
refs: #4053
Change-Id: I1ffe550b20e7fe394fb7f25d71eafa61d4a8fc6f
diff --git a/src/challenge-module/challenge-email.cpp b/src/challenge-module/challenge-email.cpp
index fc25d8c..c63961c 100644
--- a/src/challenge-module/challenge-email.cpp
+++ b/src/challenge-module/challenge-email.cpp
@@ -65,7 +65,7 @@
}
std::string emailCode = generateSecretCode();
- sendEmail(emailAddress, emailCode);
+ sendEmail(emailAddress, emailCode, request.getCaName().toUri());
request.setStatus(NEED_CODE);
request.setChallengeType(CHALLENGE_TYPE);
@@ -185,30 +185,17 @@
}
void
-ChallengeEmail::sendEmail(const std::string& emailAddress, const std::string& secret) const
+ChallengeEmail::sendEmail(const std::string& emailAddress, const std::string& secret,
+ const std::string& caName) const
{
- pid_t pid = fork();
-
- if (pid < 0) {
- _LOG_TRACE("Cannot fork before trying to call email sending script");
+ std::string command = m_sendEmailScript;
+ command += " \"" + emailAddress + "\" \"" + secret + "\" \"" + caName + "\"";
+ int result = system(command.c_str());
+ if (result == -1) {
+ _LOG_TRACE("EmailSending Script " + m_sendEmailScript + " fails.");
}
- else if (pid == 0) {
- int ret;
- std::vector<char> emailParam(emailAddress.begin(), emailAddress.end());
- emailParam.push_back('\0');
-
- std::vector<char> secretParam(secret.begin(), secret.end());
- secretParam.push_back('\0');
-
- std::vector<char> defaultParam(m_sendEmailScript.begin(), m_sendEmailScript.end());
- defaultParam.push_back('\0');
-
- char* argv[] = {&defaultParam[0], &emailParam[0], &secretParam[0], nullptr};
- ret = execve(m_sendEmailScript.c_str(), argv, nullptr);
-
- BOOST_THROW_EXCEPTION(Error("Email sending script went wrong, error code: " + std::to_string(ret)));
- }
-
+ _LOG_TRACE("EmailSending Script " + m_sendEmailScript +
+ " was executed successfully with return value" + std::to_string(result) + ".");
return;
}