* Last API changes before 0.4 API softfreeze
authorSteven Barth <steven@midlink.org>
Wed, 7 May 2008 20:23:42 +0000 (20:23 +0000)
committerSteven Barth <steven@midlink.org>
Wed, 7 May 2008 20:23:42 +0000 (20:23 +0000)
17 files changed:
core/contrib/webuci_bootstrap.lua
core/src/ffluci/dispatcher.lua
core/src/ffluci/fs.lua
core/src/ffluci/http.lua
core/src/ffluci/i18n.lua
core/src/ffluci/menu.lua
core/src/ffluci/sgi/haserl.lua
core/src/ffluci/sgi/webuci.lua
core/src/ffluci/template.lua
core/src/ffluci/util.lua
core/src/ffluci/view/cbi/header.htm
core/src/ffluci/view/error404.htm
core/src/ffluci/view/header.htm
module/admin-core/src/controller/splash/splash.lua
module/public-core/src/view/sudo_status/iwconfig.htm
module/public-core/src/view/sudo_status/iwscan.htm
module/rpc-core/src/controller/rpc/luciinfo.lua

index c8aa18ccafdbbc1b06a30db473ace4cdae87d5cd..9a2fafb0ef068b44e5990e4f4825ff2184aa49e9 100644 (file)
@@ -3,18 +3,19 @@ package.cpath = "/usr/lib/lua/?.so;" .. package.cpath
 module("webuci", package.seeall)
 
 function prepare_req(uri)
-       REQUEST_URI = uri
+       env = {}
+       env.REQUEST_URI = uri
        require("ffluci.menu").get()
 end
 
 function init_req(context)
-       SERVER_PROTOCOL = context.server_proto
-       REMOTE_ADDR     = context.remote_addr
-       REQUEST_METHOD  = context.request_method
-       PATH_INFO       = "/" .. context.uri
-       REMOTE_PORT     = context.remote_port
-       SERVER_ADDR     = context.server_addr
-       SCRIPT_NAME     = REQUEST_URI:sub(1, #REQUEST_URI - #PATH_INFO)
+       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     = REQUEST_URI:sub(1, #REQUEST_URI - #PATH_INFO)
 end
 
 function handle_req(context)
index 813e35d5906689c75c13628c790553b9f126ed1c..c60e5dcd175b42e5d2add0584ddbfdf77e8d3bda 100644 (file)
@@ -104,7 +104,7 @@ function build_url(category, module, action)
        module   = module   or "index"
        action   = action   or "index"
        
-       local pattern = ffluci.http.get_script_name() .. "/%s/%s/%s"
+       local pattern = ffluci.http.env.SCRIPT_NAME .. "/%s/%s/%s"
        return pattern:format(category, module, action)
 end
 
@@ -126,11 +126,11 @@ end
 
 -- Sends a 404 error code and renders the "error404" template if available
 function error404(message)
-       ffluci.http.set_status(404, "Not Found")
+       ffluci.http.status(404, "Not Found")
        message = message or "Not Found"
        
        if not pcall(ffluci.template.render, "error404") then
-               ffluci.http.set_content_type("text/plain")
+               ffluci.http.prepare_content("text/plain")
                print(message)
        end
        return false    
@@ -138,10 +138,10 @@ end
 
 -- Sends a 500 error code and renders the "error500" template if available
 function error500(message)
-       ffluci.http.set_status(500, "Internal Server Error")
+       ffluci.http.status(500, "Internal Server Error")
        
        if not pcall(ffluci.template.render, "error500", {message=message}) then
-               ffluci.http.set_content_type("text/plain")
+               ffluci.http.prepare_content("text/plain")
                print(message)
        end
        return false    
@@ -150,7 +150,7 @@ end
 
 -- Dispatches a request depending on the PATH_INFO variable
 function httpdispatch()
-       local pathinfo = ffluci.http.get_path_info() or ""
+       local pathinfo = ffluci.http.env.PATH_INFO or ""
        local parts = pathinfo:gmatch("/[%w-]+")
        
        local sanitize = function(s, default)
index 3eb562b80addf91226ef5eec09d7a4a5eb22a2d0..ffa4cb84fa9ff1b3aa208cd64c63fb696a2c4bc1 100644 (file)
@@ -53,26 +53,6 @@ function readfile(filename)
        return data     
 end
 
--- Returns the content of file as array of lines
-function readfilel(filename)
-       local fp, err = io.open(filename)
-       local line = ""
-       local data = {}
-               
-       if fp == nil then
-               return nil, err
-       end
-       
-       while true do
-               line = fp:read()
-               if (line == nil) then break end
-               table.insert(data, line)
-       end     
-       
-       fp:close()
-       return data     
-end
-
 -- Writes given data to a file
 function writefile(filename, data)
        local fp, err = io.open(filename, "w")
@@ -107,5 +87,8 @@ function dir(path)
        return dir
 end
 
--- Alias for lfs.mkdir
-mkdir = posix.mkdir
\ No newline at end of file
+-- Alias for posix.mkdir
+mkdir = posix.mkdir
+
+-- Alias for posix.rmdir
+rmdir = posix.rmdir
\ No newline at end of file
index f4ba5709468179aafd9d7f4445c6459bff2c03b5..eab12e8f837c292213500c2b18d7cc242cc25071 100644 (file)
@@ -33,4 +33,14 @@ if ENV and ENV.HASERLVER then
        require("ffluci.sgi.haserl")
 elseif webuci then
        require("ffluci.sgi.webuci")
+end
+
+-- Asks the browser to redirect to "url"
+function redirect(url, qs)
+       if qs then
+               url = url .. "?" .. qs
+       end
+       
+       ffluci.http.status(302, "Found")
+       print("Location: " .. url .. "\n")
 end
\ No newline at end of file
index 489308cc9e9c95fd888fec496df62ed465c76a38..88381dde7f691cecb4afb44b648167956f884ae9 100644 (file)
@@ -25,7 +25,6 @@ limitations under the License.
 ]]--
 
 module("ffluci.i18n", package.seeall)
