luci-0.9: combine dhcp and lease page

This commit is contained in:
Jo-Philipp Wich 2010-03-08 02:09:46 +00:00
parent 9444aff816
commit 2c4ff11f58
3 changed files with 56 additions and 80 deletions

View file

@ -82,13 +82,6 @@ function index()
page.target = cbi("admin_network/dhcp")
page.title = "DHCP"
page.order = 30
page.subindex = true
entry(
{"admin", "network", "dhcp", "leases"},
cbi("admin_network/dhcpleases"),
i18n("dhcp_leases")
)
local page = node("admin", "network", "hosts")
page.target = cbi("admin_network/hosts")

View file

@ -11,9 +11,12 @@ You may obtain a copy of the License at
$Id$
]]--
require("luci.tools.webadmin")
require("luci.model.uci")
require("luci.util")
local uci = require "luci.model.uci".cursor()
local wa = require "luci.tools.webadmin"
local sys = require "luci.sys"
local utl = require "luci.util"
local fs = require "nixio.fs"
m = Map("dhcp", "DHCP")
@ -22,9 +25,8 @@ s.addremove = true
s.anonymous = true
iface = s:option(ListValue, "interface", translate("interface"))
luci.tools.webadmin.cbi_add_networks(iface)
wa.cbi_add_networks(iface)
local uci = luci.model.uci.cursor()
uci:foreach("network", "interface",
function (section)
if section[".name"] ~= "loopback" then
@ -69,4 +71,52 @@ for i, n in ipairs(s.children) do
end
end
return m
m2 = Map("dhcp", translate("dhcp_leases"), "")
local leasefn, leasefp, leases
uci:foreach("dhcp", "dnsmasq",
function(section)
leasefn = section.leasefile
end
)
local leasefp = leasefn and fs.access(leasefn) and io.lines(leasefn)
if leasefp then
leases = {}
for lease in leasefp do
table.insert(leases, luci.util.split(lease, " "))
end
end
if leases then
v = m2:section(Table, leases, translate("dhcp_leases_active"))
ip = v:option(DummyValue, 3, translate("ipaddress"))
mac = v:option(DummyValue, 2, translate("macaddress"))
ltime = v:option(DummyValue, 1, translate("dhcp_timeremain"))
function ltime.cfgvalue(self, ...)
local value = DummyValue.cfgvalue(self, ...)
return wa.date_format(os.difftime(tonumber(value), os.time()))
end
end
s = m2:section(TypedSection, "host", translate("luci_ethers"))
s.addremove = true
s.anonymous = true
s.template = "cbi/tblsection"
name = s:option(Value, "name", translate("hostname"))
mac = s:option(Value, "mac", translate("macaddress"))
ip = s:option(Value, "ip", translate("ipaddress"))
sys.net.arptable(function(entry)
ip:value(entry["IP address"])
mac:value(
entry["HW address"],
entry["HW address"] .. " (" .. entry["IP address"] .. ")"
)
end)
return m, m2

View file

@ -1,67 +0,0 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2010 Jo-Philipp Wich <xm@subsignal.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
local uci = require "luci.model.uci".cursor()
local sys = require "luci.sys"
local wa = require "luci.tools.webadmin"
local fs = require "nixio.fs"
m2 = Map("dhcp", translate("dhcp_leases"))
local leasefn, leasefp, leases
uci:foreach("dhcp", "dnsmasq",
function(section)
leasefn = section.leasefile
end
)
local leasefp = leasefn and fs.access(leasefn) and io.lines(leasefn)
if leasefp then
leases = {}
for lease in leasefp do
table.insert(leases, luci.util.split(lease, " "))
end
end
if leases then
v = m2:section(Table, leases, translate("dhcp_leases_active"))
ip = v:option(DummyValue, 3, translate("ipaddress"))
mac = v:option(DummyValue, 2, translate("macaddress"))
ltime = v:option(DummyValue, 1, translate("dhcp_timeremain"))
function ltime.cfgvalue(self, ...)
local value = DummyValue.cfgvalue(self, ...)
return wa.date_format(os.difftime(tonumber(value), os.time()))
end
end
s = m2:section(TypedSection, "host", translate("luci_ethers"))
s.addremove = true
s.anonymous = true
s.template = "cbi/tblsection"
name = s:option(Value, "name", translate("hostname"))
mac = s:option(Value, "mac", translate("macaddress"))
ip = s:option(Value, "ip", translate("ipaddress"))
sys.net.arptable(function(entry)
ip:value(entry["IP address"])
mac:value(
entry["HW address"],
entry["HW address"] .. " (" .. entry["IP address"] .. ")"
)
end)
return m2