applications/luci-wol: add static lease macs to suggestion list
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 24 Nov 2010 04:19:23 +0000 (04:19 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 24 Nov 2010 04:19:23 +0000 (04:19 +0000)
applications/luci-wol/luasrc/model/cbi/wol.lua

index bf192ee..ac73919 100644 (file)
@@ -10,6 +10,8 @@ You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
 ]]--
 
+local uci = require "luci.model.uci".cursor()
+local utl = require "luci.util"
 local sys = require "luci.sys"
 local fs  = require "nixio.fs"
 
@@ -54,23 +56,30 @@ end
 
 
 for _, e in ipairs(sys.net.arptable()) do
-       arp[e["HW address"]] = { e["IP address"] }
+       arp[e["HW address"]:upper()] = { e["IP address"] }
 end
 
 for e in io.lines("/etc/ethers") do
        mac, ip = e:match("^([a-f0-9]%S+) (%S+)")
-       if mac and ip then arp[mac] = { ip } end
+       if mac and ip then arp[mac:upper()] = { ip } end
 end
 
 for e in io.lines("/var/dhcp.leases") do
        mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)")
-       if mac and ip then arp[mac] = { ip, name ~= "*" and name } end
+       if mac and ip then arp[mac:upper()] = { ip, name ~= "*" and name } end
 end
 
+uci:foreach("dhcp", "host",
+       function(s)
+               if s.mac and s.ip then
+                       arp[s.mac:upper()] = { s.ip, s.name }
+               end
+       end)
+
 host = s:option(Value, "mac", translate("Host to wake up"),
        translate("Choose the host to wake up or enter a custom MAC address to use"))
 
-for mac, ip in pairs(arp) do
+for mac, ip in utl.kspairs(arp) do
        host:value(mac, "%s (%s)" %{ mac, ip[2] or ip[1] })
 end