summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua98
1 files changed, 33 insertions, 65 deletions
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 4bbd58f9db..7a684b8c0b 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -114,13 +114,13 @@ end
-- @param message Custom error message (optional)
-- @return false
function error404(message)
- luci.http.status(404, "Not Found")
+ http.status(404, "Not Found")
message = message or "Not Found"
require("luci.template")
- if not luci.util.copcall(luci.template.render, "error404") then
- luci.http.prepare_content("text/plain")
- luci.http.write(message)
+ if not util.copcall(luci.template.render, "error404") then
+ http.prepare_content("text/plain")
+ http.write(message)
end
return false
end
@@ -129,24 +129,24 @@ end
-- @param message Custom error message (optional)#
-- @return false
function error500(message)
- luci.util.perror(message)
+ util.perror(message)
if not context.template_header_sent then
- luci.http.status(500, "Internal Server Error")
- luci.http.prepare_content("text/plain")
- luci.http.write(message)
+ http.status(500, "Internal Server Error")
+ http.prepare_content("text/plain")
+ http.write(message)
else
require("luci.template")
- if not luci.util.copcall(luci.template.render, "error500", {message=message}) then
- luci.http.prepare_content("text/plain")
- luci.http.write(message)
+ if not util.copcall(luci.template.render, "error500", {message=message}) then
+ http.prepare_content("text/plain")
+ http.write(message)
end
end
return false
end
function authenticator.htmlauth(validator, accs, default)
- local user = luci.http.formvalue("luci_username")
- local pass = luci.http.formvalue("luci_password")
+ local user = http.formvalue("luci_username")
+ local pass = http.formvalue("luci_password")
if user and validator(user, pass) then
return user
@@ -163,7 +163,7 @@ end
--- Dispatch an HTTP request.
-- @param request LuCI HTTP Request object
function httpdispatch(request, prefix)
- luci.http.context.request = request
+ http.context.request = request
local r = {}
context.request = r
@@ -195,7 +195,7 @@ function httpdispatch(request, prefix)
dispatch(context.request)
end, error500)
- luci.http.close()
+ http.close()
--context._disable_memtrace()
end
@@ -290,7 +290,7 @@ function dispatch(request)
local scope = (type(env.self) == "table") and env.self
return string.format(
' %s="%s"', tostring(key),
- luci.util.pcdata(tostring( val
+ util.pcdata(tostring( val
or (type(env[key]) ~= "function" and env[key])
or (scope and type(scope[key]) ~= "function" and scope[key])
or "" ))
@@ -301,7 +301,7 @@ function dispatch(request)
end
tpl.context.viewns = setmetatable({
- write = luci.http.write;
+ write = http.write;
include = function(name) tpl.Template(name):render(getfenv(2)) end;
translate = i18n.translate;
translatef = i18n.translatef;
@@ -342,7 +342,7 @@ function dispatch(request)
local sess = ctx.authsession
local verifytoken = false
if not sess then
- sess = luci.http.getcookie("sysauth")
+ sess = http.getcookie("sysauth")
sess = sess and sess:match("^[a-f0-9]*$")
verifytoken = true
end
@@ -387,13 +387,13 @@ function dispatch(request)
end
if sess then
- luci.http.header("Set-Cookie", "sysauth=" .. sess.."; path="..build_url())
+ http.header("Set-Cookie", "sysauth=" .. sess.."; path="..build_url())
ctx.authsession = sess
ctx.authuser = user
end
end
else
- luci.http.status(403, "Forbidden")
+ http.status(403, "Forbidden")
return
end
else
@@ -469,46 +469,18 @@ function dispatch(request)
end
end
---- Generate the dispatching index using the best possible strategy.
+--- Generate the dispatching index using the native file-cache based strategy.
function createindex()
- local path = luci.util.libpath() .. "/controller/"
- local suff = { ".lua", ".lua.gz" }
-
- if luci.util.copcall(require, "luci.fastindex") then
- createindex_fastindex(path, suff)
- else
- createindex_plain(path, suff)
- end
-end
-
---- Generate the dispatching index using the fastindex C-indexer.
--- @param path Controller base directory
--- @param suffixes Controller file suffixes
-function createindex_fastindex(path, suffixes)
- index = {}
-
- if not fi then
- fi = luci.fastindex.new("index")
- for _, suffix in ipairs(suffixes) do
- fi.add(path .. "*" .. suffix)
- fi.add(path .. "*/*" .. suffix)
- end
- end
- fi.scan()
+ local controllers = { }
+ local base = "%s/controller/" % util.libpath()
+ local _, path
- for k, v in pairs(fi.indexes) do
- index[v[2]] = v[1]
+ for path in (fs.glob("%s*.lua" % base) or function() end) do
+ controllers[#controllers+1] = path
end
-end
---- Generate the dispatching index using the native file-cache based strategy.
--- @param path Controller base directory
--- @param suffixes Controller file suffixes
-function createindex_plain(path, suffixes)
- local controllers = { }
- for _, suffix in ipairs(suffixes) do
- nixio.util.consume((fs.glob(path .. "*" .. suffix)), controllers)
- nixio.util.consume((fs.glob(path .. "*/*" .. suffix)), controllers)
+ for path in (fs.glob("%s*/*.lua" % base) or function() end) do
+ controllers[#controllers+1] = path
end
if indexcache then
@@ -520,7 +492,7 @@ function createindex_plain(path, suffixes)
realdate = (omtime and omtime > realdate) and omtime or realdate
end
- if cachedate > realdate then
+ if cachedate > realdate and sys.process.info("uid") == 0 then
assert(
sys.process.info("uid") == fs.stat(indexcache, "uid")
and fs.stat(indexcache, "modestr") == "rw-------",
@@ -535,23 +507,19 @@ function createindex_plain(path, suffixes)
index = {}
- for i,c in ipairs(controllers) do
- local modname = "luci.controller." .. c:sub(#path+1, #c):gsub("/", ".")
- for _, suffix in ipairs(suffixes) do
- modname = modname:gsub(suffix.."$", "")
- end
-
+ for _, path in ipairs(controllers) do
+ local modname = "luci.controller." .. path:sub(#base+1, #path-4):gsub("/", ".")
local mod = require(modname)
assert(mod ~= true,
"Invalid controller file found\n" ..
- "The file '" .. c .. "' contains an invalid module line.\n" ..
+ "The file '" .. path .. "' contains an invalid module line.\n" ..
"Please verify whether the module name is set to '" .. modname ..
"' - It must correspond to the file path!")
local idx = mod.index
assert(type(idx) == "function",
"Invalid controller file found\n" ..
- "The file '" .. c .. "' contains no index() function.\n" ..
+ "The file '" .. path .. "' contains no index() function.\n" ..
"Please make sure that the controller contains a valid " ..
"index function and verify the spelling!")