-require("ffluci.config")
 require("ffluci.sys")
 
 table   = {}
@@ -50,7 +49,7 @@ end
 
 -- Same as load but autocompletes the filename with .LANG from config.lang
 function loadc(file)
-       return load(file .. "." .. ffluci.config.main.lang)
+       return load(file .. "." .. require("ffluci.config").main.lang)
 end
 
 -- Returns the i18n-value defined by "key" or if there is no such: "default"
index 5cbb725a42404bed414b99f95dcc7e8f4f67d9c6..5724b2cb9e6f8d4c909d018efa848a3d6e0ffd3e 100644 (file)
@@ -36,7 +36,7 @@ modelpath = ffluci.sys.libpath() .. "/model/menu/"
 scope = {
        translate = function(...) return require("ffluci.i18n").translate(...) end,
        loadtrans = function(...) return require("ffluci.i18n").loadc(...) end,
-       isfile    = ffluci.fs.mtime
+       isfile    = ffluci.fs.isfile
 }
 
 -- Local menu database
index e58189d1cf0edde45d843bee5e9e26ac940ef79b..0db558d99025adde2bba0e93074672c39909515e 100644 (file)
@@ -25,10 +25,9 @@ limitations under the License.
 ]]--
 module("ffluci.sgi.haserl", package.seeall)
 
-ENV = ENV or {}
-FORM = FORM or {}
+-- Environment Table
+ffluci.http.env = ENV
 
--- HTTP interface
 
 -- Returns a table of all COOKIE, GET and POST Parameters
 function ffluci.http.formvalues()
@@ -54,44 +53,13 @@ function ffluci.http.formvaluetable(prefix)
        return ffluci.http.formvalue(prefix, {})
 end
 
--- Returns the path info
-function ffluci.http.get_path_info()
-       return ENV.PATH_INFO
-end
-
--- Returns the User's IP
-function ffluci.http.get_remote_addr()
-       return ENV.REMOTE_ADDR
-end
-
--- Returns the request URI
-function ffluci.http.get_request_uri()
-       return ENV.REQUEST_URI
-end
-
--- Returns the script name
-function ffluci.http.get_script_name()
-       return ENV.SCRIPT_NAME
-end
-
-
--- Asks the browser to redirect to "url"
-function ffluci.http.redirect(url, qs)
-       if qs then
-               url = url .. "?" .. qs
-       end
-       
-       ffluci.http.set_status(302, "Found")
-       print("Location: " .. url .. "\n")
-end
-
 
 -- Set Content-Type
-function ffluci.http.set_content_type(type)
+function ffluci.http.prepare_content(type)
        print("Content-Type: "..type.."\n")
 end
 
 -- Sets HTTP-Status-Header
-function ffluci.http.set_status(code, message)
+function ffluci.http.status(code, message)
        print("Status: " .. tostring(code) .. " " .. message)
 end
index 222304b41a8647805c3d0c980dac75dd36afd3c8..75fffa55379f141395c28df0b150f5a54dad01f6 100644 (file)
@@ -25,9 +25,11 @@ limitations under the License.
 ]]--
 module("ffluci.sgi.webuci", package.seeall)
 
-local status_set = false
+-- Environment Table
+ffluci.http.env = webuci.env
+
 
--- HTTP interface
+local status_set = false
 
 -- Returns a table of all COOKIE, GET and POST Parameters
 function ffluci.http.formvalues()
@@ -53,50 +55,18 @@ function ffluci.http.formvaluetable(prefix)
        return vals
 end
 
--- Returns the path info
-function ffluci.http.get_path_info()
-       return webuci.PATH_INFO
-end
-
--- Returns the User's IP
-function ffluci.http.get_remote_addr()
-       return webuci.REMOTE_ADDR
-end
-
--- Returns the request URI
-function ffluci.http.get_request_uri()
-       return webuci.REQUEST_URI
-end
-
-
--- Returns the script name
-function ffluci.http.get_script_name()
-       return webuci.SCRIPT_NAME
-end
-
-
--- Asks the browser to redirect to "url"
-function ffluci.http.redirect(url, qs)
-       if qs then
-               url = url .. "?" .. qs
-       end
-       
-       ffluci.http.set_status(302, "Found")
-       print("Location: " .. url .. "\n")
-end
-
 
 -- Set Content-Type
-function ffluci.http.set_content_type(type)
+function ffluci.http.prepare_content(type)
        if not status_set then
-               ffluci.http.set_status(200, "OK")
+               ffluci.http.status(200, "OK")
        end
        
        print("Content-Type: "..type.."\n")
 end
 
 -- Sets HTTP-Status-Header
-function ffluci.http.set_status(code, message)
-       print(webuci.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message)
+function ffluci.http.status(code, message)
+       print(webuci.env.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message)
        status_set = true
 end
