summaryrefslogtreecommitdiffstats
path: root/src/Daemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/Daemon')
-rw-r--r--src/Daemon/MiddleWare.cpp23
-rw-r--r--src/Daemon/PluginManager.cpp27
-rw-r--r--src/Daemon/Settings.cpp1
-rw-r--r--src/Daemon/abrt.conf7
4 files changed, 30 insertions, 28 deletions
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp
index 0bc358e1..dc5a295a 100644
--- a/src/Daemon/MiddleWare.cpp
+++ b/src/Daemon/MiddleWare.cpp
@@ -278,17 +278,21 @@ void RunActionsAndReporters(const char *pDebugDumpDir)
{
try
{
- if (g_pPluginManager->GetPluginType(it_ar->first) == REPORTER)
+ VERB3 log("RunActionsAndReporters: checking %s", it_ar->first.c_str());
+ plugin_type_t tp = g_pPluginManager->GetPluginType(it_ar->first);
+ if (tp == REPORTER)
{
CReporter* reporter = g_pPluginManager->GetReporter(it_ar->first);
map_crash_report_t crashReport;
DebugDumpToCrashReport(pDebugDumpDir, crashReport);
+ VERB2 log("%s.Report(...)", it_ar->first.c_str());
reporter->Report(crashReport, plugin_settings, it_ar->second);
}
- else if (g_pPluginManager->GetPluginType(it_ar->first) == ACTION)
+ else if (tp == ACTION)
{
CAction* action = g_pPluginManager->GetAction(it_ar->first);
+ VERB2 log("%s.Run('%s','%s')", it_ar->first.c_str(), pDebugDumpDir, it_ar->second.c_str());
action->Run(pDebugDumpDir, it_ar->second.c_str());
}
}
@@ -375,18 +379,22 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
}
}
- // analyzer with package name (CCpp:xrog-x11-app) has higher priority
+ // analyzer with package name (CCpp:xorg-x11-app) has higher priority
std::string key = analyzer + ":" + packageName;
+ map_analyzer_actions_and_reporters_t::iterator end = s_mapAnalyzerActionsAndReporters.end();
map_analyzer_actions_and_reporters_t::iterator keyPtr = s_mapAnalyzerActionsAndReporters.find(key);
- if (keyPtr == s_mapAnalyzerActionsAndReporters.end())
+ if (keyPtr == end)
{
// if there is no such settings, then try default analyzer
keyPtr = s_mapAnalyzerActionsAndReporters.find(analyzer);
+ key = analyzer;
}
std::string message;
- if (keyPtr != s_mapAnalyzerActionsAndReporters.end())
+ if (keyPtr != end)
{
+ VERB2 log("Found AnalyzerActionsAndReporters for '%s'", key.c_str());
+
vector_pair_string_string_t::iterator it_r = keyPtr->second.begin();
for (; it_r != keyPtr->second.end(); it_r++)
{
@@ -433,7 +441,7 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
{
ret[pluginName].push_back("0");
ret[pluginName].push_back(e.what());
- update_client("Reporting via %s' was not successful: %s", pluginName.c_str(), e.what());
+ update_client("Reporting via '%s' was not successful: %s", pluginName.c_str(), e.what());
}
}
}
@@ -764,7 +772,7 @@ vector_pair_string_string_t GetUUIDsOfCrash(const char *pUID)
database->DisConnect();
vector_pair_string_string_t UUIDsUIDs;
- int ii;
+ unsigned ii;
for (ii = 0; ii < rows.size(); ii++)
{
UUIDsUIDs.push_back(make_pair(rows[ii].m_sUUID, rows[ii].m_sUID));
@@ -783,5 +791,6 @@ void AddAnalyzerActionOrReporter(const char *pAnalyzer,
void AddActionOrReporter(const char *pActionOrReporter,
const char *pArgs)
{
+ VERB3 log("AddActionOrReporter('%s','%s')", pActionOrReporter, pArgs);
s_vectorActionsAndReporters.push_back(make_pair(std::string(pActionOrReporter), std::string(pArgs)));
}
diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp
index 5b871515..21a66adf 100644
--- a/src/Daemon/PluginManager.cpp
+++ b/src/Daemon/PluginManager.cpp
@@ -278,13 +278,11 @@ CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName)
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():"
- "Analyzer plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered");
}
if (m_mapABRTPlugins[pName]->GetType() != ANALYZER)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():"
- "Plugin: '"+pName+"' is not analyzer plugin.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not an analyzer plugin");
}
return (CAnalyzer*)(plugin->second);
}
@@ -294,13 +292,11 @@ CReporter* CPluginManager::GetReporter(const std::string& pName)
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():"
- "Reporter plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered");
}
if (m_mapABRTPlugins[pName]->GetType() != REPORTER)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():"
- "Plugin: '"+pName+"' is not reporter plugin.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not a reporter plugin");
}
return (CReporter*)(plugin->second);
}
@@ -310,13 +306,11 @@ CAction* CPluginManager::GetAction(const std::string& pName)
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():"
- "Action plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered");
}
if (m_mapABRTPlugins[pName]->GetType() != ACTION)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():"
- "Plugin: '"+pName+"' is not action plugin.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not an action plugin");
}
return (CAction*)(plugin->second);
}
@@ -326,13 +320,11 @@ CDatabase* CPluginManager::GetDatabase(const std::string& pName)
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():"
- "Database plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered");
}
if (m_mapABRTPlugins[pName]->GetType() != DATABASE)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():"
- "Plugin: '"+pName+"' is not database plugin.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not a database plugin");
}
return (CDatabase*)(plugin->second);
}
@@ -342,8 +334,7 @@ plugin_type_t CPluginManager::GetPluginType(const std::string& pName)
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetPluginType():"
- "Plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered");
}
return m_mapABRTPlugins[pName]->GetType();
}
diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp
index cefd35a4..7f419ec5 100644
--- a/src/Daemon/Settings.cpp
+++ b/src/Daemon/Settings.cpp
@@ -228,6 +228,7 @@ static void ParseAnalyzerActionsAndReporters()
set_string_t::iterator it_keys = keys.begin();
for (; it_keys != keys.end(); it_keys++)
{
+ VERB2 log("AnalyzerActionsAndReporters['%s']=...", it_keys->c_str());
g_settings_mapAnalyzerActionsAndReporters[*it_keys] = actionsAndReporters;
}
}
diff --git a/src/Daemon/abrt.conf b/src/Daemon/abrt.conf
index e9845e58..f24ec4a8 100644
--- a/src/Daemon/abrt.conf
+++ b/src/Daemon/abrt.conf
@@ -10,20 +10,21 @@ OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
# Blacklisted packages
BlackList = nspluginwrapper
# Enabled plugins. There has to be exactly one database plugin
-EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python
+EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python, RunApp
# Database
Database = SQLite3
# Max size for crash storage [MiB]
MaxCrashReportsSize = 1000
# Vector of actions and reporters which are activated immediately after a crash occurs
-# ActionsAndReporters = Mailx("[abrt] new crash was detected")
+#ActionsAndReporters = Mailx("[abrt] new crash was detected")
+# TODO: teach parser to escape \". Should be: x"`cat component`" = x"xorg-x11-server-Xorg"
+ActionsAndReporters = RunApp("test x`cat component` = xxorg-x11-server-Xorg && cp /var/log/Xorg*.log .")
# Reporters association with analyzers
[ AnalyzerActionsAndReporters ]
Kerneloops = KerneloopsReporter
CCpp = Bugzilla, Logger
Python = Bugzilla, Logger
-# CCpp : xorg-x11-apps = RunApp("date", "RunApp")
# Repeated calling of Action plugins
[ Cron ]