ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/HostUpdate/HostUpdate.cpp
(Generate patch)

Comparing HostUpdate/HostUpdate.cpp (file contents):
Revision 1 by Douglas Thrift, 2003-11-05T17:58:20-08:00 vs.
Revision 14 by Douglas Thrift, 2003-11-07T23:04:39-08:00

# Line 1 | Line 1
1 < // Host Update
2 < //
3 < // Douglas Thrift
4 < //
5 < // $Id$
6 <
7 < #include "HostUpdate.hpp"
8 <
9 < int main(int argc, char* argv[])
10 < {
11 <        HostUpdate update;
12 <
13 <        return 0;
14 < }
15 <
16 < HostUpdate::HostUpdate()
17 < {
18 <        CgiEnvironment env = cgi.getEnvironment();
19 <
20 <        cout << "Location: " << (env.usingHTTPS() ? "https" : "http") << "://"
21 <                << env.getServerName() << ":" << env.getServerPort() << "/\n\n";
22 <
23 <        form_iterator itor = cgi["host"];
24 <        FormEntry host = *itor;
25 < }
26 <
27 < HostUpdate::~HostUpdate()
28 < {
29 < }
1 > // Host Update
2 > //
3 > // Douglas Thrift
4 > //
5 > // $Id$
6 >
7 > #include "HostUpdate.hpp"
8 > #include "Host.hpp"
9 >
10 > int main(int argc, char* argv[])
11 > {
12 >        HostUpdate update;
13 >
14 >        return 0;
15 > }
16 >
17 > HostUpdate::HostUpdate()
18 > {
19 >        struct stat* hosts = new struct stat;
20 >
21 >        if (stat("hosts", hosts) != 0)
22 >        {
23 >                mkdir("hosts");
24 >        }
25 >
26 >        delete [] hosts;
27 >
28 >        chdir("hosts");
29 >
30 >        CgiEnvironment env = cgi.getEnvironment();
31 >
32 >        string agent = env.getUserAgent();
33 >        string method = env.getRequestMethod();
34 >
35 >        if (agent.find("Host Update/") == 0 && method == "POST" && agent.find(" (")
36 >                != string::npos && agent.find(") libwww-perl/") != string::npos)
37 >        {
38 >                update(env, agent);
39 >        }
40 >        else
41 >        {
42 >                display(env);
43 >        }
44 > }
45 >
46 > HostUpdate::~HostUpdate()
47 > {
48 >        //
49 > }
50 >
51 > void HostUpdate::update(CgiEnvironment& env, const string& agent)
52 > {
53 >        cout << "Content-Type: text/plain\n\n";
54 >
55 >        vector<FormEntry> entries;
56 >
57 >        if (!cgi.getElement("host", entries)) return;
58 >        if (entries[0].isEmpty()) return;
59 >
60 >        string host = entries[0].getStrippedValue(), name = env.getRemoteHost(),
61 >                address = env.getRemoteAddr();
62 >
63 >        if (name == address) name = "";
64 >
65 >        string::size_type begin = agent.find('(') + 1, end = agent.find(')',
66 >                begin);
67 >        string platform = agent.substr(begin, end - begin);
68 >
69 >        cout << "host=" << host << '\n'
70 >                << "name=" << name << '\n'
71 >                << "address=" << address << '\n'
72 >                << "platform=" << platform << '\n';
73 >
74 >        Host client(host, name, address, platform), saved(host);
75 >
76 >        if (client != ++saved) client--;
77 > }
78 >
79 > void HostUpdate::display(CgiEnvironment& env)
80 > {
81 >        cout << "Content-Type: text/plain\n\n";
82 >
83 >        set<Host> hosts;
84 >        DIR* dir = opendir(".");
85 >        struct dirent* ent;
86 >
87 >        while ((ent = readdir(dir)) != NULL)
88 >        {
89 >                string file = ent->d_name;
90 >
91 >                cerr << file << '\n';
92 >
93 >                if (file == "." || file == "..") continue;
94 >                
95 >                Host host(file);
96 >
97 >                hosts.insert(++host);
98 >        }
99 >        
100 >        closedir(dir);
101 >
102 >        for (set<Host>::iterator itor = hosts.begin(); itor != hosts.end(); itor++)
103 >        {
104 >                Host host = *itor;
105 >
106 >                cout << "host=" << host.getHost() << '\n'
107 >                        << "name=" << host.getName() << '\n'
108 >                        << "address=" << host.getAddress() << '\n'
109 >                        << "platform=" << host.getPlatform() << "\n\n";
110 >        }
111 > }

Comparing HostUpdate/HostUpdate.cpp (property svn:eol-style):
Revision 1 by Douglas Thrift, 2003-11-05T17:58:20-08:00 vs.
Revision 14 by Douglas Thrift, 2003-11-07T23:04:39-08:00

# Line 0 | Line 1
1 + native

Comparing HostUpdate/HostUpdate.cpp (property svn:keywords):
Revision 1 by Douglas Thrift, 2003-11-05T17:58:20-08:00 vs.
Revision 14 by Douglas Thrift, 2003-11-07T23:04:39-08:00

# Line 0 | Line 1
1 + Id

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines