99 lines
4.0 KiB
Lua
99 lines
4.0 KiB
Lua
--This file is created for check some deamons like miniupnpd,8021xd...
|
|
|
|
local mtkwifi = require("mtkwifi")
|
|
local devs = mtkwifi.get_all_devs()
|
|
local nixio = require("nixio")
|
|
|
|
function miniupnpd_chk(devname,vif,enable)
|
|
local WAN_IF=mtkwifi.__trim(mtkwifi.read_pipe("uci -q get network.wan.ifname"))
|
|
|
|
os.execute("rm -rf /etc/miniupnpd.conf")
|
|
os.execute("iptables -t nat -F MINIUPNPD 1>/dev/null 2>&1")
|
|
--rmeoving the rule to MINIUPNPD
|
|
os.execute("iptables-t nat -D PREROUTING -i "..WAN_IF.." -j MINIUPNPD 1>/dev/null 2>&1")
|
|
os.execute("iptables-t nat -X MINIUPNPD 1>/dev/null 2>&1")
|
|
|
|
--removing the MINIUPNPD chain for filter
|
|
os.execute("iptables -t filter -F MINIUPNPD 1>/dev/null 2>&1")
|
|
--adding the rule to MINIUPNPD
|
|
|
|
os.execute("iptables -t filter -D FORWARD -i "..WAN_IF.." ! -o "..WAN_IF.." -j MINIUPNPD 1>/dev/null 2>&1")
|
|
os.execute("iptables -t filter -X MINIUPNPD 1>/dev/null 2>&1")
|
|
|
|
os.execute("iptables -t nat -N MINIUPNPD")
|
|
os.execute("iptables -t nat -A PREROUTING -i "..WAN_IF.." -j MINIUPNPD")
|
|
os.execute("iptables -t filter -N MINIUPNPD")
|
|
os.execute("iptables -t filter -A FORWARD -i "..WAN_IF.." ! -o "..WAN_IF.." -j MINIUPNPD")
|
|
|
|
if mtkwifi.exists("/tmp/run/miniupnpd."..vif) then
|
|
os.execute("cat /tmp/run/miniupnpd."..vif.." | xargs kill -9")
|
|
end
|
|
|
|
if enable then
|
|
local profile = mtkwifi.search_dev_and_profile()[devname]
|
|
local cfgs = mtkwifi.load_profile(profile)
|
|
local ssid_index = devs[devname]["vifs"][vif].vifidx
|
|
local wsc_conf_mode = ""
|
|
local PORT_NUM = 7777+(string.byte(vif, -1)+string.byte(vif, -2))
|
|
local LAN_IPADDR = mtkwifi.__trim(mtkwifi.read_pipe("uci -q get network.lan.ipaddr"))
|
|
local LAN_MASK = mtkwifi.__trim(mtkwifi.read_pipe("uci -q get network.lan.netmask"))
|
|
local port = 6352 + (string.byte(vif, -1)+string.byte(vif, -2))
|
|
LAN_IPADDR = LAN_IPADDR.."/"..LAN_MASK
|
|
wsc_conf_mode = mtkwifi.token_get(cfgs["WscConfMode"], ssid_index, "")
|
|
|
|
local file = io.open("/etc/miniupnpd.conf", "w")
|
|
if nil == file then
|
|
nixio.syslog("debug","open file /etc/miniupnpd.conf fail")
|
|
end
|
|
|
|
file:write("ext_ifname=",WAN_IF,'\n','\n',
|
|
"listening_ip=",LAN_IPADDR,'\n','\n',
|
|
"port=",port,'\n','\n',
|
|
"bitrate_up=800000000",'\n',
|
|
"bitrate_down=800000000",'\n','\n',
|
|
"secure_mode=no",'\n','\n',
|
|
"system_uptime=yes",'\n','\n',
|
|
"notify_interval=30",'\n','\n',
|
|
"uuid=68555350-3352-3883-2883-335030522880",'\n','\n',
|
|
"serial=12345678",'\n','\n',
|
|
"model_number=1",'\n','\n',
|
|
"enable_upnp=no",'\n','\n')
|
|
file:close()
|
|
|
|
if wsc_conf_mode ~= "" and wsc_conf_mode ~= "0" then
|
|
os.execute("miniupnpd -m 1 -I "..vif.." -P /var/run/miniupnpd."..vif.." -G -i "..WAN_IF.." -a "..LAN_IPADDR.." -n "..PORT_NUM)
|
|
end
|
|
end
|
|
end
|
|
|
|
function d8021xd_chk(devname,prefix,main_ifname,enable)
|
|
local profile = mtkwifi.search_dev_and_profile()[devname]
|
|
local cfgs = mtkwifi.load_profile(profile)
|
|
local auth_mode = cfgs.AuthMode
|
|
local ieee8021x = cfgs.IEEE8021X
|
|
local pat_auth_mode = {"WPA$", "WPA;", "WPA2$", "WPA2;", "WPA1WPA2$", "WPA1WPA2;"}
|
|
local pat_ieee8021x = {"1$", "1;"}
|
|
local apd_en = false
|
|
if mtkwifi.exists("/tmp/run/8021xd_"..main_ifname..".pid") then
|
|
os.execute("cat /tmp/run/8021xd_"..main_ifname..".pid | xargs kill -9")
|
|
os.execute("rm /tmp/run/8021xd_"..main_ifname..".pid")
|
|
end
|
|
if enable then
|
|
for _, pat in ipairs(pat_auth_mode) do
|
|
if string.find(auth_mode, pat) then
|
|
apd_en = true
|
|
end
|
|
end
|
|
|
|
for _, pat in ipairs(pat_ieee8021x) do
|
|
if string.find(ieee8021x, pat) then
|
|
apd_en = true
|
|
end
|
|
end
|
|
|
|
if apd_en then
|
|
os.execute("8021xd -p "..prefix.. " -i "..main_ifname)
|
|
end
|
|
end
|
|
end
|