Return to printenv.lua CVS log | Up to [cvs.NetBSD.org] / src / libexec / httpd |
File: [cvs.NetBSD.org] / src / libexec / httpd / printenv.lua (download)
Revision 1.2.18.1, Sun Apr 10 10:33:11 2016 UTC (7 years, 11 months ago) by martin
Catch up to -current (via patch), requested by mspo in #1141: libexec/httpd/CHANGES up to 1.21 libexec/httpd/Makefile up to 1.26 libexec/httpd/auth-bozo.c up to 1.18 libexec/httpd/bozohttpd.8 up to 1.58 libexec/httpd/bozohttpd.c up to 1.79 libexec/httpd/bozohttpd.h up to 1.44 libexec/httpd/cgi-bozo.c up to 1.32 libexec/httpd/content-bozo.c up to 1.13 libexec/httpd/daemon-bozo.c up to 1.17 libexec/httpd/dir-index-bozo.c up to 1.25 libexec/httpd/lua-bozo.c up to 1.14 libexec/httpd/main.c up to 1.13 libexec/httpd/netbsd_queue.h up to 1.1 libexec/httpd/printenv.lua up to 1.3 libexec/httpd/ssl-bozo.c up to 1.22 libexec/httpd/tilde-luzah-bozo.c up to 1.14 libexec/httpd/testsuite/Makefile up to 1.5 libexec/httpd/testsuite/test-bigfile up to 1.2 Import bozohttpd 20151028: o add CGI support for ~user translation (-E switch) o add redirects to ~user translation o fix bugs around ~user translation o add schema detection for absolute redirects o fixed few memory leaks o bunch of minor tweaks o removed -r support o smarter redirects Changes in 20150320: o fix redirection handling o support transport stream (.ts) and video object (.vob) files o directory listings show correct file sizes for large files |
-- $NetBSD: printenv.lua,v 1.2.18.1 2016/04/10 10:33:11 martin Exp $ -- this small Lua script demonstrates the use of Lua in (bozo)httpd -- it will simply output the "environment" -- Keep in mind that bozohttpd forks for each request when started in -- daemon mode, you can set global veriables here, but they will have -- the same value on each invocation. You can not keep state between -- two calls. -- You can test this example by running the following command: -- /usr/libexec/httpd -b -f -I 8080 -L test printenv.lua . -- and then navigate to: http://127.0.0.1:8080/test/printenv local httpd = require 'httpd' function printenv(env, headers, query) -- we get the "environment" in the env table, the values are more -- or less the same as the variable for a CGI program -- output headers using httpd.write() -- httpd.write() will not append newlines httpd.write("HTTP/1.1 200 Ok\r\n") httpd.write("Content-Type: text/html\r\n\r\n") -- output html using httpd.print() -- you can also use print() and io.write() but they will not work with SSL httpd.print([[ <html> <head> <title>Bozotic Lua Environment</title> </head> <body> <h1>Bozotic Lua Environment</h1> ]]) httpd.print('module version: ' .. httpd._VERSION .. '<br>') httpd.print('<h2>Server Environment</h2>') -- print the list of "environment" variables for k, v in pairs(env) do httpd.print(k .. '=' .. v .. '<br/>') end httpd.print('<h2>Request Headers</h2>') for k, v in pairs(headers) do httpd.print(k .. '=' .. v .. '<br/>') end if query ~= nil then httpd.print('<h2>Query Variables</h2>') for k, v in pairs(query) do httpd.print(k .. '=' .. v .. '<br/>') end end httpd.print('<h2>Form Test</h2>') httpd.print([[ <form method="POST" action="form?sender=me"> <input type="text" name="a_value"> <input type="submit"> </form> ]]) -- output a footer httpd.print([[ </body> </html> ]]) end function form(env, header, query) httpd.write("HTTP/1.1 200 Ok\r\n") httpd.write("Content-Type: text/html\r\n\r\n") if query ~= nil then httpd.print('<h2>Form Variables</h2>') if env.CONTENT_TYPE ~= nil then httpd.print('Content-type: ' .. env.CONTENT_TYPE .. '<br>') end for k, v in pairs(query) do httpd.print(k .. '=' .. v .. '<br/>') end else httpd.print('No values') end end -- register this handler for http://<hostname>/<prefix>/printenv httpd.register_handler('printenv', printenv) httpd.register_handler('form', form)