summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorManuel Munz <freifunk@somakoma.de>2013-10-27 09:59:19 +0000
committerManuel Munz <freifunk@somakoma.de>2013-10-27 09:59:19 +0000
commit6010725e024ce2bcbfaafab1a613403708678c5c (patch)
tree0105d51a5afbdec9e3318f0e866cf9f732bbe9aa
parent87b7651ef2c98e0bdc62947e731c9f3eb1e50441 (diff)
applications/luci-splash: Only add leases to the stats section if they are still online (i.e. mac known in arp table). Thanks michiwend.
-rwxr-xr-xapplications/luci-splash/root/usr/sbin/luci-splash36
1 files changed, 24 insertions, 12 deletions
diff --git a/applications/luci-splash/root/usr/sbin/luci-splash b/applications/luci-splash/root/usr/sbin/luci-splash
index 91921182b6..675e6cb97a 100755
--- a/applications/luci-splash/root/usr/sbin/luci-splash
+++ b/applications/luci-splash/root/usr/sbin/luci-splash
@@ -576,9 +576,22 @@ function sync()
-- Clean state file
uci:load("luci_splash_leases")
uci:revert("luci_splash_leases")
-
+
+
+ -- Get the mac addresses of current leases
+ local macs = get_known_macs()
+ local arpcache = get_arpcache()
+
+ local blackwhitelist = uci:get_all("luci_splash")
+ local whitelist_total = 0
+ local whitelist_online = 0
+ local blacklist_total = 0
+ local blacklist_online = 0
+
+
-- For all leases
local leasecount = 0
+ local leases_online = 0
for k, v in pairs(leases) do
if v[".type"] == "lease" then
if os.difftime(time, tonumber(v.start)) > leasetime then
@@ -586,6 +599,12 @@ function sync()
remove_lease_rule(v.mac, v.ipaddr, v.device, tonumber(v.limit_up), tonumber(v.limit_down))
else
leasecount = leasecount + 1
+
+ -- only count leases_online for connected clients
+ if arpcache[v.mac] then
+ leases_online = leases_online + 1
+ end
+
-- Rewrite state
uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), {
mac = v.mac,
@@ -599,16 +618,6 @@ function sync()
end
end
- -- Get the mac addresses of current leases
- local macs = get_known_macs()
- local arpcache = get_arpcache()
-
- local blackwhitelist = uci:get_all("luci_splash")
- local whitelist_total = 0
- local whitelist_online = 0
- local blacklist_total = 0
- local blacklist_online = 0
-
-- Whitelist, Blacklist
for _, s in utl.spairs(blackwhitelist,
function(a,b) return blackwhitelist[a][".type"] > blackwhitelist[b][".type"] end
@@ -633,7 +642,10 @@ function sync()
end
end
- update_stats(leasecount, whitelist_online, whitelist_total, blacklist_online, blacklist_total)
+ -- ToDo:
+ -- include a new field "leases_online" in stats to differ between active clients and leases:
+ -- update_stats(leasecount, leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total) later:
+ update_stats(leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total)
uci:save("luci_splash_leases")