--- smsdaemon/PluginManager.cpp 2008/12/21 17:42:30 207 +++ smsdaemon/PluginManager.cpp 2009/12/27 18:01:36 521 @@ -5,6 +5,8 @@ #include "Common.h" #include "Util.h" + +#include "ProxyPlugin.h" #include "plugins/EchoPlugin.h" #include "plugins/SpamPlugin.h" #include "plugins/ShellExecPlugin.h" @@ -15,6 +17,9 @@ #include "plugins/WeatherPlugin.h" #include "plugins/UrlTriggerPlugin.h" + +#include "AccessManager.h" + typedef std::map::iterator MapIterator; PluginManager::PluginManager() @@ -78,23 +83,22 @@ if (pluginName == "urltrigger") return new UrlTriggerPlugin(args); - + 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"); @@ -132,7 +136,10 @@ } if (pl) + { AddPlugin(pl); + ParseCommonOptions(name,args); + } else Logger::logMessage( std::string("Unknown plugin: ")+name); @@ -147,13 +154,29 @@ } } -void PluginManager::DestroyPlugins() +void PluginManager::ParseCommonOptions(const std::string& pluginName, std::map& 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; + } }