startpage_processor.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "startpage_processor.h"
00024 #include <webview/page_reply.h>
00025
00026 #include <utils/logging/cache.h>
00027
00028 #include <string>
00029 #include <cstring>
00030 #include <cstdlib>
00031
00032 using namespace fawkes;
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 WebviewStartPageRequestProcessor::WebviewStartPageRequestProcessor(CacheLogger *cache_logger)
00043 {
00044 __cache_logger = cache_logger;
00045 }
00046
00047
00048
00049 WebviewStartPageRequestProcessor::~WebviewStartPageRequestProcessor()
00050 {
00051 }
00052
00053
00054 WebReply *
00055 WebviewStartPageRequestProcessor::process_request(const char *url,
00056 const char *method,
00057 const char *version,
00058 const char *upload_data,
00059 size_t *upload_data_size,
00060 void **session_data)
00061 {
00062 if ( strncmp("/", url, 1) == 0 ) {
00063
00064 WebPageReply *r = new WebPageReply("Fawkes", "<h1>Welcome to Fawkes.</h1>\n");
00065
00066 std::list<CacheLogger::CacheEntry> & messages = __cache_logger->get_messages();
00067 std::list<CacheLogger::CacheEntry>::reverse_iterator i;
00068
00069 *r += "<h2>Latest log messages</h2>\n";
00070 *r += "<table>\n";
00071 for (i = messages.rbegin(); i != messages.rend(); ++i) {
00072 CacheLogger::CacheEntry &e = *i;
00073 const char *color = NULL;
00074 switch (e.log_level) {
00075 case Logger::LL_DEBUG: color = "#888888"; break;
00076 case Logger::LL_WARN: color = "orange"; break;
00077 case Logger::LL_ERROR: color = "red"; break;
00078 default: ;
00079 }
00080 if (color) {
00081 r->append_body("<tr><td>%s</td><td>%s</td><td><span style=\"color:%s\">%s</span></td></tr>\n",
00082 e.timestr.c_str(), e.component.c_str(), color, e.message.c_str());
00083 } else {
00084 r->append_body("<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n",
00085 e.timestr.c_str(), e.component.c_str(), e.message.c_str());
00086 }
00087 }
00088 *r += "</table>\n";
00089
00090 return r;
00091 } else {
00092 return NULL;
00093 }
00094 }