diff options
author | Manuel Munz <freifunk@somakoma.de> | 2013-10-27 09:59:19 +0000 |
---|---|---|
committer | Manuel Munz <freifunk@somakoma.de> | 2013-10-27 09:59:19 +0000 |
commit | 6010725e024ce2bcbfaafab1a613403708678c5c (patch) | |
tree | 0105d51a5afbdec9e3318f0e866cf9f732bbe9aa | |
parent | 87b7651ef2c98e0bdc62947e731c9f3eb1e50441 (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-x | applications/luci-splash/root/usr/sbin/luci-splash | 36 |
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 91921182b..675e6cb97 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") |