diff options
Diffstat (limited to 'applications/sgi-webuci')
-rw-r--r-- | applications/sgi-webuci/Makefile | 2 | ||||
-rw-r--r-- | applications/sgi-webuci/root/lib/webuci/main.lua | 23 | ||||
-rw-r--r-- | applications/sgi-webuci/src/sgi/webuci.lua | 83 |
3 files changed, 108 insertions, 0 deletions
diff --git a/applications/sgi-webuci/Makefile b/applications/sgi-webuci/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/applications/sgi-webuci/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk
\ No newline at end of file diff --git a/applications/sgi-webuci/root/lib/webuci/main.lua b/applications/sgi-webuci/root/lib/webuci/main.lua new file mode 100644 index 000000000..50ac8184b --- /dev/null +++ b/applications/sgi-webuci/root/lib/webuci/main.lua @@ -0,0 +1,23 @@ +package.path = "/usr/lib/lua/?.lua;/usr/lib/lua/?/init.lua;" .. package.path +package.cpath = "/usr/lib/lua/?.so;" .. package.cpath +module("webuci", package.seeall) + +function prepare_req(uri) + env = {} + env.REQUEST_URI = uri + require("ffluci.menu").get() +end + +function init_req(context) + env.SERVER_PROTOCOL = context.server_proto + env.REMOTE_ADDR = context.remote_addr + env.REQUEST_METHOD = context.request_method + env.PATH_INFO = "/" .. context.uri + env.REMOTE_PORT = context.remote_port + env.SERVER_ADDR = context.server_addr + env.SCRIPT_NAME = env.REQUEST_URI:sub(1, #env.REQUEST_URI - #env.PATH_INFO) +end + +function handle_req(context) + require("ffluci.dispatcher").httpdispatch() +end
\ No newline at end of file diff --git a/applications/sgi-webuci/src/sgi/webuci.lua b/applications/sgi-webuci/src/sgi/webuci.lua new file mode 100644 index 000000000..bc1c7be7a --- /dev/null +++ b/applications/sgi-webuci/src/sgi/webuci.lua @@ -0,0 +1,83 @@ +--[[ +FFLuCI - SGI-Module for Haserl + +Description: +Server Gateway Interface for Haserl + +FileId: +$Id: webuci.lua 2027 2008-05-07 21:16:35Z Cyrus $ + +License: +Copyright 2008 Steven Barth <steven@midlink.org> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +]]-- +module("ffluci.sgi.webuci", package.seeall) + +-- Environment Table +ffluci.http.env = webuci.env + + +local status_set = false + +-- Returns a table of all COOKIE, GET and POST Parameters +function ffluci.http.formvalues() + return webuci.vars +end + +-- Gets form value from key +function ffluci.http.formvalue(key, default) + return ffluci.http.formvalues()[key] or default +end + +-- Gets a table of values with a certain prefix +function ffluci.http.formvaluetable(prefix) + local vals = {} + prefix = prefix and prefix .. "." or "." + + for k, v in pairs(ffluci.http.formvalues()) do + if k:find(prefix, 1, true) == 1 then + vals[k:sub(#prefix + 1)] = v + end + end + + return vals +end + +-- Sends a custom HTTP-Header +function ffluci.http.header(key, value) + print(key .. ": " .. value) +end + +-- Set Content-Type +function ffluci.http.prepare_content(type) + if not status_set then + ffluci.http.status(200, "OK") + end + + print("Content-Type: "..type.."\n") +end + +-- Asks the browser to redirect to "url" +function ffluci.http.redirect(url) + ffluci.http.status(302, "Found") + ffluci.http.header("Location", url) + print() +end + +-- Sets HTTP-Status-Header +function ffluci.http.status(code, message) + print(webuci.env.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message) + status_set = true +end |