X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=libs%2Fweb%2Fluasrc%2Fdispatcher.lua;h=9e5b78d5e9f93b3bf6737f53fdebe65924697798;hb=848e43a5b47c0467b90e7d9a029e59ec53461da3;hp=911f2f4e9a59e3ae9fe592a3d410ebbb138af039;hpb=96f494f4bae187c700e9d9ad77f77b4085908e9a;p=project%2Fluci.git diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index 911f2f4e9..9e5b78d5e 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -304,6 +304,7 @@ function dispatch(request) write = luci.http.write; include = function(name) tpl.Template(name):render(getfenv(2)) end; translate = i18n.translate; + translatef = i18n.translatef; export = function(k, v) if tpl.context.viewns[k] == nil then tpl.context.viewns[k] = v end end; striptags = util.striptags; pcdata = util.pcdata; @@ -352,9 +353,6 @@ function dispatch(request) local user if sdat then - sdat = loadstring(sdat) - setfenv(sdat, {}) - sdat = sdat() if not verifytoken or ctx.urltoken.stok == sdat.token then user = sdat.user end @@ -376,11 +374,12 @@ function dispatch(request) local sid = sess or luci.sys.uniqueid(16) if not sess then local token = luci.sys.uniqueid(16) - sauth.write(sid, util.get_bytecode({ + sauth.reap() + sauth.write(sid, { user=user, token=token, secret=luci.sys.uniqueid(16) - })) + }) ctx.urltoken.stok = token end luci.http.header("Set-Cookie", "sysauth=" .. sid.."; path="..build_url()) @@ -761,10 +760,18 @@ end local function _call(self, ...) + local func = getfenv()[self.name] + assert(func ~= nil, + 'Cannot resolve function "' .. self.name .. '". Is it misspelled or local?') + + assert(type(func) == "function", + 'The symbol "' .. self.name .. '" does not refer to a function but data ' .. + 'of type "' .. type(func) .. '".') + if #self.argv > 0 then - return getfenv()[self.name](unpack(self.argv), ...) + return func(unpack(self.argv), ...) else - return getfenv()[self.name](...) + return func(...) end end