--- smsdaemon/PluginManager.cpp 2008/12/21 18:41:08 208 +++ smsdaemon/PluginManager.cpp 2008/12/23 14:20:43 217 @@ -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; + + Plugin* pl = _plugins[ pluginname ]; + + if (pl) + { + proxy.SetPlugin(pl); + return &proxy; + } + else + { + return 0; + } }