Renamed FFLuCI to LuCI, ffluci to luci and Freifunk Lua Configuration Interface to Lua Configuration Interface

This commit is contained in:
Steven Barth 2008-05-25 17:00:30 +00:00
parent c6c50b3ec6
commit 365d80765d
89 changed files with 702 additions and 702 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ffluci</name>
<name>luci</name>
<comment></comment>
<projects>
</projects>

10
INSTALL
View file

@ -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"

View file

@ -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
View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,3 +0,0 @@
#!/usr/bin/haserl --shell=luac
require("ffluci.dispatcher").createindex()
ffluci.dispatcher.httpdispatch()

View file

@ -1,3 +1,3 @@
#!/usr/bin/haserl --shell=luac
print("Status: 302 Found")
print("Location: ffluci\n")
print("Location: luci\n")

View file

@ -0,0 +1,3 @@
#!/usr/bin/haserl --shell=luac
require("luci.dispatcher").createindex()
luci.dispatcher.httpdispatch()

View file

@ -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")

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,3 +1,3 @@
LUAC = luac
LUAC_OPTIONS = -s
LUCI_INSTALLDIR = /usr/lib/lua/ffluci
LUCI_INSTALLDIR = /usr/lib/lua/luci

View file

@ -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))

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/ffluci-community-hannover ) && rm -f /etc/uci-defaults/ffluci-community-hannover
}

View file

@ -1,4 +0,0 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/ffluci-community-leipzig ) && rm -f /etc/uci-defaults/ffluci-community-leipzig
}

View file

@ -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

View file

@ -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

View 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))

View file

@ -0,0 +1,4 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-hannover ) && rm -f /etc/uci-defaults/luci-community-hannover
}

View file

@ -0,0 +1,4 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-community-leipzig ) && rm -f /etc/uci-defaults/luci-community-leipzig
}

View file

@ -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

View file

@ -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"

View file

@ -50,7 +50,7 @@
--]]
module("ffluci.bits", package.seeall);
module("luci.bits", package.seeall);
local hex2bin = {
["0"] = "0000",

View file

@ -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

View file

@ -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

View file

@ -1,2 +1,2 @@
module("ffluci.debug", package.seeall)
module("luci.debug", package.seeall)
__file__ = debug.getinfo(1, 'S').source:sub(2)

View file

@ -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

View file

@ -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")

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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()

View file

@ -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

View file

@ -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" />

View file

@ -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 %>

View file

@ -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%>

View file

@ -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>

View file

@ -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%>

View file

@ -1,4 +1,4 @@
module("ffluci.controller.admin.index", package.seeall)
module("luci.controller.admin.index", package.seeall)
function index()
local root = node()

View file

@ -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"

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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")

View file

@ -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."

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
]]--

View file

@ -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

View file

@ -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%>

View file

@ -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>

View file

@ -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

View file

@ -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))

View file

@ -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]

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB