summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/MiddleWare/MiddleWare.cpp19
-rw-r--r--lib/MiddleWare/MiddleWare.h3
-rw-r--r--lib/Plugins/Mailx.cpp2
-rw-r--r--src/Daemon/CrashWatcher.cpp16
-rw-r--r--src/Daemon/Settings.cpp13
-rw-r--r--src/Daemon/Settings.h6
-rw-r--r--src/Daemon/abrt.conf8
7 files changed, 55 insertions, 12 deletions
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp
index d2d12a0..e1e679a 100644
--- a/lib/MiddleWare/MiddleWare.cpp
+++ b/lib/MiddleWare/MiddleWare.cpp
@@ -173,6 +173,20 @@ void CMiddleWare::CreateCrashReport(const std::string& pUUID,
add_crash_data_to_crash_report(pCrashReport, CD_REPRODUCE, CD_TXT, CD_ISEDITABLE, "1.\n2.\n3.\n");
}
+void CMiddleWare::Report(const std::string& pDebugDumpDir)
+{
+ map_crash_report_t crashReport;
+
+ DebugDumpToCrashReport(pDebugDumpDir, crashReport);
+
+ set_reporters_t::iterator it_r;
+ for (it_r = m_setReporters.begin(); it_r != m_setReporters.end(); it_r++)
+ {
+ CReporter* reporter = m_pPluginManager->GetReporter(*it_r);
+ reporter->Report(crashReport);
+ }
+}
+
void CMiddleWare::Report(const map_crash_report_t& pCrashReport)
{
if (pCrashReport.find(CD_MWANALYZER) == pCrashReport.end() ||
@@ -488,3 +502,8 @@ void CMiddleWare::AddAnalyzerAction(const std::string& pAnalyzer,
{
m_mapAnalyzerActions[pAnalyzer].insert(make_pair(pAction, pArgs));
}
+
+void CMiddleWare::AddReporter(const std::string& pReporter)
+{
+ m_setReporters.insert(pReporter);
+}
diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h
index 86db708..28afb2a 100644
--- a/lib/MiddleWare/MiddleWare.h
+++ b/lib/MiddleWare/MiddleWare.h
@@ -45,6 +45,7 @@ class CMiddleWare
std::string m_sDatabase;
map_reporter_associations_t m_mapAnalyzerReporters;
map_action_associations_t m_mapAnalyzerActions;
+ set_reporters_t m_setReporters;
bool m_bOpenGPGCheck;
@@ -79,6 +80,7 @@ class CMiddleWare
const std::string& pUID,
map_crash_report_t& pCrashReport);
+ void Report(const std::string& pDebugDumpDir);
void Report(const map_crash_report_t& pCrashReport);
void DeleteDebugDumpDir(const std::string& pDebugDumpDir);
void DeleteCrashInfo(const std::string& pUUID,
@@ -100,6 +102,7 @@ class CMiddleWare
void AddAnalyzerAction(const std::string& pAnalyzer,
const std::string& pAction,
const std::string& pArgs);
+ void AddReporter(const std::string& pReporter);
};
#endif /*MIDDLEWARE_H_*/
diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp
index 72d5cb7..8aacef3 100644
--- a/lib/Plugins/Mailx.cpp
+++ b/lib/Plugins/Mailx.cpp
@@ -140,6 +140,6 @@ void CMailx::LoadSettings(const std::string& pPath)
}
if (settings.find("SendBinaryData")!= settings.end())
{
- m_bSendBinaryData = settings["SendBinaryData"] == "no";
+ m_bSendBinaryData = settings["SendBinaryData"] == "yes";
}
}
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp
index b2c42ce..7c043c2 100644
--- a/src/Daemon/CrashWatcher.cpp
+++ b/src/Daemon/CrashWatcher.cpp
@@ -81,6 +81,7 @@ gboolean CCrashWatcher::handle_event_cb(GIOChannel *gio, GIOCondition condition,
{
if(cc->m_pMW->SaveDebugDump(std::string(DEBUG_DUMPS_DIR) + "/" + name, crashinfo))
{
+ cc->m_pMW->Report(std::string(DEBUG_DUMPS_DIR) + "/" + name);
/* send message to dbus */
cc->m_pCommLayer->Crash(crashinfo[CD_PACKAGE][CD_CONTENT]);
}
@@ -131,9 +132,15 @@ void CCrashWatcher::SetUpMW()
{
m_pMW->RegisterPlugin(*it_p);
}
- CSettings::map_analyzer_reporters_t reporters = m_pSettings->GetReporters();
+ CSettings::set_strings_t reporters = m_pSettings->GetReporters();
+ CSettings::set_strings_t::iterator it_r;
+ for (it_r = reporters.begin(); it_r != reporters.end(); it_r++)
+ {
+ m_pMW->AddReporter(*it_r);
+ }
+ CSettings::map_analyzer_reporters_t analyzer_reporters = m_pSettings->GetAnalyzerReporters();
CSettings::map_analyzer_reporters_t::iterator it_pr;
- for (it_pr = reporters.begin(); it_pr != reporters.end(); it_pr++)
+ for (it_pr = analyzer_reporters.begin(); it_pr != analyzer_reporters.end(); it_pr++)
{
CSettings::set_strings_t::iterator it_r;
for (it_r = it_pr->second.begin(); it_r != it_pr->second.end(); it_r++)
@@ -141,9 +148,9 @@ void CCrashWatcher::SetUpMW()
m_pMW->AddAnalyzerReporter(it_pr->first, *it_r);
}
}
- CSettings::map_analyzer_actions_t actions = m_pSettings->GetActions();
+ CSettings::map_analyzer_actions_t analyser_actions = m_pSettings->GetAnalyzerActions();
CSettings::map_analyzer_actions_t::iterator it_pa;
- for (it_pa = actions.begin(); it_pa != actions.end(); it_pa++)
+ for (it_pa = analyser_actions.begin(); it_pa != analyser_actions.end(); it_pa++)
{
CSettings::set_actions_t::iterator it_a;
for (it_a = it_pa->second.begin(); it_a != it_pa->second.end(); it_a++)
@@ -262,6 +269,7 @@ void CCrashWatcher::FindNewDumps(const std::string& pPath)
if(m_pMW->SaveDebugDump(*itt, crashinfo))
{
std::cerr << "Saved new entry: " << *itt << std::endl;
+ m_pMW->Report(*itt);
}
}
catch(std::string err)
diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp
index 097dbc9..240a6f6 100644
--- a/src/Daemon/Settings.cpp
+++ b/src/Daemon/Settings.cpp
@@ -112,6 +112,11 @@ void CSettings::ParseCommon()
{
m_nMaxCrashReportsSize = atoi(m_mapSettingsCommon["MaxCrashReportsSize"].c_str());
}
+ if (m_mapSettingsCommon.find("Reporters") != m_mapSettingsCommon.end())
+ {
+ m_setReporters = ParseList(m_mapSettingsCommon["Reporters"]);
+ }
+
}
void CSettings::ParseReporters()
@@ -267,12 +272,12 @@ const bool& CSettings::GetOpenGPGCheck()
return m_bOpenGPGCheck;
}
-const CSettings::map_analyzer_reporters_t& CSettings::GetReporters()
+const CSettings::map_analyzer_reporters_t& CSettings::GetAnalyzerReporters()
{
return m_mapAnalyzerReporters;
}
-const CSettings::map_analyzer_actions_t& CSettings::GetActions()
+const CSettings::map_analyzer_actions_t& CSettings::GetAnalyzerActions()
{
return m_mapAnalyzerActions;
}
@@ -285,3 +290,7 @@ const std::string& CSettings::GetDatabase()
{
return m_sDatabase;
}
+const CSettings::set_strings_t& CSettings::GetReporters()
+{
+ return m_setReporters;
+}
diff --git a/src/Daemon/Settings.h b/src/Daemon/Settings.h
index 7abff7b..7a8723a 100644
--- a/src/Daemon/Settings.h
+++ b/src/Daemon/Settings.h
@@ -24,6 +24,7 @@ class CSettings
set_strings_t m_setOpenGPGPublicKeys;
set_strings_t m_setBlackList;
set_strings_t m_setEnabledPlugins;
+ set_strings_t m_setReporters;
std::string m_sDatabase;
bool m_bOpenGPGCheck;
unsigned int m_nMaxCrashReportsSize;
@@ -43,10 +44,11 @@ class CSettings
const set_strings_t& GetEnabledPlugins();
const set_strings_t& GetOpenGPGPublicKeys();
const bool& GetOpenGPGCheck();
- const map_analyzer_reporters_t& GetReporters();
- const map_analyzer_actions_t& GetActions();
+ const map_analyzer_reporters_t& GetAnalyzerReporters();
+ const map_analyzer_actions_t& GetAnalyzerActions();
const unsigned int& GetMaxCrashReportsSize();
const std::string& GetDatabase();
+ const set_strings_t& GetReporters();
};
#endif
diff --git a/src/Daemon/abrt.conf b/src/Daemon/abrt.conf
index 025dc07..51367db 100644
--- a/src/Daemon/abrt.conf
+++ b/src/Daemon/abrt.conf
@@ -9,15 +9,17 @@ OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
# blacklisted packages
BlackList = bash, bind, apache2
# enabled plugins
-EnabledPlugins = SQLite3, CCpp, Mailx, Kerneloops, KerneloopsReporter
+EnabledPlugins = SQLite3, CCpp, Mailx, Logger, Kerneloops, KerneloopsReporter
# selected DB plugin
Database = SQLite3
# max size for coredumps storage
MaxCrashReportsSize = 1000
+# set of reporters which are activated in crash time
+Reporters = Mailx
-# reporters association
+# reporters association with alanyzers
[ Reporters ]
-CCpp = Mailx
+CCpp = Logger
Kerneloops = KerneloopsReporter
# actions association