summaryrefslogtreecommitdiffstats
path: root/lib/Plugins
diff options
context:
space:
mode:
authorZdenek Prikryl <zprikryl@redhat.com>2009-08-14 20:59:43 +0200
committerZdenek Prikryl <zprikryl@redhat.com>2009-08-14 20:59:43 +0200
commit3c226c987f5015e8184bfc4293ee9f9b2f7b8f67 (patch)
treeb2ec9e8f5ec3140008a15cccea4030c438dbe72e /lib/Plugins
parent15e44fefb8e0ce093e91bc0fd96302c6b77bf92a (diff)
downloadabrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.tar.gz
abrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.tar.xz
abrt-3c226c987f5015e8184bfc4293ee9f9b2f7b8f67.zip
added support for storing results from reporters (used from gui)
Diffstat (limited to 'lib/Plugins')
-rw-r--r--lib/Plugins/Bugzilla.cpp11
-rw-r--r--lib/Plugins/Bugzilla.h6
-rw-r--r--lib/Plugins/KerneloopsReporter.cpp8
-rw-r--r--lib/Plugins/KerneloopsReporter.h4
-rw-r--r--lib/Plugins/Logger.cpp8
-rw-r--r--lib/Plugins/Logger.h4
-rw-r--r--lib/Plugins/Mailx.cpp3
-rw-r--r--lib/Plugins/Mailx.h4
-rw-r--r--lib/Plugins/SQLite3.cpp12
-rw-r--r--lib/Plugins/SQLite3.h2
10 files changed, 41 insertions, 21 deletions
diff --git a/lib/Plugins/Bugzilla.cpp b/lib/Plugins/Bugzilla.cpp
index 2a91b959..5e3602f4 100644
--- a/lib/Plugins/Bugzilla.cpp
+++ b/lib/Plugins/Bugzilla.cpp
@@ -150,7 +150,7 @@ void CReporterBugzilla::AddPlusOneCC(const std::string& pBugId)
ret = xmlrpc_c::value_struct(rpc->getResult());
}
-bool CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID)
+std::string CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID)
{
xmlrpc_c::paramList paramList;
map_xmlrpc_params_t searchParams;
@@ -182,9 +182,9 @@ bool CReporterBugzilla::CheckUUIDInBugzilla(const std::string& pComponent, const
AddPlusOneComment(ss.str());
AddPlusOneCC(ss.str());
- return true;
+ return ss.str();
}
- return false;
+ return "";
}
void CReporterBugzilla::CreateNewBugDescription(const map_crash_report_t& pCrashReport, std::string& pDescription)
@@ -358,7 +358,7 @@ void CReporterBugzilla::AddAttachments(const std::string& pBugId, const map_cras
}
}
-void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
+std::string CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
{
std::string package = pCrashReport.find(FILENAME_PACKAGE)->second[CD_CONTENT];
std::string component = package.substr(0, package.rfind("-", package.rfind("-")-1));
@@ -371,7 +371,7 @@ void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std
{
Login();
comm_layer_inner_status("Checking for duplicates...");
- if (!CheckUUIDInBugzilla(component, uuid))
+ if ((bugId = CheckUUIDInBugzilla(component, uuid)) == "")
{
comm_layer_inner_status("Creating new bug...");
bugId = NewBug(pCrashReport);
@@ -386,6 +386,7 @@ void CReporterBugzilla::Report(const map_crash_report_t& pCrashReport, const std
throw CABRTException(EXCEP_PLUGIN, std::string("CReporterBugzilla::Report(): ") + e.what());
}
DeleteXMLRPCClient();
+ return "See bug in bugzilla: " + m_sBugzillaURL + ", bug id:" + bugId;
}
void CReporterBugzilla::SetSettings(const map_plugin_settings_t& pSettings)
diff --git a/lib/Plugins/Bugzilla.h b/lib/Plugins/Bugzilla.h
index 3849f17f..575de1f0 100644
--- a/lib/Plugins/Bugzilla.h
+++ b/lib/Plugins/Bugzilla.h
@@ -19,7 +19,7 @@ class CReporterBugzilla : public CReporter
void Logout();
void AddPlusOneComment(const std::string& pBugId);
void AddPlusOneCC(const std::string& pBugId);
- bool CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID);
+ std::string CheckUUIDInBugzilla(const std::string& pComponent, const std::string& pUUID);
std::string NewBug(const map_crash_report_t& pCrashReport);
void AddAttachments(const std::string& pBugId, const map_crash_report_t& pCrashReport);
void CreateNewBugDescription(const map_crash_report_t& pCrashReport,
@@ -42,8 +42,8 @@ class CReporterBugzilla : public CReporter
virtual ~CReporterBugzilla();
virtual void SetSettings(const map_plugin_settings_t& pSettings);
virtual map_plugin_settings_t GetSettings();
- virtual void Report(const map_crash_report_t& pCrashReport,
- const std::string& pArgs);
+ virtual std::string Report(const map_crash_report_t& pCrashReport,
+ const std::string& pArgs);
};
#endif /* BUGZILLA_H_ */
diff --git a/lib/Plugins/KerneloopsReporter.cpp b/lib/Plugins/KerneloopsReporter.cpp
index 1860fd8b..647ff8f9 100644
--- a/lib/Plugins/KerneloopsReporter.cpp
+++ b/lib/Plugins/KerneloopsReporter.cpp
@@ -28,6 +28,7 @@
#include "KerneloopsReporter.h"
#include "CommLayerInner.h"
#include <curl/curl.h>
+#include "ABRTException.h"
#define FILENAME_KERNELOOPS "kerneloops"
@@ -92,7 +93,7 @@ CKerneloopsReporter::CKerneloopsReporter() :
m_sSubmitURL("http://submit.kerneloops.org/submitoops.php")
{}
-void CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
+std::string CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
{
int ret = -1;
map_crash_report_t::const_iterator it;
@@ -109,8 +110,11 @@ void CKerneloopsReporter::Report(const map_crash_report_t& pCrashReport, const s
}
if (ret)
+ {
/* FIXME: be more informative */
- comm_layer_inner_status("Report has not been sent...");
+ throw CABRTException(EXCEP_PLUGIN, std::string("CKerneloopsReporter::Report(): Report has not been sent..."));
+ }
+ return "Kernel oops report was uploaded to :" + m_sSubmitURL;
}
void CKerneloopsReporter::SetSettings(const map_plugin_settings_t& pSettings)
diff --git a/lib/Plugins/KerneloopsReporter.h b/lib/Plugins/KerneloopsReporter.h
index c8295a7a..f1b427f8 100644
--- a/lib/Plugins/KerneloopsReporter.h
+++ b/lib/Plugins/KerneloopsReporter.h
@@ -42,8 +42,8 @@ class CKerneloopsReporter : public CReporter
virtual void SetSettings(const map_plugin_settings_t& pSettings);
virtual map_plugin_settings_t GetSettings();
- virtual void Report(const map_crash_report_t& pCrashReport,
- const std::string& pArgs);
+ virtual std::string Report(const map_crash_report_t& pCrashReport,
+ const std::string& pArgs);
};
#endif
diff --git a/lib/Plugins/Logger.cpp b/lib/Plugins/Logger.cpp
index cb702276..fc96dcac 100644
--- a/lib/Plugins/Logger.cpp
+++ b/lib/Plugins/Logger.cpp
@@ -24,6 +24,7 @@
#include <sstream>
#include "DebugDump.h"
#include "CommLayerInner.h"
+#include "ABRTException.h"
CLogger::CLogger() :
m_sLogPath("/var/log/abrt-logger"),
@@ -52,7 +53,7 @@ map_plugin_settings_t CLogger::GetSettings()
return ret;
}
-void CLogger::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
+std::string CLogger::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
{
comm_layer_inner_status("Creating a report...");
@@ -130,6 +131,11 @@ void CLogger::Report(const map_crash_report_t& pCrashReport, const std::string&
fOut << std::endl;
fOut.close();
}
+ else
+ {
+ throw CABRTException(EXCEP_PLUGIN, "CLogger::Report(): Cannot open file: " + m_sLogPath);
+ }
+ return "Report was stored into: " + m_sLogPath;
}
PLUGIN_INFO(REPORTER,
diff --git a/lib/Plugins/Logger.h b/lib/Plugins/Logger.h
index c838b3cb..60c76e4a 100644
--- a/lib/Plugins/Logger.h
+++ b/lib/Plugins/Logger.h
@@ -36,8 +36,8 @@ class CLogger : public CReporter
virtual void SetSettings(const map_plugin_settings_t& pSettings);
virtual map_plugin_settings_t GetSettings();
- virtual void Report(const map_crash_report_t& pCrashReport,
- const std::string& pArgs);
+ virtual std::string Report(const map_crash_report_t& pCrashReport,
+ const std::string& pArgs);
};
#endif /* LOGGER_H_ */
diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp
index 5ee6b65d..6daf8eb9 100644
--- a/lib/Plugins/Mailx.cpp
+++ b/lib/Plugins/Mailx.cpp
@@ -61,7 +61,7 @@ void CMailx::SendEmail(const std::string& pSubject, const std::string& pText)
}
-void CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
+std::string CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& pArgs)
{
comm_layer_inner_status("Creating a report...");
@@ -135,6 +135,7 @@ void CMailx::Report(const map_crash_report_t& pCrashReport, const std::string& p
{
SendEmail(m_sSubject, emailBody.str());
}
+ return "Email was send to :" + m_sEmailTo;
}
void CMailx::SetSettings(const map_plugin_settings_t& pSettings)
diff --git a/lib/Plugins/Mailx.h b/lib/Plugins/Mailx.h
index b5d78364..ff8685d9 100644
--- a/lib/Plugins/Mailx.h
+++ b/lib/Plugins/Mailx.h
@@ -44,8 +44,8 @@ class CMailx : public CReporter
virtual void SetSettings(const map_plugin_settings_t& pSettings);
virtual map_plugin_settings_t GetSettings();
- virtual void Report(const map_crash_report_t& pCrashReport,
- const std::string& pArgs);
+ virtual std::string Report(const map_crash_report_t& pCrashReport,
+ const std::string& pArgs);
};
#endif /* MAILX_H_ */
diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp
index 7720c409..49f4448a 100644
--- a/lib/Plugins/SQLite3.cpp
+++ b/lib/Plugins/SQLite3.cpp
@@ -87,7 +87,9 @@ void CSQLite3::GetTable(const std::string& pCommand, vector_database_rows_t& pTa
break;
case 4: row.m_sReported = table[jj +(ncol*ii) + ncol];
break;
- case 5: row.m_sTime = table[jj +(ncol*ii) + ncol];
+ case 5: row.m_sMessage = table[jj +(ncol*ii) + ncol];
+ break;
+ case 6: row.m_sTime = table[jj +(ncol*ii) + ncol];
break;
default:
break;
@@ -155,6 +157,7 @@ void CSQLite3::CreateTable()
DATABASE_COLUMN_DEBUG_DUMP_PATH" VARCHAR NOT NULL,"
DATABASE_COLUMN_COUNT" INT NOT NULL DEFAULT 1,"
DATABASE_COLUMN_REPORTED" INT NOT NULL DEFAULT 0,"
+ DATABASE_COLUMN_MESSAGE" VARCHAR NOT NULL DEFAULT '',"
DATABASE_COLUMN_TIME" VARCHAR NOT NULL DEFAULT 0,"
"PRIMARY KEY ("DATABASE_COLUMN_UUID","DATABASE_COLUMN_UID"));");
}
@@ -211,7 +214,7 @@ void CSQLite3::Delete(const std::string& pUUID, const std::string& pUID)
}
}
-void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID)
+void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID, const std::string& pMessage)
{
if (Exist(pUUID, pUID))
{
@@ -219,6 +222,11 @@ void CSQLite3::SetReported(const std::string& pUUID, const std::string& pUID)
"SET "DATABASE_COLUMN_REPORTED" = 1 "
"WHERE "DATABASE_COLUMN_UUID" = '"+pUUID+"' "
"AND "DATABASE_COLUMN_UID" = '"+pUID+"';");
+ Exec("UPDATE "ABRT_TABLE" "
+ "SET "DATABASE_COLUMN_MESSAGE" = '" + pMessage + "' "
+ "WHERE "DATABASE_COLUMN_UUID" = '"+pUUID+"' "
+ "AND "DATABASE_COLUMN_UID" = '"+pUID+"';");
+
}
else
{
diff --git a/lib/Plugins/SQLite3.h b/lib/Plugins/SQLite3.h
index 987512e7..0b8e22a5 100644
--- a/lib/Plugins/SQLite3.h
+++ b/lib/Plugins/SQLite3.h
@@ -53,7 +53,7 @@ class CSQLite3 : public CDatabase
const std::string& pTime);
virtual void Delete(const std::string& pUUID, const std::string& pUID);
- virtual void SetReported(const std::string& pUUID, const std::string& pUID);
+ virtual void SetReported(const std::string& pUUID, const std::string& pUID, const std::string& pMessage);
virtual const vector_database_rows_t GetUIDData(const std::string& pUID);
virtual const database_row_t GetUUIDData(const std::string& pUUID, const std::string& pUID);