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

305 lines
8.7 KiB
Lua
Raw Normal View History

2018-05-25 08:49:31 +00:00
#!/usr/bin/env lua
local posix = require("Posix")
local json = require("json")
local xqf = require("xiaoqiang.common.XQFunction")
local uci = require("luci.model.uci").cursor()
local ubus = require ("ubus")
local cfg = {
['model_file'] = "/proc/xiaoqiang/model",
['debug'] = 0,
}
function read_line(filename)
local fd = io.open(filename)
local line = fd:read("*line")
fd:close()
return line
end
function exec(cmd)
local p = io.popen(cmd)
ret = p:read("*line")
p:close()
return ret
end
function log_points(t, v, instant)
if(type(v) ~= "string") then
v = tostring(v)
end
--[[if(instant) then
if (cfg.debug == 1) then
posix.syslog(posix.LOG_DEBUG, string.format("log_points %s=%s", t, v))
elseif(cfg.debug == 2) then
print(string.format("stat_points_instant %s=%s", t, v))
else
posix.syslog(posix.LOG_INFO, string.format("stat_points_instant %s=%s", t, v))
end
else]]
if (cfg.debug == 1) then
posix.syslog(posix.LOG_DEBUG, string.format("log_points %s=%s", t, v))
elseif(cfg.debug == 2) then
print(string.format("stat_points_none %s=%s", t, v))
else
posix.syslog(posix.LOG_INFO, string.format("stat_points_none %s=%s", t, v))
end
--end
end
function function_appqos()
local enable = uci:get("app-tc", "config", "enable") or 0
log_points("function_appqos", enable == '0' and 0 or 1)
end
function function_clone()
local wan = require("xiaoqiang.util.XQLanWanUtil")
local defaultMac = wan.getDefaultMacAddress() or ""
local wanMac = wan.getWanMac()
log_points("function_clone", wanMac == defaultMac and 1 or 0)
end
function function_qos()
local enable = uci:get("miqos", "settings", "enabled") or 0
log_points("function_qos", enable == '0' and 0 or 1)
local qos_stat='off'
if enable ~= '0' then
qos_stat=uci:get("miqos","settings","qos_auto") or "off"
end
log_points("function_qos_state", qos_stat)
end
function function_upnp()
log_points("function_upnp", exec("/etc/init.d/miniupnpd enabled && echo 1 || echo 0"))
end
function function_pptp()
local proto = uci:get("network", "vpn", "proto")
local enable
local status
if proto and proto == 'pptp' then
status = json.decode(exec("vpn.lua status"))
if status and status.up then
enable = 1
else
enable = 0
end
else
enable = 0
end
log_points("function_pptp", enable)
end
function function_l2tp()
local proto = uci:get("network", "vpn", "proto")
local enable
local status
if proto and proto == 'l2tp' then
status = json.decode(exec("vpn.lua status"))
if status and status.up then
enable = 1
else
enable = 0
end
else
enable = 0
end
log_points("function_l2tp", enable)
end
function function_dmz()
local enable = uci:get("firewall", "dmz", "proto") or 0
log_points("function_dmz", enable == '0' and 0 or 1)
end
function function_plugin()
local datacenter = xqf.thrift_tunnel_to_datacenter([[{"api":612}]])
log_points("function_plugin", datacenter.status == 0 and 0 or 1)
end
function function_port_forwarding()
log_points("function_port_forwarding", exec("iptables-save | grep reflection >/dev/null && echo 1 || echo 0"))
end
function function_wireless_access()
local model = uci:get_first("wireless", "wifi-iface", "macfilter", nil)
if model and (model == 'deny' or model == 'allow') then
log_points("function_wireless_access", 1)
else
log_points("function_wireless_access", 0)
end
end
function function_wireless_access_blacklist()
local model = uci:get_first("wireless", "wifi-iface", "macfilter", nil)
if model and model == 'deny' then
log_points("function_wireless_access_blacklist", table.getn(uci:get_first("wireless", "wifi-iface", "maclist", {})))
else
log_points("function_wireless_access_blacklist", 0)
end
end
function function_wireless_access_whitelist()
local model = uci:get_first("wireless", "wifi-iface", "macfilter", nil)
if model and model == 'allow' then
log_points("function_wireless_access_whitelist", table.getn(uci:get_first("wireless", "wifi-iface", "maclist", {})))
else
log_points("function_wireless_access_whitelist", 0)
end
end
function function_channel_2g()
local channel_2g = uci:get("wireless", "wl1", "channel") or 0
log_points("function_channel_2g", channel_2g)
end
function function_channel_5g()
local channel_5g = uci:get("wireless", "wl0", "channel") or 0
log_points("function_channel_5g", channel_5g)
end
function function_channel_2g_signal()
local channel_2g_signal = uci:get("wireless", "wl1", "txpwr") or 0
log_points("function_channel_2g_signal", channel_2g_signal)
end
function function_channel_5g_signal()
local channel_5g_signal = uci:get("wireless", "wl0", "txpwr") or 0
log_points("function_channel_5g_signal", channel_5g_signal)
end
function function_channel_2g_r1c()
local channel_2g = uci:get("wireless", "mt7628", "channel") or 0
log_points("function_channel_2g", channel_2g)
end
function function_channel_5g_r1c()
local channel_5g = uci:get("wireless", "mt7612", "channel") or 0
log_points("function_channel_5g", channel_5g)
end
function function_channel_2g_signal_r1c()
local channel_2g_signal = uci:get("wireless", "mt7628", "txpwr") or 0
log_points("function_channel_2g_signal", channel_2g_signal)
end
function function_channel_5g_signal_r1c()
local channel_5g_signal = uci:get("wireless", "mt7612", "txpwr") or 0
log_points("function_channel_5g_signal", channel_5g_signal)
end
function function_hdd_hibernation()
log_points("function_hdd_hibernation", exec("/etc/init.d/noflushd status >/dev/null && echo 1 || echo 0"))
end
function function_dhcp()
local dhcp = uci:get("dhcp", "lan", "interface") or 'off'
log_points("function_dhcp", dhcp == 'lan' and 1 or 0)
end
function function_ddns()
local ddns = uci:get("ddns", "ddns", "status") or 'off'
log_points("function_ddns", ddns == 'on' and 1 or 0)
end
function function_zigbee()
local zb = require('xiaoqiang.util.XQZigbeeUtil')
local t = {}
zb.append_yeelink_list(t)
for _, v in ipairs(t) do
-- network_device_zigbee=mac|origin_name|ptype|ctype|name
log_points("network_device_zigbee", string.format("%s|%s|%d|%d|%s", v.mac, v.origin_name, v.ptype, v.ctype, v.name))
end
end
-- report bandwdith for one time each day
function function_bandwidth()
local bw_upload= uci:get("miqos", "settings", "upload") or '0'
local bw_download= uci:get("miqos", "settings", "download") or '0'
log_points("network_bandwidth", string.format("%s|%s", bw_upload,bw_download))
end
------------------------------------------------------------------------------------------
local model = read_line(cfg.model_file)
posix.openlog(arg[0], "cp", posix.LOG_LOCAL7)
if model == 'R1D' then
function_appqos()
function_qos()
function_bandwidth()
function_clone()
function_upnp()
function_pptp()
function_l2tp()
function_dmz()
function_port_forwarding()
function_channel_2g()
function_channel_5g()
function_channel_2g_signal()
function_channel_5g_signal()
function_hdd_hibernation()
function_dhcp()
function_ddns()
elseif model == 'R1CM' then
function_appqos()
function_qos()
function_bandwidth()
function_clone()
function_upnp()
function_dmz()
function_plugin()
function_port_forwarding()
function_wireless_access()
function_wireless_access_blacklist()
function_wireless_access_whitelist()
function_channel_2g_r1c()
function_channel_5g_r1c()
function_channel_2g_signal_r1c()
function_channel_5g_signal_r1c()
function_dhcp()
function_ddns()
elseif model == 'R1CL' then
function_clone()
function_upnp()
function_dmz()
function_plugin()
function_port_forwarding()
function_wireless_access()
function_wireless_access_blacklist()
function_wireless_access_whitelist()
function_channel_2g_r1c()
function_channel_2g_signal_r1c()
function_dhcp()
function_ddns()
function_zigbee()
elseif model == 'R1CQ' then
function_clone()
function_upnp()
function_dmz()
function_plugin()
function_port_forwarding()
function_wireless_access()
function_wireless_access_blacklist()
function_wireless_access_whitelist()
function_channel_2g_r1c()
function_channel_5g_r1c()
function_channel_2g_signal_r1c()
function_channel_5g_signal_r1c()
function_dhcp()
function_ddns()
end
posix.closelog()