index a972f2bc42265bed5a82a7dee4719c62f32eff48..7ac47cbbefe79223e2db14a410fbddee17ee8c79 100644 (file)
@@ -52,7 +52,7 @@ compiler_enable_bytecode = false
 viewns = {
        translate  = function(...) return require("ffluci.i18n").translate(...) end,
        config     = function(...) return require("ffluci.model.uci").get(...) or "" end,
-       controller = ffluci.http.get_script_name(),
+       controller = ffluci.http.env.SCRIPT_NAME,
        media      = ffluci.config.main.mediaurlbase,
        write      = io.write,
        include    = function(name) Template(name):render(getfenv(2)) end,      
index b76278ddab6ee3534cc60bfe486b0280f4dac593..9e3c7f25e97e0c702aed25e05b0b79c96890eb54 100644 (file)
@@ -170,8 +170,8 @@ function split(str, pat, max, regex)
 end
 
 -- Removes whitespace from beginning and end of a string
-function trim(string)
-       local s = string:gsub("^%s*(.-)%s*$", "%1")
+function trim(str)
+       local s = str:gsub("^%s*(.-)%s*$", "%1")
        return s
 end
 
index 97542f031e31bb0d09314f4d43eafee018c06827..3b615d729440eb9c67f510f1c88bb2b656706971 100644 (file)
@@ -1,5 +1,5 @@
 <%+header%>
-               <form method="post" action="<%=ffluci.http.get_request_uri()%>">
+               <form method="post" action="<%=ffluci.http.env.REQUEST_URI%>">
                        <div>
                                <script type="text/javascript" src="<%=media%>/cbi.js"></script>
                                <input type="hidden" name="cbi.submit" value="1" />
index 1a9d74a9f2bd0a660160c99d34350c4a311df6ea..51ea176d6ec0e788b6c37f9f64d04379285ce856 100644 (file)
@@ -1,5 +1,5 @@
 <%+header%>
 <h1>404 Not Found</h1>
 <p>Sorry, the object you requested was not found.</p>
-<tt>Unable to dispatch: <%=ffluci.http.get_path_info()%></tt>
+<tt>Unable to dispatch: <%=ffluci.http.env.PATH_INFO%></tt>
 <%+footer%>
\ No newline at end of file
index 7ed735de59c2f2969bede1e962d70c2e13fb4b81..bc65e3e8910e129b2f7322d7239fb8cce588a062 100644 (file)
@@ -5,7 +5,7 @@ local req  = require("ffluci.dispatcher").request
 local menu = require("ffluci.menu").get()[req.category]
 menu = menu or {}
 require("ffluci.i18n").loadc("default")
-require("ffluci.http").set_content_type("text/html")
+require("ffluci.http").prepare_content("text/html")
 %><?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
index 7e3d67ee9658f04f7aa530f7bc4edfaa693521bc..62088be52d5e8c3aaf3f2f9ca6ffcb07a6225aa5 100644 (file)
@@ -1,7 +1,7 @@
 module("ffluci.controller.splash.splash", package.seeall)
 
 function action_activate()
-       local mac = ffluci.sys.net.ip4mac(ffluci.http.remote_addr())
+       local mac = ffluci.sys.net.ip4mac(ffluci.http.env.REMOTE_ADDR)
        if mac and ffluci.http.formvalue("accept") then
                os.execute("luci-splash add "..mac.." >/dev/null 2>&1")
                ffluci.http.redirect(ffluci.model.uci.get("freifunk", "community", "homepage"))
index 92371ef6039f3dc4fb3e02834ea48c919a13119f..6f5dede70065abfa39b6e4bf4bef780319e08de1 100644 (file)
@@ -1,5 +1,5 @@
 <%
-ffluci.http.set_content_type("text/plain")
+ffluci.http.prepare_content("text/plain")
 for k, v in pairs(ffluci.sys.wifi.getiwconfig()) do
 %>
 <tr>
index f4268574bc55ee02a8f96144faa187250249b9ba..6f321ae9e20e67e1e40e1181f6b1a0cf9010a807 100644 (file)
@@ -1,5 +1,5 @@
 <%
-ffluci.http.set_content_type("text/plain")
+ffluci.http.prepare_content("text/plain")
 for iface, cells in pairs(ffluci.sys.wifi.iwscan()) do
        for i, cell in ipairs(cells) do 
 %>
index d4e5cb30684091b4caaf8685692ad482a857b0c9..611423fbb0244bab413f17e66c1172b40312d7a6 100644 (file)
@@ -3,7 +3,7 @@ module("ffluci.controller.rpc.luciinfo", package.seeall)
 function action_index()
        local uci = ffluci.model.uci.StateSession()
 
-       ffluci.http.set_content_type("text/plain")
+       ffluci.http.prepare_content("text/plain")
        
        -- General
        print("luciinfo.api=1")