iff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp
index fc86954..cc55d22 100644
--- a/lib/Plugins/Mailx.cpp
+++ b/lib/Plugins/Mailx.cpp
@@ -62,10 +62,75 @@ static char** append_str_to_vector(char **vec, unsigned &size,
const char *str)
return vec;
}
+static map_plugin_settings_t parse_settings(const map_plugin_settings_t& pSettings)
+{
+ map_plugin_settings_t plugin_settings;
+
+ map_plugin_settings_t::const_iterator end = pSettings.end();
+ map_plugin_settings_t::const_iterator it;
+
+ /* if any of the option is not set we use the defaults for everything */
+ it = pSettings.find("Subject");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["Subject"] = it->second;
+
+ it = pSettings.find("EmailFrom");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["EmailFrom"] = it->second;
+
+ it = pSettings.find("EmailTo");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["EmailTo"] = it->second;
+
+ it = pSettings.find("SendBinaryData");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["SendBinaryData"] = it->second;
+
+ VERB1 log("User settings ok, using them instead of defaults");
+ return plugin_settings;
+}
+
std::string CMailx::Report(const map_crash_data_t& pCrashData,
const map_plugin_settings_t& pSettings,
const char *pArgs)
{
+ std::string subject;
+ std::string email_from;
+ std::string email_to;
+ bool send_binary_data;
+
+ map_plugin_settings_t settings = parse_settings(pSettings);
+ if (!settings.empty())
+ {
+ subject = settings["Subject"];
+ email_from = settings["EmailFrom"];
+ email_to = settings["EmailTo"];
+ send_binary_data = string_to_bool(settings["SendBinaryData"].c_str());
+ }
+ else
+ {
+ subject = m_sSubject;
+ email_from = m_sEmailFrom;
+ email_to = m_sEmailTo;
+ send_binary_data = m_bSendBinaryData;
+ }
+
char **args = NULL;
unsigned arg_size = 0;
args = append_str_to_vector(args, arg_size, MAILX_COMMAND);
@@ -106,7 +171,7 @@ std::string CMailx::Report(const map_crash_data_t& pCrashData,
{
binaryFiles += " -a ";
binaryFiles += it->second[CD_CONTENT];
- if (m_bSendBinaryData)
+ if (send_binary_data)
{
args = append_str_to_vector(args, arg_size, "-a");
args = append_str_to_vector(args, arg_size,
it->second[CD_CONTENT].c_str());
@@ -126,10 +191,10 @@ std::string CMailx::Report(const map_crash_data_t& pCrashData,
emailBody += '\n';
args = append_str_to_vector(args, arg_size, "-s");
- args = append_str_to_vector(args, arg_size, (pArgs[0] != '\0' ? pArgs :
m_sSubject.c_str()));
+ args = append_str_to_vector(args, arg_size, (pArgs[0] != '\0' ? pArgs :
subject.c_str()));
args = append_str_to_vector(args, arg_size, "-r");
- args = append_str_to_vector(args, arg_size, m_sEmailFrom.c_str());
- args = append_str_to_vector(args, arg_size, m_sEmailTo.c_str());
+ args = append_str_to_vector(args, arg_size, email_from.c_str());
+ args = append_str_to_vector(args, arg_size, email_to.c_str());
update_client(_("Sending an email..."));
const char *uid_str = get_crash_data_item_content(pCrashData, CD_UID).c_str();
@@ -142,7 +207,7 @@ std::string CMailx::Report(const map_crash_data_t& pCrashData,
args -= arg_size;
free(args);
- return "Email was sent to: " + m_sEmailTo;
+ return "Email was sent to: " + email_to;
}
void CMailx::SetSettings(const map_plugin_settings_t& pSettings)
--
Nikola
Show replies by date