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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 686 - (show annotations) (download)
Wed Apr 28 09:23:07 2010 UTC (14 years ago) by torben
File size: 2697 byte(s)
disable normal file serving
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_status(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_option(m_context, "root", "/nosuchpatch"); //set root to non-existant path to disable normal file serving - only callbacks are now serviced
75
76 mg_set_uri_callback(m_context, "/", &show_index, 0);
77 mg_set_uri_callback(m_context, "/status", &show_status, 0);
78 mg_set_error_callback(m_context, 404, show_404, NULL);
79
80
81 } else {
82 Logger::logMessage( "Mongoose http disabled" );
83 m_context = 0;
84 }
85 }
86
87
88 void EmbeddedHttp::stopServer() {
89 if (m_context != 0) {
90 mg_stop(m_context);
91 }
92 }

  ViewVC Help
Powered by ViewVC 1.1.20