23 #include "plugins_processor.h"
24 #include <webview/page_reply.h>
25 #include <webview/redirect_reply.h>
27 #include <plugin/manager.h>
33 using namespace fawkes;
48 __baseurl = strdup(baseurl);
49 __baseurl_len = strlen(__baseurl);
65 const char *upload_data,
66 size_t *upload_data_size,
69 if ( strncmp(__baseurl, url, __baseurl_len) == 0 ) {
71 std::string subpath = std::string(url).substr(__baseurl_len);
73 if (subpath.find(
"/load/") == 0) {
74 std::string plugin_name = subpath.substr(std::string(
"/load/").length());
76 __manager->load(plugin_name.c_str());
80 r->
append_body(
"<h1>Loading plugin '%s' failed</h1>", plugin_name.c_str());
81 *r +=
"<p>The encountered error was:</p>";
83 *r += std::string(*i) +
"<br/>\n";
85 r->
append_body(
"<p><a href=\"%s\">Back to overview</a> - "
86 "<a href=\"%s\">Retry</a></p>", __baseurl, url);
89 }
else if (subpath.find(
"/unload/") == 0) {
90 std::string plugin_name = subpath.substr(std::string(
"/unload/").length());
92 __manager->unload(plugin_name.c_str());
96 r->
append_body(
"<h1>Unloading plugin '%s' failed</h1>",
98 *r +=
"<p>The encountered error was:</p>";
100 *r += std::string(*i) +
"<br/>\n";
102 r->
append_body(
"<p><a href=\"%s\">Back to overview</a> - "
103 "<a href=\"%s\">Retry</a></p>", __baseurl, url);
108 *r +=
"<h2>Fawkes Plugins</h2>\n";
111 *r +=
"<tr><th>Name</th><th>Description</th><th>Loaded</th><th>Action</th></tr>\n";
113 std::list<std::pair<std::string, std::string> > available_plugins;
114 std::list<std::pair<std::string, std::string> >::iterator i;
116 available_plugins = __manager->get_available_plugins();
118 for (i = available_plugins.begin(); i != available_plugins.end(); ++i) {
119 bool is_loaded = __manager->is_loaded(i->first.c_str());
121 const char *loaded_color = is_loaded ?
"green" :
"red";
122 const char *loaded = is_loaded ?
"Yes" :
"No";
123 const char *action_link = is_loaded ?
"unload" :
"load";
126 "<td><span style=\"color:%s\">%s<span></td>"
127 "<td><a href=\"%s/%s/%s\">%s</a></td>\n",
128 i->first.c_str(), i->second.c_str(), loaded_color, loaded,
129 __baseurl, action_link, i->first.c_str(), action_link);
WebviewPluginsRequestProcessor(const char *baseurl, fawkes::PluginManager *manager)
Constructor.
Message iterator for exceptions.
virtual fawkes::WebReply * process_request(const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **session_data)
Process a request.
iterator end()
Get end iterator for messages.
Base class for exceptions in Fawkes.
iterator begin()
Get iterator for messages.
void append_body(const char *format,...)
Append to body.
virtual ~WebviewPluginsRequestProcessor()
Destructor.
Redirect reply for webview.