#include "PluginManager.h" #include "Logger.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" #include "plugins/HostStatusPlugin.h" typedef std::map::iterator MapIterator; PluginManager::PluginManager() { } PluginManager::~PluginManager() { } void PluginManager::AddPlugin(Plugin* plugin) { if (plugin != 0) { if (plugin->IsHelper()) { _helper_plugins.push_back(plugin); } else { std::string command = plugin->GetCommand(); if ( _plugins[ command ] == 0) _plugins[ command ] = plugin; else Logger::logMessage( std::string("AddPlugin() -- already have a plugin called ") + command); } } else { Logger::logMessage("AddPlugin() -- cannot register a null pointer"); } } void PluginManager::LoadPlugins() { 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; static HostStatusPlugin hoststatus; for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it) { Plugin* pl = (*it).second; if (pl != 0) Logger::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; }