applications/luci-splash: Update stats when a lease is added or removed
This commit is contained in:
parent
19d1278fb2
commit
2595726dfb
1 changed files with 24 additions and 8 deletions
|
@ -44,6 +44,19 @@ function get_id(ip)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function update_stats(leased, whitelisted, whitelisttotal, blacklisted, blacklisttotal)
|
||||||
|
local leases = uci:get_all("luci_splash_leases", "stats")
|
||||||
|
uci:delete("luci_splash_leases", "stats")
|
||||||
|
uci:section("luci_splash_leases", "stats", "stats", {
|
||||||
|
leases = leased or (leases and leases.leases) or 0,
|
||||||
|
whitelisttotal = whitelisttotal or (leased and leases.whitelisttotal) or 0,
|
||||||
|
whitelistonline = whitelisted or (leases and leases.whitelistonline) or 0,
|
||||||
|
blacklisttotal = blacklisttotal or (leases and leases.blacklisttotal) or 0,
|
||||||
|
blacklistonline = blacklisted or (leases and leases.blacklistonline) or 0,
|
||||||
|
})
|
||||||
|
uci:save("luci_splash_leases")
|
||||||
|
end
|
||||||
|
|
||||||
function get_device_for_ip(ipaddr)
|
function get_device_for_ip(ipaddr)
|
||||||
local dev
|
local dev
|
||||||
uci:foreach("network", "interface", function(s)
|
uci:foreach("network", "interface", function(s)
|
||||||
|
@ -299,6 +312,11 @@ function add_lease(mac, arp, no_uci)
|
||||||
if ipaddr then
|
if ipaddr then
|
||||||
local device = get_device_for_ip(ipaddr)
|
local device = get_device_for_ip(ipaddr)
|
||||||
if not no_uci then
|
if not no_uci then
|
||||||
|
local leased = uci:get("luci_splash_leases", "stats", "leases")
|
||||||
|
if type(tonumber(leased)) == "number" then
|
||||||
|
update_stats(leased + 1, nil, nil, nil, nil)
|
||||||
|
end
|
||||||
|
|
||||||
uci:section("luci_splash_leases", "lease", convert_mac_to_secname(mac), {
|
uci:section("luci_splash_leases", "lease", convert_mac_to_secname(mac), {
|
||||||
mac = mac,
|
mac = mac,
|
||||||
ipaddr = ipaddr,
|
ipaddr = ipaddr,
|
||||||
|
@ -324,6 +342,10 @@ function remove_lease(mac)
|
||||||
function(s)
|
function(s)
|
||||||
if s.mac:lower() == mac then
|
if s.mac:lower() == mac then
|
||||||
remove_lease_rule(mac, s.ipaddr, s.device, tonumber(s.limit_up), tonumber(s.limit_down))
|
remove_lease_rule(mac, s.ipaddr, s.device, tonumber(s.limit_up), tonumber(s.limit_down))
|
||||||
|
local leased = uci:get("luci_splash_leases", "stats", "leases")
|
||||||
|
if type(tonumber(leased)) == "number" and tonumber(leased) > 0 then
|
||||||
|
update_stats(leased - 1, nil, nil, nil, nil)
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
@ -503,7 +525,7 @@ function sync()
|
||||||
-- Remove expired
|
-- Remove expired
|
||||||
remove_lease_rule(v.mac, v.ipaddr, v.device, tonumber(v.limit_up), tonumber(v.limit_down))
|
remove_lease_rule(v.mac, v.ipaddr, v.device, tonumber(v.limit_up), tonumber(v.limit_down))
|
||||||
else
|
else
|
||||||
leasecount = count + 1
|
leasecount = leasecount + 1
|
||||||
-- Rewrite state
|
-- Rewrite state
|
||||||
uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), {
|
uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), {
|
||||||
mac = v.mac,
|
mac = v.mac,
|
||||||
|
@ -551,13 +573,7 @@ function sync()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
uci:section("luci_splash_leases", "stats", "stats", {
|
update_stats(leasecount, whitelist_online, whitelist_total, blacklist_online, blacklist_total)
|
||||||
leases = leasecount,
|
|
||||||
whitelisttotal = whitelist_total,
|
|
||||||
whitelistonline = whitelist_online,
|
|
||||||
blacklisttotal = blacklist_total,
|
|
||||||
blacklistonline = blacklist_online,
|
|
||||||
})
|
|
||||||
|
|
||||||
uci:save("luci_splash_leases")
|
uci:save("luci_splash_leases")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue