From 97e63aa6d24984551af36b31ee80ea62ce83b850 Mon Sep 17 00:00:00 2001 From: dnovotny Date: Wed, 9 Sep 2009 09:37:00 -0400 Subject: added dbus wrappers for register/unregister plugin --- src/Daemon/PluginManager.cpp | 30 ++++++++++++++++++++++++++++++ src/Daemon/PluginManager.h | 16 ++++++++++++++++ src/Daemon/org.fedoraproject.abrt.policy | 20 ++++++++++++++++++++ 3 files changed, 66 insertions(+) (limited to 'src') diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp index 5580cdf..412a186 100644 --- a/src/Daemon/PluginManager.cpp +++ b/src/Daemon/PluginManager.cpp @@ -24,6 +24,7 @@ #include "abrtlib.h" #include "ABRTException.h" #include "CommLayerInner.h" +#include "Polkit.h" #include "PluginManager.h" /** @@ -228,6 +229,20 @@ void CPluginManager::RegisterPlugin(const std::string& pName) } } +void CPluginManager::RegisterPluginDBUS(const std::string& pName, + const char * pDBUSSender) +{ + int polkit_result = polkit_check_authorization(pDBUSSender, + "org.fedoraproject.abrt.register-plugin"); + if (polkit_result == PolkitYes) + { + RegisterPlugin(pName); + } else + { + log("user %s not authorized, returned %d", pDBUSSender, polkit_result); + } +} + void CPluginManager::UnRegisterPlugin(const std::string& pName) { map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); @@ -244,6 +259,21 @@ void CPluginManager::UnRegisterPlugin(const std::string& pName) } } +void CPluginManager::UnRegisterPluginDBUS(const std::string& pName, + const char * pDBUSSender) +{ + int polkit_result = polkit_check_authorization(pDBUSSender, + "org.fedoraproject.abrt.unregister-plugin"); + if (polkit_result == PolkitYes) + { + UnRegisterPlugin(pName); + } else + { + log("user %s not authorized, returned %d", pDBUSSender, polkit_result); + } +} + + CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName) { map_plugins_t::iterator plugin = m_mapPlugins.find(pName); diff --git a/src/Daemon/PluginManager.h b/src/Daemon/PluginManager.h index 06d5f03..d4914db 100644 --- a/src/Daemon/PluginManager.h +++ b/src/Daemon/PluginManager.h @@ -90,6 +90,22 @@ class CPluginManager * @param pName A plugin name. */ void UnRegisterPlugin(const std::string& pName); + /** + * A method, which registers particular plugin, + * called via DBUS + * @param pName A plugin name. + * @param pDBUSSender DBUS user identification + */ + void RegisterPluginDBUS(const std::string& pName, + const char * pDBUSSender); + /** + * A method, which unregister particular plugin, + * called via DBUS + * @param pName A plugin name. + * @param pDBUSSender DBUS user identification + */ + void UnRegisterPluginDBUS(const std::string& pName, + const char * pDBUSSender); /** * A method, which returns instance of particular analyzer plugin. * @param pName A plugin name. diff --git a/src/Daemon/org.fedoraproject.abrt.policy b/src/Daemon/org.fedoraproject.abrt.policy index 9cf16a6..39b0ef2 100644 --- a/src/Daemon/org.fedoraproject.abrt.policy +++ b/src/Daemon/org.fedoraproject.abrt.policy @@ -23,4 +23,24 @@ Copyright (c) 2009 Red Hat inc. + + Register plugin + Registering a plugin requires authentication + + auth_admin + auth_admin + auth_admin + + + + + Unregister plugin + Unregistering a plugin requires authentication + + auth_admin + auth_admin + auth_admin + + + -- cgit