diff options
| -rw-r--r-- | lib/MiddleWare/MiddleWare.cpp | 19 | ||||
| -rw-r--r-- | lib/MiddleWare/MiddleWare.h | 3 | ||||
| -rw-r--r-- | lib/Plugins/Mailx.cpp | 2 | ||||
| -rw-r--r-- | src/Daemon/CrashWatcher.cpp | 16 | ||||
| -rw-r--r-- | src/Daemon/Settings.cpp | 13 | ||||
| -rw-r--r-- | src/Daemon/Settings.h | 6 | ||||
| -rw-r--r-- | src/Daemon/abrt.conf | 8 |
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 |
