* Updated dispatcher to use fastindex if available
* Updated webuci SGI * Updated dispatcher
This commit is contained in:
parent
1da3c32a73
commit
5f40074c0e
7 changed files with 63 additions and 90 deletions
|
@ -1,7 +1,10 @@
|
||||||
|
<%
|
||||||
|
local c = luci.model.uci.sections("freifunk").community
|
||||||
|
|
||||||
<h1><%:welcome Willkommen%>!</h1>
|
<h1><%:welcome Willkommen%>!</h1>
|
||||||
<p>
|
<p>
|
||||||
Du bist jetzt mit dem freien Funknetz
|
Du bist jetzt mit dem freien Funknetz
|
||||||
<a href="<%~freifunk.community.homepage%>"><%~freifunk.community.name%></a> verbunden.<br />
|
<a href="<%=c.homepage%>"><%=c.name%></a> verbunden.<br />
|
||||||
Wir sind ein experimentelles Gemeinschaftsnetzwerk, aber kein Internetanbieter.
|
Wir sind ein experimentelles Gemeinschaftsnetzwerk, aber kein Internetanbieter.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -20,12 +23,12 @@ Bitte sei Dir dessen bewusst und verhalte Dich dementsprechend:
|
||||||
<p>
|
<p>
|
||||||
Wenn Du unsere Idee gut findest, kannst Du uns unterstützen:
|
Wenn Du unsere Idee gut findest, kannst Du uns unterstützen:
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<%~freifunk.community.homepage%>">Werde selbst Freifunker oder teile deinen Internetzugang!</a></li>
|
<li><a href="<%=c.homepage%>">Werde selbst Freifunker oder teile deinen Internetzugang!</a></li>
|
||||||
<li>Betreibe deine anderen WLAN-Geräte <em>NICHT</em> auf den Kanälen 1-5, diese stören oft unser Netz.</li>
|
<li>Betreibe deine anderen WLAN-Geräte <em>NICHT</em> auf den Kanälen 1-5, diese stören oft unser Netz.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Mit einem Klick auf <em><%:accept Annehmen%></em> kannst du für <%~luci_splash.general.leasetime%> Stunden
|
Mit einem Klick auf <em><%:accept Annehmen%></em> kannst du für <%=c.leasetime%> Stunden
|
||||||
über unser Netz das Internet verwenden. Dann wirst du erneut aufgefordet, diese Bedingungen zu akzeptieren.
|
über unser Netz das Internet verwenden. Dann wirst du erneut aufgefordet, diese Bedingungen zu akzeptieren.
|
||||||
</p>
|
</p>
|
|
@ -1,21 +1,20 @@
|
||||||
module("webuci", package.seeall)
|
module("webuci", package.seeall)
|
||||||
|
|
||||||
function prepare_req(uri)
|
function prepare_req(uri)
|
||||||
|
require("luci.dispatcher").createindex()
|
||||||
env = {}
|
env = {}
|
||||||
env.REQUEST_URI = uri
|
env.REQUEST_URI = uri
|
||||||
require("luci.dispatcher").createindex()
|
|
||||||
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
|
end
|
||||||
|
|
||||||
function handle_req(context)
|
function handle_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)
|
||||||
|
|
||||||
|
luci.sgi.webuci.initenv(env)
|
||||||
luci.dispatcher.httpdispatch()
|
luci.dispatcher.httpdispatch()
|
||||||
end
|
end
|
|
@ -25,12 +25,13 @@ limitations under the License.
|
||||||
]]--
|
]]--
|
||||||
module("luci.sgi.webuci", package.seeall)
|
module("luci.sgi.webuci", package.seeall)
|
||||||
|
|
||||||
-- Environment Table
|
|
||||||
luci.http.env = webuci.env
|
|
||||||
|
|
||||||
|
|
||||||
local status_set = false
|
local status_set = false
|
||||||
|
|
||||||
|
-- Initialize the environment
|
||||||
|
function initenv(env)
|
||||||
|
luci.http.env = env
|
||||||
|
end
|
||||||
|
|
||||||
-- Returns the main dispatcher URL
|
-- Returns the main dispatcher URL
|
||||||
function luci.http.dispatcher()
|
function luci.http.dispatcher()
|
||||||
return luci.http.env.SCRIPT_NAME or ""
|
return luci.http.env.SCRIPT_NAME or ""
|
||||||
|
@ -94,6 +95,6 @@ end
|
||||||
|
|
||||||
-- Sets HTTP-Status-Header
|
-- Sets HTTP-Status-Header
|
||||||
function luci.http.status(code, message)
|
function luci.http.status(code, message)
|
||||||
print(webuci.env.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message)
|
print(luci.http.env.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message)
|
||||||
status_set = true
|
status_set = true
|
||||||
end
|
end
|
||||||
|
|
|
@ -73,7 +73,7 @@ function httpdispatch()
|
||||||
local pathinfo = luci.http.env.PATH_INFO or ""
|
local pathinfo = luci.http.env.PATH_INFO or ""
|
||||||
local c = tree
|
local c = tree
|
||||||
|
|
||||||
for s in pathinfo:gmatch("/([%w-]+)") do
|
for s in pathinfo:gmatch("([%w_]+)") do
|
||||||
table.insert(request, s)
|
table.insert(request, s)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -107,6 +107,14 @@ function dispatch()
|
||||||
if track.setuser then
|
if track.setuser then
|
||||||
luci.sys.process.setuser(track.setuser)
|
luci.sys.process.setuser(track.setuser)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Init template engine
|
||||||
|
local tpl = require("luci.template")
|
||||||
|
tpl.viewns.translate = function(...) return require("luci.i18n").translate(...) end
|
||||||
|
tpl.viewns.controller = luci.http.dispatcher()
|
||||||
|
tpl.viewns.uploadctrl = luci.http.dispatcher_upload()
|
||||||
|
tpl.viewns.media = luci.config.main.mediaurlbase
|
||||||
|
tpl.viewns.resource = luci.config.main.resourcebase
|
||||||
|
|
||||||
|
|
||||||
if c and type(c.target) == "function" then
|
if c and type(c.target) == "function" then
|
||||||
|
@ -121,19 +129,42 @@ function dispatch()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Generates the dispatching tree
|
||||||
|
function createindex()
|
||||||
|
local path = luci.sys.libpath() .. "/controller/"
|
||||||
|
local suff = ".lua"
|
||||||
|
|
||||||
|
if pcall(require, "fastindex") then
|
||||||
|
createindex_fastindex(path, suff)
|
||||||
|
else
|
||||||
|
createindex_plain(path, suff)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Uses fastindex to create the dispatching tree
|
||||||
|
function createindex_fastindex(path, suffix)
|
||||||
|
local fi = fastindex.new("index")
|
||||||
|
fi.add(path .. "*" .. suffix)
|
||||||
|
fi.add(path .. "*/*" .. suffix)
|
||||||
|
fi.scan()
|
||||||
|
|
||||||
|
for k, v in pairs(fi.indexes) do
|
||||||
|
local stat, mod = pcall(require, v[2])
|
||||||
|
|
||||||
|
luci.util.updfenv(v[1], luci.dispatcher)
|
||||||
|
pcall(v[1])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Calls the index function of all available controllers
|
-- Calls the index function of all available controllers
|
||||||
function createindex()
|
function createindex_plain(path, suffix)
|
||||||
local root = luci.sys.libpath() .. "/controller/"
|
|
||||||
local suff = ".lua"
|
|
||||||
|
|
||||||
local controllers = luci.util.combine(
|
local controllers = luci.util.combine(
|
||||||
luci.fs.glob(root .. "*" .. suff) or {},
|
luci.fs.glob(path .. "*" .. suffix) or {},
|
||||||
luci.fs.glob(root .. "*/*" .. suff) or {}
|
luci.fs.glob(path .. "*/*" .. suffix) or {}
|
||||||
)
|
)
|
||||||
|
|
||||||
for i,c in ipairs(controllers) do
|
for i,c in ipairs(controllers) do
|
||||||
c = "luci.controller." .. c:sub(#root+1, #c-#suff):gsub("/", ".")
|
c = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
|
||||||
stat, mod = pcall(require, c)
|
stat, mod = pcall(require, c)
|
||||||
|
|
||||||
if stat and mod and type(mod.index) == "function" then
|
if stat and mod and type(mod.index) == "function" then
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
--[[
|
|
||||||
LuCI - Menu Builder
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Collects menu building information from controllers
|
|
||||||
|
|
||||||
FileId:
|
|
||||||
$Id$
|
|
||||||
|
|
||||||
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("luci.menu", package.seeall)
|
|
||||||
|
|
||||||
require("luci.fs")
|
|
||||||
require("luci.util")
|
|
||||||
require("luci.sys")
|
|
||||||
require("luci.dispatcher")
|
|
||||||
|
|
||||||
-- Default modelpath
|
|
||||||
modelpattern = luci.sys.libpath() .. "/model/menu/*.lua"
|
|
||||||
|
|
||||||
-- Menu definition extra scope
|
|
||||||
scope = {
|
|
||||||
translate = function(...) return require("luci.i18n").translate(...) end,
|
|
||||||
loadtrans = function(...) return require("luci.i18n").loadc(...) end,
|
|
||||||
isfile = luci.fs.isfile
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Returns the menu information
|
|
||||||
function get()
|
|
||||||
return menu
|
|
||||||
end
|
|
|
@ -50,12 +50,6 @@ compiler_enable_bytecode = false
|
||||||
|
|
||||||
-- Define the namespace for template modules
|
-- Define the namespace for template modules
|
||||||
viewns = {
|
viewns = {
|
||||||
translate = function(...) return require("luci.i18n").translate(...) end,
|
|
||||||
config = function(...) return require("luci.model.uci").get(...) or "" end,
|
|
||||||
controller = luci.http.dispatcher(),
|
|
||||||
uploadctrl = luci.http.dispatcher_upload(),
|
|
||||||
media = luci.config.main.mediaurlbase,
|
|
||||||
resource = luci.config.main.resourcebase,
|
|
||||||
write = io.write,
|
write = io.write,
|
||||||
include = function(name) Template(name):render(getfenv(2)) end,
|
include = function(name) Template(name):render(getfenv(2)) end,
|
||||||
}
|
}
|
||||||
|
@ -94,7 +88,6 @@ function compile(template)
|
||||||
-- Replacements
|
-- Replacements
|
||||||
local r_include = "')\ninclude('%s')\nwrite('"
|
local r_include = "')\ninclude('%s')\nwrite('"
|
||||||
local r_i18n = "'..translate('%1','%2')..'"
|
local r_i18n = "'..translate('%1','%2')..'"
|
||||||
local r_uci = "'..config('%1','%2','%3')..'"
|
|
||||||
local r_pexec = "'..(%s or '')..'"
|
local r_pexec = "'..(%s or '')..'"
|
||||||
local r_exec = "')\n%s\nwrite('"
|
local r_exec = "')\n%s\nwrite('"
|
||||||
|
|
||||||
|
@ -106,8 +99,6 @@ function compile(template)
|
||||||
re = r_include:format(sanitize(string.sub(v, 2)))
|
re = r_include:format(sanitize(string.sub(v, 2)))
|
||||||
elseif p == ":" then
|
elseif p == ":" then
|
||||||
re = sanitize(v):gsub(":(.-) (.+)", r_i18n)
|
re = sanitize(v):gsub(":(.-) (.+)", r_i18n)
|
||||||
elseif p == "~" then
|
|
||||||
re = sanitize(v):gsub("~(.-)%.(.-)%.(.+)", r_uci)
|
|
||||||
elseif p == "=" then
|
elseif p == "=" then
|
||||||
re = r_pexec:format(v:sub(2))
|
re = r_pexec:format(v:sub(2))
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
module("luci.controller.admin.status", package.seeall)
|
module("luci.controller.admin.status", package.seeall)
|
||||||
|
|
||||||
function index()
|
function index()
|
||||||
local page = node("admin", "status")
|
entry({"admin", "status"}, template("admin_status/index"), "Status", 20)
|
||||||
page.target = template("admin_status/index")
|
entry({"admin", "status", "syslog"}, action_syslog, "Systemprotokoll")
|
||||||
page.title = "Status"
|
|
||||||
page.order = 20
|
|
||||||
|
|
||||||
local page = node("admin", "status", "syslog")
|
|
||||||
page.target = action_syslog
|
|
||||||
page.title = "Systemprotokoll"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function action_syslog()
|
function action_syslog()
|
||||||
|
|
Loading…
Reference in a new issue