diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-05 15:44:20 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-05 15:44:20 +0100 |
| commit | 7a14f59368f7221274bd74504700fc36031e9c3f (patch) | |
| tree | bd0f99c448a2490265a64f1f50f9d801178795c8 /lib/MiddleWare | |
| parent | 7624f34a7ff9a49ef2da5cbfbe82ddc2adde22a9 (diff) | |
| parent | 8eb02891db1d466d17329c0568cc67aafcd48f20 (diff) | |
Merge branch 'master' of git://git.fedorahosted.org/git/crash-catcher
Diffstat (limited to 'lib/MiddleWare')
| -rw-r--r-- | lib/MiddleWare/CrashCatcher.conf | 4 | ||||
| -rw-r--r-- | lib/MiddleWare/Makefile.am | 6 | ||||
| -rw-r--r-- | lib/MiddleWare/MiddleWare.cpp | 34 | ||||
| -rw-r--r-- | lib/MiddleWare/MiddleWare.h | 7 | ||||
| -rw-r--r-- | lib/MiddleWare/Settings.cpp | 17 | ||||
| -rw-r--r-- | lib/MiddleWare/test.cpp | 7 |
6 files changed, 67 insertions, 8 deletions
diff --git a/lib/MiddleWare/CrashCatcher.conf b/lib/MiddleWare/CrashCatcher.conf new file mode 100644 index 0000000..9307740 --- /dev/null +++ b/lib/MiddleWare/CrashCatcher.conf @@ -0,0 +1,4 @@ +# test conf file. it will be generated in the future +BlackList = /usr/bin/bash, /usr/bin/sh +EnabledPlugins = SQLite3, CCpp +Database = SQLite3 diff --git a/lib/MiddleWare/Makefile.am b/lib/MiddleWare/Makefile.am index 1b1b5f4..2b63f85 100644 --- a/lib/MiddleWare/Makefile.am +++ b/lib/MiddleWare/Makefile.am @@ -7,10 +7,14 @@ libMiddleWare_la_LIBADD = $(DL_LIBS) ../Utils/libUtils.la libMiddleWare_la_LDFLAGS = -version-info 0:1:0 libMiddleWare_la_CPPFLAGS = -I$(srcdir)/../Utils +middlewareconfdir = $(CONF_DIR) +middlewareconf_DATA = CrashCatcher.conf + check_PROGRAMS = test test_SOURCES = test.cpp test_LDADD = ../Utils/libUtils.la libMiddleWare.la $(DL_LIBS) test_CPPFLAGS = -I$(srcdir)/../Utils \ -DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \ -DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \ - -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\"
\ No newline at end of file + -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \ + -DCONF_DIR=\"$(CONF_DIR)\" diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp index 12fa1e4..8cd4bec 100644 --- a/lib/MiddleWare/MiddleWare.cpp +++ b/lib/MiddleWare/MiddleWare.cpp @@ -35,6 +35,12 @@ CMiddleWare::CMiddleWare(const std::string& pPlugisConfDir, } m_pPluginManager->LoadPlugins(); LoadSettings(pMiddleWareConfFile); + + set_enabled_plugins_t::iterator it_p; + for (it_p = m_setEnabledPlugins.begin(); it_p != m_setEnabledPlugins.end(); it_p++) + { + m_pPluginManager->RegisterPlugin(*it_p); + } } CMiddleWare::~CMiddleWare() @@ -50,11 +56,37 @@ void CMiddleWare::LoadSettings(const std::string& pPath) load_settings(pPath, settings); if (settings.find("BlackList") != settings.end()) { - m_sBlackList = settings["BlackList"]; + std::string blackList = settings["BlackList"]; + std::string::size_type ii_old = 0, ii_new = 0; + ii_new = blackList.find(","); + while (ii_new != std::string::npos) + { + m_setBlackList.insert(blackList.substr(ii_old, ii_new - ii_old)); + ii_old = ii_new + 1; + ii_new = blackList.find(",",ii_old); + } + m_setBlackList.insert(blackList.substr(ii_old)); + } + if (settings.find("EnabledPlugins") != settings.end()) + { + std::string enabledPlugins = settings["EnabledPlugins"]; + std::string::size_type ii_old = 0, ii_new = 0; + ii_new = enabledPlugins.find(","); + while (ii_new != std::string::npos) + { + m_setEnabledPlugins.insert(enabledPlugins.substr(ii_old, ii_new - ii_old)); + ii_old = ii_new + 1; + ii_new = enabledPlugins.find(",",ii_old); + } + m_setEnabledPlugins.insert(enabledPlugins.substr(ii_old)); } if (settings.find("Database") != settings.end()) { m_sDatabase = settings["Database"]; + if (m_setEnabledPlugins.find(m_sDatabase) == m_setEnabledPlugins.end()) + { + throw std::string("Database plugin '"+m_sDatabase+"' isn't enabled."); + } } else { diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h index 26af907..5fdba84 100644 --- a/lib/MiddleWare/MiddleWare.h +++ b/lib/MiddleWare/MiddleWare.h @@ -25,13 +25,18 @@ #define MIDDLEWARE_H_ #include "PluginManager.h" +#include <set> class CMiddleWare { private: + typedef std::set<std::string> set_blacklist_t; + typedef std::set<std::string> set_enabled_plugins_t; + CPluginManager* m_pPluginManager; - std::string m_sBlackList; + set_blacklist_t m_setBlackList; + set_enabled_plugins_t m_setEnabledPlugins; std::string m_sDatabase; std::string GetLocalUUIDLanguage(const std::string& pLanguage, diff --git a/lib/MiddleWare/Settings.cpp b/lib/MiddleWare/Settings.cpp index 627bfc6..413820b 100644 --- a/lib/MiddleWare/Settings.cpp +++ b/lib/MiddleWare/Settings.cpp @@ -80,5 +80,20 @@ void load_settings(const std::string& path, map_settings_t& settings) void save_settings(const std::string& path, const map_settings_t& settings) { - //TODO: write this + map_settings_t::const_iterator it; + std::ofstream fOut; + fOut.open(path.c_str()); + if (fOut.is_open()) + { + fOut << "# !DO NOT EDIT THIS FILE BY HAND. IT IS GENERATED BY CRASHCATCHER!" << std::endl; + for (it = settings.begin(); it != settings.end(); it++) + { + fOut << it->first << " = " << it->second << std::endl << std::endl; + } + fOut.close(); + } + else + { + throw std::string("save_settings(): Cannot write configuration file '"+path+"'."); + } } diff --git a/lib/MiddleWare/test.cpp b/lib/MiddleWare/test.cpp index 0397996..9d54b0b 100644 --- a/lib/MiddleWare/test.cpp +++ b/lib/MiddleWare/test.cpp @@ -32,12 +32,11 @@ int main(int argc, char** argv) try { - CMiddleWare middleWare(PLUGINS_CONF_DIR, PLUGINS_LIB_DIR, "CrashCatcher.conf"); + CMiddleWare middleWare(PLUGINS_CONF_DIR, + PLUGINS_LIB_DIR, + std::string(CONF_DIR) + "/CrashCatcher.conf"); CDebugDump dd; - middleWare.RegisterPlugin("CCpp"); - middleWare.RegisterPlugin("SQLite3"); - char pid[100]; sprintf(pid, "%d", getpid()); |
