blob: 077a7e4a8dc03ae0f1e0644b02e0431d12089720 (
plain)
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
|
-- /var/www/cgi-bin/cgi.lua
-- Simple Lua CGI helper for GET and POST
local params = {}
-- Parse URL-encoded query string into a table
local function parse_query(qs)
local t = {}
for k, v in string.gmatch(qs or "", "([^&=]+)=([^&]*)") do
-- URL-decode
k = k:gsub("+", " "):gsub("%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
v = v:gsub("+", " "):gsub("%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
t[k] = v
end
return t
end
-- GET parameters
params.get_params = parse_query(os.getenv("QUERY_STRING"))
-- POST parameters
params.post_params = {}
local content_length = tonumber(os.getenv("CONTENT_LENGTH") or 0)
if content_length > 0 then
local body = io.read(content_length)
params.post_params = parse_query(body)
end
-- Convenience functions
function params.get(key) return params.get_params[key] end
function params.post(key) return params.post_params[key] end
-- Combine GET+POST if you want
function params.param(key)
return params.post(key) or params.get(key)
end
return params
|