Renamed FFLuCI to LuCI, ffluci to luci and Freifunk Lua Configuration Interface to Lua Configuration Interface
This commit is contained in:
parent
c6c50b3ec6
commit
365d80765d
89 changed files with 702 additions and 702 deletions
2
.project
2
.project
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>ffluci</name>
|
||||
<name>luci</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
|
|
10
INSTALL
10
INSTALL
|
@ -1,4 +1,4 @@
|
|||
FFLuCI Installation Instructions
|
||||
LuCI Installation Instructions
|
||||
|
||||
TOC:
|
||||
1. Kamikaze Feed
|
||||
|
@ -9,13 +9,13 @@ TOC:
|
|||
1. Change to your OpenWRT buildroot
|
||||
|
||||
2. Add the following line to your OpenWRT feeds.conf:
|
||||
src-svn ffluci https://dev.leipzig.freifunk.net/svn/ff-luci/trunk/contrib/package
|
||||
src-svn luci https://dev.leipzig.freifunk.net/svn/ff-luci/trunk/contrib/package
|
||||
|
||||
3. Run ./scripts/feeds update
|
||||
|
||||
4. Run ./scripts/feeds install -a -p ffluci
|
||||
4. Run ./scripts/feeds install -a -p luci
|
||||
|
||||
5. Type make menuconfig and you will find ffluci in the menu "Administration"
|
||||
5. Type make menuconfig and you will find luci in the menu "Administration"
|
||||
|
||||
|
||||
2. Kamikaze Packages
|
||||
|
@ -24,4 +24,4 @@ TOC:
|
|||
3. Type: ln -s /path/to/ff-luci/contrib/package/* ./
|
||||
|
||||
4. cd to your kamikaze build root and type: make menuconfig
|
||||
You will find ffluci in the menu "Administration"
|
||||
You will find luci in the menu "Administration"
|
2
Makefile
2
Makefile
|
@ -15,7 +15,7 @@ clean:
|
|||
for i in $(MODULES); do make -C$$i clean; done
|
||||
|
||||
host: build
|
||||
mkdir -p host/ffluci
|
||||
mkdir -p host/luci
|
||||
for i in $(MODULES); do cp $$i/dist$(LUCI_INSTALLDIR) host/ -R 2>/dev/null || true; done
|
||||
|
||||
hostclean: clean
|
||||
|
|
4
NOTICE
4
NOTICE
|
@ -1,7 +1,7 @@
|
|||
FFLuCI - Freifunk Lua Configuration Interface
|
||||
LuCI - Lua Configuration Interface
|
||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||
Licensed under the Apache License, Version 2.0.
|
||||
|
||||
Luci-Statistics - Statistics for FFLuCI
|
||||
Luci-Statistics - Statistics for LuCI
|
||||
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
|
||||
Licensed under the Apache License, Version 2.0.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.luci_ffwizard_leipzig.wizard", package.seeall)
|
||||
module("luci.controller.luci_ffwizard_leipzig.wizard", package.seeall)
|
||||
|
||||
function index()
|
||||
entry({"admin", "index", "wizard"}, action_wizard, "Freifunkassistent", 20)
|
||||
|
@ -6,12 +6,12 @@ end
|
|||
|
||||
|
||||
function action_wizard()
|
||||
if ffluci.http.formvalue("ip") then
|
||||
if luci.http.formvalue("ip") then
|
||||
return configure_freifunk()
|
||||
end
|
||||
|
||||
local ifaces = {}
|
||||
local wldevs = ffluci.model.uci.sections("wireless")
|
||||
local wldevs = luci.model.uci.sections("wireless")
|
||||
|
||||
if wldevs then
|
||||
for k, v in pairs(wldevs) do
|
||||
|
@ -21,12 +21,12 @@ function action_wizard()
|
|||
end
|
||||
end
|
||||
|
||||
ffluci.template.render("freifunk/wizard", {ifaces=ifaces})
|
||||
luci.template.render("freifunk/wizard", {ifaces=ifaces})
|
||||
end
|
||||
|
||||
function configure_freifunk()
|
||||
local ip = ffluci.http.formvalue("ip")
|
||||
local uci = ffluci.model.uci.Session()
|
||||
local ip = luci.http.formvalue("ip")
|
||||
local uci = luci.model.uci.Session()
|
||||
|
||||
-- Load UCI
|
||||
uci:t_load("network")
|
||||
|
@ -65,7 +65,7 @@ function configure_freifunk()
|
|||
end
|
||||
|
||||
-- Routing from Internal
|
||||
local iface = ffluci.http.formvalue("frominternal")
|
||||
local iface = luci.http.formvalue("frominternal")
|
||||
if iface and iface ~= "" then
|
||||
local routing = uci:t_sections("luci_fw")
|
||||
if routing then
|
||||
|
@ -84,7 +84,7 @@ function configure_freifunk()
|
|||
end
|
||||
|
||||
-- Routing to External
|
||||
local iface = ffluci.http.formvalue("toexternal")
|
||||
local iface = luci.http.formvalue("toexternal")
|
||||
if iface and iface ~= "" then
|
||||
local routing = uci:t_sections("luci_fw")
|
||||
if routing then
|
||||
|
@ -103,7 +103,7 @@ function configure_freifunk()
|
|||
end
|
||||
|
||||
-- Configure DHCP
|
||||
if ffluci.http.formvalue("dhcp") then
|
||||
if luci.http.formvalue("dhcp") then
|
||||
local dhcpnet = uci:t_get("freifunk", "community", "dhcp"):match("^([0-9]+)")
|
||||
local dhcpip = ip:gsub("^[0-9]+", dhcpnet)
|
||||
|
||||
|
@ -155,7 +155,7 @@ function configure_freifunk()
|
|||
uci:t_set("luci_fw", int, "oface", "ff")
|
||||
uci:t_set("luci_fw", int, "nat", "1")
|
||||
|
||||
local iface = ffluci.http.formvalue("toexternal")
|
||||
local iface = luci.http.formvalue("toexternal")
|
||||
if iface and iface ~= "" then
|
||||
local int = uci:t_add("luci_fw", "routing")
|
||||
uci:t_set("luci_fw", int, "iface", "ffdhcp")
|
||||
|
@ -166,14 +166,14 @@ function configure_freifunk()
|
|||
end
|
||||
|
||||
-- Configure OLSR
|
||||
if ffluci.http.formvalue("olsr") and uci:t_sections("olsr") then
|
||||
if luci.http.formvalue("olsr") and uci:t_sections("olsr") then
|
||||
for k, v in pairs(uci:t_sections("olsr")) do
|
||||
if v[".type"] == "Interface" or v[".type"] == "LoadPlugin" then
|
||||
uci:t_del("olsr", k)
|
||||
end
|
||||
end
|
||||
|
||||
if ffluci.http.formvalue("shareinet") then
|
||||
if luci.http.formvalue("shareinet") then
|
||||
uci:t_set("olsr", "dyn_gw", nil, "LoadPlugin")
|
||||
uci:t_set("olsr", "dyn_gw", "Library", "olsrd_dyn_gw.so.0.4")
|
||||
end
|
||||
|
@ -205,7 +205,7 @@ function configure_freifunk()
|
|||
local wcfg = uci:t_sections("wireless")
|
||||
if wcfg then
|
||||
for iface, v in pairs(wcfg) do
|
||||
if v[".type"] == "wifi-device" and ffluci.http.formvalue("wifi."..iface) then
|
||||
if v[".type"] == "wifi-device" and luci.http.formvalue("wifi."..iface) then
|
||||
-- Cleanup
|
||||
for k, j in pairs(wcfg) do
|
||||
if j[".type"] == "wifi-iface" and j.device == iface then
|
||||
|
@ -239,5 +239,5 @@ function configure_freifunk()
|
|||
uci:t_save("wireless")
|
||||
uci:t_save("luci_fw")
|
||||
|
||||
ffluci.http.redirect(ffluci.dispatcher.build_url("admin", "uci", "changes"))
|
||||
luci.http.redirect(luci.dispatcher.build_url("admin", "uci", "changes"))
|
||||
end
|
|
@ -26,7 +26,7 @@
|
|||
<div class="cbi-value-title"><%:cfginternal Erlaube Zugriff von internem Netzwerk%>:</div>
|
||||
<div class="cbi-value-field"><select name="frominternal">
|
||||
<option value=""></option>
|
||||
<% for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
<% for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then %>
|
||||
<option value="<%=k%>"<% if k == "lan" then %> selected="selected"<% end %>><%=k%></option>
|
||||
<% end
|
||||
|
@ -37,7 +37,7 @@ end %>
|
|||
<div class="cbi-value-title"><%:cfgexternal Erlaube Zugriff auf externes Netzwerk%>:</div>
|
||||
<div class="cbi-value-field"><select name="toexternal">
|
||||
<option value=""></option>
|
||||
<% for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
<% for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then %>
|
||||
<option value="<%=k%>"<% if k == "wan" then %> selected="selected"<% end %>><%=k%></option>
|
||||
<% end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.luci_fw.luci_fw", package.seeall)
|
||||
module("luci.controller.luci_fw.luci_fw", package.seeall)
|
||||
|
||||
function index()
|
||||
entry({"admin", "network", "portfw"}, cbi("luci_fw/portfw"), "Portweiterleitung", 70)
|
||||
|
|
|
@ -19,7 +19,7 @@ iface.optional = true
|
|||
oface = s:option(ListValue, "oface", "Ausgangsschnittstelle")
|
||||
oface.optional = true
|
||||
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
oface:value(k)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- ToDo: Translate, Add descriptions and help texts
|
||||
require("ffluci.sys")
|
||||
require("luci.sys")
|
||||
m = Map("luci_fw", "Portweiterleitung", [[Portweiterleitungen ermöglichen es interne
|
||||
Netzwerkdienste von einem anderen externen Netzwerk aus erreichbar zu machen.]])
|
||||
|
||||
|
@ -10,7 +10,7 @@ s.anonymous = true
|
|||
|
||||
iface = s:option(ListValue, "iface", "Schnittstelle", "Externe Schnittstelle")
|
||||
iface.default = "wan"
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- ToDo: Translate, Add descriptions and help texts
|
||||
require("ffluci.sys")
|
||||
require("luci.sys")
|
||||
m = Map("luci_fw", "Routing", [[An dieser Stelle wird festlegt, welcher Netzverkehr zwischen einzelnen
|
||||
Schnittstellen erlaubt werden soll. Es werden jeweils nur neue Verbindungen
|
||||
betrachtet, d.h. Pakete von aufgebauten oder zugehörigen Verbindungen werden automatisch in beide Richtungen
|
||||
|
@ -14,7 +14,7 @@ s.anonymous = true
|
|||
iface = s:option(ListValue, "iface", "Eingang", "Eingangsschnittstelle")
|
||||
oface = s:option(ListValue, "oface", "Ausgang", "Ausgangsschnittstelle")
|
||||
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
oface:value(k)
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
package.path = "/usr/lib/lua/?.lua;/usr/lib/lua/?/init.lua;" .. package.path
|
||||
package.cpath = "/usr/lib/lua/?.so;" .. package.cpath
|
||||
|
||||
require("ffluci.http")
|
||||
require("ffluci.sys")
|
||||
require("ffluci.model.uci")
|
||||
require("luci.http")
|
||||
require("luci.sys")
|
||||
require("luci.model.uci")
|
||||
|
||||
local srv
|
||||
local net
|
||||
local ip = ffluci.http.env.REMOTE_ADDR
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
local ip = luci.http.env.REMOTE_ADDR
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and v.ipaddr then
|
||||
local p = ffluci.sys.net.mask4prefix(v.netmask)
|
||||
if ffluci.sys.net.belongs(ip, v.ipaddr, p) then
|
||||
local p = luci.sys.net.mask4prefix(v.netmask)
|
||||
if luci.sys.net.belongs(ip, v.ipaddr, p) then
|
||||
net = k
|
||||
srv = v.ipaddr
|
||||
break
|
||||
|
@ -21,30 +21,30 @@ for k, v in pairs(ffluci.model.uci.sections("network")) do
|
|||
end
|
||||
|
||||
local stat = false
|
||||
for k, v in pairs(ffluci.model.uci.sections("luci_splash")) do
|
||||
for k, v in pairs(luci.model.uci.sections("luci_splash")) do
|
||||
if v[".type"] == "iface" and v.network == net then
|
||||
stat = true
|
||||
end
|
||||
end
|
||||
|
||||
if not srv then
|
||||
ffluci.http.prepare_content("text/plain")
|
||||
luci.http.prepare_content("text/plain")
|
||||
print("Unable to detect network settings!")
|
||||
elseif not stat then
|
||||
ffluci.http.redirect("http://" .. srv)
|
||||
luci.http.redirect("http://" .. srv)
|
||||
else
|
||||
local action = "splash"
|
||||
|
||||
local mac = ffluci.sys.net.ip4mac(ip)
|
||||
local mac = luci.sys.net.ip4mac(ip)
|
||||
if not mac then
|
||||
action = "unknown"
|
||||
end
|
||||
|
||||
local status = ffluci.sys.execl("luci-splash status "..mac)[1]
|
||||
local status = luci.sys.execl("luci-splash status "..mac)[1]
|
||||
|
||||
if status == "whitelisted" or status == "lease" then
|
||||
action = "allowed"
|
||||
end
|
||||
|
||||
ffluci.http.redirect("http://" .. srv .. "/cgi-bin/luci-splash/" .. action)
|
||||
luci.http.redirect("http://" .. srv .. "/cgi-bin/luci-splash/" .. action)
|
||||
end
|
|
@ -5,6 +5,6 @@
|
|||
<meta http-equiv="refresh" content="0; URL=/cgi-bin/index.cgi" />
|
||||
</head>
|
||||
<body style="background-color: black">
|
||||
<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">FFLuCI - Freifunk Lua Configuration Interface</a>
|
||||
<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">LuCI - Lua Configuration Interface</a>
|
||||
</body>
|
||||
</html>
|
|
@ -2,12 +2,12 @@
|
|||
package.path = "/usr/lib/lua/?.lua;/usr/lib/lua/?/init.lua;" .. package.path
|
||||
package.cpath = "/usr/lib/lua/?.so;" .. package.cpath
|
||||
|
||||
require("ffluci.http")
|
||||
require("ffluci.sys")
|
||||
require("ffluci.model.uci")
|
||||
require("luci.http")
|
||||
require("luci.sys")
|
||||
require("luci.model.uci")
|
||||
|
||||
-- Init state session
|
||||
uci = ffluci.model.uci.StateSession()
|
||||
uci = luci.model.uci.StateSession()
|
||||
|
||||
|
||||
function main(argv)
|
||||
|
@ -125,7 +125,7 @@ end
|
|||
function listrules()
|
||||
local cmd = "iptables -t nat -L luci_splash_leases | grep RETURN |"
|
||||
cmd = cmd .. "egrep -io [0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+"
|
||||
return ffluci.util.split(ffluci.sys.exec(cmd))
|
||||
return luci.util.split(luci.sys.exec(cmd))
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
echo "Status: 302 Found"
|
||||
echo "Location: /cgi-bin/ffluci/splash/splash$PATH_INFO"
|
||||
echo "Location: /cgi-bin/luci/splash/splash$PATH_INFO"
|
||||
echo
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.splash.splash", package.seeall)
|
||||
module("luci.controller.splash.splash", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node("admin", "services", "splash")
|
||||
|
@ -12,19 +12,19 @@ function index()
|
|||
end
|
||||
|
||||
function action_activate()
|
||||
local mac = ffluci.sys.net.ip4mac(ffluci.http.env.REMOTE_ADDR)
|
||||
if mac and ffluci.http.formvalue("accept") then
|
||||
local mac = luci.sys.net.ip4mac(luci.http.env.REMOTE_ADDR)
|
||||
if mac and luci.http.formvalue("accept") then
|
||||
os.execute("luci-splash add "..mac.." >/dev/null 2>&1")
|
||||
ffluci.http.redirect(ffluci.model.uci.get("freifunk", "community", "homepage"))
|
||||
luci.http.redirect(luci.model.uci.get("freifunk", "community", "homepage"))
|
||||
else
|
||||
ffluci.http.redirect(ffluci.dispatcher.build_url())
|
||||
luci.http.redirect(luci.dispatcher.build_url())
|
||||
end
|
||||
end
|
||||
|
||||
function action_allowed()
|
||||
ffluci.http.redirect(ffluci.dispatcher.build_url())
|
||||
luci.http.redirect(luci.dispatcher.build_url())
|
||||
end
|
||||
|
||||
function action_unknown()
|
||||
ffluci.http.redirect(ffluci.dispatcher.build_url())
|
||||
luci.http.redirect(luci.dispatcher.build_url())
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
-- ToDo: Translate, Add descriptions and help texts
|
||||
require("ffluci.model.uci")
|
||||
require("luci.model.uci")
|
||||
|
||||
m = Map("luci_splash", "Client-Splash", [[Client-Splash ist das Freifunk Hotspot-Authentifizierungs-System.]])
|
||||
|
||||
|
@ -11,7 +11,7 @@ s.addremove = true
|
|||
s.anonymous = true
|
||||
|
||||
iface = s:option(ListValue, "network", "Schnittstelle")
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
end
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/haserl --shell=luac
|
||||
require("ffluci.dispatcher").createindex()
|
||||
ffluci.dispatcher.httpdispatch()
|
|
@ -1,3 +1,3 @@
|
|||
#!/usr/bin/haserl --shell=luac
|
||||
print("Status: 302 Found")
|
||||
print("Location: ffluci\n")
|
||||
print("Location: luci\n")
|
||||
|
|
3
applications/sgi-haserl/root/www/cgi-bin/luci
Executable file
3
applications/sgi-haserl/root/www/cgi-bin/luci
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/haserl --shell=luac
|
||||
require("luci.dispatcher").createindex()
|
||||
luci.dispatcher.httpdispatch()
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/haserl --shell=luac --upload-limit=16384
|
||||
-- This is a bit hacky: remove -upload from SCRIPT_NAME
|
||||
ENV.SCRIPT_NAME = ENV.SCRIPT_NAME:sub(1, #ENV.SCRIPT_NAME - 7)
|
||||
dofile("ffluci")
|
||||
dofile("luci")
|
|
@ -5,6 +5,6 @@
|
|||
<meta http-equiv="refresh" content="0; URL=/cgi-bin/index.cgi" />
|
||||
</head>
|
||||
<body style="background-color: black">
|
||||
<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">FFLuCI - Freifunk Lua Configuration Interface</a>
|
||||
<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">LuCI - Lua Configuration Interface</a>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - SGI-Module for Haserl
|
||||
LuCI - SGI-Module for Haserl
|
||||
|
||||
Description:
|
||||
Server Gateway Interface for Haserl
|
||||
|
@ -23,30 +23,30 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.sgi.haserl", package.seeall)
|
||||
require("ffluci.fs")
|
||||
module("luci.sgi.haserl", package.seeall)
|
||||
require("luci.fs")
|
||||
|
||||
-- Environment Table
|
||||
ffluci.http.env = ENV
|
||||
luci.http.env = ENV
|
||||
|
||||
-- Returns the main dispatcher URL
|
||||
function ffluci.http.dispatcher()
|
||||
return ffluci.http.env.SCRIPT_NAME or ""
|
||||
function luci.http.dispatcher()
|
||||
return luci.http.env.SCRIPT_NAME or ""
|
||||
end
|
||||
|
||||
-- Returns the upload dispatcher URL
|
||||
function ffluci.http.dispatcher_upload()
|
||||
return ffluci.http.dispatcher() .. "-upload"
|
||||
function luci.http.dispatcher_upload()
|
||||
return luci.http.dispatcher() .. "-upload"
|
||||
end
|
||||
|
||||
-- Returns a table of all COOKIE, GET and POST Parameters
|
||||
function ffluci.http.formvalues()
|
||||
function luci.http.formvalues()
|
||||
return FORM
|
||||
end
|
||||
|
||||
-- Gets form value from key
|
||||
function ffluci.http.formvalue(key, default)
|
||||
local c = ffluci.http.formvalues()
|
||||
function luci.http.formvalue(key, default)
|
||||
local c = luci.http.formvalues()
|
||||
|
||||
for match in key:gmatch("[%w-_]+") do
|
||||
c = c[match]
|
||||
|
@ -59,39 +59,39 @@ function ffluci.http.formvalue(key, default)
|
|||
end
|
||||
|
||||
-- Gets a table of values with a certain prefix
|
||||
function ffluci.http.formvaluetable(prefix)
|
||||
return ffluci.http.formvalue(prefix, {})
|
||||
function luci.http.formvaluetable(prefix)
|
||||
return luci.http.formvalue(prefix, {})
|
||||
end
|
||||
|
||||
-- Sends a custom HTTP-Header
|
||||
function ffluci.http.header(key, value)
|
||||
function luci.http.header(key, value)
|
||||
print(key .. ": " .. value)
|
||||
end
|
||||
|
||||
-- Set Content-Type
|
||||
function ffluci.http.prepare_content(type)
|
||||
function luci.http.prepare_content(type)
|
||||
print("Content-Type: "..type.."\n")
|
||||
end
|
||||
|
||||
-- Asks the browser to redirect to "url"
|
||||
function ffluci.http.redirect(url)
|
||||
ffluci.http.status(302, "Found")
|
||||
ffluci.http.header("Location", url)
|
||||
function luci.http.redirect(url)
|
||||
luci.http.status(302, "Found")
|
||||
luci.http.header("Location", url)
|
||||
print()
|
||||
end
|
||||
|
||||
-- Returns the path of an uploaded file
|
||||
-- WARNING! File uploads can be easily spoofed! Do additional sanity checks!
|
||||
function ffluci.http.upload(name)
|
||||
local fpath = ffluci.http.formvalue(name)
|
||||
local fname = ffluci.http.formvalue(name .. "_name")
|
||||
function luci.http.upload(name)
|
||||
local fpath = luci.http.formvalue(name)
|
||||
local fname = luci.http.formvalue(name .. "_name")
|
||||
|
||||
if fpath and fname and ffluci.fs.isfile(fpath) then
|
||||
if fpath and fname and luci.fs.isfile(fpath) then
|
||||
return fpath
|
||||
end
|
||||
end
|
||||
|
||||
-- Sets HTTP-Status-Header
|
||||
function ffluci.http.status(code, message)
|
||||
function luci.http.status(code, message)
|
||||
print("Status: " .. tostring(code) .. " " .. message)
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@ module("webuci", package.seeall)
|
|||
function prepare_req(uri)
|
||||
env = {}
|
||||
env.REQUEST_URI = uri
|
||||
require("ffluci.dispatcher").createindex()
|
||||
require("luci.dispatcher").createindex()
|
||||
end
|
||||
|
||||
function init_req(context)
|
||||
|
@ -17,5 +17,5 @@ function init_req(context)
|
|||
end
|
||||
|
||||
function handle_req(context)
|
||||
ffluci.dispatcher.httpdispatch()
|
||||
luci.dispatcher.httpdispatch()
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - SGI-Module for Haserl
|
||||
LuCI - SGI-Module for Haserl
|
||||
|
||||
Description:
|
||||
Server Gateway Interface for Haserl
|
||||
|
@ -23,40 +23,40 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.sgi.webuci", package.seeall)
|
||||
module("luci.sgi.webuci", package.seeall)
|
||||
|
||||
-- Environment Table
|
||||
ffluci.http.env = webuci.env
|
||||
luci.http.env = webuci.env
|
||||
|
||||
|
||||
local status_set = false
|
||||
|
||||
-- Returns the main dispatcher URL
|
||||
function ffluci.http.dispatcher()
|
||||
return ffluci.http.env.SCRIPT_NAME or ""
|
||||
function luci.http.dispatcher()
|
||||
return luci.http.env.SCRIPT_NAME or ""
|
||||
end
|
||||
|
||||
-- Returns the upload dispatcher URL
|
||||
function ffluci.http.dispatcher_upload()
|
||||
function luci.http.dispatcher_upload()
|
||||
-- To be implemented
|
||||
end
|
||||
|
||||
-- Returns a table of all COOKIE, GET and POST Parameters
|
||||
function ffluci.http.formvalues()
|
||||
function luci.http.formvalues()
|
||||
return webuci.vars
|
||||
end
|
||||
|
||||
-- Gets form value from key
|
||||
function ffluci.http.formvalue(key, default)
|
||||
return ffluci.http.formvalues()[key] or default
|
||||
function luci.http.formvalue(key, default)
|
||||
return luci.http.formvalues()[key] or default
|
||||
end
|
||||
|
||||
-- Gets a table of values with a certain prefix
|
||||
function ffluci.http.formvaluetable(prefix)
|
||||
function luci.http.formvaluetable(prefix)
|
||||
local vals = {}
|
||||
prefix = prefix and prefix .. "." or "."
|
||||
|
||||
for k, v in pairs(ffluci.http.formvalues()) do
|
||||
for k, v in pairs(luci.http.formvalues()) do
|
||||
if k:find(prefix, 1, true) == 1 then
|
||||
vals[k:sub(#prefix + 1)] = v
|
||||
end
|
||||
|
@ -66,34 +66,34 @@ function ffluci.http.formvaluetable(prefix)
|
|||
end
|
||||
|
||||
-- Sends a custom HTTP-Header
|
||||
function ffluci.http.header(key, value)
|
||||
function luci.http.header(key, value)
|
||||
print(key .. ": " .. value)
|
||||
end
|
||||
|
||||
-- Set Content-Type
|
||||
function ffluci.http.prepare_content(type)
|
||||
function luci.http.prepare_content(type)
|
||||
if not status_set then
|
||||
ffluci.http.status(200, "OK")
|
||||
luci.http.status(200, "OK")
|
||||
end
|
||||
|
||||
print("Content-Type: "..type.."\n")
|
||||
end
|
||||
|
||||
-- Asks the browser to redirect to "url"
|
||||
function ffluci.http.redirect(url)
|
||||
ffluci.http.status(302, "Found")
|
||||
ffluci.http.header("Location", url)
|
||||
function luci.http.redirect(url)
|
||||
luci.http.status(302, "Found")
|
||||
luci.http.header("Location", url)
|
||||
print()
|
||||
end
|
||||
|
||||
-- Returns the path of an uploaded file
|
||||
-- WARNING! File uploads can be easily spoofed! Do additional sanity checks!
|
||||
function ffluci.http.upload(name)
|
||||
function luci.http.upload(name)
|
||||
-- To be implemented
|
||||
end
|
||||
|
||||
-- Sets HTTP-Status-Header
|
||||
function ffluci.http.status(code, message)
|
||||
function luci.http.status(code, message)
|
||||
print(webuci.env.SERVER_PROTOCOL .. " " .. tostring(code) .. " " .. message)
|
||||
status_set = true
|
||||
end
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
LUAC = luac
|
||||
LUAC_OPTIONS = -s
|
||||
LUCI_INSTALLDIR = /usr/lib/lua/ffluci
|
||||
LUCI_INSTALLDIR = /usr/lib/lua/luci
|
|
@ -1,230 +0,0 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_BRANCH:=trunk
|
||||
PKG_SOURCE_URL:=https://dev.leipzig.freifunk.net/svn/ff-luci/$(PKG_BRANCH)
|
||||
PKG_REV:=$(shell LC_ALL=C svn info ${PKG_SOURCE_URL} | sed -ne's/^Last Changed Rev: //p')
|
||||
|
||||
PKG_NAME:=ffluci
|
||||
PKG_VERSION:=0.5+svn$(PKG_REV)
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
|
||||
PKG_SOURCE_PROTO:=svn
|
||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
|
||||
|
||||
# LUA_TARGET:=compile LUAC=$(BUILD_DIR_HOST)/lua/luac
|
||||
LUA_TARGET:=source
|
||||
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C$(PKG_BUILD_DIR) build LUA_TARGET=$(LUA_TARGET)
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci/template
|
||||
SECTION:=admin
|
||||
CATEGORY:=Administration
|
||||
TITLE:=FFLuCI - Freifunk Lua Configuration Interface
|
||||
URL:=http://luci.freifunk-halle.net/
|
||||
MAINTAINER:=Steven Barth <steven-at-midlink-dot-org>
|
||||
endef
|
||||
|
||||
define Package/ffluci/install/template
|
||||
$(CP) $(PKG_BUILD_DIR)/$(2)/dist/* $(1)/ -R
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci
|
||||
$(call Package/ffluci/template)
|
||||
MENU:=1
|
||||
DEPENDS:=+lua +luaposix +luci-addons
|
||||
endef
|
||||
|
||||
define Package/ffluci/conffiles
|
||||
/etc/config/luci
|
||||
endef
|
||||
|
||||
define Package/ffluci/install
|
||||
$(call Package/ffluci/install/template,$(1),core)
|
||||
$(call Package/ffluci/install/template,$(1),themes/fledermaus)
|
||||
endef
|
||||
|
||||
|
||||
### Community Packages ###
|
||||
|
||||
define Package/ffluci-ff-halle
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci \
|
||||
+ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-splash \
|
||||
+ffluci-app-ffwizard-leipzig \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
|
||||
+kmod-tun +ip
|
||||
TITLE:=Freifunk Halle Community Meta-Package
|
||||
endef
|
||||
|
||||
define Package/ffluci-ff-halle/install
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-ff-leipzig
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci \
|
||||
+ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-splash \
|
||||
+ffluci-app-ffwizard-leipzig \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
|
||||
+kmod-tun +ip
|
||||
TITLE:=Freifunk Leipzig Community Meta-Package
|
||||
endef
|
||||
|
||||
define Package/ffluci-ff-leipzig/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/community-leipzig)
|
||||
$(CP) -a ./ipkg/ffluci-ff-leipzig.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-ff-hannover
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci \
|
||||
+ffluci-sgi-haserl +ffluci-mod-freifunk +ffluci-app-splash \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice
|
||||
TITLE:=Freifunk Hannover Community Meta-Package
|
||||
URL:=http://www.freifunk-hannover.de/
|
||||
MAINTAINER:=Mickey Knox <mickey-at-netfreaks-dot-org>
|
||||
endef
|
||||
|
||||
define Package/ffluci-ff-hannover/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/community-hannover)
|
||||
$(CP) -a ./ipkg/ffluci-ff-hannover.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
### Modules ###
|
||||
|
||||
define Package/ffluci-mod-admin-core
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci
|
||||
TITLE:=Core administrative pages
|
||||
endef
|
||||
|
||||
define Package/ffluci-mod-admin-core/install
|
||||
$(call Package/ffluci/install/template,$(1),modules/admin-core)
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-mod-freifunk
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci +ffluci-mod-admin-core +ffluci-app-firewall
|
||||
TITLE:=Freifunk public and administrative pages
|
||||
endef
|
||||
|
||||
define Package/ffluci-mod-freifunk/conffiles
|
||||
/etc/config/freifunk
|
||||
endef
|
||||
|
||||
define Package/ffluci-mod-freifunk/install
|
||||
$(call Package/ffluci/install/template,$(1),modules/freifunk)
|
||||
endef
|
||||
|
||||
|
||||
|
||||
### Applications ###
|
||||
|
||||
define Package/ffluci-app-ffwizard-leipzig
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci +ffluci-mod-freifunk
|
||||
TITLE:=Freifunk Leipzig configuration wizard
|
||||
endef
|
||||
|
||||
define Package/ffluci-app-ffwizard-leipzig/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/luci-ffwizard-leipzig)
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-app-firewall
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci +ffluci-mod-admin-core
|
||||
TITLE:=Firewall and Portforwarding application
|
||||
endef
|
||||
|
||||
define Package/ffluci-app-firewall/conffiles
|
||||
/etc/config/luci_fw
|
||||
endef
|
||||
|
||||
define Package/ffluci-app-firewall/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/luci-fw)
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-fw/dist/etc/init.d/luci_fw $(1)/etc/init.d
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-app-splash
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci +ffluci-mod-freifunk +ffluci-sgi-haserl +iptables-mod-nat +iptables-mod-ipopt
|
||||
TITLE:=Freifunk DHCP-Splash application
|
||||
endef
|
||||
|
||||
define Package/ffluci-app-splash/conffiles
|
||||
/etc/config/luci_splash
|
||||
endef
|
||||
|
||||
define Package/ffluci-app-splash/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/luci-splash)
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/usr/sbin/luci-splash $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/etc/init.d/luci_splash $(1)/etc/init.d
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/etc/cron.minutely/luci_splash $(1)/etc/cron.minutely
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi $(1)/usr/lib/luci-splash/htdocs/cgi-bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/www/cgi-bin/luci-splash $(1)/www/cgi-bin/luci-splash
|
||||
endef
|
||||
|
||||
|
||||
|
||||
### Server Gateway Interfaces ###
|
||||
|
||||
define Package/ffluci-sgi-haserl
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci +haserl-lua
|
||||
TITLE:=SGI for Haserl
|
||||
endef
|
||||
|
||||
define Package/ffluci-sgi-haserl/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/sgi-haserl)
|
||||
$(CP) -a ./ipkg/ffluci-sgi-haserl.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
define Package/ffluci-sgi-webuci
|
||||
$(call Package/ffluci/template)
|
||||
DEPENDS:=ffluci
|
||||
TITLE:=SGI for Webuci
|
||||
endef
|
||||
|
||||
define Package/ffluci-sgi-webuci/install
|
||||
$(call Package/ffluci/install/template,$(1),applications/sgi-webuci)
|
||||
endef
|
||||
|
||||
|
||||
|
||||
|
||||
$(eval $(call BuildPackage,ffluci))
|
||||
|
||||
$(eval $(call BuildPackage,ffluci-ff-halle))
|
||||
$(eval $(call BuildPackage,ffluci-ff-leipzig))
|
||||
$(eval $(call BuildPackage,ffluci-ff-hannover))
|
||||
|
||||
$(eval $(call BuildPackage,ffluci-mod-admin-core))
|
||||
$(eval $(call BuildPackage,ffluci-mod-freifunk))
|
||||
|
||||
$(eval $(call BuildPackage,ffluci-app-ffwizard-leipzig))
|
||||
$(eval $(call BuildPackage,ffluci-app-firewall))
|
||||
$(eval $(call BuildPackage,ffluci-app-splash))
|
||||
|
||||
$(eval $(call BuildPackage,ffluci-sgi-haserl))
|
||||
$(eval $(call BuildPackage,ffluci-sgi-webuci))
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
[ -n "${IPKG_INSTROOT}" ] || {
|
||||
( . /etc/uci-defaults/ffluci-community-hannover ) && rm -f /etc/uci-defaults/ffluci-community-hannover
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
[ -n "${IPKG_INSTROOT}" ] || {
|
||||
( . /etc/uci-defaults/ffluci-community-leipzig ) && rm -f /etc/uci-defaults/ffluci-community-leipzig
|
||||
}
|
|
@ -12,7 +12,7 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://dev.leipzig.freifunk.net/svn/ff-luci/trunk/contrib/package-source/ \
|
||||
http://firmware.freifunk-halle.net/ffluci/package-source/
|
||||
http://firmware.freifunk-halle.net/luci/package-source/
|
||||
PKG_MD5SUM:=b004005594b84e35839b1d5c330f8e03
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ endef
|
|||
define Package/luci-addons
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=FFLuCI System Addons for Kamikaze
|
||||
TITLE:=LuCI System Addons for Kamikaze
|
||||
URL:=http://luci.freifunk-halle.net
|
||||
endef
|
||||
|
||||
|
@ -28,7 +28,7 @@ define Package/luci-addons/install
|
|||
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
|
||||
|
||||
$(INSTALL_BIN) ./dist/usr/bin/run-parts $(1)/usr/bin
|
||||
$(INSTALL_BIN) ./dist/sbin/ffluci-flash $(1)/sbin
|
||||
$(INSTALL_BIN) ./dist/sbin/luci-flash $(1)/sbin
|
||||
|
||||
$(CP) ./dist/etc/crontabs/root $(1)/etc/crontabs/root
|
||||
$(CP) ./dist/etc/hotplug.d/iface/20-aliases $(1)/etc/hotplug.d/iface/20-aliases
|
||||
|
|
230
contrib/package/luci/Makefile
Normal file
230
contrib/package/luci/Makefile
Normal file
|
@ -0,0 +1,230 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_BRANCH:=trunk
|
||||
PKG_SOURCE_URL:=https://dev.leipzig.freifunk.net/svn/ff-luci/$(PKG_BRANCH)
|
||||
PKG_REV:=$(shell LC_ALL=C svn info ${PKG_SOURCE_URL} | sed -ne's/^Last Changed Rev: //p')
|
||||
|
||||
PKG_NAME:=luci
|
||||
PKG_VERSION:=0.5+svn$(PKG_REV)
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
|
||||
PKG_SOURCE_PROTO:=svn
|
||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
|
||||
|
||||
# LUA_TARGET:=compile LUAC=$(BUILD_DIR_HOST)/lua/luac
|
||||
LUA_TARGET:=source
|
||||
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(MAKE) -C$(PKG_BUILD_DIR) build LUA_TARGET=$(LUA_TARGET)
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci/template
|
||||
SECTION:=admin
|
||||
CATEGORY:=Administration
|
||||
TITLE:=LuCI - Lua Configuration Interface
|
||||
URL:=http://luci.freifunk-halle.net/
|
||||
MAINTAINER:=Steven Barth <steven-at-midlink-dot-org>
|
||||
endef
|
||||
|
||||
define Package/luci/install/template
|
||||
$(CP) $(PKG_BUILD_DIR)/$(2)/dist/* $(1)/ -R
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci
|
||||
$(call Package/luci/template)
|
||||
MENU:=1
|
||||
DEPENDS:=+lua +luaposix +luci-addons
|
||||
endef
|
||||
|
||||
define Package/luci/conffiles
|
||||
/etc/config/luci
|
||||
endef
|
||||
|
||||
define Package/luci/install
|
||||
$(call Package/luci/install/template,$(1),core)
|
||||
$(call Package/luci/install/template,$(1),themes/fledermaus)
|
||||
endef
|
||||
|
||||
|
||||
### Community Packages ###
|
||||
|
||||
define Package/luci-ff-halle
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci \
|
||||
+luci-sgi-haserl +luci-mod-freifunk +luci-app-splash \
|
||||
+luci-app-ffwizard-leipzig \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
|
||||
+kmod-tun +ip
|
||||
TITLE:=Freifunk Halle Community Meta-Package
|
||||
endef
|
||||
|
||||
define Package/luci-ff-halle/install
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-ff-leipzig
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci \
|
||||
+luci-sgi-haserl +luci-mod-freifunk +luci-app-splash \
|
||||
+luci-app-ffwizard-leipzig \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice \
|
||||
+kmod-tun +ip
|
||||
TITLE:=Freifunk Leipzig Community Meta-Package
|
||||
endef
|
||||
|
||||
define Package/luci-ff-leipzig/install
|
||||
$(call Package/luci/install/template,$(1),applications/community-leipzig)
|
||||
$(CP) -a ./ipkg/luci-ff-leipzig.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-ff-hannover
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci \
|
||||
+luci-sgi-haserl +luci-mod-freifunk +luci-app-splash \
|
||||
+olsrd +olsrd-mod-dyn-gw +olsrd-mod-txtinfo +olsrd-mod-nameservice
|
||||
TITLE:=Freifunk Hannover Community Meta-Package
|
||||
URL:=http://www.freifunk-hannover.de/
|
||||
MAINTAINER:=Mickey Knox <mickey-at-netfreaks-dot-org>
|
||||
endef
|
||||
|
||||
define Package/luci-ff-hannover/install
|
||||
$(call Package/luci/install/template,$(1),applications/community-hannover)
|
||||
$(CP) -a ./ipkg/luci-ff-hannover.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
### Modules ###
|
||||
|
||||
define Package/luci-mod-admin-core
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci
|
||||
TITLE:=Core administrative pages
|
||||
endef
|
||||
|
||||
define Package/luci-mod-admin-core/install
|
||||
$(call Package/luci/install/template,$(1),modules/admin-core)
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-mod-freifunk
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci +luci-mod-admin-core +luci-app-firewall
|
||||
TITLE:=Freifunk public and administrative pages
|
||||
endef
|
||||
|
||||
define Package/luci-mod-freifunk/conffiles
|
||||
/etc/config/freifunk
|
||||
endef
|
||||
|
||||
define Package/luci-mod-freifunk/install
|
||||
$(call Package/luci/install/template,$(1),modules/freifunk)
|
||||
endef
|
||||
|
||||
|
||||
|
||||
### Applications ###
|
||||
|
||||
define Package/luci-app-ffwizard-leipzig
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci +luci-mod-freifunk
|
||||
TITLE:=Freifunk Leipzig configuration wizard
|
||||
endef
|
||||
|
||||
define Package/luci-app-ffwizard-leipzig/install
|
||||
$(call Package/luci/install/template,$(1),applications/luci-ffwizard-leipzig)
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-app-firewall
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci +luci-mod-admin-core
|
||||
TITLE:=Firewall and Portforwarding application
|
||||
endef
|
||||
|
||||
define Package/luci-app-firewall/conffiles
|
||||
/etc/config/luci_fw
|
||||
endef
|
||||
|
||||
define Package/luci-app-firewall/install
|
||||
$(call Package/luci/install/template,$(1),applications/luci-fw)
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-fw/dist/etc/init.d/luci_fw $(1)/etc/init.d
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-app-splash
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci +luci-mod-freifunk +luci-sgi-haserl +iptables-mod-nat +iptables-mod-ipopt
|
||||
TITLE:=Freifunk DHCP-Splash application
|
||||
endef
|
||||
|
||||
define Package/luci-app-splash/conffiles
|
||||
/etc/config/luci_splash
|
||||
endef
|
||||
|
||||
define Package/luci-app-splash/install
|
||||
$(call Package/luci/install/template,$(1),applications/luci-splash)
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/usr/sbin/luci-splash $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/etc/init.d/luci_splash $(1)/etc/init.d
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/etc/cron.minutely/luci_splash $(1)/etc/cron.minutely
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi $(1)/usr/lib/luci-splash/htdocs/cgi-bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/applications/luci-splash/dist/www/cgi-bin/luci-splash $(1)/www/cgi-bin/luci-splash
|
||||
endef
|
||||
|
||||
|
||||
|
||||
### Server Gateway Interfaces ###
|
||||
|
||||
define Package/luci-sgi-haserl
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci +haserl-lua
|
||||
TITLE:=SGI for Haserl
|
||||
endef
|
||||
|
||||
define Package/luci-sgi-haserl/install
|
||||
$(call Package/luci/install/template,$(1),applications/sgi-haserl)
|
||||
$(CP) -a ./ipkg/luci-sgi-haserl.postinst $(1)/CONTROL/postinst
|
||||
endef
|
||||
|
||||
|
||||
define Package/luci-sgi-webuci
|
||||
$(call Package/luci/template)
|
||||
DEPENDS:=luci
|
||||
TITLE:=SGI for Webuci
|
||||
endef
|
||||
|
||||
define Package/luci-sgi-webuci/install
|
||||
$(call Package/luci/install/template,$(1),applications/sgi-webuci)
|
||||
endef
|
||||
|
||||
|
||||
|
||||
|
||||
$(eval $(call BuildPackage,luci))
|
||||
|
||||
$(eval $(call BuildPackage,luci-ff-halle))
|
||||
$(eval $(call BuildPackage,luci-ff-leipzig))
|
||||
$(eval $(call BuildPackage,luci-ff-hannover))
|
||||
|
||||
$(eval $(call BuildPackage,luci-mod-admin-core))
|
||||
$(eval $(call BuildPackage,luci-mod-freifunk))
|
||||
|
||||
$(eval $(call BuildPackage,luci-app-ffwizard-leipzig))
|
||||
$(eval $(call BuildPackage,luci-app-firewall))
|
||||
$(eval $(call BuildPackage,luci-app-splash))
|
||||
|
||||
$(eval $(call BuildPackage,luci-sgi-haserl))
|
||||
$(eval $(call BuildPackage,luci-sgi-webuci))
|
4
contrib/package/luci/ipkg/luci-ff-hannover.postinst
Normal file
4
contrib/package/luci/ipkg/luci-ff-hannover.postinst
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
[ -n "${IPKG_INSTROOT}" ] || {
|
||||
( . /etc/uci-defaults/luci-community-hannover ) && rm -f /etc/uci-defaults/luci-community-hannover
|
||||
}
|
4
contrib/package/luci/ipkg/luci-ff-leipzig.postinst
Executable file
4
contrib/package/luci/ipkg/luci-ff-leipzig.postinst
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
[ -n "${IPKG_INSTROOT}" ] || {
|
||||
( . /etc/uci-defaults/luci-community-leipzig ) && rm -f /etc/uci-defaults/luci-community-leipzig
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
PATTERNS='/cgi-bin/ffluci/admin:root:$p$root /cgi-bin/ffluci-upload:root:$p$root'
|
||||
PATTERNS='/cgi-bin/luci/admin:root:$p$root /cgi-bin/luci-upload:root:$p$root'
|
||||
|
||||
for i in $PATTERNS
|
||||
do
|
|
@ -1,7 +1,7 @@
|
|||
config core main
|
||||
option lang de
|
||||
option mediaurlbase /ffluci/media
|
||||
option resourcebase /ffluci/images
|
||||
option mediaurlbase /luci/media
|
||||
option resourcebase /luci/images
|
||||
option title "Freifunk Kamikaze"
|
||||
option subtitle Fledermausedition
|
||||
|
||||
|
@ -32,4 +32,4 @@ config internal languages
|
|||
option en "English"
|
||||
|
||||
config internal themes
|
||||
option Fledermaus "/ffluci/media"
|
||||
option Fledermaus "/luci/media"
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
--]]
|
||||
|
||||
module("ffluci.bits", package.seeall);
|
||||
module("luci.bits", package.seeall);
|
||||
|
||||
local hex2bin = {
|
||||
["0"] = "0000",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Configuration Bind Interface
|
||||
LuCI - Configuration Bind Interface
|
||||
|
||||
Description:
|
||||
Offers an interface for binding confiugration values to certain
|
||||
|
@ -24,35 +24,35 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.cbi", package.seeall)
|
||||
module("luci.cbi", package.seeall)
|
||||
|
||||
require("ffluci.template")
|
||||
require("ffluci.util")
|
||||
require("ffluci.http")
|
||||
require("ffluci.model.uci")
|
||||
require("luci.template")
|
||||
require("luci.util")
|
||||
require("luci.http")
|
||||
require("luci.model.uci")
|
||||
|
||||
local class = ffluci.util.class
|
||||
local instanceof = ffluci.util.instanceof
|
||||
local class = luci.util.class
|
||||
local instanceof = luci.util.instanceof
|
||||
|
||||
-- Loads a CBI map from given file, creating an environment and returns it
|
||||
function load(cbimap)
|
||||
require("ffluci.fs")
|
||||
require("ffluci.i18n")
|
||||
require("ffluci.config")
|
||||
require("ffluci.sys")
|
||||
require("luci.fs")
|
||||
require("luci.i18n")
|
||||
require("luci.config")
|
||||
require("luci.sys")
|
||||
|
||||
local cbidir = ffluci.sys.libpath() .. "/model/cbi/"
|
||||
local cbidir = luci.sys.libpath() .. "/model/cbi/"
|
||||
local func, err = loadfile(cbidir..cbimap..".lua")
|
||||
|
||||
if not func then
|
||||
return nil
|
||||
end
|
||||
|
||||
ffluci.i18n.loadc("cbi")
|
||||
luci.i18n.loadc("cbi")
|
||||
|
||||
ffluci.util.resfenv(func)
|
||||
ffluci.util.updfenv(func, ffluci.cbi)
|
||||
ffluci.util.extfenv(func, "translate", ffluci.i18n.translate)
|
||||
luci.util.resfenv(func)
|
||||
luci.util.updfenv(func, luci.cbi)
|
||||
luci.util.extfenv(func, "translate", luci.i18n.translate)
|
||||
|
||||
local map = func()
|
||||
|
||||
|
@ -91,7 +91,7 @@ function Node.render(self, scope)
|
|||
scope = scope or {}
|
||||
scope.self = self
|
||||
|
||||
ffluci.template.render(self.template, scope)
|
||||
luci.template.render(self.template, scope)
|
||||
end
|
||||
|
||||
-- Render the children
|
||||
|
@ -122,7 +122,7 @@ function Map.__init__(self, config, ...)
|
|||
Node.__init__(self, ...)
|
||||
self.config = config
|
||||
self.template = "cbi/map"
|
||||
self.uci = ffluci.model.uci.Session()
|
||||
self.uci = luci.model.uci.Session()
|
||||
self.ucidata, self.uciorder = self.uci:sections(self.config)
|
||||
if not self.ucidata or not self.uciorder then
|
||||
error("Unable to read UCI data: " .. self.config)
|
||||
|
@ -242,7 +242,7 @@ function AbstractSection.parse_optionals(self, section)
|
|||
|
||||
self.optionals[section] = {}
|
||||
|
||||
local field = ffluci.http.formvalue("cbi.opt."..self.config.."."..section)
|
||||
local field = luci.http.formvalue("cbi.opt."..self.config.."."..section)
|
||||
for k,v in ipairs(self.children) do
|
||||
if v.optional and not v:cfgvalue(section) then
|
||||
if field == v.option then
|
||||
|
@ -270,8 +270,8 @@ function AbstractSection.parse_dynamic(self, section)
|
|||
return
|
||||
end
|
||||
|
||||
local arr = ffluci.util.clone(self:cfgvalue(section))
|
||||
local form = ffluci.http.formvaluetable("cbid."..self.config.."."..section)
|
||||
local arr = luci.util.clone(self:cfgvalue(section))
|
||||
local form = luci.http.formvaluetable("cbid."..self.config.."."..section)
|
||||
for k, v in pairs(form) do
|
||||
arr[k] = v
|
||||
end
|
||||
|
@ -329,11 +329,11 @@ function NamedSection.parse(self)
|
|||
if self.addremove then
|
||||
local path = self.config.."."..s
|
||||
if active then -- Remove the section
|
||||
if ffluci.http.formvalue("cbi.rns."..path) and self:remove(s) then
|
||||
if luci.http.formvalue("cbi.rns."..path) and self:remove(s) then
|
||||
return
|
||||
end
|
||||
else -- Create and apply default values
|
||||
if ffluci.http.formvalue("cbi.cns."..path) and self:create(s) then
|
||||
if luci.http.formvalue("cbi.cns."..path) and self:create(s) then
|
||||
for k,v in pairs(self.children) do
|
||||
v:write(s, v.default)
|
||||
end
|
||||
|
@ -343,7 +343,7 @@ function NamedSection.parse(self)
|
|||
|
||||
if active then
|
||||
AbstractSection.parse_dynamic(self, s)
|
||||
if ffluci.http.formvalue("cbi.submit") then
|
||||
if luci.http.formvalue("cbi.submit") then
|
||||
Node.parse(self, s)
|
||||
end
|
||||
AbstractSection.parse_optionals(self, s)
|
||||
|
@ -413,7 +413,7 @@ function TypedSection.parse(self)
|
|||
if self.addremove then
|
||||
-- Create
|
||||
local crval = "cbi.cts." .. self.config .. "." .. self.sectiontype
|
||||
local name = ffluci.http.formvalue(crval)
|
||||
local name = luci.http.formvalue(crval)
|
||||
if self.anonymous then
|
||||
if name then
|
||||
self:create()
|
||||
|
@ -439,7 +439,7 @@ function TypedSection.parse(self)
|
|||
|
||||
-- Remove
|
||||
crval = "cbi.rts." .. self.config
|
||||
name = ffluci.http.formvaluetable(crval)
|
||||
name = luci.http.formvaluetable(crval)
|
||||
for k,v in pairs(name) do
|
||||
if self:cfgvalue(k) and self:checkscope(k) then
|
||||
self:remove(k)
|
||||
|
@ -449,7 +449,7 @@ function TypedSection.parse(self)
|
|||
|
||||
for i, k in ipairs(self:cfgsections()) do
|
||||
AbstractSection.parse_dynamic(self, k)
|
||||
if ffluci.http.formvalue("cbi.submit") then
|
||||
if luci.http.formvalue("cbi.submit") then
|
||||
Node.parse(self, k)
|
||||
end
|
||||
AbstractSection.parse_optionals(self, k)
|
||||
|
@ -522,13 +522,13 @@ end
|
|||
-- Return whether this object should be created
|
||||
function AbstractValue.formcreated(self, section)
|
||||
local key = "cbi.opt."..self.config.."."..section
|
||||
return (ffluci.http.formvalue(key) == self.option)
|
||||
return (luci.http.formvalue(key) == self.option)
|
||||
end
|
||||
|
||||
-- Returns the formvalue for this object
|
||||
function AbstractValue.formvalue(self, section)
|
||||
local key = "cbid."..self.map.config.."."..section.."."..self.option
|
||||
return ffluci.http.formvalue(key)
|
||||
return luci.http.formvalue(key)
|
||||
end
|
||||
|
||||
function AbstractValue.parse(self, section)
|
||||
|
@ -605,7 +605,7 @@ function Value.validate(self, val)
|
|||
val = nil
|
||||
end
|
||||
|
||||
return ffluci.util.validate(val, self.isnumber, self.isinteger)
|
||||
return luci.util.validate(val, self.isnumber, self.isinteger)
|
||||
end
|
||||
|
||||
|
||||
|
@ -623,7 +623,7 @@ function DummyValue.parse(self)
|
|||
end
|
||||
|
||||
function DummyValue.render(self, s)
|
||||
ffluci.template.render(self.template, {self=self, section=s})
|
||||
luci.template.render(self.template, {self=self, section=s})
|
||||
end
|
||||
|
||||
|
||||
|
@ -684,7 +684,7 @@ function ListValue.value(self, key, val)
|
|||
end
|
||||
|
||||
function ListValue.validate(self, val)
|
||||
if ffluci.util.contains(self.keylist, val) then
|
||||
if luci.util.contains(self.keylist, val) then
|
||||
return val
|
||||
else
|
||||
return nil
|
||||
|
@ -723,7 +723,7 @@ function MultiValue.valuelist(self, section)
|
|||
return {}
|
||||
end
|
||||
|
||||
return ffluci.util.split(val, self.delimiter)
|
||||
return luci.util.split(val, self.delimiter)
|
||||
end
|
||||
|
||||
function MultiValue.validate(self, val)
|
||||
|
@ -734,7 +734,7 @@ function MultiValue.validate(self, val)
|
|||
local result = ""
|
||||
|
||||
for value in val:gmatch("[^\n]+") do
|
||||
if ffluci.util.contains(self.keylist, value) then
|
||||
if luci.util.contains(self.keylist, value) then
|
||||
result = result .. self.delimiter .. value
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--[[
|
||||
FFLuCI - Configuration
|
||||
LuCI - Configuration
|
||||
|
||||
Description:
|
||||
Some FFLuCI configuration values read from uci file "luci"
|
||||
Some LuCI configuration values read from uci file "luci"
|
||||
|
||||
|
||||
FileId:
|
||||
|
@ -25,16 +25,16 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.config", package.seeall)
|
||||
require("ffluci.model.uci")
|
||||
require("ffluci.util")
|
||||
require("ffluci.sys")
|
||||
module("luci.config", package.seeall)
|
||||
require("luci.model.uci")
|
||||
require("luci.util")
|
||||
require("luci.sys")
|
||||
|
||||
-- Warning! This is only for fallback and compatibility purporses! --
|
||||
main = {}
|
||||
|
||||
-- This is where stylesheets and images go
|
||||
main.mediaurlbase = "/ffluci/media"
|
||||
main.mediaurlbase = "/luci/media"
|
||||
|
||||
-- Does anybody think about browser autodetect here?
|
||||
-- Too bad busybox doesn't populate HTTP_ACCEPT_LANGUAGE
|
||||
|
@ -42,7 +42,7 @@ main.lang = "de"
|
|||
|
||||
|
||||
-- Now overwrite with UCI values
|
||||
local ucidata = ffluci.model.uci.sections("luci")
|
||||
local ucidata = luci.model.uci.sections("luci")
|
||||
if ucidata then
|
||||
ffluci.util.update(ffluci.config, ucidata)
|
||||
luci.util.update(luci.config, ucidata)
|
||||
end
|
|
@ -1,2 +1,2 @@
|
|||
module("ffluci.debug", package.seeall)
|
||||
module("luci.debug", package.seeall)
|
||||
__file__ = debug.getinfo(1, 'S').source:sub(2)
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Dispatcher
|
||||
LuCI - Dispatcher
|
||||
|
||||
Description:
|
||||
The request dispatcher and module dispatcher generators
|
||||
|
@ -23,10 +23,10 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.dispatcher", package.seeall)
|
||||
require("ffluci.http")
|
||||
require("ffluci.sys")
|
||||
require("ffluci.fs")
|
||||
module("luci.dispatcher", package.seeall)
|
||||
require("luci.http")
|
||||
require("luci.sys")
|
||||
require("luci.fs")
|
||||
|
||||
-- Local dispatch database
|
||||
local tree = {nodes={}}
|
||||
|
@ -40,17 +40,17 @@ dispatched = nil
|
|||
|
||||
-- Builds a URL
|
||||
function build_url(...)
|
||||
return ffluci.http.dispatcher() .. "/" .. table.concat(arg, "/")
|
||||
return luci.http.dispatcher() .. "/" .. table.concat(arg, "/")
|
||||
end
|
||||
|
||||
-- Sends a 404 error code and renders the "error404" template if available
|
||||
function error404(message)
|
||||
ffluci.http.status(404, "Not Found")
|
||||
luci.http.status(404, "Not Found")
|
||||
message = message or "Not Found"
|
||||
|
||||
require("ffluci.template")
|
||||
if not pcall(ffluci.template.render, "error404") then
|
||||
ffluci.http.prepare_content("text/plain")
|
||||
require("luci.template")
|
||||
if not pcall(luci.template.render, "error404") then
|
||||
luci.http.prepare_content("text/plain")
|
||||
print(message)
|
||||
end
|
||||
return false
|
||||
|
@ -58,11 +58,11 @@ end
|
|||
|
||||
-- Sends a 500 error code and renders the "error500" template if available
|
||||
function error500(message)
|
||||
ffluci.http.status(500, "Internal Server Error")
|
||||
luci.http.status(500, "Internal Server Error")
|
||||
|
||||
require("ffluci.template")
|
||||
if not pcall(ffluci.template.render, "error500", {message=message}) then
|
||||
ffluci.http.prepare_content("text/plain")
|
||||
require("luci.template")
|
||||
if not pcall(luci.template.render, "error500", {message=message}) then
|
||||
luci.http.prepare_content("text/plain")
|
||||
print(message)
|
||||
end
|
||||
return false
|
||||
|
@ -70,7 +70,7 @@ end
|
|||
|
||||
-- Dispatches a request depending on the PATH_INFO variable
|
||||
function httpdispatch()
|
||||
local pathinfo = ffluci.http.env.PATH_INFO or ""
|
||||
local pathinfo = luci.http.env.PATH_INFO or ""
|
||||
local c = tree
|
||||
|
||||
for s in pathinfo:gmatch("/([%w-]+)") do
|
||||
|
@ -97,15 +97,15 @@ function dispatch()
|
|||
|
||||
|
||||
if track.i18n then
|
||||
require("ffluci.i18n").loadc(track.i18n)
|
||||
require("luci.i18n").loadc(track.i18n)
|
||||
end
|
||||
|
||||
if track.setgroup then
|
||||
ffluci.sys.process.setgroup(track.setgroup)
|
||||
luci.sys.process.setgroup(track.setgroup)
|
||||
end
|
||||
|
||||
if track.setuser then
|
||||
ffluci.sys.process.setuser(track.setuser)
|
||||
luci.sys.process.setuser(track.setuser)
|
||||
end
|
||||
|
||||
|
||||
|
@ -124,20 +124,20 @@ end
|
|||
|
||||
-- Calls the index function of all available controllers
|
||||
function createindex()
|
||||
local root = ffluci.sys.libpath() .. "/controller/"
|
||||
local root = luci.sys.libpath() .. "/controller/"
|
||||
local suff = ".lua"
|
||||
|
||||
local controllers = ffluci.util.combine(
|
||||
ffluci.fs.glob(root .. "*" .. suff),
|
||||
ffluci.fs.glob(root .. "*/*" .. suff)
|
||||
local controllers = luci.util.combine(
|
||||
luci.fs.glob(root .. "*" .. suff),
|
||||
luci.fs.glob(root .. "*/*" .. suff)
|
||||
)
|
||||
|
||||
for i,c in ipairs(controllers) do
|
||||
c = "ffluci.controller." .. c:sub(#root+1, #c-#suff):gsub("/", ".")
|
||||
c = "luci.controller." .. c:sub(#root+1, #c-#suff):gsub("/", ".")
|
||||
stat, mod = pcall(require, c)
|
||||
|
||||
if stat and mod and type(mod.index) == "function" then
|
||||
ffluci.util.updfenv(mod.index, ffluci.dispatcher)
|
||||
luci.util.updfenv(mod.index, luci.dispatcher)
|
||||
pcall(mod.index)
|
||||
end
|
||||
end
|
||||
|
@ -188,16 +188,16 @@ function alias(...)
|
|||
end
|
||||
|
||||
function template(name)
|
||||
require("ffluci.template")
|
||||
return function() ffluci.template.render(name) end
|
||||
require("luci.template")
|
||||
return function() luci.template.render(name) end
|
||||
end
|
||||
|
||||
function cbi(model)
|
||||
require("ffluci.cbi")
|
||||
require("ffluci.template")
|
||||
require("luci.cbi")
|
||||
require("luci.template")
|
||||
|
||||
return function()
|
||||
local stat, res = pcall(ffluci.cbi.load, model)
|
||||
local stat, res = pcall(luci.cbi.load, model)
|
||||
if not stat then
|
||||
error500(res)
|
||||
return true
|
||||
|
@ -209,8 +209,8 @@ function cbi(model)
|
|||
return true
|
||||
end
|
||||
|
||||
ffluci.template.render("cbi/header")
|
||||
luci.template.render("cbi/header")
|
||||
res:render()
|
||||
ffluci.template.render("cbi/footer")
|
||||
luci.template.render("cbi/footer")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Filesystem tools
|
||||
LuCI - Filesystem tools
|
||||
|
||||
Description:
|
||||
A module offering often needed filesystem manipulation functions
|
||||
|
@ -24,7 +24,7 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.fs", package.seeall)
|
||||
module("luci.fs", package.seeall)
|
||||
|
||||
require("posix")
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - HTTP-Interaction
|
||||
LuCI - HTTP-Interaction
|
||||
|
||||
Description:
|
||||
HTTP-Header manipulator and form variable preprocessor
|
||||
|
@ -27,10 +27,10 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.http", package.seeall)
|
||||
module("luci.http", package.seeall)
|
||||
|
||||
if ENV and ENV.HASERLVER then
|
||||
require("ffluci.sgi.haserl")
|
||||
require("luci.sgi.haserl")
|
||||
elseif webuci then
|
||||
require("ffluci.sgi.webuci")
|
||||
require("luci.sgi.webuci")
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Internationalisation
|
||||
LuCI - Internationalisation
|
||||
|
||||
Description:
|
||||
A very minimalistic but yet effective internationalisation module
|
||||
|
@ -24,11 +24,11 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.i18n", package.seeall)
|
||||
require("ffluci.sys")
|
||||
module("luci.i18n", package.seeall)
|
||||
require("luci.sys")
|
||||
|
||||
table = {}
|
||||
i18ndir = ffluci.sys.libpath() .. "/i18n/"
|
||||
i18ndir = luci.sys.libpath() .. "/i18n/"
|
||||
|
||||
-- Clears the translation table
|
||||
function clear()
|
||||
|
@ -49,7 +49,7 @@ end
|
|||
|
||||
-- Same as load but autocompletes the filename with .LANG from config.lang
|
||||
function loadc(file)
|
||||
return load(file .. "." .. require("ffluci.config").main.lang)
|
||||
return load(file .. "." .. require("luci.config").main.lang)
|
||||
end
|
||||
|
||||
-- Returns the i18n-value defined by "key" or if there is no such: "default"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Freifunk Lua Configuration Interface
|
||||
LuCI - Lua Configuration Interface
|
||||
|
||||
Description:
|
||||
Main class
|
||||
|
@ -23,7 +23,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci", package.seeall)
|
||||
module("luci", package.seeall)
|
||||
|
||||
__version__ = "0.5"
|
||||
__appname__ = "FFLuCI"
|
||||
__appname__ = "LuCI"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Menu Builder
|
||||
LuCI - Menu Builder
|
||||
|
||||
Description:
|
||||
Collects menu building information from controllers
|
||||
|
@ -23,21 +23,21 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.menu", package.seeall)
|
||||
module("luci.menu", package.seeall)
|
||||
|
||||
require("ffluci.fs")
|
||||
require("ffluci.util")
|
||||
require("ffluci.sys")
|
||||
require("ffluci.dispatcher")
|
||||
require("luci.fs")
|
||||
require("luci.util")
|
||||
require("luci.sys")
|
||||
require("luci.dispatcher")
|
||||
|
||||
-- Default modelpath
|
||||
modelpattern = ffluci.sys.libpath() .. "/model/menu/*.lua"
|
||||
modelpattern = luci.sys.libpath() .. "/model/menu/*.lua"
|
||||
|
||||
-- Menu definition extra scope
|
||||
scope = {
|
||||
translate = function(...) return require("ffluci.i18n").translate(...) end,
|
||||
loadtrans = function(...) return require("ffluci.i18n").loadc(...) end,
|
||||
isfile = ffluci.fs.isfile
|
||||
translate = function(...) return require("luci.i18n").translate(...) end,
|
||||
loadtrans = function(...) return require("luci.i18n").loadc(...) end,
|
||||
isfile = luci.fs.isfile
|
||||
}
|
||||
|
||||
-- Returns the menu information
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - IPKG wrapper library
|
||||
LuCI - IPKG wrapper library
|
||||
|
||||
Description:
|
||||
Wrapper for the ipkg Package manager
|
||||
|
@ -25,9 +25,9 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.model.ipkg", package.seeall)
|
||||
require("ffluci.sys")
|
||||
require("ffluci.util")
|
||||
module("luci.model.ipkg", package.seeall)
|
||||
require("luci.sys")
|
||||
require("luci.util")
|
||||
|
||||
ipkg = "ipkg"
|
||||
|
||||
|
@ -88,7 +88,7 @@ function _lookup(act, pkg)
|
|||
cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'"
|
||||
end
|
||||
|
||||
return _parselist(ffluci.sys.exec(cmd .. " 2>/dev/null"))
|
||||
return _parselist(luci.sys.exec(cmd .. " 2>/dev/null"))
|
||||
end
|
||||
|
||||
-- Internal parser function
|
||||
|
@ -97,23 +97,23 @@ function _parselist(rawdata)
|
|||
error("IPKG: Invalid rawdata given")
|
||||
end
|
||||
|
||||
rawdata = ffluci.util.split(rawdata)
|
||||
rawdata = luci.util.split(rawdata)
|
||||
local data = {}
|
||||
local c = {}
|
||||
local l = nil
|
||||
|
||||
for k, line in pairs(rawdata) do
|
||||
if line:sub(1, 1) ~= " " then
|
||||
local split = ffluci.util.split(line, ":", 1)
|
||||
local split = luci.util.split(line, ":", 1)
|
||||
local key = nil
|
||||
local val = nil
|
||||
|
||||
if split[1] then
|
||||
key = ffluci.util.trim(split[1])
|
||||
key = luci.util.trim(split[1])
|
||||
end
|
||||
|
||||
if split[2] then
|
||||
val = ffluci.util.trim(split[2])
|
||||
val = luci.util.trim(split[2])
|
||||
end
|
||||
|
||||
if key and val then
|
||||
|
@ -122,7 +122,7 @@ function _parselist(rawdata)
|
|||
data[val] = c
|
||||
elseif key == "Status" then
|
||||
c.Status = {}
|
||||
for i, j in pairs(ffluci.util.split(val, " ")) do
|
||||
for i, j in pairs(luci.util.split(val, " ")) do
|
||||
c.Status[j] = true
|
||||
end
|
||||
else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - UCI mpdel
|
||||
LuCI - UCI mpdel
|
||||
|
||||
Description:
|
||||
Generalized UCI model
|
||||
|
@ -23,16 +23,16 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.model.uci", package.seeall)
|
||||
module("luci.model.uci", package.seeall)
|
||||
|
||||
-- Default savedir
|
||||
savedir = "/tmp/.uci"
|
||||
|
||||
-- Test whether to load libuci-Wrapper or /sbin/uci-Wrapper
|
||||
if pcall(require, "uci") then
|
||||
Session = require("ffluci.model.uci.libuci").Session
|
||||
Session = require("luci.model.uci.libuci").Session
|
||||
else
|
||||
Session = require("ffluci.model.uci.wrapper").Session
|
||||
Session = require("luci.model.uci.wrapper").Session
|
||||
end
|
||||
|
||||
-- The default Session
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - UCI libuci wrapper
|
||||
LuCI - UCI libuci wrapper
|
||||
|
||||
Description:
|
||||
Wrapper for the libuci Lua bindings
|
||||
|
@ -24,19 +24,19 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.model.uci.libuci", package.seeall)
|
||||
module("luci.model.uci.libuci", package.seeall)
|
||||
|
||||
require("uci")
|
||||
require("ffluci.util")
|
||||
require("ffluci.sys")
|
||||
require("luci.util")
|
||||
require("luci.sys")
|
||||
|
||||
-- Session class
|
||||
Session = ffluci.util.class()
|
||||
Session = luci.util.class()
|
||||
|
||||
-- Session constructor
|
||||
function Session.__init__(self, savedir)
|
||||
self.ucicmd = savedir and "uci -P " .. savedir or "uci"
|
||||
self.savedir = savedir or ffluci.model.uci.savedir
|
||||
self.savedir = savedir or luci.model.uci.savedir
|
||||
end
|
||||
|
||||
function Session.add(self, config, section_type)
|
||||
|
@ -152,7 +152,7 @@ end
|
|||
|
||||
|
||||
function Session._uci(self, cmd)
|
||||
local res = ffluci.sys.exec(self.ucicmd .. " 2>/dev/null " .. cmd)
|
||||
local res = luci.sys.exec(self.ucicmd .. " 2>/dev/null " .. cmd)
|
||||
|
||||
if res:len() == 0 then
|
||||
return nil
|
||||
|
@ -162,7 +162,7 @@ function Session._uci(self, cmd)
|
|||
end
|
||||
|
||||
function Session._uci2(self, cmd)
|
||||
local res = ffluci.sys.exec(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
local res = luci.sys.exec(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
|
||||
if res:len() > 0 then
|
||||
return false, res
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - UCI wrapper library
|
||||
LuCI - UCI wrapper library
|
||||
|
||||
Description:
|
||||
Wrapper for the /sbin/uci application, syntax of implemented functions
|
||||
|
@ -27,13 +27,13 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.model.uci.wrapper", package.seeall)
|
||||
module("luci.model.uci.wrapper", package.seeall)
|
||||
|
||||
require("ffluci.util")
|
||||
require("ffluci.sys")
|
||||
require("luci.util")
|
||||
require("luci.sys")
|
||||
|
||||
-- Session class
|
||||
Session = ffluci.util.class()
|
||||
Session = luci.util.class()
|
||||
|
||||
-- Session constructor
|
||||
function Session.__init__(self, savedir)
|
||||
|
@ -104,7 +104,7 @@ Session.t_set = Session.set
|
|||
|
||||
|
||||
function Session._uci(self, cmd)
|
||||
local res = ffluci.sys.exec(self.ucicmd .. " 2>/dev/null " .. cmd)
|
||||
local res = luci.sys.exec(self.ucicmd .. " 2>/dev/null " .. cmd)
|
||||
|
||||
if res:len() == 0 then
|
||||
return nil
|
||||
|
@ -114,7 +114,7 @@ function Session._uci(self, cmd)
|
|||
end
|
||||
|
||||
function Session._uci2(self, cmd)
|
||||
local res = ffluci.sys.exec(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
local res = luci.sys.exec(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
|
||||
if res:len() > 0 then
|
||||
return false, res
|
||||
|
@ -124,7 +124,7 @@ function Session._uci2(self, cmd)
|
|||
end
|
||||
|
||||
function Session._uci3(self, cmd)
|
||||
local res = ffluci.sys.execl(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
local res = luci.sys.execl(self.ucicmd .. " 2>&1 " .. cmd)
|
||||
if res[1] and res[1]:sub(1, self.ucicmd:len()+1) == self.ucicmd..":" then
|
||||
return nil, res[1]
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - System library
|
||||
LuCI - System library
|
||||
|
||||
Description:
|
||||
Utilities for interaction with the Linux system
|
||||
|
@ -24,10 +24,10 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.sys", package.seeall)
|
||||
module("luci.sys", package.seeall)
|
||||
require("posix")
|
||||
require("ffluci.bits")
|
||||
require("ffluci.util")
|
||||
require("luci.bits")
|
||||
require("luci.util")
|
||||
|
||||
-- Returns whether a system is bigendian
|
||||
function bigendian()
|
||||
|
@ -61,9 +61,9 @@ function execl(command)
|
|||
return data
|
||||
end
|
||||
|
||||
-- Uses "ffluci-flash" to flash a new image file to the system
|
||||
-- Uses "luci-flash" to flash a new image file to the system
|
||||
function flash(image, kpattern)
|
||||
local cmd = "ffluci-flash "
|
||||
local cmd = "luci-flash "
|
||||
if kpattern then
|
||||
cmd = cmd .. "-k '" .. kpattern:gsub("'", "") .. "' "
|
||||
end
|
||||
|
@ -84,7 +84,7 @@ end
|
|||
|
||||
-- Returns the FFLuci-Basedir
|
||||
function libpath()
|
||||
return ffluci.fs.dirname(require("ffluci.debug").__file__)
|
||||
return luci.fs.dirname(require("luci.debug").__file__)
|
||||
end
|
||||
|
||||
-- Returns the load average
|
||||
|
@ -106,18 +106,18 @@ function sysinfo()
|
|||
local c4 = "cat /proc/cpuinfo|grep cpu\\ model|cut -d: -f2 2>/dev/null"
|
||||
local c5 = "cat /proc/meminfo|grep MemTotal|cut -d: -f2 2>/dev/null"
|
||||
|
||||
local s = ffluci.util.trim(exec(c1))
|
||||
local s = luci.util.trim(exec(c1))
|
||||
local m = ""
|
||||
local r = ""
|
||||
|
||||
if s == "" then
|
||||
s = ffluci.util.trim(exec(c2))
|
||||
m = ffluci.util.trim(exec(c3))
|
||||
s = luci.util.trim(exec(c2))
|
||||
m = luci.util.trim(exec(c3))
|
||||
else
|
||||
m = ffluci.util.trim(exec(c4))
|
||||
m = luci.util.trim(exec(c4))
|
||||
end
|
||||
|
||||
r = ffluci.util.trim(exec(c5))
|
||||
r = luci.util.trim(exec(c5))
|
||||
|
||||
return s, m, r
|
||||
end
|
||||
|
@ -147,7 +147,7 @@ function net.defaultroute()
|
|||
local routes = net.routes()
|
||||
local route = nil
|
||||
|
||||
for i, r in pairs(ffluci.sys.net.routes()) do
|
||||
for i, r in pairs(luci.sys.net.routes()) do
|
||||
if r.Destination == "00000000" and (not route or route.Metric > r.Metric) then
|
||||
route = r
|
||||
end
|
||||
|
@ -186,7 +186,7 @@ function net.mask4prefix(mask)
|
|||
return nil
|
||||
end
|
||||
|
||||
return #ffluci.util.split(bin, "1")-1
|
||||
return #luci.util.split(bin, "1")-1
|
||||
end
|
||||
|
||||
-- Returns the kernel routing table
|
||||
|
@ -202,7 +202,7 @@ function net.hexip4(hex, be)
|
|||
|
||||
be = be or bigendian()
|
||||
|
||||
local hexdec = ffluci.bits.Hex2Dec
|
||||
local hexdec = luci.bits.Hex2Dec
|
||||
|
||||
local ip = ""
|
||||
if be then
|
||||
|
@ -222,12 +222,12 @@ end
|
|||
|
||||
-- Returns the binary IP to a given IP
|
||||
function net.ip4bin(ip)
|
||||
local parts = ffluci.util.split(ip, '.')
|
||||
local parts = luci.util.split(ip, '.')
|
||||
if #parts ~= 4 then
|
||||
return nil
|
||||
end
|
||||
|
||||
local decbin = ffluci.bits.Dec2Bin
|
||||
local decbin = luci.bits.Dec2Bin
|
||||
|
||||
local bin = ""
|
||||
bin = bin .. decbin(parts[1], 8)
|
||||
|
@ -283,7 +283,7 @@ function wifi.getiwconfig()
|
|||
local cnt = exec("/usr/sbin/iwconfig 2>/dev/null")
|
||||
local iwc = {}
|
||||
|
||||
for i, l in pairs(ffluci.util.split(ffluci.util.trim(cnt), "\n\n")) do
|
||||
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do
|
||||
local k = l:match("^(.-) ")
|
||||
l = l:gsub("^(.-) +", "", 1)
|
||||
if k then
|
||||
|
@ -298,15 +298,15 @@ function wifi.iwscan()
|
|||
local cnt = exec("iwlist scan 2>/dev/null")
|
||||
local iws = {}
|
||||
|
||||
for i, l in pairs(ffluci.util.split(ffluci.util.trim(cnt), "\n\n")) do
|
||||
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do
|
||||
local k = l:match("^(.-) ")
|
||||
l = l:gsub("^[^\n]+", "", 1)
|
||||
l = ffluci.util.trim(l)
|
||||
l = luci.util.trim(l)
|
||||
if k then
|
||||
iws[k] = {}
|
||||
for j, c in pairs(ffluci.util.split(l, "\n Cell")) do
|
||||
for j, c in pairs(luci.util.split(l, "\n Cell")) do
|
||||
c = c:gsub("^(.-)- ", "", 1)
|
||||
c = ffluci.util.split(c, "\n", 7)
|
||||
c = luci.util.split(c, "\n", 7)
|
||||
c = table.concat(c, "\n", 1)
|
||||
table.insert(iws[k], _parse_mixed_record(c))
|
||||
end
|
||||
|
@ -323,8 +323,8 @@ function _parse_delimited_table(iter, delimiter)
|
|||
delimiter = delimiter or "%s+"
|
||||
|
||||
local data = {}
|
||||
local trim = ffluci.util.trim
|
||||
local split = ffluci.util.split
|
||||
local trim = luci.util.trim
|
||||
local split = luci.util.split
|
||||
|
||||
local keys = split(trim(iter()), delimiter, nil, true)
|
||||
for i, j in pairs(keys) do
|
||||
|
@ -350,8 +350,8 @@ end
|
|||
function _parse_mixed_record(cnt)
|
||||
local data = {}
|
||||
|
||||
for i, l in pairs(ffluci.util.split(ffluci.util.trim(cnt), "\n")) do
|
||||
for j, f in pairs(ffluci.util.split(ffluci.util.trim(l), " ")) do
|
||||
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n")) do
|
||||
for j, f in pairs(luci.util.split(luci.util.trim(l), " ")) do
|
||||
local k, x, v = f:match('([^%s][^:=]+) *([:=]*) *"*([^\n"]*)"*')
|
||||
|
||||
if k then
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Iptables parser and query library
|
||||
LuCI - Iptables parser and query library
|
||||
|
||||
Copyright 2008 Jo-Philipp Wich <freifunk@wwsnet.net>
|
||||
|
||||
|
@ -19,12 +19,12 @@ $Id$
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.sys.iptparser", package.seeall)
|
||||
require("ffluci.sys")
|
||||
require("ffluci.util")
|
||||
module("luci.sys.iptparser", package.seeall)
|
||||
require("luci.sys")
|
||||
require("luci.util")
|
||||
|
||||
|
||||
IptParser = ffluci.util.class()
|
||||
IptParser = luci.util.class()
|
||||
|
||||
--[[
|
||||
IptParser.__init__( ... )
|
||||
|
@ -77,7 +77,7 @@ Each rule table contains the following fields:
|
|||
|
||||
Example:
|
||||
|
||||
ip = ffluci.sys.iptparser.IptParser()
|
||||
ip = luci.sys.iptparser.IptParser()
|
||||
result = ip.find( {
|
||||
target="REJECT",
|
||||
protocol="tcp",
|
||||
|
@ -180,7 +180,7 @@ function IptParser._parse_rules( self )
|
|||
|
||||
for i, tbl in ipairs({ "filter", "nat", "mangle" }) do
|
||||
|
||||
for i, rule in ipairs(ffluci.sys.execl("iptables -t " .. tbl .. " --line-numbers -nxvL")) do
|
||||
for i, rule in ipairs(luci.sys.execl("iptables -t " .. tbl .. " --line-numbers -nxvL")) do
|
||||
|
||||
if rule:find( "Chain " ) == 1 then
|
||||
|
||||
|
@ -189,7 +189,7 @@ function IptParser._parse_rules( self )
|
|||
else
|
||||
if rule:find("%d") == 1 then
|
||||
|
||||
local rule_parts = ffluci.util.split( rule, "%s+", nil, true )
|
||||
local rule_parts = luci.util.split( rule, "%s+", nil, true )
|
||||
local rule_details = { }
|
||||
|
||||
rule_details["table"] = tbl
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Template Parser
|
||||
LuCI - Template Parser
|
||||
|
||||
Description:
|
||||
A template parser supporting includes, translations, Lua code blocks
|
||||
|
@ -23,14 +23,14 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
module("ffluci.template", package.seeall)
|
||||
module("luci.template", package.seeall)
|
||||
|
||||
require("ffluci.config")
|
||||
require("ffluci.util")
|
||||
require("ffluci.fs")
|
||||
require("ffluci.http")
|
||||
require("luci.config")
|
||||
require("luci.util")
|
||||
require("luci.fs")
|
||||
require("luci.http")
|
||||
|
||||
viewdir = ffluci.sys.libpath() .. "/view/"
|
||||
viewdir = luci.sys.libpath() .. "/view/"
|
||||
|
||||
|
||||
-- Compile modes:
|
||||
|
@ -50,12 +50,12 @@ compiler_enable_bytecode = false
|
|||
|
||||
-- Define the namespace for template modules
|
||||
viewns = {
|
||||
translate = function(...) return require("ffluci.i18n").translate(...) end,
|
||||
config = function(...) return require("ffluci.model.uci").get(...) or "" end,
|
||||
controller = ffluci.http.dispatcher(),
|
||||
uploadctrl = ffluci.http.dispatcher_upload(),
|
||||
media = ffluci.config.main.mediaurlbase,
|
||||
resource = ffluci.config.main.resourcebase,
|
||||
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,
|
||||
include = function(name) Template(name):render(getfenv(2)) end,
|
||||
}
|
||||
|
@ -70,15 +70,15 @@ function compile(template)
|
|||
|
||||
-- As "expr" should be local, we have to assign it to the "expr_add" scope
|
||||
local expr = {}
|
||||
ffluci.util.extfenv(expr_add, "expr", expr)
|
||||
luci.util.extfenv(expr_add, "expr", expr)
|
||||
|
||||
-- Save all expressiosn to table "expr"
|
||||
template = template:gsub("<%%(.-)%%>", expr_add)
|
||||
|
||||
local function sanitize(s)
|
||||
s = ffluci.util.escape(s)
|
||||
s = ffluci.util.escape(s, "'")
|
||||
s = ffluci.util.escape(s, "\n")
|
||||
s = luci.util.escape(s)
|
||||
s = luci.util.escape(s, "'")
|
||||
s = luci.util.escape(s, "\n")
|
||||
return s
|
||||
end
|
||||
|
||||
|
@ -137,7 +137,7 @@ end
|
|||
|
||||
|
||||
-- Template class
|
||||
Template = ffluci.util.class()
|
||||
Template = luci.util.class()
|
||||
|
||||
-- Shared template cache to store templates in to avoid unnecessary reloading
|
||||
Template.cache = {}
|
||||
|
@ -170,18 +170,18 @@ function Template.__init__(self, name)
|
|||
local err
|
||||
|
||||
if compiler_mode == "file" then
|
||||
local tplmt = ffluci.fs.mtime(sourcefile)
|
||||
local commt = ffluci.fs.mtime(compiledfile)
|
||||
local tplmt = luci.fs.mtime(sourcefile)
|
||||
local commt = luci.fs.mtime(compiledfile)
|
||||
|
||||
-- Build if there is no compiled file or if compiled file is outdated
|
||||
if ((commt == nil) and not (tplmt == nil))
|
||||
or (not (commt == nil) and not (tplmt == nil) and commt < tplmt) then
|
||||
local source
|
||||
source, err = ffluci.fs.readfile(sourcefile)
|
||||
source, err = luci.fs.readfile(sourcefile)
|
||||
|
||||
if source then
|
||||
local compiled = compile(source)
|
||||
ffluci.fs.writefile(compiledfile, compiled)
|
||||
luci.fs.writefile(compiledfile, compiled)
|
||||
self.template, err = loadstring(compiled)
|
||||
end
|
||||
else
|
||||
|
@ -193,7 +193,7 @@ function Template.__init__(self, name)
|
|||
|
||||
elseif compiler_mode == "memory" then
|
||||
local source
|
||||
source, err = ffluci.fs.readfile(sourcefile)
|
||||
source, err = luci.fs.readfile(sourcefile)
|
||||
if source then
|
||||
self.template, err = loadstring(compile(source))
|
||||
end
|
||||
|
@ -217,9 +217,9 @@ function Template.render(self, scope)
|
|||
local oldfenv = getfenv(self.template)
|
||||
|
||||
-- Put our predefined objects in the scope of the template
|
||||
ffluci.util.resfenv(self.template)
|
||||
ffluci.util.updfenv(self.template, scope)
|
||||
ffluci.util.updfenv(self.template, self.viewns)
|
||||
luci.util.resfenv(self.template)
|
||||
luci.util.updfenv(self.template, scope)
|
||||
luci.util.updfenv(self.template, self.viewns)
|
||||
|
||||
-- Now finally render the thing
|
||||
self.template()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--[[
|
||||
FFLuCI - Utility library
|
||||
LuCI - Utility library
|
||||
|
||||
Description:
|
||||
Several common useful Lua functions
|
||||
|
@ -24,7 +24,7 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
module("ffluci.util", package.seeall)
|
||||
module("luci.util", package.seeall)
|
||||
|
||||
|
||||
-- Lua simplified Python-style OO class support emulation
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<%+header%>
|
||||
<form method="post" action="<%=ffluci.http.env.REQUEST_URI%>">
|
||||
<form method="post" action="<%=luci.http.env.REQUEST_URI%>">
|
||||
<div>
|
||||
<script type="text/javascript" src="<%=media%>/cbi.js"></script>
|
||||
<input type="hidden" name="cbi.submit" value="1" />
|
||||
|
|
|
@ -5,14 +5,14 @@ local v = self:valuelist(section)
|
|||
<% if self.widget == "select" then %>
|
||||
<select multiple="multiple" name="cbid.<%=self.config.."."..section.."."..self.option%>[]"<% if self.size then %> size="<%=self.size%>"<% end %>>
|
||||
<%for i, key in pairs(self.keylist) do %>
|
||||
<option<% if ffluci.util.contains(v, key) then %> selected="selected"<% end %> value="<%=key%>"><%=self.vallist[i]%></option>
|
||||
<option<% if luci.util.contains(v, key) then %> selected="selected"<% end %> value="<%=key%>"><%=self.vallist[i]%></option>
|
||||
<% end %>
|
||||
</select>
|
||||
<% elseif self.widget == "checkbox" then
|
||||
local c = 0;
|
||||
for i, key in pairs(self.keylist) do
|
||||
c = c + 1%>
|
||||
<%=self.vallist[i]%><input type="checkbox" name="cbid.<%=self.config.."."..section.."."..self.option%>[]"<% if ffluci.util.contains(v, key) then %> checked="checked"<% end %> value="<%=key%>" />
|
||||
<%=self.vallist[i]%><input type="checkbox" name="cbid.<%=self.config.."."..section.."."..self.option%>[]"<% if luci.util.contains(v, key) then %> checked="checked"<% end %> value="<%=key%>" />
|
||||
<% if c == self.size then c = 0 %><br />
|
||||
<% end end %>
|
||||
<% end %>
|
||||
|
|
|
@ -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.env.PATH_INFO%></tt>
|
||||
<tt>Unable to dispatch: <%=luci.http.env.PATH_INFO%></tt>
|
||||
<%+footer%>
|
|
@ -2,6 +2,6 @@
|
|||
<div class="clear"></div>
|
||||
</div></div>
|
||||
|
||||
<div class="separator magenta bold"><a href="http://luci.freifunk-halle.net"><%=require("ffluci").__appname__ .. " " .. ffluci.__version__%> - Freifunk Lua Configuration Interface</a></div>
|
||||
<div class="separator magenta bold"><a href="http://luci.freifunk-halle.net"><%=require("luci").__appname__ .. " " .. luci.__version__%> - Lua Configuration Interface</a></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,12 +1,12 @@
|
|||
<%
|
||||
require("ffluci.sys")
|
||||
local load1, load5, load15 = ffluci.sys.loadavg()
|
||||
require("luci.sys")
|
||||
local load1, load5, load15 = luci.sys.loadavg()
|
||||
|
||||
local request = require("ffluci.dispatcher").request
|
||||
local request = require("luci.dispatcher").request
|
||||
local category = request[1]
|
||||
local tree = ffluci.dispatcher.node()
|
||||
local cattree = category and ffluci.dispatcher.node(category)
|
||||
local node = ffluci.dispatcher.dispatched
|
||||
local tree = luci.dispatcher.node()
|
||||
local cattree = category and luci.dispatcher.node(category)
|
||||
local node = luci.dispatcher.dispatched
|
||||
|
||||
local c = tree
|
||||
for i,r in ipairs(request) do
|
||||
|
@ -16,9 +16,9 @@ for i,r in ipairs(request) do
|
|||
end
|
||||
end
|
||||
|
||||
require("ffluci.i18n").loadc("default")
|
||||
require("luci.i18n").loadc("default")
|
||||
|
||||
require("ffluci.http").prepare_content("text/html")
|
||||
require("luci.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">
|
||||
|
@ -27,7 +27,7 @@ require("ffluci.http").prepare_content("text/html")
|
|||
<% if node and node.css then %><link rel="stylesheet" type="text/css" href="<%=resource%>/<%=node.css%>" /><% end %>
|
||||
<meta http-equiv="content-type" content="text/xhtml+xml; charset=utf-8" />
|
||||
<meta http-equiv="content-script-type" content="text/javascript" />
|
||||
<title>FFLuCI - Freifunk Lua Configuration Interface</title>
|
||||
<title>LuCI - Lua Configuration Interface</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
|
@ -36,7 +36,7 @@ require("ffluci.http").prepare_content("text/html")
|
|||
OpenWRT Kamikaze<br />
|
||||
Freifunk Firmware 2.0-dev<br />
|
||||
<%:load Last%>: <%=load1%> <%=load5%> <%=load15%><br />
|
||||
<%:hostname Hostname%>: <%=ffluci.sys.hostname()%>
|
||||
<%:hostname Hostname%>: <%=luci.sys.hostname()%>
|
||||
</div>
|
||||
<div>
|
||||
<span class="headertitle"><%~luci.main.title%></span><br />
|
||||
|
@ -115,10 +115,10 @@ end
|
|||
</div>
|
||||
<%
|
||||
if "admin" == request[1] then
|
||||
require("ffluci.model.uci")
|
||||
local ucic = ffluci.model.uci.changes()
|
||||
require("luci.model.uci")
|
||||
local ucic = luci.model.uci.changes()
|
||||
if ucic then
|
||||
ucic = #ffluci.util.split(ucic)
|
||||
ucic = #luci.util.split(ucic)
|
||||
end
|
||||
%>
|
||||
<div><%:config Konfiguration%>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.admin.index", package.seeall)
|
||||
module("luci.controller.admin.index", package.seeall)
|
||||
|
||||
function index()
|
||||
local root = node()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.admin.network", package.seeall)
|
||||
module("luci.controller.admin.network", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node("admin", "network")
|
||||
|
@ -31,7 +31,7 @@ function index()
|
|||
page.title = "Statische Routen"
|
||||
page.order = 50
|
||||
|
||||
if ffluci.fs.isfile("/etc/config/qos") then
|
||||
if luci.fs.isfile("/etc/config/qos") then
|
||||
local page = node("admin", "network", "qos")
|
||||
page.target = cbi("admin_network/qos")
|
||||
page.title = "Quality of Service"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.admin.services", package.seeall)
|
||||
module("luci.controller.admin.services", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node("admin", "services")
|
||||
|
@ -21,7 +21,7 @@ function index()
|
|||
page.title = "Dnsmasq"
|
||||
page.order = 30
|
||||
|
||||
if ffluci.fs.isfile("/etc/config/olsr") then
|
||||
if luci.fs.isfile("/etc/config/olsr") then
|
||||
local page = node("admin", "services", "olsr")
|
||||
page.target = cbi("admin_services/olsrd")
|
||||
page.title = "OLSR"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.admin.status", package.seeall)
|
||||
module("luci.controller.admin.status", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node("admin", "status")
|
||||
|
@ -12,6 +12,6 @@ function index()
|
|||
end
|
||||
|
||||
function action_syslog()
|
||||
local syslog = ffluci.sys.syslog()
|
||||
ffluci.template.render("admin_status/syslog", {syslog=syslog})
|
||||
local syslog = luci.sys.syslog()
|
||||
luci.template.render("admin_status/syslog", {syslog=syslog})
|
||||
end
|
|
@ -1,11 +1,11 @@
|
|||
module("ffluci.controller.admin.system", package.seeall)
|
||||
module("luci.controller.admin.system", package.seeall)
|
||||
|
||||
require("ffluci.sys")
|
||||
require("ffluci.http")
|
||||
require("ffluci.util")
|
||||
require("ffluci.fs")
|
||||
require("ffluci.model.ipkg")
|
||||
require("ffluci.model.uci")
|
||||
require("luci.sys")
|
||||
require("luci.http")
|
||||
require("luci.util")
|
||||
require("luci.fs")
|
||||
require("luci.model.ipkg")
|
||||
require("luci.model.uci")
|
||||
|
||||
function index()
|
||||
local page = node("admin", "system")
|
||||
|
@ -54,63 +54,63 @@ function index()
|
|||
end
|
||||
|
||||
function action_editor()
|
||||
local file = ffluci.http.formvalue("file", "")
|
||||
local data = ffluci.http.formvalue("data")
|
||||
local file = luci.http.formvalue("file", "")
|
||||
local data = luci.http.formvalue("data")
|
||||
local err = nil
|
||||
local msg = nil
|
||||
local stat = true
|
||||
|
||||
if file and data then
|
||||
stat, err = ffluci.fs.writefile(file, data)
|
||||
stat, err = luci.fs.writefile(file, data)
|
||||
end
|
||||
|
||||
if not stat then
|
||||
err = ffluci.util.split(err, " ")
|
||||
err = luci.util.split(err, " ")
|
||||
table.remove(err, 1)
|
||||
msg = table.concat(err, " ")
|
||||
end
|
||||
|
||||
local cnt, err = ffluci.fs.readfile(file)
|
||||
local cnt, err = luci.fs.readfile(file)
|
||||
if cnt then
|
||||
cnt = ffluci.util.pcdata(cnt)
|
||||
cnt = luci.util.pcdata(cnt)
|
||||
end
|
||||
ffluci.template.render("admin_system/editor", {fn=file, cnt=cnt, msg=msg})
|
||||
luci.template.render("admin_system/editor", {fn=file, cnt=cnt, msg=msg})
|
||||
end
|
||||
|
||||
function action_ipkg()
|
||||
local file = "/etc/ipkg.conf"
|
||||
local data = ffluci.http.formvalue("data")
|
||||
local data = luci.http.formvalue("data")
|
||||
local stat = nil
|
||||
local err = nil
|
||||
|
||||
if data then
|
||||
stat, err = ffluci.fs.writefile(file, data)
|
||||
stat, err = luci.fs.writefile(file, data)
|
||||
end
|
||||
|
||||
local cnt = ffluci.fs.readfile(file)
|
||||
local cnt = luci.fs.readfile(file)
|
||||
if cnt then
|
||||
cnt = ffluci.util.pcdata(cnt)
|
||||
cnt = luci.util.pcdata(cnt)
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_system/ipkg", {cnt=cnt, msg=err})
|
||||
luci.template.render("admin_system/ipkg", {cnt=cnt, msg=err})
|
||||
end
|
||||
|
||||
function action_packages()
|
||||
local ipkg = ffluci.model.ipkg
|
||||
local ipkg = luci.model.ipkg
|
||||
local void = nil
|
||||
local submit = ffluci.http.formvalue("submit")
|
||||
local submit = luci.http.formvalue("submit")
|
||||
|
||||
|
||||
-- Search query
|
||||
local query = ffluci.http.formvalue("query")
|
||||
local query = luci.http.formvalue("query")
|
||||
query = (query ~= '') and query or nil
|
||||
|
||||
|
||||
-- Packets to be installed
|
||||
local install = submit and ffluci.http.formvaluetable("install")
|
||||
local install = submit and luci.http.formvaluetable("install")
|
||||
|
||||
-- Install from URL
|
||||
local url = ffluci.http.formvalue("url")
|
||||
local url = luci.http.formvalue("url")
|
||||
if url and url ~= '' and submit then
|
||||
if not install then
|
||||
install = {}
|
||||
|
@ -127,7 +127,7 @@ function action_packages()
|
|||
|
||||
|
||||
-- Remove packets
|
||||
local remove = submit and ffluci.http.formvaluetable("remove")
|
||||
local remove = submit and luci.http.formvaluetable("remove")
|
||||
if remove then
|
||||
for k, v in pairs(remove) do
|
||||
void, remove[k] = ipkg.remove(k)
|
||||
|
@ -136,21 +136,21 @@ function action_packages()
|
|||
|
||||
|
||||
-- Update all packets
|
||||
local update = ffluci.http.formvalue("update")
|
||||
local update = luci.http.formvalue("update")
|
||||
if update then
|
||||
void, update = ipkg.update()
|
||||
end
|
||||
|
||||
|
||||
-- Upgrade all packets
|
||||
local upgrade = ffluci.http.formvalue("upgrade")
|
||||
local upgrade = luci.http.formvalue("upgrade")
|
||||
if upgrade then
|
||||
void, upgrade = ipkg.upgrade()
|
||||
end
|
||||
|
||||
|
||||
-- Package info
|
||||
local info = ffluci.model.ipkg.info(query)
|
||||
local info = luci.model.ipkg.info(query)
|
||||
info = info or {}
|
||||
local pkgs = {}
|
||||
|
||||
|
@ -174,63 +174,63 @@ function action_packages()
|
|||
table.insert(pkgs, x+1, v)
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_system/packages", {pkgs=pkgs, query=query,
|
||||
luci.template.render("admin_system/packages", {pkgs=pkgs, query=query,
|
||||
install=install, remove=remove, update=update, upgrade=upgrade})
|
||||
end
|
||||
|
||||
function action_passwd()
|
||||
local p1 = ffluci.http.formvalue("pwd1")
|
||||
local p2 = ffluci.http.formvalue("pwd2")
|
||||
local p1 = luci.http.formvalue("pwd1")
|
||||
local p2 = luci.http.formvalue("pwd2")
|
||||
local stat = nil
|
||||
|
||||
if p1 or p2 then
|
||||
if p1 == p2 then
|
||||
stat = ffluci.sys.user.setpasswd("root", p1)
|
||||
stat = luci.sys.user.setpasswd("root", p1)
|
||||
else
|
||||
stat = 10
|
||||
end
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_system/passwd", {stat=stat})
|
||||
luci.template.render("admin_system/passwd", {stat=stat})
|
||||
end
|
||||
|
||||
function action_reboot()
|
||||
local reboot = ffluci.http.formvalue("reboot")
|
||||
ffluci.template.render("admin_system/reboot", {reboot=reboot})
|
||||
local reboot = luci.http.formvalue("reboot")
|
||||
luci.template.render("admin_system/reboot", {reboot=reboot})
|
||||
if reboot then
|
||||
ffluci.sys.reboot()
|
||||
luci.sys.reboot()
|
||||
end
|
||||
end
|
||||
|
||||
function action_sshkeys()
|
||||
local file = "/etc/dropbear/authorized_keys"
|
||||
local data = ffluci.http.formvalue("data")
|
||||
local data = luci.http.formvalue("data")
|
||||
local stat = nil
|
||||
local err = nil
|
||||
|
||||
if data then
|
||||
stat, err = ffluci.fs.writefile(file, data)
|
||||
stat, err = luci.fs.writefile(file, data)
|
||||
end
|
||||
|
||||
local cnt = ffluci.fs.readfile(file)
|
||||
local cnt = luci.fs.readfile(file)
|
||||
if cnt then
|
||||
cnt = ffluci.util.pcdata(cnt)
|
||||
cnt = luci.util.pcdata(cnt)
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_system/sshkeys", {cnt=cnt, msg=err})
|
||||
luci.template.render("admin_system/sshkeys", {cnt=cnt, msg=err})
|
||||
end
|
||||
|
||||
function action_upgrade()
|
||||
local ret = nil
|
||||
local plat = ffluci.fs.mtime("/lib/upgrade/platform.sh")
|
||||
local plat = luci.fs.mtime("/lib/upgrade/platform.sh")
|
||||
|
||||
local image = ffluci.http.upload("image")
|
||||
local keepcfg = ffluci.http.formvalue("keepcfg")
|
||||
local image = luci.http.upload("image")
|
||||
local keepcfg = luci.http.formvalue("keepcfg")
|
||||
|
||||
if plat and image then
|
||||
local kpattern = nil
|
||||
if keepcfg then
|
||||
local files = ffluci.model.uci.sections("luci").flash_keep
|
||||
local files = luci.model.uci.sections("luci").flash_keep
|
||||
if files.luci and files.luci.flash_keep then
|
||||
kpattern = ""
|
||||
for k,v in pairs(files.luci.flash_keep) do
|
||||
|
@ -238,8 +238,8 @@ function action_upgrade()
|
|||
end
|
||||
end
|
||||
end
|
||||
ret = ffluci.sys.flash(image, kpattern)
|
||||
ret = luci.sys.flash(image, kpattern)
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_system/upgrade", {sysupgrade=plat, ret=ret})
|
||||
luci.template.render("admin_system/upgrade", {sysupgrade=plat, ret=ret})
|
||||
end
|
|
@ -1,6 +1,6 @@
|
|||
module("ffluci.controller.admin.uci", package.seeall)
|
||||
require("ffluci.util")
|
||||
require("ffluci.sys")
|
||||
module("luci.controller.admin.uci", package.seeall)
|
||||
require("luci.util")
|
||||
require("luci.sys")
|
||||
|
||||
function index()
|
||||
node("admin", "uci", "changes").target = template("admin_uci/changes")
|
||||
|
@ -10,7 +10,7 @@ end
|
|||
|
||||
-- This function has a higher priority than the admin_uci/apply template
|
||||
function action_apply()
|
||||
local changes = ffluci.model.uci.changes()
|
||||
local changes = luci.model.uci.changes()
|
||||
local output = ""
|
||||
|
||||
if changes then
|
||||
|
@ -18,39 +18,39 @@ function action_apply()
|
|||
local run = {}
|
||||
|
||||
-- Collect files to be applied and commit changes
|
||||
for i, line in ipairs(ffluci.util.split(changes)) do
|
||||
for i, line in ipairs(luci.util.split(changes)) do
|
||||
local r = line:match("^-?([^.]+)")
|
||||
if r then
|
||||
com[r] = true
|
||||
|
||||
if ffluci.config.uci_oncommit and ffluci.config.uci_oncommit[r] then
|
||||
run[ffluci.config.uci_oncommit[r]] = true
|
||||
if luci.config.uci_oncommit and luci.config.uci_oncommit[r] then
|
||||
run[luci.config.uci_oncommit[r]] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Apply
|
||||
for config, i in pairs(com) do
|
||||
ffluci.model.uci.commit(config)
|
||||
luci.model.uci.commit(config)
|
||||
end
|
||||
|
||||
-- Search for post-commit commands
|
||||
for cmd, i in pairs(run) do
|
||||
output = output .. cmd .. ":" .. ffluci.sys.exec(cmd) .. "\n"
|
||||
output = output .. cmd .. ":" .. luci.sys.exec(cmd) .. "\n"
|
||||
end
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_uci/apply", {changes=changes, output=output})
|
||||
luci.template.render("admin_uci/apply", {changes=changes, output=output})
|
||||
end
|
||||
|
||||
|
||||
function action_revert()
|
||||
local changes = ffluci.model.uci.changes()
|
||||
local changes = luci.model.uci.changes()
|
||||
if changes then
|
||||
local revert = {}
|
||||
|
||||
-- Collect files to be reverted
|
||||
for i, line in ipairs(ffluci.util.split(changes)) do
|
||||
for i, line in ipairs(luci.util.split(changes)) do
|
||||
local r = line:match("^-?([^.]+)")
|
||||
if r then
|
||||
revert[r] = true
|
||||
|
@ -59,9 +59,9 @@ function action_revert()
|
|||
|
||||
-- Revert them
|
||||
for k, v in pairs(revert) do
|
||||
ffluci.model.uci.revert(k)
|
||||
luci.model.uci.revert(k)
|
||||
end
|
||||
end
|
||||
|
||||
ffluci.template.render("admin_uci/revert", {changes=changes})
|
||||
luci.template.render("admin_uci/revert", {changes=changes})
|
||||
end
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.admin.wifi", package.seeall)
|
||||
module("luci.controller.admin.wifi", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node("admin", "wifi")
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
luci = "User Interface"
|
||||
|
||||
hello = "Hello!"
|
||||
admin1 = "This is the administration area of FFLuCI."
|
||||
admin2 = "FFLuCI is a free, flexible, and user friendly graphical interface for configuring OpenWRT Kamikaze."
|
||||
admin1 = "This is the administration area of LuCI."
|
||||
admin2 = "LuCI is a free, flexible, and user friendly graphical interface for configuring OpenWRT Kamikaze."
|
||||
admin3 = "On the following pages you can adjust all important settings of your router."
|
||||
admin4 = "You will find a navigation leading to the different configuration pages on the left side."
|
||||
admin5 = [[As we are always want to improve this interface we are looking forward
|
||||
to your feedback and suggestions.]]
|
||||
admin6 = "And now have fun with your router!"
|
||||
team = "The FFLuCI Team"
|
||||
team = "The LuCI Team"
|
||||
|
||||
luci1 = "Here you can customize the settings and the functionality of FFLuCI."
|
||||
luci1 = "Here you can customize the settings and the functionality of LuCI."
|
||||
language = "Language"
|
||||
general = "General"
|
||||
ucicommit = "Post-commit actions"
|
||||
ucicommit1 = [[These commands will be executed automatically when a given UCI configuration is committed allowing
|
||||
changes to be applied instantly.]]
|
||||
keepflash = "Files to be kept when flashing a new firmware"
|
||||
keepflash1 = "When flashing a new firmware with FFLuCI these files will be added to the new firmware installation."
|
||||
keepflash1 = "When flashing a new firmware with LuCI these files will be added to the new firmware installation."
|
|
@ -1,19 +1,19 @@
|
|||
-- ToDo: Translate
|
||||
require("ffluci.config")
|
||||
require("luci.config")
|
||||
m = Map("luci", translate("luci", "Oberfläche"), translate("luci1",
|
||||
"Hier können Eigenschaften und die Funktionalität der Oberfläche angepasst werden."))
|
||||
|
||||
c = m:section(NamedSection, "main", "core", translate("general", "Allgemein"))
|
||||
|
||||
l = c:option(ListValue, "lang", translate("language", "Sprache"))
|
||||
for k, v in pairs(ffluci.config.languages) do
|
||||
for k, v in pairs(luci.config.languages) do
|
||||
if k:sub(1, 1) ~= "." then
|
||||
l:value(k, v)
|
||||
end
|
||||
end
|
||||
|
||||
t = c:option(ListValue, "mediaurlbase", translate("design", "Design"))
|
||||
for k, v in pairs(ffluci.config.themes) do
|
||||
for k, v in pairs(luci.config.themes) do
|
||||
if k:sub(1, 1) ~= "." then
|
||||
t:value(v, k)
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
-- ToDo: Translate, Add descriptions and help texts
|
||||
require("ffluci.model.uci")
|
||||
require("ffluci.sys")
|
||||
require("luci.model.uci")
|
||||
require("luci.sys")
|
||||
|
||||
m = Map("dhcp", "DHCP", [[Mit Hilfe von DHCP können Netzteilnehmer automatisch
|
||||
ihre Netzwerkkonfiguration (IP-Adresse, Netzmaske, DNS-Server, DHCP, ...) beziehen.]])
|
||||
|
@ -10,7 +10,7 @@ s.addremove = true
|
|||
s.anonymous = true
|
||||
|
||||
iface = s:option(ListValue, "interface", "Schnittstelle")
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
s:depends("interface", k) -- Only change sections with existing interfaces
|
||||
|
@ -33,7 +33,7 @@ s:option(Value, "netmask", "Netzmaske").optional = true
|
|||
|
||||
s:option(Flag, "force", "Start erzwingen").optional = true
|
||||
|
||||
for i, line in pairs(ffluci.sys.execl("dnsmasq --help dhcp")) do
|
||||
for i, line in pairs(luci.sys.execl("dnsmasq --help dhcp")) do
|
||||
k, v = line:match("([^ ]+) +([^ ]+)")
|
||||
s:option(Value, "dhcp"..k, v).optional = true
|
||||
end
|
||||
|
|
|
@ -9,7 +9,7 @@ s.anonymous = true
|
|||
s.template = "cbi/tblsection"
|
||||
|
||||
iface = s:option(ListValue, "interface", "Schnittstelle")
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
iface:value(k)
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- ToDo: Autodetect things, Translate, Add descriptions
|
||||
require("ffluci.fs")
|
||||
require("luci.fs")
|
||||
|
||||
m = Map("olsr", "OLSR", [[OLSR ist ein flexibles Routingprotokoll,
|
||||
dass den Aufbau von mobilen Ad-Hoc Netzen unterstützt.]])
|
||||
|
@ -51,7 +51,7 @@ i.dynamic = true
|
|||
|
||||
network = i:option(ListValue, "Interface", "Netzwerkschnittstellen")
|
||||
network:value("")
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
network:value(k)
|
||||
end
|
||||
|
@ -80,7 +80,7 @@ p.dynamic = true
|
|||
|
||||
lib = p:option(ListValue, "Library", "Bibliothek")
|
||||
lib:value("")
|
||||
for k, v in pairs(ffluci.fs.dir("/usr/lib")) do
|
||||
for k, v in pairs(luci.fs.dir("/usr/lib")) do
|
||||
if v:sub(1, 6) == "olsrd_" then
|
||||
lib:value(v)
|
||||
end
|
||||
|
|
|
@ -15,9 +15,9 @@ t:value("atheros")
|
|||
t:value("mac80211")
|
||||
t:value("prism2")
|
||||
--[[
|
||||
require("ffluci.sys")
|
||||
require("luci.sys")
|
||||
local c = ". /etc/functions.sh;for i in /lib/wifi/*;do . $i;done;echo $DRIVERS"
|
||||
for driver in ffluci.sys.execl(c)[1]:gmatch("[^ ]+") do
|
||||
for driver in luci.sys.execl(c)[1]:gmatch("[^ ]+") do
|
||||
t:value(driver)
|
||||
end
|
||||
]]--
|
||||
|
|
|
@ -11,7 +11,7 @@ s.anonymous = true
|
|||
s:option(Value, "ssid", "Netzkennung (ESSID)").maxlength = 32
|
||||
|
||||
device = s:option(ListValue, "device", "Gerät")
|
||||
local d = ffluci.model.uci.sections("wireless")
|
||||
local d = luci.model.uci.sections("wireless")
|
||||
if d then
|
||||
for k, v in pairs(d) do
|
||||
if v[".type"] == "wifi-device" then
|
||||
|
@ -22,7 +22,7 @@ end
|
|||
|
||||
network = s:option(ListValue, "network", "Netzwerk", "WLAN-Netz zu Netzwerk hinzufügen")
|
||||
network:value("")
|
||||
for k, v in pairs(ffluci.model.uci.sections("network")) do
|
||||
for k, v in pairs(luci.model.uci.sections("network")) do
|
||||
if v[".type"] == "interface" and k ~= "loopback" then
|
||||
network:value(k)
|
||||
end
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<%+header%>
|
||||
<h1><%:hello Hallo!%></h1>
|
||||
<p><%:admin1 Dies ist der Administrationsbereich von FFLuCI.%></p>
|
||||
<p><%:admin2 FFLuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%><br />
|
||||
<p><%:admin1 Dies ist der Administrationsbereich von LuCI.%></p>
|
||||
<p><%:admin2 LuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%><br />
|
||||
<%:admin3 Auf den folgenden Seiten können alle wichtigen Einstellungen des Routers vorgenommen werden.%></p>
|
||||
<p><%:admin4 Auf der linken Seite befindet sich eine Navigation, die zu den einzelnen Konfigurationsseiten führt.%></p>
|
||||
<p><%:admin5 Wir sind natürlich stets darum bemüht, diese Oberfläche
|
||||
noch besser und intuitiver zu Gestalten und freuen uns über jegliche Art von Feedback oder Verbesserungsvorschlägen.%></p>
|
||||
<p><%:admin6 Und nun wünschen wir viel Spaß mit dem Router!%></p>
|
||||
<p><em><strong><a href="http://luci.freifunk-halle.net"><%:team Das FFLuCI-Team%></a></strong></em></p>
|
||||
<p><em><strong><a href="http://luci.freifunk-halle.net"><%:team Das LuCI-Team%></a></strong></em></p>
|
||||
<%+footer%>
|
|
@ -1,7 +1,7 @@
|
|||
<%+header%>
|
||||
<h1><%:config Konfiguration%></h1>
|
||||
<h2><%:changes Änderungen%></h2>
|
||||
<code><%=ffluci.model.uci.changes()%></code>
|
||||
<code><%=luci.model.uci.changes()%></code>
|
||||
<form class="inline" method="get" action="<%=controller%>/admin/uci/apply">
|
||||
<input type="submit" value="<%:apply Anwenden%>" />
|
||||
</form>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
module("ffluci.controller.freifunk.freifunk", package.seeall)
|
||||
module("luci.controller.freifunk.freifunk", package.seeall)
|
||||
|
||||
function index()
|
||||
local page = node()
|
||||
|
@ -52,17 +52,17 @@ end
|
|||
function action_status()
|
||||
local data = {}
|
||||
|
||||
data.s, data.m, data.r = ffluci.sys.sysinfo()
|
||||
data.s, data.m, data.r = luci.sys.sysinfo()
|
||||
|
||||
data.wifi = ffluci.sys.wifi.getiwconfig()
|
||||
data.wifi = luci.sys.wifi.getiwconfig()
|
||||
|
||||
data.routes = {}
|
||||
for i, r in pairs(ffluci.sys.net.routes()) do
|
||||
for i, r in pairs(luci.sys.net.routes()) do
|
||||
if r.Destination == "00000000" then
|
||||
table.insert(data.routes, r)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
ffluci.template.render("public_status/index", data)
|
||||
luci.template.render("public_status/index", data)
|
||||
end
|
|
@ -1,28 +1,28 @@
|
|||
module("ffluci.controller.freifunk.luciinfo", package.seeall)
|
||||
module("luci.controller.freifunk.luciinfo", package.seeall)
|
||||
|
||||
function index()
|
||||
node("freifunk", "luciinfo").target = action_index
|
||||
end
|
||||
|
||||
function action_index()
|
||||
local uci = ffluci.model.uci.StateSession()
|
||||
local uci = luci.model.uci.StateSession()
|
||||
|
||||
ffluci.http.prepare_content("text/plain")
|
||||
luci.http.prepare_content("text/plain")
|
||||
|
||||
-- General
|
||||
print("luciinfo.api=1")
|
||||
print("luciinfo.version=" .. tostring(require("ffluci").__version__))
|
||||
print("luciinfo.version=" .. tostring(require("luci").__version__))
|
||||
|
||||
-- Sysinfo
|
||||
local s, m, r = ffluci.sys.sysinfo()
|
||||
local dr = ffluci.sys.net.defaultroute()
|
||||
dr = dr and ffluci.sys.net.hexip4(dr.Gateway) or ""
|
||||
local l1, l5, l15 = ffluci.sys.loadavg()
|
||||
local s, m, r = luci.sys.sysinfo()
|
||||
local dr = luci.sys.net.defaultroute()
|
||||
dr = dr and luci.sys.net.hexip4(dr.Gateway) or ""
|
||||
local l1, l5, l15 = luci.sys.loadavg()
|
||||
|
||||
print("sysinfo.system=" .. sanitize(s))
|
||||
print("sysinfo.cpu=" .. sanitize(m))
|
||||
print("sysinfo.ram=" .. sanitize(r))
|
||||
print("sysinfo.hostname=" .. sanitize(ffluci.sys.hostname()))
|
||||
print("sysinfo.hostname=" .. sanitize(luci.sys.hostname()))
|
||||
print("sysinfo.load1=" .. tostring(l1))
|
||||
print("sysinfo.load5=" .. tostring(l5))
|
||||
print("sysinfo.load15=" .. tostring(l15))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
module("ffluci.controller.freifunk.olsr", package.seeall)
|
||||
require("ffluci.sys")
|
||||
module("luci.controller.freifunk.olsr", package.seeall)
|
||||
require("luci.sys")
|
||||
|
||||
function index()
|
||||
local page = node("freifunk", "olsr")
|
||||
|
@ -32,7 +32,7 @@ function action_index()
|
|||
local data = fetch_txtinfo("links")
|
||||
|
||||
if not data or not data.Links then
|
||||
ffluci.template.render("freifunk-olsr/error_olsr")
|
||||
luci.template.render("freifunk-olsr/error_olsr")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -50,14 +50,14 @@ function action_index()
|
|||
|
||||
table.sort(data.Links, compare)
|
||||
|
||||
ffluci.template.render("freifunk-olsr/index", {links=data.Links})
|
||||
luci.template.render("freifunk-olsr/index", {links=data.Links})
|
||||
end
|
||||
|
||||
function action_routes()
|
||||
local data = fetch_txtinfo("routes")
|
||||
|
||||
if not data or not data.Routes then
|
||||
ffluci.template.render("freifunk-olsr/error_olsr")
|
||||
luci.template.render("freifunk-olsr/error_olsr")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -75,14 +75,14 @@ function action_routes()
|
|||
|
||||
table.sort(data.Routes, compare)
|
||||
|
||||
ffluci.template.render("freifunk-olsr/routes", {routes=data.Routes})
|
||||
luci.template.render("freifunk-olsr/routes", {routes=data.Routes})
|
||||
end
|
||||
|
||||
function action_topology()
|
||||
local data = fetch_txtinfo("topology")
|
||||
|
||||
if not data or not data.Topology then
|
||||
ffluci.template.render("freifunk-olsr/error_olsr")
|
||||
luci.template.render("freifunk-olsr/error_olsr")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -92,14 +92,14 @@ function action_topology()
|
|||
|
||||
table.sort(data.Topology, compare)
|
||||
|
||||
ffluci.template.render("freifunk-olsr/topology", {routes=data.Topology})
|
||||
luci.template.render("freifunk-olsr/topology", {routes=data.Topology})
|
||||
end
|
||||
|
||||
function action_hna()
|
||||
local data = fetch_txtinfo("hna")
|
||||
|
||||
if not data or not data.HNA then
|
||||
ffluci.template.render("freifunk-olsr/error_olsr")
|
||||
luci.template.render("freifunk-olsr/error_olsr")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -109,14 +109,14 @@ function action_hna()
|
|||
|
||||
table.sort(data.HNA, compare)
|
||||
|
||||
ffluci.template.render("freifunk-olsr/hna", {routes=data.HNA})
|
||||
luci.template.render("freifunk-olsr/hna", {routes=data.HNA})
|
||||
end
|
||||
|
||||
function action_mid()
|
||||
local data = fetch_txtinfo("mid")
|
||||
|
||||
if not data or not data.MID then
|
||||
ffluci.template.render("freifunk-olsr/error_olsr")
|
||||
luci.template.render("freifunk-olsr/error_olsr")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
@ -126,14 +126,14 @@ function action_mid()
|
|||
|
||||
table.sort(data.MID, compare)
|
||||
|
||||
ffluci.template.render("freifunk-olsr/mid", {mids=data.MID})
|
||||
luci.template.render("freifunk-olsr/mid", {mids=data.MID})
|
||||
end
|
||||
|
||||
|
||||
-- Internal
|
||||
function fetch_txtinfo(otable)
|
||||
otable = otable or ""
|
||||
local rawdata = ffluci.sys.httpget("http://127.0.0.1:2006/"..otable)
|
||||
local rawdata = luci.sys.httpget("http://127.0.0.1:2006/"..otable)
|
||||
|
||||
if #rawdata == 0 then
|
||||
return nil
|
||||
|
@ -141,18 +141,18 @@ function fetch_txtinfo(otable)
|
|||
|
||||
local data = {}
|
||||
|
||||
local tables = ffluci.util.split(ffluci.util.trim(rawdata), "\n\n")
|
||||
local tables = luci.util.split(luci.util.trim(rawdata), "\n\n")
|
||||
|
||||
|
||||
for i, tbl in ipairs(tables) do
|
||||
local lines = ffluci.util.split(tbl, "\n")
|
||||
local lines = luci.util.split(tbl, "\n")
|
||||
local name = table.remove(lines, 1):sub(8)
|
||||
local keys = ffluci.util.split(table.remove(lines, 1), "\t")
|
||||
local keys = luci.util.split(table.remove(lines, 1), "\t")
|
||||
|
||||
data[name] = {}
|
||||
|
||||
for j, line in ipairs(lines) do
|
||||
local fields = ffluci.util.split(line, "\t")
|
||||
local fields = luci.util.split(line, "\t")
|
||||
data[name][j] = {}
|
||||
for k, key in pairs(keys) do
|
||||
data[name][j][key] = fields[k]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<%+header%>
|
||||
<% local contact = ffluci.model.uci.sections("freifunk").contact %>
|
||||
<% local contact = luci.model.uci.sections("freifunk").contact %>
|
||||
<h1><%:contact Kontakt%></h1>
|
||||
<table cellspacing="0" cellpadding="6">
|
||||
<tr><th><%:nickname Pseudonym%>:</th><td><%=contact.nickname%></td></tr>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<%+header%>
|
||||
<% local ff = ffluci.model.uci.sections("freifunk") %>
|
||||
<% local ff = luci.model.uci.sections("freifunk") %>
|
||||
<h1><%:hellonet Hallo und willkommen im Netz von%> <%=ff.community.name%>!</h1>
|
||||
<p><%:public1 Wir sind eine Initiative zur Schaffung eines freien, offenen und unabhängigen Funknetzwerks auf WLAN-Basis.%><br />
|
||||
<%:public2 Dies ist der Zugangspunkt %><%=ffluci.sys.hostname()%>. <%:public3 Er wird betrieben von %>
|
||||
<%:public2 Dies ist der Zugangspunkt %><%=luci.sys.hostname()%>. <%:public3 Er wird betrieben von %>
|
||||
<a href="<%=controller%>/public/index/contact"><%=ff.contact.nickname%></a>.</p>
|
||||
<p><%:public4 Weitere Informationen zur globalen Freifunkinitiative findest du unter%> <a href="http://freifunk.net">Freifunk.net</a>.<br />
|
||||
<%:public5 Hast du Interesse an diesem Projekt, dann wende dich an deine lokale Gemeinschaft%> <a href="<%=ff.community.homepage%>"><%=ff.community.name%></a>.</p>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<th><%:signal Signal%></th>
|
||||
<th><%:noise Rausch%></th>
|
||||
</tr>
|
||||
<%for k, v in pairs(ffluci.sys.wifi.getiwconfig()) do
|
||||
<%for k, v in pairs(luci.sys.wifi.getiwconfig()) do
|
||||
%>
|
||||
<tr>
|
||||
<td rowspan="2"><%=k%></td>
|
||||
|
@ -68,7 +68,7 @@
|
|||
for i, rt in pairs(routes) do
|
||||
%>
|
||||
<tr>
|
||||
<td><%=ffluci.sys.net.hexip4(rt.Gateway)%></th>
|
||||
<td><%=luci.sys.net.hexip4(rt.Gateway)%></th>
|
||||
<td><%=rt.Metric%></th>
|
||||
<td><%=rt.Iface%></th>
|
||||
</tr>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<th><%:signal Signal%></th>
|
||||
<th><%:noise Rausch%></th>
|
||||
</tr>
|
||||
<%for iface, cells in pairs(ffluci.sys.wifi.iwscan()) do
|
||||
<%for iface, cells in pairs(luci.sys.wifi.iwscan()) do
|
||||
for i, cell in ipairs(cells) do
|
||||
%>
|
||||
<tr>
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
<th><%:iface Schnittstelle%></th>
|
||||
</tr>
|
||||
<%
|
||||
local routes = ffluci.sys.net.routes()
|
||||
local routes = luci.sys.net.routes()
|
||||
|
||||
for i, r in pairs(routes) do
|
||||
%>
|
||||
<tr>
|
||||
<td><%=ffluci.sys.net.hexip4(r.Destination)%></td>
|
||||
<td><%=ffluci.sys.net.hexip4(r.Mask)%></td>
|
||||
<td><%=ffluci.sys.net.hexip4(r.Gateway)%></td>
|
||||
<td><%=luci.sys.net.hexip4(r.Destination)%></td>
|
||||
<td><%=luci.sys.net.hexip4(r.Mask)%></td>
|
||||
<td><%=luci.sys.net.hexip4(r.Gateway)%></td>
|
||||
<td><%=r.Metric%></td>
|
||||
<td><%=r.Iface%></td>
|
||||
</tr>
|
||||
|
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Loading…
Reference in a new issue