X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=applications%2Fluci-app-splash%2Fluasrc%2Fcontroller%2Fsplash%2Fsplash.lua;fp=applications%2Fluci-app-splash%2Fluasrc%2Fcontroller%2Fsplash%2Fsplash.lua;h=4add43559f251630a184f22a89049cf38734e022;hb=1d461b6e7ee664d6a356eb20861f3b957a558329;hp=a41015ea1a653c9be124071f929fe9b282c7283d;hpb=fac02283137f6ff59363695bb07a3f9cec58e577;p=project%2Fluci.git diff --git a/applications/luci-app-splash/luasrc/controller/splash/splash.lua b/applications/luci-app-splash/luasrc/controller/splash/splash.lua index a41015ea1..4add43559 100644 --- a/applications/luci-app-splash/luasrc/controller/splash/splash.lua +++ b/applications/luci-app-splash/luasrc/controller/splash/splash.lua @@ -23,23 +23,26 @@ function index() page.leaf = true end -function action_dispatch() - local uci = luci.model.uci.cursor_state() +function ip_to_mac(ip) local ipc = require "luci.ip" - local i, n - local mac = "" - local access = false for i, n in ipairs(ipc.neighbors()) do - if n.mac and n.dest and n.dest:equal(luci.http.getenv("REMOTE_ADDR")) then - mac = n.mac + if n.mac and n.dest and n.dest:equal(ip) then + return n.mac end end +end + +function action_dispatch() + local uci = luci.model.uci.cursor_state() + local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR")) or "" + local access = false uci:foreach("luci_splash", "lease", function(s) if s.mac and s.mac:lower() == mac then access = true end end) + uci:foreach("luci_splash", "whitelist", function(s) if s.mac and s.mac:lower() == mac then access = true end end) @@ -60,13 +63,13 @@ function blacklist() end function action_activate() - local ip = luci.http.getenv("REMOTE_ADDR") or "127.0.0.1" - local mac = luci.sys.net.ip4mac(ip:match("^[\[::ffff:]*(%d+.%d+%.%d+%.%d+)\]*$")) + local ipc = require "luci.ip" + local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR") or "127.0.0.1") or "" local uci_state = require "luci.model.uci".cursor_state() local blacklisted = false if mac and luci.http.formvalue("accept") then uci:foreach("luci_splash", "blacklist", - function(s) if s.mac:lower() == mac or s.mac == mac then blacklisted = true end + function(s) if s.mac and s.mac:lower() == mac then blacklisted = true end end) if blacklisted then luci.http.redirect(luci.dispatcher.build_url("splash" ,"blocked"))