mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-04 06:43:56 +08:00
update 2026-09-26 17:00:06
This commit is contained in:
1 parent
97ae9f68da
commit
bcc9ceb04a
4756 files changed
+1670713
No files matched your search
@@ -0,0 +1,56 @@
|
||||
module("luci.controller.autoipsetadder",package.seeall)
|
||||
local io = require "io"
|
||||
local fs=require"nixio.fs"
|
||||
local sys=require"luci.sys"
|
||||
local uci=require"luci.model.uci".cursor()
|
||||
function index()
|
||||
entry({"admin","services","autoipsetadder"},firstchild(),_("autoipsetadder"),30).dependent=true
|
||||
entry({"admin","services","autoipsetadder","autoipsetadder"},cbi("autoipsetadder"),_("Base Setting"),1)
|
||||
entry({"admin","services","autoipsetadder","status"},call("act_status")).leaf=true
|
||||
entry({"admin", "services", "autoipsetadder", "getlog"}, call("get_log"))
|
||||
entry({"admin", "services", "autoipsetadder", "dodellog"}, call("do_del_log"))
|
||||
entry({"admin", "services", "autoipsetadder", "debugip"}, call("do_debug_ip"))
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e={}
|
||||
e.running=luci.sys.call("pgrep -f /usr/bin/autoipsetadder/autoaddlist.sh >/dev/null")==0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
function do_del_log()
|
||||
local logfile=uci:get("autoipsetadder","autoipsetadder","logfile") or "/tmp/addlist.log"
|
||||
nixio.fs.writefile(logfile,"")
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write('')
|
||||
end
|
||||
function do_debug_ip()
|
||||
luci.http.prepare_content("text/plain; charset=utf-8")
|
||||
local a=sys.exec("/usr/bin/autoipsetadder/debugip.sh")
|
||||
if (a=="") then
|
||||
a="noproblem"
|
||||
end
|
||||
luci.http.write(a)
|
||||
end
|
||||
function get_log()
|
||||
local logfile,fdp
|
||||
logfile=uci:get("autoipsetadder","autoipsetadder","logfile") or "/tmp/addlist.log"
|
||||
luci.http.prepare_content("text/plain; charset=utf-8")
|
||||
if not fs.access(logfile) then
|
||||
luci.http.write("")
|
||||
return
|
||||
end
|
||||
if fs.access("/var/run/lucilogreload") then
|
||||
fdp=0
|
||||
fs.remove("/var/run/lucilogreload")
|
||||
else
|
||||
fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0
|
||||
end
|
||||
local f=io.open(logfile, "r+")
|
||||
f:seek("set",fdp)
|
||||
local a=f:read(2048000) or ""
|
||||
fdp=f:seek()
|
||||
fs.writefile("/var/run/lucilogpos",tostring(fdp))
|
||||
f:close()
|
||||
luci.http.write(a)
|
||||
end
|
||||
@@ -0,0 +1,97 @@
|
||||
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
|
||||
@@ -0,0 +1,62 @@
|
||||
<%+cbi/valueheader%>
|
||||
<%uci=require"luci.model.uci".cursor()%>
|
||||
<%nixio=require"nixio"%>
|
||||
|
||||
<%if uci:get("autoipsetadder","autoipsetadder","enabled")=="1" then%>
|
||||
<textarea id="cbid.logview.1.conf" class="cbi-input-textarea" style="width: 100%;display:inline" data-update="change" rows="10" cols="60" readonly="readonly" > </textarea>
|
||||
<input type="checkbox" value="reverse" onclick=" return reverselog()" style="vertical-align:middle;height: auto;" checked><%:reverse%></input>
|
||||
<input type="button" class="cbi-button cbi-button-apply" id="apply_update_button" value="dellog" onclick=" return apply_del_log() "/>
|
||||
|
||||
<input type="button" class="cbi-button cbi-button-apply" id="apply_update_button" value="debug" onclick=" return debug_ip() "/>
|
||||
|
||||
<textarea id="cbid.logview.2.conf" class="cbi-input-textarea" style="width: 100%;display:none" data-update="change" rows="10" cols="60" readonly="readonly" > </textarea>
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
var islogreverse = true;
|
||||
function apply_del_log(){
|
||||
XHR.get('<%=url([[admin]], [[services]], [[autoipsetadder]], [[dodellog]])%>',null,function(x, data){
|
||||
var lv = document.getElementById('cbid.logview.1.conf');
|
||||
lv.innerHTML="";
|
||||
}
|
||||
);
|
||||
return
|
||||
}
|
||||
function reverselog(){
|
||||
var lv = document.getElementById('cbid.logview.1.conf');
|
||||
lv.innerHTML=lv.innerHTML.split('\n').reverse().join('\n')
|
||||
if (islogreverse){
|
||||
islogreverse=false;
|
||||
}else{
|
||||
islogreverse=true;
|
||||
}
|
||||
return
|
||||
}
|
||||
function debug_ip(){
|
||||
var lv2 = document.getElementById('cbid.logview.2.conf');
|
||||
lv2.style.display="inline"
|
||||
XHR.get('<%=url([[admin]], [[services]], [[autoipsetadder]], [[debugip]])%>',null,function(x, data){
|
||||
var lv2 = document.getElementById('cbid.logview.2.conf');
|
||||
lv2.innerHTML = x.responseText;
|
||||
}
|
||||
);
|
||||
return
|
||||
}
|
||||
function poll_check(){
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[autoipsetadder]], [[getlog]])%>', null,
|
||||
function(x, data) {
|
||||
var lv = document.getElementById('cbid.logview.1.conf');
|
||||
if (x.responseText && lv) {
|
||||
if (islogreverse){
|
||||
lv.innerHTML = x.responseText.split('\n').reverse().join('\n')+lv.innerHTML;
|
||||
}else{
|
||||
lv.innerHTML += x.responseText;
|
||||
}
|
||||
}
|
||||
}
|
||||
);}
|
||||
poll_check();
|
||||
|
||||
//]]>
|
||||
</script>
|
||||
<%end%>
|
||||
<%+cbi/valuefooter%>
|
||||
@@ -0,0 +1,22 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[autoipsetadder]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('autoipsetadder_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><b><font color=green>autoipsetadder <%:RUNNING%></font></b></em>';
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><b><font color=red>autoipsetadder <%:NOT RUNNING%></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="autoipsetadder_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
||||
Reference in new issue
Block a user