--- smsdaemon/PluginManager.cpp 2008/12/19 22:29:25 205 +++ smsdaemon/PluginManager.cpp 2009/04/10 20:00:07 222 @@ -1,4 +1,3 @@ - #include "PluginManager.h" #include "Logger.h" @@ -6,6 +5,8 @@ #include "Common.h" #include "Util.h" + +#include "ProxyPlugin.h" #include "plugins/EchoPlugin.h" #include "plugins/SpamPlugin.h" #include "plugins/ShellExecPlugin.h" @@ -16,6 +17,8 @@ #include "plugins/WeatherPlugin.h" #include "plugins/UrlTriggerPlugin.h" +#include "AccessManager.h" + typedef std::map::iterator MapIterator; PluginManager::PluginManager() @@ -83,19 +86,19 @@ return 0; } -void PluginManager::LoadPlugins() -{ -/* - - static ShellExecPlugin wake("wake", "/usr/local/bin/wake", false, false); - static ShellExecPlugin ping("ping", "nmap -sP 192.168.10.1-255 | grep appears | awk '{print $2}'", false,true); - - +void PluginManager::DestroyPlugins() +{ + for (std::map::iterator it=_plugins.begin(); it!=_plugins.end(); ++it) + { + delete it->second; + } + _plugins.clear(); +} - static UrlTriggerPlugin urltrigger("tou", "http://t-hoerup.dk/test.php"); -*/ - +void PluginManager::LoadPlugins() +{ + Logger::logMessage("-------- PluginList --------"); std::vector pluginlist = Common::instance()->GetConfigfile()->GetValues("smsdaemon", "plugin"); for (unsigned i=0; i& args) { + if (args["privileged"] == "1") + { + AccessManager::AddPrivPlugin(pluginName); + } } Plugin* PluginManager::GetPlugin(const std::string& pluginname) { - return _plugins[ pluginname ]; + static ProxyPlugin proxy; + + std::map::iterator it = _plugins.find(pluginname ); + + if (it != _plugins.end() ) + { + proxy.SetPlugin(it->second); + return &proxy; + } + else + { + return 0; + } }