summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2010-01-21 19:48:37 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2010-01-21 19:48:37 +0100
commitcdd59b27a946c8521d314f9902f873ec41b47474 (patch)
treeaae5f274a12209219a82a1e6b8bf716f010eee99 /lib
parentabae70f78a3c40a3491f6561c0bd1decbf294504 (diff)
downloadabrt-cdd59b27a946c8521d314f9902f873ec41b47474.tar.gz
abrt-cdd59b27a946c8521d314f9902f873ec41b47474.tar.xz
abrt-cdd59b27a946c8521d314f9902f873ec41b47474.zip
TicketUploader: made Report() to honor user settings
Diffstat (limited to 'lib')
-rw-r--r--lib/Plugins/TicketUploader.cpp116
-rw-r--r--lib/Plugins/TicketUploader.h3
2 files changed, 106 insertions, 13 deletions
diff --git a/lib/Plugins/TicketUploader.cpp b/lib/Plugins/TicketUploader.cpp
index 77d20919..c85a329b 100644
--- a/lib/Plugins/TicketUploader.cpp
+++ b/lib/Plugins/TicketUploader.cpp
@@ -91,7 +91,7 @@ static void WriteCommand(const char *cmd, const char *input)
}
}
-void CTicketUploader::SendFile(const char *pURL, const char *pFilename)
+void CTicketUploader::SendFile(const char *pURL, const char *pFilename, int retry_count, int retry_delay)
{
if (pURL[0] == '\0')
{
@@ -103,7 +103,7 @@ void CTicketUploader::SendFile(const char *pURL, const char *pFilename)
const char *base = (strrchr(pFilename, '/') ? : pFilename-1) + 1;
string wholeURL = concat_path_file(pURL, base);
- int count = m_nRetryCount;
+ int count = retry_count;
int result;
while (1)
{
@@ -133,7 +133,7 @@ void CTicketUploader::SendFile(const char *pURL, const char *pFilename)
if (result == 0 || --count <= 0)
break;
/* retry the upload if not succesful, wait a bit before next try */
- sleep(m_nRetryDelay);
+ sleep(retry_delay);
}
if (count <= 0 && result != 0)
@@ -159,14 +159,38 @@ string CTicketUploader::Report(const map_crash_data_t& pCrashData,
const map_plugin_settings_t& pSettings,
const char *pArgs)
{
- update_client(_("Creating a TicketUploader report..."));
-
+ string customer_name;
+ string ticket_name;
+ string upload_url;
+ bool do_encrypt;
+ bool do_upload;
+ int retry_count;
+ int retry_delay;
+
+ /* if parse_settings fails it returns an empty map so we need to use defaults */
+ map_plugin_settings_t settings = parse_settings(pSettings);
// Get ticket name, customer name, and do_encrypt from config settings
- string customer_name = m_sCustomer;
- string ticket_name = m_sTicket;
- string upload_url = m_sURL;
- bool do_encrypt = m_bEncrypt;
- bool do_upload = m_bUpload;
+ if (!settings.empty())
+ {
+ customer_name = settings["Customer"];
+ ticket_name = settings["Ticket"];
+ upload_url = settings["URL"];
+ do_encrypt = string_to_bool(settings["Encrypt"].c_str());
+ do_upload = string_to_bool(settings["Upload"].c_str());
+ retry_count = xatoi_u(settings["RetryCount"].c_str());
+ retry_delay = xatoi_u(settings["RetryDelay"].c_str());
+ }
+ else
+ {
+ customer_name = m_sCustomer;
+ ticket_name = m_sTicket;
+ upload_url = m_sURL;
+ do_encrypt = m_bEncrypt;
+ do_upload = m_bUpload;
+ retry_count = m_nRetryCount;
+ retry_delay = m_nRetryDelay;
+ }
+ update_client(_("Creating an TicketUploader report..."));
bool have_ticket_name = (ticket_name != "");
if (!have_ticket_name)
@@ -258,7 +282,7 @@ string CTicketUploader::Report(const map_crash_data_t& pCrashData,
if (do_upload)
{
// FIXME: SendFile isn't working sometime (scp)
- SendFile(upload_url.c_str(), outfile_name.c_str());
+ SendFile(upload_url.c_str(), outfile_name.c_str(), retry_count, retry_delay);
}
else
{
@@ -402,13 +426,81 @@ const map_plugin_settings_t& CTicketUploader::GetSettings()
m_pSettings["Ticket"] = m_sTicket;
m_pSettings["URL"] = m_sURL;
m_pSettings["Encrypt"] = m_bEncrypt ? "yes" : "no";
- m_pSettings["Upload"] = m_bEncrypt ? "yes" : "no";
+ m_pSettings["Upload"] = m_bUpload ? "yes" : "no";
m_pSettings["RetryCount"] = to_string(m_nRetryCount);
m_pSettings["RetryDelay"] = to_string(m_nRetryDelay);
return m_pSettings;
}
+//todo: make static
+map_plugin_settings_t CTicketUploader::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;
+
+ it = pSettings.find("Customer");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["Customer"] = it->second;
+
+ it = pSettings.find("Ticket");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["Ticket"] = it->second;
+
+ it = pSettings.find("URL");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["URL"] = it->second;
+
+ it = pSettings.find("Encrypt");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["Encrypt"] = it->second;
+
+ it = pSettings.find("Upload");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["Upload"] = it->second;
+
+ it = pSettings.find("RetryCount");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["RetryCount"] = it->second;
+
+ it = pSettings.find("RetryDelay");
+ if (it == end)
+ {
+ plugin_settings.clear();
+ return plugin_settings;
+ }
+ plugin_settings["RetryDelay"] = it->second;
+
+ VERB1 log("User settings ok, using them instead of defaults");
+ return plugin_settings;
+}
+
PLUGIN_INFO(REPORTER,
CTicketUploader,
"TicketUploader",
diff --git a/lib/Plugins/TicketUploader.h b/lib/Plugins/TicketUploader.h
index 7a371a3a..a719d0bd 100644
--- a/lib/Plugins/TicketUploader.h
+++ b/lib/Plugins/TicketUploader.h
@@ -39,7 +39,8 @@ class CTicketUploader : public CReporter
int m_nRetryCount;
int m_nRetryDelay;
- void SendFile(const char *pURL, const char *pFilename);
+ void SendFile(const char *pURL, const char *pFilename, int retry_count, int retry_delay);
+ map_plugin_settings_t parse_settings(const map_plugin_settings_t& pSettings);
public:
CTicketUploader();