23 #include "plugins_processor.h" 24 #include <webview/page_reply.h> 25 #include <webview/redirect_reply.h> 27 #include <plugin/manager.h> 48 __baseurl = strdup(baseurl);
49 __baseurl_len = strlen(__baseurl);
64 if ( strncmp(__baseurl, request->
url().c_str(), __baseurl_len) == 0 ) {
66 std::string subpath = request->
url().substr(__baseurl_len);
68 if (subpath.find(
"/load/") == 0) {
69 std::string plugin_name = subpath.substr(std::string(
"/load/").length());
71 __manager->load(plugin_name.c_str());
75 r->
append_body(
"<h1>Loading plugin '%s' failed</h1>", plugin_name.c_str());
76 *r +=
"<p>The encountered error was:</p>";
78 *r += std::string(*i) +
"<br/>\n";
80 r->
append_body(
"<p><a href=\"%s\">Back to overview</a> - " 81 "<a href=\"%s\">Retry</a></p>", __baseurl, request->
url().c_str());
84 }
else if (subpath.find(
"/unload/") == 0) {
85 std::string plugin_name = subpath.substr(std::string(
"/unload/").length());
87 __manager->unload(plugin_name.c_str());
91 r->
append_body(
"<h1>Unloading plugin '%s' failed</h1>",
93 *r +=
"<p>The encountered error was:</p>";
95 *r += std::string(*i) +
"<br/>\n";
97 r->
append_body(
"<p><a href=\"%s\">Back to overview</a> - " 98 "<a href=\"%s\">Retry</a></p>", __baseurl, request->
url().c_str());
103 *r +=
"<h2>Fawkes Plugins</h2>\n";
106 "<style type=\"text/css\">\n" 107 " tr:hover { background-color: #eeeeee; }\n" 108 " :link:hover, :visited:hover { background-color: #bb0000; color: white; }\n" 112 *r +=
"<tr><th>Name</th><th>Description</th><th>Loaded</th><th>Action</th></tr>\n";
114 std::list<std::pair<std::string, std::string> > available_plugins;
115 std::list<std::pair<std::string, std::string> >::iterator i;
117 available_plugins = __manager->get_available_plugins();
119 for (i = available_plugins.begin(); i != available_plugins.end(); ++i) {
120 bool is_loaded = __manager->is_loaded(i->first.c_str());
122 const char *loaded_color = is_loaded ?
"green" :
"red";
123 const char *loaded = is_loaded ?
"Yes" :
"No";
124 const char *action_link = is_loaded ?
"unload" :
"load";
127 "<td><span style=\"color:%s\">%s<span></td>" 128 "<td><a href=\"%s/%s/%s\">%s</a></td>\n",
129 i->first.c_str(), i->second.c_str(), loaded_color, loaded,
130 __baseurl, action_link, i->first.c_str(), action_link);
Fawkes library namespace.
WebviewPluginsRequestProcessor(const char *baseurl, fawkes::PluginManager *manager)
Constructor.
Message iterator for exceptions.
iterator end()
Get end iterator for messages.
Base class for exceptions in Fawkes.
virtual fawkes::WebReply * process_request(const fawkes::WebRequest *request)
Process a request.
iterator begin()
Get iterator for messages.
Web request meta data carrier.
void append_body(const char *format,...)
Append to body.
const std::string & url() const
Get URL.
virtual ~WebviewPluginsRequestProcessor()
Destructor.
Redirect reply for webview.