printenv.lua revision 1.1 1 1.1 mbalmer -- this small Lua script demonstrates the use of Lua in (bozo)httpd
2 1.1 mbalmer -- it will simply output the "environment"
3 1.1 mbalmer
4 1.1 mbalmer -- Keep in mind that bozohttpd forks for each request when started in
5 1.1 mbalmer -- daemon mode, you can set global veriables here, but they will have
6 1.1 mbalmer -- the same value on each invocation. You can not keep state between
7 1.1 mbalmer -- two calls.
8 1.1 mbalmer
9 1.1 mbalmer local httpd = require 'httpd'
10 1.1 mbalmer
11 1.1 mbalmer function printenv(env, headers, query)
12 1.1 mbalmer
13 1.1 mbalmer -- we get the "environment" in the env table, the values are more
14 1.1 mbalmer -- or less the same as the variable for a CGI program
15 1.1 mbalmer
16 1.1 mbalmer if count == nil then
17 1.1 mbalmer count = 1
18 1.1 mbalmer end
19 1.1 mbalmer
20 1.1 mbalmer -- output a header
21 1.1 mbalmer print([[
22 1.1 mbalmer <html>
23 1.1 mbalmer <head>
24 1.1 mbalmer <title>Bozotic Lua Environment</title>
25 1.1 mbalmer </head>
26 1.1 mbalmer <body>
27 1.1 mbalmer <h1>Bozotic Lua Environment</h1>
28 1.1 mbalmer ]])
29 1.1 mbalmer
30 1.1 mbalmer print('module version: ' .. httpd._VERSION .. '<br>')
31 1.1 mbalmer
32 1.1 mbalmer print('<h2>Server Environment</h2>')
33 1.1 mbalmer -- print the list of "environment" variables
34 1.1 mbalmer for k, v in pairs(env) do
35 1.1 mbalmer print(k .. '=' .. v .. '<br/>')
36 1.1 mbalmer end
37 1.1 mbalmer
38 1.1 mbalmer print('<h2>Request Headers</h2>')
39 1.1 mbalmer for k, v in pairs(headers) do
40 1.1 mbalmer print(k .. '=' .. v .. '<br/>')
41 1.1 mbalmer end
42 1.1 mbalmer
43 1.1 mbalmer if query ~= nil then
44 1.1 mbalmer print('<h2>Query Variables</h2>')
45 1.1 mbalmer for k, v in pairs(query) do
46 1.1 mbalmer print(k .. '=' .. v .. '<br/>')
47 1.1 mbalmer end
48 1.1 mbalmer end
49 1.1 mbalmer
50 1.1 mbalmer print('<h2>Form Test</h2>')
51 1.1 mbalmer
52 1.1 mbalmer print([[
53 1.1 mbalmer <form method="POST" action="/rest/form?sender=me">
54 1.1 mbalmer <input type="text" name="a_value">
55 1.1 mbalmer <input type="submit">
56 1.1 mbalmer </form>
57 1.1 mbalmer ]])
58 1.1 mbalmer -- output a footer
59 1.1 mbalmer print([[
60 1.1 mbalmer </body>
61 1.1 mbalmer </html>
62 1.1 mbalmer ]])
63 1.1 mbalmer end
64 1.1 mbalmer
65 1.1 mbalmer function form(env, header, query)
66 1.1 mbalmer if query ~= nil then
67 1.1 mbalmer print('<h2>Form Variables</h2>')
68 1.1 mbalmer
69 1.1 mbalmer if env.CONTENT_TYPE ~= nil then
70 1.1 mbalmer print('Content-type: ' .. env.CONTENT_TYPE .. '<br>')
71 1.1 mbalmer end
72 1.1 mbalmer
73 1.1 mbalmer for k, v in pairs(query) do
74 1.1 mbalmer print(k .. '=' .. v .. '<br/>')
75 1.1 mbalmer end
76 1.1 mbalmer else
77 1.1 mbalmer print('No values')
78 1.1 mbalmer end
79 1.1 mbalmer end
80 1.1 mbalmer
81 1.1 mbalmer -- register this handler for http://<hostname>/<prefix>/printenv
82 1.1 mbalmer httpd.register_handler('printenv', printenv)
83 1.1 mbalmer httpd.register_handler('form', form)
84