Server Gateway Interface for Webuci
FileId:
-$Id: webuci.lua 2027 2008-05-07 21:16:35Z Cyrus $
+$Id$
License:
Copyright 2008 Steven Barth <steven@midlink.org>
]]--
module("luci.sgi.webuci", package.seeall)
+local ltn12 = require("luci.ltn12")
require("luci.http")
require("luci.util")
require("luci.dispatcher")
function run(env, vars)
- local r = luci.http.Request(env, nil, io.stderr)
- r.get = vars
- r.post = r.get
+ local r = luci.http.Request(
+ env,
+ ltn12.source.empty(),
+ ltn12.sink.file(io.stderr)
+ )
+
+ r.message.params = vars
local x = coroutine.create(luci.dispatcher.httpdispatch)
+ local status = ""
+ local headers = {}
+ local active = true
while coroutine.status(x) ~= "dead" do
local res, id, data1, data2 = coroutine.resume(x, r)
break;
end
- if id == 1 then
- io.write(env.SERVER_PROTOCOL .. " " .. tostring(data1) .. " " .. data2 .. "\n")
- elseif id == 2 then
- io.write(data1 .. ": " .. data2 .. "\n")
- elseif id == 3 then
- io.write("\n")
- elseif id == 4 then
- io.write(data1)
+ if active then
+ if id == 1 then
+ status = env.SERVER_PROTOCOL .. " " .. tostring(data1) .. " " .. data2 .. "\r\n"
+ elseif id == 2 then
+ headers[data1] = data2
+ elseif id == 3 then
+ io.write(status)
+ for k, v in pairs(headers) do
+ io.write(k .. ": " .. v .. "\r\n")
+ end
+ io.write("\r\n")
+ elseif id == 4 then
+ io.write(data1)
+ elseif id == 5 then
+ active = false
+ end
end
-
end
end