#include "PluginManager.h" #include "common.h" #include "plugins/EchoPlugin.h" #include "plugins/SpamPlugin.h" #include "plugins/ShellExecPlugin.h" #include "plugins/TogPlugin.h" #include "plugins/StatusPlugin.h" #include "plugins/ListPlugin.h" typedef std::map::iterator MapIterator; PluginManager::PluginManager() { } PluginManager::~PluginManager() { } void PluginManager::AddPlugin(Plugin* plugin) { Common* cmn = Common::instance(); if (plugin != 0) { std::string command = plugin->GetCommand(); if ( _plugins[ command ] == 0) _plugins[ command ] = plugin; else cmn->logMessage( std::string("AddPlugin() -- already have a plugin called ") + command); } else { cmn->logMessage("AddPlugin() -- cannot register a null pointer"); } } void PluginManager::LoadPlugins() { Common* cmn = Common::instance(); static EchoPlugin echo; static SpamPlugin spam; static ShellExecPlugin wake("wake", "/home/torben/bin/wake", false, false); static ShellExecPlugin ping("ping", "nmap -sP 192.168.10.1-255 | grep appears | awk '{print $2}'", false,true); static TogPlugin tog; static StatusPlugin status; static ListPlugin list; for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it) { Plugin* pl = (*it).second; if (pl != 0) cmn->logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() ); } } Plugin* PluginManager::GetPlugin(const std::string& pluginname) { return _plugins[ pluginname ]; } std::vector PluginManager::GetPluginList() { typedef std::map::iterator MapIterator; std::vector plugin_list; for (MapIterator it = _plugins.begin(); it != _plugins.end(); ++it) { Plugin* pl = (*it).second; plugin_list.push_back(pl); } return plugin_list; }