--- smsdaemon/PluginManager.cpp 2008/12/21 18:41:08 208 +++ smsdaemon/PluginManager.cpp 2009/04/10 20:00:07 222 @@ -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,8 @@ #include "plugins/WeatherPlugin.h" #include "plugins/UrlTriggerPlugin.h" +#include "AccessManager.h" + typedef std::map::iterator MapIterator; PluginManager::PluginManager() @@ -131,7 +135,10 @@ } if (pl) + { AddPlugin(pl); + ParseCommonOptions(name,args); + } else Logger::logMessage( std::string("Unknown plugin: ")+name); @@ -146,10 +153,29 @@ } } +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; + } }