98 lines
2.7 KiB
Lua
Executable File
98 lines
2.7 KiB
Lua
Executable File
require("luci.sys")
|
|
require("luci.util")
|
|
local fs=require"nixio.fs"
|
|
local uci=require"luci.model.uci".cursor()
|
|
local m,s,o
|
|
m = Map("autoipsetadder", translate("ipsetautoadder"))
|
|
m.description = translate("自动将联不通的域名加入ipset")
|
|
m:section(SimpleSection).template = "autoipsetadder/status"
|
|
|
|
s = m:section(TypedSection, "autoipsetadder")
|
|
s.anonymous=true
|
|
s.addremove=false
|
|
---- enable
|
|
o = s:option(Flag, "enabled", translate("启用"))
|
|
o.default = 0
|
|
o.rmempty = false
|
|
---- logview
|
|
o=s:option(TextValue, "show", "日志")
|
|
o.template = "autoipsetadder/check"
|
|
---- logpath
|
|
o = s:option(Value, "logfile", translate("Runtime log file"))
|
|
o.datatype = "string"
|
|
o.default="/tmp/addlist.log"
|
|
o.optional = false
|
|
o.validate=function(self, value)
|
|
if fs.stat(value,"type")=="dir" then
|
|
fs.rmdir(value)
|
|
end
|
|
if fs.stat(value,"type")=="dir" then
|
|
if m.message then
|
|
m.message =m.message.."\nerror!log file is a dir"
|
|
else
|
|
m.message ="error!log file is a dir"
|
|
end
|
|
return nil
|
|
end
|
|
return value
|
|
end
|
|
---- dnsmasq log
|
|
o = s:option(Value, "dnslogfile", translate("dnsmasq log file"))
|
|
o.datatype = "string"
|
|
o.optional = false
|
|
o.default="/tmp/dnsmasq.log"
|
|
o.validate=function(self, value)
|
|
if fs.stat(value,"type")=="dir" then
|
|
fs.rmdir(value)
|
|
end
|
|
if fs.stat(value,"type")=="dir" then
|
|
if m.message then
|
|
m.message =m.message.."\nerror!log file is a dir"
|
|
else
|
|
m.message ="error!log file is a dir"
|
|
end
|
|
return nil
|
|
end
|
|
return value
|
|
end
|
|
---- crontab
|
|
o = s:option(MultiValue, "crontab", translate("Crontab task"),translate("Please change time and args in crontab"))
|
|
o:value("autodeldnslog",translate("Auto del dnsmasq log"))
|
|
o:value("autotaillog",translate("Auto tail runtime log"))
|
|
o.widget = "checkbox"
|
|
o.default = "autodeldnslog autotaillog"
|
|
o.rmempty= true
|
|
|
|
o = s:option(MultiValue, "config", translate("the way add to gfwlist"))
|
|
o:value("nochina",translate("no china ip"))
|
|
o:value("pingadd",translate("5ping loss1-4"))
|
|
o:value("packetpass",translate("packet >12 pass"))
|
|
o.widget = "checkbox"
|
|
o.default = "nochina pingadd packetpass"
|
|
o.rmempty=true
|
|
---- apply
|
|
nixio.fs.writefile("/var/run/lucilogreload","")
|
|
function m.on_commit(map)
|
|
local ucitracktest=uci:get("autoipsetadder","autoipsetadder","ucitracktest")
|
|
if ucitracktest=="1" then
|
|
return
|
|
elseif ucitracktest=="0" then
|
|
io.popen("/etc/init.d/autoipsetadder reload &")
|
|
else
|
|
if (fs.access("/var/run/AdGucitest")) then
|
|
uci:set("autoipsetadder","autoipsetadder","ucitracktest","0")
|
|
io.popen("/etc/init.d/autoipsetadder reload &")
|
|
else
|
|
fs.writefile("/var/run/AdGucitest","")
|
|
if (ucitracktest=="2") then
|
|
uci:set("autoipsetadder","autoipsetadder","ucitracktest","1")
|
|
else
|
|
uci:set("autoipsetadder","autoipsetadder","ucitracktest","2")
|
|
end
|
|
end
|
|
uci:save("autoipsetadder")
|
|
uci:commit("autoipsetadder")
|
|
end
|
|
end
|
|
return m
|