#include "embeddedhttp.h" #include #include "mongoose.h" #include "Logger.h" #include "version.h" #include "Common.h" #include "ConfigFile.h" #include #include #include void show_secret(struct mg_connection *conn, const struct mg_request_info *request_info, void *user_data) { Common* cmn = Common::instance(); int tot_sec = time(0) - cmn->daemonStart; int sec = tot_sec % 60; int min = (tot_sec / 60) % 60; int hour = (tot_sec / 3600) %24; int days = tot_sec / (3600*24); std::ostringstream os; os << VERSION << std::endl; os << SVNVERSION << std::endl; os << "Status:" << std::endl; os << "Recv: " << cmn->smsCounter.incomming << std::endl; os << "Send: " << cmn->smsCounter.outgoing << std::endl; os << "Uptime: " << days << "d, "; os << std::setw(2) << std::setfill('0') << hour << ":"; os << std::setw(2) << min << ":" ; os << std::setw(2) << sec; mg_printf(conn, "%s", "HTTP/1.1 200 OK\r\n"); mg_printf(conn, "%s", "Content-Type: text/plain\r\n\r\n"); mg_printf(conn, "%s", os.str().c_str() ); } void show_index(struct mg_connection *conn, const struct mg_request_info *request_info, void *user_data) { mg_printf(conn, "%s", "HTTP/1.1 200 OK\r\n"); mg_printf(conn, "%s", "Content-Type: text/html\r\n\r\n"); mg_printf(conn, "%s", "

smsdaemon

\n"); mg_printf(conn, "%s", "smsdaemon status\n"); mg_printf(conn, "%s", ""); } void EmbeddedHttp::startServer() { std::string portStr = Common::instance()->GetConfigfile()->GetValue("smsdaemon", "httpport"); int port = atoi( portStr.c_str() ); if (port > 0) { std::ostringstream oss; oss << "Starting mongoose embedded http engine (listenin on port " << port << ")"; Logger::logMessage( oss.str() ); oss.str(""); //empty string stream oss << port; m_context = mg_start(); mg_set_option(m_context, "ports", oss.str().c_str() ); mg_set_uri_callback(m_context, "/", &show_index, 0); mg_set_uri_callback(m_context, "/status", &show_secret, 0); } else { Logger::logMessage( "Mongoose http disabled" ); m_context = 0; } } void EmbeddedHttp::stopServer() { if (m_context != 0) { mg_stop(m_context); } }