mir3c/squashfs-root/usr/sbin/iwpriv_macfilter.lua

46 lines
1.8 KiB
Lua
Executable File

local Json = require("json")
local XQFunction = require("xiaoqiang.common.XQFunction")
local sleep = arg[1]
local payload = arg[2]
if payload then
if sleep and tonumber(sleep) and tonumber(sleep) > 0 then
os.execute("sleep "..tostring(sleep))
end
local suc, info = pcall(Json.decode, payload)
if suc and info and type(info) == "table" then
local macstr = XQFunction._cmdformat(table.concat(info.maclist, ";"))
os.execute("iwpriv wl0 set ACLClearAll=1")
os.execute("iwpriv wl1 set ACLClearAll=1")
os.execute("iwpriv wl3 set ACLClearAll=1")
if tonumber(info.model) == 0 then
for _, mac in ipairs(info.maclist) do
local cmac = XQFunction._cmdformat(mac)
os.execute("iwpriv wl0 set DisConnectSta=\""..cmac.."\"")
os.execute("iwpriv wl1 set DisConnectSta=\""..cmac.."\"")
os.execute("iwpriv wl3 set DisConnectSta=\""..cmac.."\"")
end
end
os.execute("iwpriv wl0 set ACLAddEntry=\""..macstr.."\"")
os.execute("iwpriv wl1 set ACLAddEntry=\""..macstr.."\"")
os.execute("iwpriv wl3 set ACLAddEntry=\""..macstr.."\"")
if tonumber(info.model) == 0 then
os.execute("iwpriv wl0 set AccessPolicy=2")
os.execute("iwpriv wl1 set AccessPolicy=2")
os.execute("iwpriv wl3 set AccessPolicy=2")
else
os.execute("iwpriv wl0 set AccessPolicy=1")
os.execute("iwpriv wl1 set AccessPolicy=1")
os.execute("iwpriv wl3 set AccessPolicy=1")
end
if #info.maclist == 0 then
os.execute("iwpriv wl0 set AccessPolicy=0")
os.execute("iwpriv wl1 set AccessPolicy=0")
os.execute("iwpriv wl3 set AccessPolicy=0")
end
os.execute("ubus call trafficd update_assoclist")
end
end