end
luci.http.close()
+
+ --context._disable_memtrace()
end
--- Dispatches a LuCI virtual path.
-- @param request Virtual path
function dispatch(request)
+ --context._disable_memtrace = require "luci.debug".trap_memtrace()
local ctx = context
ctx.path = request
-- Init template engine
if not track.notemplate then
local tpl = require("luci.template")
- local viewns = {}
+ local viewns = setmetatable({}, {__index=_G})
tpl.context.viewns = viewns
viewns.write = luci.http.write
+ viewns.include = function(name) tpl.Template(name):render(getfenv(2)) end
viewns.translate = function(...) return require("luci.i18n").translate(...) end
viewns.striptags = util.striptags
viewns.controller = luci.http.getenv("SCRIPT_NAME")
viewns.REQUEST_URI = (luci.http.getenv("SCRIPT_NAME") or "") .. (luci.http.getenv("PATH_INFO") or "")
end
+ track.dependent = (track.dependent ~= false)
assert(not track.dependent or not track.auto, "Access Violation")
if track.sysauth then
context.dispatched = c
util.copcall(function()
- util.updfenv(c.target, require(c.module))
+ local oldenv = getfenv(c.target)
+ local module = require(c.module)
+ local env = setmetatable({}, {__index=
+
+ function(tbl, key)
+ return rawget(tbl, key) or module[key] or oldenv[key]
+ end})
+
+ setfenv(c.target, env)
end)
c.target(unpack(args))
-- Load default translation
require "luci.i18n".loadc("default")
- local scope = setmetatable({}, {__index = _G})
- for k,v in pairs(luci.dispatcher) do
- if type(v) == "function" then
- scope[k] = v
- end
- end
+ local scope = setmetatable({}, {__index = luci.dispatcher})
for k, v in pairs(index) do
scope._NAME = k