-- /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