1 |
// Host Status
|
2 |
//
|
3 |
// Douglas Thrift
|
4 |
//
|
5 |
// $Id$
|
6 |
|
7 |
#ifndef _HostStatus_hpp_
|
8 |
#define _HostStatus_hpp_
|
9 |
|
10 |
#define _BSD_SOURCE
|
11 |
|
12 |
#include <iostream>
|
13 |
#include <string>
|
14 |
#include <sstream>
|
15 |
#include <list>
|
16 |
#include <set>
|
17 |
#include <map>
|
18 |
#include <cstdlib>
|
19 |
#include <ctime>
|
20 |
|
21 |
#include <pstream.h>
|
22 |
|
23 |
using namespace std;
|
24 |
using namespace redi;
|
25 |
|
26 |
inline string sgetenv(const string& name)
|
27 |
{
|
28 |
char* value = getenv(name.c_str());
|
29 |
|
30 |
return value != NULL ? value : "";
|
31 |
}
|
32 |
|
33 |
inline int sputenv(const string& name)
|
34 |
{
|
35 |
char* value = new char[name.size() + 1];
|
36 |
|
37 |
sprintf(value, name.c_str());
|
38 |
|
39 |
int code = putenv(value);
|
40 |
|
41 |
return code;
|
42 |
}
|
43 |
|
44 |
inline void sunsetenv(const string& name) { unsetenv(name.c_str()); }
|
45 |
|
46 |
#ifdef __CYGWIN__
|
47 |
|
48 |
inline time_t timegm(struct tm* time)
|
49 |
{
|
50 |
string zone = sgetenv("TZ");
|
51 |
|
52 |
sputenv("TZ=");
|
53 |
tzset();
|
54 |
|
55 |
time_t when = mktime(time);
|
56 |
|
57 |
sputenv("TZ=" + zone);
|
58 |
tzset();
|
59 |
|
60 |
return when;
|
61 |
}
|
62 |
|
63 |
#endif
|
64 |
|
65 |
class HostStatus
|
66 |
{
|
67 |
private:
|
68 |
multimap<string, string> cgi;
|
69 |
bool page;
|
70 |
bool host;
|
71 |
bool name;
|
72 |
bool address;
|
73 |
bool platform;
|
74 |
bool since;
|
75 |
void parse(const string& method);
|
76 |
void mode();
|
77 |
void display(const string& method);
|
78 |
void header(const string& method);
|
79 |
void footer();
|
80 |
public:
|
81 |
HostStatus();
|
82 |
~HostStatus() {}
|
83 |
};
|
84 |
|
85 |
#endif // _HostStatus_hpp_
|