/[projects]/smsdaemon/embedded-http/embeddedhttp.cpp
ViewVC logotype

Contents of /smsdaemon/embedded-http/embeddedhttp.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 684 - (show annotations) (download)
Wed Apr 28 09:01:09 2010 UTC (14 years ago) by torben
File size: 2547 byte(s)
added 404 handler
1
2 #include "embeddedhttp.h"
3
4 #include <stdio.h>
5 #include "mongoose.h"
6
7 #include "Logger.h"
8 #include "version.h"
9 #include "Common.h"
10 #include "ConfigFile.h"
11 #include <sstream>
12 #include <iomanip>
13 #include <stdlib.h>
14
15 void show_secret(struct mg_connection *conn, const struct mg_request_info *request_info, void *user_data) {
16 Common* cmn = Common::instance();
17
18
19 int tot_sec = time(0) - cmn->daemonStart;
20
21 int sec = tot_sec % 60;
22 int min = (tot_sec / 60) % 60;
23 int hour = (tot_sec / 3600) %24;
24 int days = tot_sec / (3600*24);
25
26 std::ostringstream os;
27 os << VERSION << std::endl;
28 os << SVNVERSION << std::endl;
29 os << "Status:" << std::endl;
30 os << "Recv: " << cmn->smsCounter.incomming << std::endl;
31 os << "Send: " << cmn->smsCounter.outgoing << std::endl;
32 os << "Uptime: " << days << "d, ";
33 os << std::setw(2) << std::setfill('0') << hour << ":";
34 os << std::setw(2) << min << ":" ;
35 os << std::setw(2) << sec;
36
37 mg_printf(conn, "%s", "HTTP/1.1 200 OK\r\n");
38 mg_printf(conn, "%s", "Content-Type: text/plain\r\n\r\n");
39
40 mg_printf(conn, "%s", os.str().c_str() );
41 }
42
43 void show_index(struct mg_connection *conn, const struct mg_request_info *request_info, void *user_data) {
44 mg_printf(conn, "%s", "HTTP/1.1 200 OK\r\n");
45 mg_printf(conn, "%s", "Content-Type: text/html\r\n\r\n");
46
47 mg_printf(conn, "%s", "<html><body><h2>smsdaemon</h2>\n");
48 mg_printf(conn, "%s", "<a href='/status'>smsdaemon status</a>\n");
49 mg_printf(conn, "%s", "</body></html>");
50 }
51
52 static void show_404(struct mg_connection *conn, const struct mg_request_info *request_info, void *user_data)
53 {
54 mg_printf(conn, "%s", "HTTP/1.1 200 OK\r\n");
55 mg_printf(conn, "%s", "Content-Type: text/plain\r\n\r\n");
56 mg_printf(conn, "%s", "Oops. File not found! ");
57 }
58
59
60 void EmbeddedHttp::startServer() {
61 std::string portStr = Common::instance()->GetConfigfile()->GetValue("smsdaemon", "httpport");
62 int port = atoi( portStr.c_str() );
63
64 if (port > 0) {
65 std::ostringstream oss;
66 oss << "Starting mongoose embedded http engine (listenin on port " << port << ")";
67 Logger::logMessage( oss.str() );
68
69 oss.str(""); //empty string stream
70 oss << port;
71
72 m_context = mg_start();
73 mg_set_option(m_context, "ports", oss.str().c_str() );
74 mg_set_uri_callback(m_context, "/", &show_index, 0);
75 mg_set_uri_callback(m_context, "/status", &show_secret, 0);
76 mg_set_error_callback(m_context, 404, show_404, NULL);
77
78
79 } else {
80 Logger::logMessage( "Mongoose http disabled" );
81 m_context = 0;
82 }
83 }
84
85
86 void EmbeddedHttp::stopServer() {
87 if (m_context != 0) {
88 mg_stop(m_context);
89 }
90 }

  ViewVC Help
Powered by ViewVC 1.1.20