1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
mg.write("HTTP/1.0 200 OK\r\n")
mg.write("Content-Type: text/html\r\n")
mg.write("\r\n")
mg.write([[<html><body>
<p>This is another example of a Lua server page, served by
<a href="https://github.com/civetweb/civetweb">CivetWeb web server</a>.
</p><p>
The following features are available:
<ul>
]])
function print_if_available(tab, name)
if tab then
mg.write("<li>" .. name .. "</li>\n")
end
end
function recurse(tab, excl)
excl = excl or {}
mg.write("<ul>\n")
for k,v in pairs(tab) do
if type(v) == "table" then
mg.write("<li>" .. tostring(k) .. ":</li>\n")
if excl[v] then
-- cyclic
else
excl[v] = true
recurse(v, excl)
excl[v] = false
end
else
mg.write("<li>" .. tostring(k) .. " = " .. tostring(v) .. "</li>\n")
end
end
mg.write("</ul>\n")
end
-- Print Lua version and available libraries
mg.write("<li>" .. _VERSION .. " with the following standard libraries</li>\n")
mg.write("<ul>\n")
libs = {"string", "math", "table", "io", "os", "bit32", "utf8", "package", "coroutine", "debug"};
for _,n in ipairs(libs) do
print_if_available(_G[n], n);
end
mg.write("</ul>\n")
print_if_available(sqlite3, "sqlite3 binding")
print_if_available(lfs, "lua file system")
--recurse(_G)
-- Print mg library
libname = "mg"
print_if_available(_G[libname], libname .. " library")
recurse(_G[libname])
-- Print connect function
print_if_available(connect, "connect function")
-- Get all server options
mg.write("<li>server options</li>\n")
recurse(mg.get_option())
mg.write("</ul></p>\n");
mg.write("<p> Today is " .. os.date("%A") .. "</p>\n");
l = mg.request_info.content_length
if l then
mg.write("<p>Content-Length = "..l..":<br>\n<pre>\n")
mg.write(mg.read())
mg.write("\n</pre>\n</p>\n")
end
mg.write("<p>\n");
if lfs then
mg.write("Files in " .. lfs.currentdir())
mg.write("\n<ul>\n")
for f in lfs.dir(".") do
local mime = mg.get_mime_type(f)
mg.write("<li>" .. f .. " (" .. mime .. ")</li>\n")
local at = lfs.attributes(f);
recurse(at)
end
mg.write("</ul>\n")
end
mg.write([[
</p>
</body></html>
]])
|