update-11.10

This commit is contained in:
github-actions[bot] 2021-11-10 09:01:15 +08:00
parent 6657472250
commit 0856a74fe2
38 changed files with 598 additions and 579 deletions

View File

@ -320,7 +320,7 @@ end
function action_confirm()
local data = docker:read_status()
if data then
data = data:gsub("\n","<br>"):gsub(" ","&nbsp;")
data = data:gsub("\n","<br />"):gsub(" ","&#160;")
code = 202
msg = data
else

View File

@ -30,7 +30,7 @@ local get_ports = function(d)
if d.HostConfig and d.HostConfig.PortBindings then
for inter, out in pairs(d.HostConfig.PortBindings) do
data = (data and (data .. "<br>") or "") .. out[1]["HostPort"] .. ":" .. inter
data = (data and (data .. "<br />") or "") .. out[1]["HostPort"] .. ":" .. inter
end
end
@ -42,7 +42,7 @@ local get_env = function(d)
if d.Config and d.Config.Env then
for _,v in ipairs(d.Config.Env) do
data = (data and (data .. "<br>") or "") .. v
data = (data and (data .. "<br />") or "") .. v
end
end
@ -83,7 +83,7 @@ local get_mounts = function(d)
v_dest = v_dest .."/".. v_dest_d
end
end
data = (data and (data .. "<br>") or "") .. v_sorce .. ":" .. v["Destination"] .. (v["Mode"] ~= "" and (":" .. v["Mode"]) or "")
data = (data and (data .. "<br />") or "") .. v_sorce .. ":" .. v["Destination"] .. (v["Mode"] ~= "" and (":" .. v["Mode"]) or "")
end
end
@ -95,7 +95,7 @@ local get_device = function(d)
if d.HostConfig and d.HostConfig.Devices then
for _,v in ipairs(d.HostConfig.Devices) do
data = (data and (data .. "<br>") or "") .. v["PathOnHost"] .. ":" .. v["PathInContainer"] .. (v["CgroupPermissions"] ~= "" and (":" .. v["CgroupPermissions"]) or "")
data = (data and (data .. "<br />") or "") .. v["PathOnHost"] .. ":" .. v["PathInContainer"] .. (v["CgroupPermissions"] ~= "" and (":" .. v["CgroupPermissions"]) or "")
end
end
@ -107,7 +107,7 @@ local get_links = function(d)
if d.HostConfig and d.HostConfig.Links then
for _,v in ipairs(d.HostConfig.Links) do
data = (data and (data .. "<br>") or "") .. v
data = (data and (data .. "<br />") or "") .. v
end
end
@ -119,7 +119,7 @@ local get_tmpfs = function(d)
if d.HostConfig and d.HostConfig.Tmpfs then
for k, v in pairs(d.HostConfig.Tmpfs) do
data = (data and (data .. "<br>") or "") .. k .. (v~="" and ":" or "")..v
data = (data and (data .. "<br />") or "") .. k .. (v~="" and ":" or "")..v
end
end
@ -131,7 +131,7 @@ local get_dns = function(d)
if d.HostConfig and d.HostConfig.Dns then
for _, v in ipairs(d.HostConfig.Dns) do
data = (data and (data .. "<br>") or "") .. v
data = (data and (data .. "<br />") or "") .. v
end
end
@ -143,7 +143,7 @@ local get_sysctl = function(d)
if d.HostConfig and d.HostConfig.Sysctls then
for k, v in pairs(d.HostConfig.Sysctls) do
data = (data and (data .. "<br>") or "") .. k..":"..v
data = (data and (data .. "<br />") or "") .. k..":"..v
end
end
@ -196,7 +196,7 @@ m.redirect = luci.dispatcher.build_url("admin/docker/containers")
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end
@ -302,7 +302,7 @@ if action == "info" then
},
["03image"] = {
_key = translate("Image"),
_value = container_info.Config.Image .. "<br>" .. container_info.Image
_value = container_info.Config.Image .. "<br />" .. container_info.Image
},
["04status"] = {
_key = translate("Status"),

View File

@ -51,7 +51,7 @@ function get_containers()
if v.Status:find("^Up") then
data[index]["_name"] = "<font color='green'>"..v.Names[1]:sub(2).."</font>"
data[index]["_status"] = "<a href='"..luci.dispatcher.build_url("admin/docker/container/"..v.Id).."/stats'><font color='green'>".. data[index]["_status"] .. "</font>" .. "<br><font color='#9f9f9f' class='container_cpu_status'></font><br><font color='#9f9f9f' class='container_mem_status'></font><br><font color='#9f9f9f' class='container_network_status'></font></a>"
data[index]["_status"] = "<a href='"..luci.dispatcher.build_url("admin/docker/container/"..v.Id).."/stats'><font color='green'>".. data[index]["_status"] .. "</font>" .. "<br /><font color='#9f9f9f' class='container_cpu_status'></font><br /><font color='#9f9f9f' class='container_mem_status'></font><br /><font color='#9f9f9f' class='container_network_status'></font></a>"
else
data[index]["_name"] = "<font color='red'>"..v.Names[1]:sub(2).."</font>"
data[index]["_status"] = '<font class="container_not_running" color="red">'.. data[index]["_status"] .. "</font>"
@ -89,9 +89,9 @@ function get_containers()
data[index]["_image"] = iv.RepoTags and iv.RepoTags[1] or (iv.RepoDigests[1]:gsub("(.-)@.+", "%1") .. ":&lt;none&gt;")
end
end
data[index]["_id_name"] = '<a href='..luci.dispatcher.build_url("admin/docker/container/"..v.Id)..' class="dockerman_link" title="'..translate("Container detail")..'">'.. data[index]["_name"] .. "<br><font color='#9f9f9f'>ID: " .. data[index]["_id"]
.. "</font></a><br>Image: " .. (data[index]["_image"] or "&lt;none&gt;")
.. "<br><font color='#9f9f9f' class='container_size_".. v.Id .."'></font>"
data[index]["_id_name"] = '<a href='..luci.dispatcher.build_url("admin/docker/container/"..v.Id)..' class="dockerman_link" title="'..translate("Container detail")..'">'.. data[index]["_name"] .. "<br /><font color='#9f9f9f'>ID: " .. data[index]["_id"]
.. "</font></a><br />Image: " .. (data[index]["_image"] or "&lt;none&gt;")
.. "<br /><font color='#9f9f9f' class='container_size_".. v.Id .."'></font>"
if type(v.Mounts) == "table" and next(v.Mounts) then
for _, v2 in pairs(v.Mounts) do
@ -113,7 +113,7 @@ function get_containers()
v_dest = v_dest .."/".. v_dest_d
end
end
data[index]["_mounts"] = (data[index]["_mounts"] and (data[index]["_mounts"] .. "<br>") or "") .. '<span title="'.. v2.Source.. "" .. v2.Destination .. '" ><a href="'..luci.dispatcher.build_url("admin/docker/container/"..v.Id)..'/file?path='..v2["Destination"]..'">' .. v_sorce .. "" .. v_dest..'</a></span>'
data[index]["_mounts"] = (data[index]["_mounts"] and (data[index]["_mounts"] .. "<br />") or "") .. '<span title="'.. v2.Source.. "" .. v2.Destination .. '" ><a href="'..luci.dispatcher.build_url("admin/docker/container/"..v.Id)..'/file?path='..v2["Destination"]..'">' .. v_sorce .. "" .. v_dest..'</a></span>'
end
end
end
@ -136,7 +136,7 @@ m:append(Template("dockerman/containers_running_stats"))
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -36,7 +36,7 @@ function get_images()
if v.RepoTags and next(v.RepoTags)~=nil then
for i, v1 in ipairs(v.RepoTags) do
data[index]["_tags"] =(data[index]["_tags"] and ( data[index]["_tags"] .. "<br>" )or "") .. ((v1:match("<none>") or (#v.RepoTags == 1)) and v1 or ('<a href="javascript:un_tag(\''..v1..'\')" class="dockerman_link" title="'..translate("Remove tag")..'" >' .. v1 .. '</a>'))
data[index]["_tags"] =(data[index]["_tags"] and ( data[index]["_tags"] .. "<br />" )or "") .. ((v1:match("<none>") or (#v.RepoTags == 1)) and v1 or ('<a href="javascript:un_tag(\''..v1..'\')" class="dockerman_link" title="'..translate("Remove tag")..'" >' .. v1 .. '</a>'))
if not data[index]["tag"] then
data[index]["tag"] = v1
@ -153,7 +153,7 @@ local remove_action = function(force)
for k in pairs(image_list) do
if image_list[k]._selected == 1 then
image_selected[#image_selected+1] = (image_list[k]["_tags"]:match("<br>") or image_list[k]["_tags"]:match("&lt;none&gt;")) and image_list[k].id or image_list[k].tag
image_selected[#image_selected+1] = (image_list[k]["_tags"]:match("<br />") or image_list[k]["_tags"]:match("&lt;none&gt;")) and image_list[k].id or image_list[k].tag
end
end
@ -192,7 +192,7 @@ end
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err = docker:read_status()
s.err = s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err = s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -90,7 +90,7 @@ o = s:option(DummyValue, "_gateway", translate("Gateway"))
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err = docker:read_status()
s.err = s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err = s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -451,7 +451,7 @@ end
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -23,7 +23,7 @@ end
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -40,7 +40,7 @@ if nixio.fs.access("/usr/bin/dockerd") and not uci:get_bool("dockerd", "dockerma
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -93,7 +93,7 @@ o = s:option(DummyValue, "_created", translate("Created"))
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
s.err=s.err and s.err:gsub("\n","<br />"):gsub(" ","&#160;")
if s.err then
docker:clear_status()
end

View File

@ -1,4 +1,4 @@
<br>
<br />
<ul class="cbi-tabmenu">
<li id="cbi-tab-container_info"><a id="a-cbi-tab-container_info" href=""><%:Info%></a></li>
<li id="cbi-tab-container_resources"><a id="a-cbi-tab-container_resources" href=""><%:Resources%></a></li>

View File

@ -1,7 +1,7 @@
<input type="text" class="cbi-input-text" name="isrc" placeholder="http://host/image.tar" id="isrc" />
<input type="text" class="cbi-input-text" name="itag" placeholder="repository:tag" id="itag" />
<div style="display: inline-block;">
<input type="button"" class="btn cbi-button cbi-button-add" id="btnimport" name="import" value="<%:Import%>" <% if self.disable then %>disabled <% end %>/>
<input type="button"" class="btn cbi-button cbi-button-add" id="btnimport" name="import" value="<%:Import%>" <% if self.disable then %>disabled <% end %> />
<input type="file" id="file_import" style="visibility:hidden; position: absolute;top: 0px; left: 0px;" />
</div>

View File

@ -1,5 +1,5 @@
<div style="display: inline-block;">
<input type="button"" class="btn cbi-button cbi-button-add" id="btnload" name="load" value="<%:Load%>" <% if self.disable then %>disabled <% end %>/>
<input type="button"" class="btn cbi-button cbi-button-add" id="btnload" name="load" value="<%:Load%>" <% if self.disable then %>disabled <% end %> />
<input type="file" id="file_load" style="visibility:hidden; position: absolute;top: 0px; left: 0px;" accept="application/x-tar" />
</div>
<script type="text/javascript">

View File

@ -88,7 +88,7 @@
}
function show_reslov_dialog() {
document.getElementById('dialog_reslov') || document.body.insertAdjacentHTML("beforeend", '<div id="dialog_reslov"><div class="dialog_box"><div class="dialog_line"></div><div class="dialog_line"><span><%:Plese input <docker create/run> command line:%></span><br><span id="cmd-line-status"></span></div><div class="dialog_line"><textarea class="cbi-input-textarea" id="dialog_reslov_text" style="width: 100%; height:100%;" rows="15" onkeyup="clear_text()" placeholder="docker run -d alpine sh"></textarea></div><div class="dialog_line" style="text-align: right;"><input type="button" class="btn cbi-button cbi-button-apply" type="submit" value="<%:Submit%>" onclick="reslov_container()"/> <input type="button" class="btn cbi-button cbi-button-reset" type="reset" value="<%:Cancel%>" onclick="close_reslov_dialog()" /></div><div class="dialog_line"></div></div></div>')
document.getElementById('dialog_reslov') || document.body.insertAdjacentHTML("beforeend", '<div id="dialog_reslov"><div class="dialog_box"><div class="dialog_line"></div><div class="dialog_line"><span><%:Plese input <docker create/run> command line:%></span><br /><span id="cmd-line-status"></span></div><div class="dialog_line"><textarea class="cbi-input-textarea" id="dialog_reslov_text" style="width: 100%; height:100%;" rows="15" onkeyup="clear_text()" placeholder="docker run -d alpine sh"></textarea></div><div class="dialog_line" style="text-align: right;"><input type="button" class="btn cbi-button cbi-button-apply" type="submit" value="<%:Submit%>" onclick="reslov_container()" /> <input type="button" class="btn cbi-button cbi-button-reset" type="reset" value="<%:Cancel%>" onclick="close_reslov_dialog()" /></div><div class="dialog_line"></div></div></div>')
document.body.classList.add('dialog-reslov-active')
let s = document.getElementById('cmd-line-status')
s.innerHTML = ""

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-godproxy
PKG_VERSION:=3.8.5
PKG_RELEASE:=3-20211108
PKG_RELEASE:=3-20211109
include $(INCLUDE_DIR)/package.mk
@ -28,8 +28,6 @@ define Package/luci-app-godproxy/install
cp -pR ./luasrc/* $(1)/usr/lib/lua/luci
$(INSTALL_DIR) $(1)/
cp -pR ./root/* $(1)/
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n
po2lmo ./po/zh-cn/koolproxy.po $(1)/usr/lib/lua/luci/i18n/koolproxy.zh-cn.lmo
ifeq ($(ARCH),aarch64)
$(INSTALL_BIN) ./bin/aarch64 $(1)/usr/share/koolproxy/koolproxy

View File

@ -1,12 +1,15 @@
## 更新2021年11月9日
1、整理 Luci 界面。
2、(可能)修复 CPU 占用过高问题。
## 更新2021年11月8日
1、优化部分规则+规则地址变更。
## 更新2021年11月5日
1、感谢 [Beginner-Go](https://github.com/Beginner-Go) 大佬提供最近几次修复.
1、已经修复开启视频规则导致软件无法运行问题。主要原因是猴子大佬的规则内容清空了。直接在后台重新更新规则即可。
2、已经修复开启视频规则导致软件无法运行问题。主要原因是猴子大佬的规则内容清空了。直接在后台重新更新规则即可。
3、修复anti-ad获取版本问题。
2、修复anti-ad获取版本问题。
## 更新2021年3月23日
感谢 [maple's sky](https://github.com/maplesky) 大佬提供技术支持,修复状态栏不动态问题。

View File

@ -4,15 +4,26 @@ function index()
if not nixio.fs.access("/etc/config/koolproxy") then
return
end
entry({"admin","services","koolproxy"},cbi("koolproxy/global"),_("KoolproxyR Plus+"),1).dependent=true
entry({"admin","services","koolproxy","rss_rule"},cbi("koolproxy/rss_rule"), nil).leaf=true
entry({"admin","services","koolproxy","status"},call("act_status")).leaf=true
entry({"admin", "services", "koolproxy"}, alias("admin", "services", "koolproxy", "basic"), _("GodProxy 滤广告"), 1).dependent = true
entry({"admin", "services", "koolproxy", "basic"}, cbi("koolproxy/basic"), _("基本设置"), 1).leaf = true
entry({"admin", "services", "koolproxy", "control"}, cbi("koolproxy/control"), _("访问控制"), 2).leaf = true
entry({"admin", "services", "koolproxy", "add_rule"}, cbi("koolproxy/add_rule"), _("规则订阅"), 3).leaf = true
entry({"admin", "services", "koolproxy", "cert"}, cbi("koolproxy/cert"), _("证书管理"), 4).leaf = true
entry({"admin", "services", "koolproxy", "white_list"}, cbi("koolproxy/white_list"), _("网站白名单设置"), 5).leaf = true
entry({"admin", "services", "koolproxy", "black_list"}, cbi("koolproxy/black_list"), _("网站黑名单设置"), 6).leaf = true
entry({"admin", "services", "koolproxy", "ip_white_list"}, cbi("koolproxy/ip_white_list"), _("IP白名单设置"), 7).leaf = true
entry({"admin", "services", "koolproxy", "ip_black_list"}, cbi("koolproxy/ip_black_list"), _("IP黑名单设置"), 8).leaf = true
entry({"admin", "services", "koolproxy", "custom_rule"}, cbi("koolproxy/custom_rule"), _("自定义规则"), 9).leaf = true
entry({"admin", "services", "koolproxy", "update_log"}, cbi("koolproxy/update_log"), _("更新日志"), 10).leaf = true
entry({"admin", "services", "koolproxy", "tips"}, cbi("koolproxy/tips"), _("帮助支持"), 11).leaf = true
entry({"admin", "services", "koolproxy", "rss_rule"}, cbi("koolproxy/rss_rule"), nil).leaf = true
entry({"admin", "services", "koolproxy", "status"}, call("act_status")).leaf = true
end
function act_status()
local e={}
e.running=luci.sys.call("pidof koolproxy >/dev/null")==0
local e = {}
e.running = luci.sys.call("pidof koolproxy >/dev/null") == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end

View File

@ -0,0 +1,74 @@
o = Map("koolproxy")
t = o:section(TypedSection,"rss_rule", translate("GodProxy 规则订阅"))
t.description = translate("请确保订阅规则的兼容性")
t.anonymous = true
t.addremove = true
t.sortable = true
t.template = "cbi/tblsection"
t.extedit = luci.dispatcher.build_url("admin/services/koolproxy/rss_rule/%s")
e = t:option(Flag, "load", translate("启用"))
e.rmempty = false
e.default = 0
e = t:option(DummyValue, "name", translate("规则名称"))
function e.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
e = t:option(DummyValue,"url", translate("规则地址"))
function e.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
t.create = function(...)
local sid = TypedSection.create(...)
if sid then
luci.http.redirect(t.extedit % sid)
return
end
end
e = t:option(DummyValue, "time", translate("更新时间"))
function Download()
local t,e
t = nixio.open("/tmp/upload/koolproxyca.tar.gz","r")
luci.http.header('Content-Disposition','attachment; filename="koolproxyCA.tar.gz"')
luci.http.prepare_content("application/octet-stream")
while true do
e = t:read(nixio.const.buffersize)
if(not e)or(#e==0)then
break
else
luci.http.write(e)
end
end
t:close()
luci.http.close()
end
local t,e
t = "/tmp/upload/"
nixio.fs.mkdir(t)
luci.http.setfilehandler(
function(o,a,i)
if not e then
if not o then return end
e = nixio.open(t..o.file,"w")
if not e then
return
end
end
if a and e then
e:write(a)
end
if i and e then
e:close()
e = nil
luci.sys.call("/usr/share/koolproxy/camanagement restore 2>&1 >/dev/null")
end
end)
return o

View File

@ -0,0 +1,120 @@
-- Copyright 2018 Nick Peng (pymumu@gmail.com)
require ("nixio.fs")
require ("luci.http")
require ("luci.dispatcher")
require ("nixio.fs")
local fs = require "nixio.fs"
local sys = require "luci.sys"
local http = require "luci.http"
local o,t,e
local a = luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/koolproxy.txt | grep rules | awk -F' ' '{print $3,$4}'")
local b = luci.sys.exec("head -4 /usr/share/koolproxy/data/rules/koolproxy.txt | grep video | awk -F' ' '{print $3,$4}'")
local c = luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/daily.txt | grep rules | awk -F' ' '{print $3,$4}'")
local s = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/ABP.txt | wc -l")
local m = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/mv.txt | wc -l")
local u = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/fanboy.txt | wc -l")
local p = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/yhosts.txt | wc -l")
local h = luci.sys.exec("grep -v '^!' /usr/share/koolproxy/data/rules/user.txt | wc -l")
local l = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/koolproxy.txt | wc -l")
local q = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/daily.txt | wc -l")
local f = luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/anti-ad.txt | wc -l")
local i = luci.sys.exec("cat /usr/share/koolproxy/dnsmasq.adblock | wc -l")
o = Map("koolproxy")
o.title = translate("GodProxy 滤广告")
o.description = translate("GodProxy是基于KoolProxyR Plus重新整理的能识别adblock规则的免费开源软件,追求体验更快、更清洁的网络,屏蔽烦人的广告!")
o:section(SimpleSection).template = "koolproxy/koolproxy_status"
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(Flag, "enabled", translate("启用"))
e.rmempty = false
e.default = 0
e = t:option(Value, "startup_delay", translate("启动延迟"))
e:value(0, translate("不启用"))
for _, v in ipairs({5, 10, 15, 25, 40, 60}) do
e:value(v, translate("%u 秒") %{v})
end
e.datatype = "uinteger"
e.rmempty = false
e.default = 0
e = t:option(ListValue, "koolproxy_mode", translate("过滤模式"))
e.rmempty = false
e:value(1, translate("全局模式"))
e:value(2, translate("IPSET模式"))
e:value(3, translate("视频模式"))
e.default = 1
e = t:option(MultiValue, "koolproxy_rules", translate("内置规则"))
e.optional = false
e.rmempty = false
e:value("koolproxy.txt", translate("静态规则"))
e:value("daily.txt", translate("每日规则"))
e:value("kp.dat", translate("视频规则"))
e:value("user.txt", translate("自定义规则"))
e = t:option(MultiValue, "thirdparty_rules", translate("第三方规则"))
e.optional = true
e.rmempty = false
e:value("ABP.txt", translate("ABP规则"))
e:value("fanboy.txt", translate("Fanboy规则"))
e:value("yhosts.txt", translate("Yhosts规则"))
e:value("anti-ad.txt", translate("Anti-AD规则"))
e:value("mv.txt", translate("乘风视频"))
e = t:option(ListValue, "koolproxy_port", translate("端口控制"))
e.rmempty = false
e:value(0, translate("关闭"))
e:value(1, translate("开启"))
e.default = 0
e = t:option(ListValue, "koolproxy_ipv6", translate("IPv6支持"))
e.rmempty = false
e:value(0, translate("关闭"))
e:value(1, translate("开启"))
e.default = 0
e = t:option(Value, "koolproxy_bp_port", translate("例外端口"))
e.description = translate("单端口:80&nbsp;&nbsp;多端口:80,443")
e.rmempty = false
e:depends("koolproxy_port", "1")
e = t:option(Flag, "koolproxy_host", translate("开启Adblock Plus Hosts"))
e:depends("koolproxy_mode","2")
e.default = 0
e = t:option(ListValue, "koolproxy_acl_default", translate("默认访问控制"))
e.description = translate("访问控制设置中其他主机的默认规则")
e.rmempty = false
e:value(0, translate("不过滤"))
e:value(1, translate("过滤HTTP协议"))
e:value(2, translate("过滤HTTP(S)协议"))
e:value(3, translate("全部过滤"))
e.default = 1
e = t:option(ListValue, "time_update", translate("定时更新"))
e.description = translate("定时更新规则。请把时间修改掉,默认时间使用人数多会更新失败")
e.rmempty = false
for t = 0,23 do
e:value(t,translate("每天"..t..""))
end
e:value(nil, translate("关闭"))
e.default = nil
e = t:option(Button, "restart", translate("规则状态"))
e.inputtitle = translate("更新规则")
e.inputstyle = "reload"
e.write = function()
luci.sys.call("/usr/share/koolproxy/kpupdate 2>&1 >/dev/null")
luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
end
e.description = translate(string.format("<font color=\"red\"><strong>更新订阅规则与Adblock Plus Hosts</strong></font><br /><font color=\"green\">ABP规则: %s条<br />Fanboy规则: %s条<br />Yhosts规则: %s条<br />Anti-AD规则: %s条<br />静态规则: %s条<br />视频规则: %s<br />乘风视频: %s条<br />每日规则: %s条<br />自定义规则: %s条<br />Host: %s条</font><br />", s, u, p, f, l, b, m, q, h, i))
return o

View File

@ -0,0 +1,32 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(TextValue, "adblock_domain")
e.description = translate("加入的网址将走广告过滤端口。只针对黑名单模式。只能输入WEB地址google.com每个地址一行。")
e.rmempty = false
e.rows = 28
e.wrap = "off"
local fs = require "nixio.fs"
local i = "/etc/adblocklist/adblock"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adblock", value)
if (luci.sys.call("cmp -s /tmp/adblock /etc/adblocklist/adblock") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adblock")
end
return o

View File

@ -0,0 +1,31 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.title = translate("证书恢复")
t.description = translate("上传恢复已备份的证书文件名必须为koolproxyCA.tar.gz")
t.anonymous = true
e = t:option(DummyValue,"c1status")
e = t:option(FileUpload,"")
e.template = "koolproxy/caupload"
t = o:section(TypedSection, "global")
t.title = translate("证书备份")
t.description = translate("下载备份的证书")
t.anonymous = true
e = t:option(DummyValue,"",nil)
e.template = "koolproxy/cadvalue"
if nixio.fs.access("/usr/share/koolproxy/data/certs/ca.crt") then
e = t:option(DummyValue,"c2status")
e = t:option(Button,"certificate")
e.inputtitle = translate("下载证书备份")
e.inputstyle = "reload"
e.write=function()
luci.sys.call("/usr/share/koolproxy/camanagement backup 2>&1 >/dev/null")
Download()
luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
end
end
return o

View File

@ -0,0 +1,33 @@
o = Map("koolproxy")
t = o:section(TypedSection, "acl_rule", translate("GodProxy 访问控制"))
t.anonymous = true
t.description = translate("访问控制列表是用于指定特殊IP过滤模式的工具如为已安装证书的客户端开启https广告过滤等MAC或者IP必须填写其中一项。")
t.template = "cbi/tblsection"
t.sortable = true
t.addremove = true
e = t:option(Value, "remarks", translate("客户端备注"))
e.rmempty = true
e.width = "30%"
e = t:option(Value, "ipaddr", translate("内部IP地址"))
e.width = "20%"
e.datatype = "ip4addr"
luci.ip.neighbors({family = 4}, function(neighbor)
if neighbor.reachable then
e:value(neighbor.dest:string(), "%s (%s)" %{neighbor.dest:string(), neighbor.mac})
end
end)
e = t:option(ListValue, "proxy_mode", translate("访问控制"))
e.rmempty = false
e.width = "20%"
e:value(0,translate("不过滤"))
e:value(1,translate("过滤 HTTP"))
e:value(2,translate("过滤HTTP + HTTPS"))
e:value(3,translate("过滤全端口"))
e.default = 1
return o

View File

@ -0,0 +1,32 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(TextValue, "user_rule")
e.description = translate("输入你的自定义规则,每条规则一行。")
e.rmempty = false
e.rows = 28
e.wrap = "off"
local fs = require "nixio.fs"
local i = "/usr/share/koolproxy/data/user.txt"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/user.txt", value)
if (luci.sys.call("cmp -s /tmp/user.txt /usr/share/koolproxy/data/user.txt") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/user.txt")
end
return o

View File

@ -1,396 +0,0 @@
-- Copyright 2018 Nick Peng (pymumu@gmail.com)
require ("nixio.fs")
require ("luci.http")
require ("luci.dispatcher")
require ("nixio.fs")
local fs = require "nixio.fs"
local sys = require "luci.sys"
local http = require "luci.http"
local o,t,e
local v=luci.sys.exec("/usr/share/koolproxy/koolproxy -v")
local a=luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/koolproxy.txt | grep rules | awk -F' ' '{print $3,$4}'")
local b=luci.sys.exec("head -4 /usr/share/koolproxy/data/rules/koolproxy.txt | grep video | awk -F' ' '{print $3,$4}'")
local c=luci.sys.exec("head -3 /usr/share/koolproxy/data/rules/daily.txt | grep rules | awk -F' ' '{print $3,$4}'")
local s=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/ABP.txt | wc -l")
local m=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/mv.txt | wc -l")
local u=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/fanboy.txt | wc -l")
local p=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/yhosts.txt | wc -l")
local h=luci.sys.exec("grep -v '^!' /usr/share/koolproxy/data/rules/user.txt | wc -l")
local l=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/koolproxy.txt | wc -l")
local q=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/daily.txt | wc -l")
local f=luci.sys.exec("grep -v !x /usr/share/koolproxy/data/rules/anti-ad.txt | wc -l")
local i=luci.sys.exec("cat /usr/share/koolproxy/dnsmasq.adblock | wc -l")
o = Map("koolproxy", translate("GodProxy 滤广告 "), translate("GodProxy是基于KoolProxyR Plus重新整理的能识别adblock规则的免费开源软件,追求体验更快、更清洁的网络,屏蔽烦人的广告!"))
o:section(SimpleSection).template = "koolproxy/koolproxy_status"
t = o:section(TypedSection, "global")
t.anonymous = true
t:tab("base",translate("Basic Settings"))
e = t:taboption("base", Flag, "enabled", translate("Enable"))
e.default = 0
e.rmempty = false
e = t:taboption("base", Value, "startup_delay", translate("启动延迟"))
e:value(0, translate("不启用"))
for _, v in ipairs({5, 10, 15, 25, 40, 60}) do
e:value(v, translate("%u 秒") %{v})
end
e.datatype = "uinteger"
e.default = 0
e.rmempty = false
e = t:taboption("base", ListValue, "koolproxy_mode", translate("Filter Mode"))
e.default = 1
e.rmempty = false
e:value(1, translate("全局模式"))
e:value(2, translate("IPSET模式"))
e:value(3, translate("视频模式"))
e = t:taboption("base", MultiValue, "koolproxy_rules", translate("内置规则"))
e.optional = false
e.rmempty = false
e:value("koolproxy.txt", translate("静态规则"))
e:value("daily.txt", translate("每日规则"))
e:value("kp.dat", translate("视频规则"))
e:value("user.txt", translate("自定义规则"))
e = t:taboption("base", MultiValue, "thirdparty_rules", translate("第三方规则"))
e.optional = true
e.rmempty = false
e:value("ABP.txt", translate("ABP规则"))
e:value("fanboy.txt", translate("Fanboy规则"))
e:value("yhosts.txt", translate("Yhosts规则"))
e:value("anti-ad.txt", translate("Anti-AD规则"))
e:value("mv.txt", translate("乘风视频"))
e = t:taboption("base", ListValue, "koolproxy_port", translate("端口控制"))
e.default = 0
e.rmempty = false
e:value(0, translate("关闭"))
e:value(1, translate("开启"))
e = t:taboption("base", ListValue, "koolproxy_ipv6", translate("IPv6支持"))
e.default = 0
e.rmempty = false
e:value(0, translate("关闭"))
e:value(1, translate("开启"))
e = t:taboption("base", Value, "koolproxy_bp_port", translate("例外端口"))
e:depends("koolproxy_port", "1")
e.rmempty = false
e.description = translate(string.format("<font color=\"red\"><strong>单端口:80&nbsp;&nbsp;多端口:80,443</strong></font>"))
e=t:taboption("base",Flag,"koolproxy_host",translate("开启Adblock Plus Hosts"))
e.default=0
e:depends("koolproxy_mode","2")
e = t:taboption("base", ListValue, "koolproxy_acl_default", translate("默认访问控制"))
e.default = 1
e.rmempty = false
e:value(0, translate("不过滤"))
e:value(1, translate("过滤HTTP协议"))
e:value(2, translate("过滤HTTP(S)协议"))
e:value(3, translate("全部过滤"))
e.description = translate(string.format("<font color=\"blue\"><strong>访问控制设置中其他主机的默认规则</strong></font>"))
e = t:taboption("base", ListValue, "time_update", translate("定时更新"))
for t = 0,23 do
e:value(t,translate("每天"..t..""))
end
e:value(nil, translate("关闭"))
e.default = nil
e.rmempty = false
e.description = translate(string.format("<font color=\"red\"><strong>定时更新规则。请把时间修改掉,默认时间使用人数多会更新失败</strong></font>"))
e = t:taboption("base", Button, "restart", translate("规则状态"))
e.inputtitle = translate("更新规则")
e.inputstyle = "reload"
e.write = function()
luci.sys.call("/usr/share/koolproxy/kpupdate 2>&1 >/dev/null")
luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
end
e.description = translate(string.format("<font color=\"red\"><strong>更新订阅规则与Adblock Plus Hosts</strong></font><br /><font color=\"green\">ABP规则: %s条<br />Fanboy规则: %s条<br />Yhosts规则: %s条<br />Anti-AD规则: %s条<br />静态规则: %s条<br />视频规则: %s<br />乘风视频: %s条<br />每日规则: %s条<br />自定义规则: %s条<br />Host: %s条</font><br />", s, u, p, f, l, b, m, q, h, i))
t:tab("cert",translate("Certificate Management"))
e=t:taboption("cert",DummyValue,"c1status",translate("<div align=\"left\"><strong>证书恢复</strong></div>"))
e=t:taboption("cert",FileUpload,"")
e.template="koolproxy/caupload"
e=t:taboption("cert",DummyValue,"",nil)
e.template="koolproxy/cadvalue"
if nixio.fs.access("/usr/share/koolproxy/data/certs/ca.crt")then
e=t:taboption("cert",DummyValue,"c2status",translate("<div align=\"left\"><strong>证书备份</strong></div>"))
e=t:taboption("cert",Button,"certificate")
e.inputtitle=translate("Backup Download")
e.inputstyle="reload"
e.write=function()
luci.sys.call("/usr/share/koolproxy/camanagement backup 2>&1 >/dev/null")
Download()
luci.http.redirect(luci.dispatcher.build_url("admin","services","koolproxy"))
end
end
t:tab("white_weblist",translate("网站白名单设置"))
local i = "/etc/adblocklist/adbypass"
e = t:taboption("white_weblist", TextValue, "adbypass_domain")
e.description = translate("这些已经加入的网站将不会使用过滤器。请输入网站的域名每行只能输入一个网站域名。例如google.com。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adbypass", value)
if (luci.sys.call("cmp -s /tmp/adbypass /etc/adblocklist/adbypass") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adbypass")
end
t:tab("weblist",translate("Set Backlist Of Websites"))
local i = "/etc/adblocklist/adblock"
e = t:taboption("weblist", TextValue, "adblock_domain")
e.description = translate("加入的网址将走广告过滤端口。只针对黑名单模式。只能输入WEB地址google.com每个地址一行。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adblock", value)
if (luci.sys.call("cmp -s /tmp/adblock /etc/adblocklist/adblock") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adblock")
end
t:tab("white_iplist",translate("IP白名单设置"))
local i = "/etc/adblocklist/adbypassip"
e = t:taboption("white_iplist", TextValue, "adbypass_ip")
e.description = translate("这些已加入的ip地址将使用代理但只有GFW型号。请输入ip地址或ip地址段每行只能输入一个ip地址。例如112.123.134.145 / 24或112.123.134.145。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adbypassip", value)
if (luci.sys.call("cmp -s /tmp/adbypassip /etc/adblocklist/adbypassip") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adbypassip")
end
t:tab("iplist",translate("IP黑名单设置"))
local i = "/etc/adblocklist/adblockip"
e = t:taboption("iplist", TextValue, "adblock_ip")
e.description = translate("这些已经加入的ip地址不会使用过滤器.请输入ip地址或ip地址段每行只能输入一个ip地址。例如112.123.134.145 / 24或112.123.134.145。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adblockip", value)
if (luci.sys.call("cmp -s /tmp/adblockip /etc/adblocklist/adblockip") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adblockip")
end
t:tab("customlist", translate("Set Backlist Of custom"))
local i = "/usr/share/koolproxy/data/user.txt"
e = t:taboption("customlist", TextValue, "user_rule")
e.description = translate("Enter your custom rules, each row.")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/user.txt", value)
if (luci.sys.call("cmp -s /tmp/user.txt /usr/share/koolproxy/data/user.txt") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/user.txt")
end
t:tab("logs",translate("View the logs"))
local i = "/var/log/koolproxy.log"
e = t:taboption("logs", TextValue, "kpupdate_log")
e.description = translate("Koolproxy Logs")
e.rows = 28
e.wrap = "off"
e.rmempty = false
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
end
t=o:section(TypedSection,"acl_rule",translate("GodProxy 访问控制"),
translate("ACLs is a tools which used to designate specific IP filter mode,The MAC addresses added to the list will be filtered using https"))
t.template="cbi/tblsection"
t.sortable=true
t.anonymous=true
t.addremove=true
e=t:option(Value,"remarks",translate("Client Remarks"))
e.width="30%"
e.rmempty=true
e=t:option(Value,"ipaddr",translate("IP Address"))
e.width="20%"
e.datatype="ip4addr"
luci.ip.neighbors({family = 4}, function(neighbor)
if neighbor.reachable then
e:value(neighbor.dest:string(), "%s (%s)" %{neighbor.dest:string(), neighbor.mac})
end
end)
e=t:option(Value,"mac",translate("MAC Address"))
e.width="20%"
e.rmempty=true
e.datatype="macaddr"
luci.ip.neighbors({family = 4}, function(neighbor)
if neighbor.reachable then
e:value(neighbor.mac, "%s (%s)" %{neighbor.mac, neighbor.dest:string()})
end
end)
e=t:option(ListValue,"proxy_mode",translate("访问控制"))
e.width="20%"
e.default=1
e.rmempty=false
e:value(0,translate("不过滤"))
e:value(1,translate("过滤 HTTP"))
e:value(2,translate("过滤HTTP + HTTPS"))
e:value(3,translate("过滤全端口"))
t=o:section(TypedSection,"rss_rule",translate("GodProxy 规则订阅"), translate("请确保订阅规则的兼容性"))
t.anonymous=true
t.addremove=true
t.sortable=true
t.template="cbi/tblsection"
t.extedit=luci.dispatcher.build_url("admin/services/koolproxy/rss_rule/%s")
t.create=function(...)
local sid=TypedSection.create(...)
if sid then
luci.http.redirect(t.extedit % sid)
return
end
end
e=t:option(Flag,"load",translate("启用"))
e.default=0
e.rmempty=false
e=t:option(DummyValue,"name",translate("规则名称"))
function e.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
e=t:option(DummyValue,"url",translate("规则地址"))
function e.cfgvalue(...)
return Value.cfgvalue(...) or translate("None")
end
e=t:option(DummyValue,"time",translate("更新时间"))
function Download()
local t,e
t=nixio.open("/tmp/upload/koolproxyca.tar.gz","r")
luci.http.header('Content-Disposition','attachment; filename="koolproxyCA.tar.gz"')
luci.http.prepare_content("application/octet-stream")
while true do
e=t:read(nixio.const.buffersize)
if(not e)or(#e==0)then
break
else
luci.http.write(e)
end
end
t:close()
luci.http.close()
end
local t,e
t="/tmp/upload/"
nixio.fs.mkdir(t)
luci.http.setfilehandler(
function(o,a,i)
if not e then
if not o then return end
e=nixio.open(t..o.file,"w")
if not e then
return
end
end
if a and e then
e:write(a)
end
if i and e then
e:close()
e=nil
luci.sys.call("/usr/share/koolproxy/camanagement restore 2>&1 >/dev/null")
end
end
)
t=o:section(TypedSection,"usetips",translate("GodProxy 帮助支持"))
t.anonymous = true
t:append(Template("koolproxy/feedback"))
return o

View File

@ -0,0 +1,32 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(TextValue, "adblock_ip")
e.description = translate("这些已经加入的ip地址不会使用过滤器.请输入ip地址或ip地址段每行只能输入一个ip地址。例如112.123.134.145 / 24或112.123.134.145。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
local fs = require "nixio.fs"
local i = "/etc/adblocklist/adblockip"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adblockip", value)
if (luci.sys.call("cmp -s /tmp/adblockip /etc/adblocklist/adblockip") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adblockip")
end
return o

View File

@ -0,0 +1,32 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(TextValue, "adbypass_ip")
e.description = translate("这些已加入的ip地址将使用代理但只有GFW型号。请输入ip地址或ip地址段每行只能输入一个ip地址。例如112.123.134.145 / 24或112.123.134.145。")
e.rows = 28
e.wrap = "off"
e.rmempty = false
local fs = require "nixio.fs"
local i = "/etc/adblocklist/adbypassip"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adbypassip", value)
if (luci.sys.call("cmp -s /tmp/adbypassip /etc/adblocklist/adbypassip") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adbypassip")
end
return o

View File

@ -2,7 +2,8 @@ local m, s, o
local koolproxy = "koolproxy"
local sid = arg[1]
m = Map(koolproxy, "%s - %s" %{translate("GodProxy滤广告"), translate("编辑规则")})
m = Map(koolproxy)
m.title = translate("GodProxy滤广告 - 编辑规则")
m.redirect = luci.dispatcher.build_url("admin/services/koolproxy")
if not arg[1] or m.uci:get(koolproxy, sid) ~= "rss_rule" then
@ -15,15 +16,15 @@ s = m:section(NamedSection, sid, "rss_rule")
s.anonymous = true
s.addremove = true
o=s:option(Flag,"load",translate("启用"))
o.default=0
o.rmempty=false
o = s:option(Flag, "load", translate("启用"))
o.rmempty = false
o.default = 0
o=s:option(Value,"name",translate("规则描述"))
o.rmempty=true
o = s:option(Value, "name", translate("规则描述"))
o.rmempty = true
o=s:option(Value,"url",translate("规则地址"))
o.rmempty=false
o = s:option(Value, "url", translate("规则地址"))
o.rmempty = false
o.placeholder="[https|http|ftp]://[Hostname]/[File]"
function o.validate(self, value)
if not value then

View File

@ -0,0 +1,8 @@
o = Map("koolproxy")
t = o:section(TypedSection, "usetips")
t.title = translate("GodProxy 帮助支持")
t.anonymous = true
t:append(Template("koolproxy/tips"))
return o

View File

@ -0,0 +1,22 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
local fs = require "nixio.fs"
local i = "/var/log/koolproxy.log"
e = t:option(TextValue, "kpupdate_log")
e.description = translate("查看最近的更新日志")
e.rmempty = false
e.rows = 28
e.wrap = "off"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
end
return o

View File

@ -0,0 +1,32 @@
o = Map("koolproxy")
t = o:section(TypedSection, "global")
t.anonymous = true
e = t:option(TextValue, "adbypass_domain")
e.description = translate("这些已经加入的网站将不会使用过滤器。请输入网站的域名每行只能输入一个网站域名。例如google.com。")
e.rmempty = false
e.rows = 28
e.wrap = "off"
local fs = require "nixio.fs"
local i = "/etc/adblocklist/adbypass"
function e.cfgvalue()
return fs.readfile(i) or ""
end
function e.write(self, section, value)
if value then
value = value:gsub("\r\n", "\n")
else
value = ""
end
fs.writefile("/tmp/adbypass", value)
if (luci.sys.call("cmp -s /tmp/adbypass /etc/adblocklist/adbypass") == 1) then
fs.writefile(i, value)
end
fs.remove("/tmp/adbypass")
end
return o

View File

@ -1,5 +1,5 @@
<%+cbi/valueheader%>
<label class="cbi-value" style="display:inline-block; width: 400px" for="ulfile"><font color="red"><%:Upload backup file,The file name must be koolproxyCA.tar.gz%></font></label><br />
<label class="cbi-value" style="display:inline-block; width: 400px" for="ulfile"></label><br />
<input class="cbi-input-file" style="width: 400px" type="file" id="ulfile" name="ulfile" />
<input type="submit" class="cbi-button cbi-input-apply" name="upload" value="<%:Upload Restore%>" />
<input type="submit" class="cbi-button cbi-input-apply" name="upload" value="<%:上传恢复证书%>" />
<%+cbi/valuefooter%>

View File

@ -4,9 +4,9 @@ XHR.poll(3, '<%=url([[admin]], [[services]], [[koolproxy]], [[status]])%>', null
var tb = document.getElementById('koolproxy_status');
if (data && tb) {
if (data.running) {
tb.innerHTML = '<em><b><font color=green><%:KoolproxyR Plus+%> <%:RUNNING%></font></b></em>';
tb.innerHTML = '<em><b><font color=green><%:GodProxy 滤广告%> <%:运行中%></font></b></em>';
} else {
tb.innerHTML = '<em><b><font color=red><%:KoolproxyR Plus+%> <%:NOT RUNNING%></font></b></em>';
tb.innerHTML = '<em><b><font color=red><%:GodProxy 滤广告%> <%:未运行%></font></b></em>';
}
}
}
@ -16,6 +16,6 @@ XHR.poll(3, '<%=url([[admin]], [[services]], [[koolproxy]], [[status]])%>', null
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
<fieldset class="cbi-section">
<p id="koolproxy_status">
<em><%:Collecting data...%></em>
<em><%:收集数据...%></em>
</p>
</fieldset>

View File

@ -1,53 +0,0 @@
msgid "RUNNING"
msgstr "运行中"
msgid "NOT RUNNING"
msgstr "未运行"
msgid "Filter Mode"
msgstr "过滤模式"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "Basic Settings"
msgstr "基础设置"
msgid "View the logs"
msgstr "更新日志"
msgid "Certificate Management"
msgstr "证书管理"
msgid "Set Backlist Of custom"
msgstr "自定义规则"
msgid "IP Address"
msgstr "内部IP地址"
msgid "Client Remarks"
msgstr "客户端备注"
msgid "Upload Restore"
msgstr "上传恢复证书"
msgid "Backup Download"
msgstr "下载证书备份"
msgid "Set Backlist Of Websites"
msgstr "网站黑名单设置"
msgid "KoolproxyR Plus+"
msgstr "GodProxy 滤广告"
msgid "Koolproxy Logs"
msgstr "查看最近的更新日志"
msgid "Enter your custom rules, each row."
msgstr "输入你的自定义规则,每条规则一行。"
msgid "Upload backup file,The file name must be koolproxyCA.tar.gz"
msgstr "上传恢复已备份的证书文件名必须为koolproxyCA.tar.gz"
msgid "ACLs is a tools which used to designate specific IP filter mode,The MAC addresses added to the list will be filtered using https"
msgstr "访问控制列表是用于指定特殊IP过滤模式的工具如为已安装证书的客户端开启https广告过滤等MAC或者IP必须填写其中一项。"

View File

@ -1 +0,0 @@
zh-cn

View File

@ -430,7 +430,6 @@ start_service() {
procd_set_param command /usr/share/koolproxy/koolproxy
procd_append_param command --mark
procd_append_param command --ttl 160
procd_append_param command --ipv6
procd_set_param respawn

View File

View File

@ -110,31 +110,31 @@ update_rss_rules() {
update_rules() {
echo $(date "+%F %T"): ------------------- 内置规则更新 ------------------- >>$LOGFILE
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/kp.dat' -q -O $KP_DIR/data/rules/kp.dat
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/daily.txt' -q -O $KP_DIR/data/rules/daily.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/koolproxy.txt' -q -O $KP_DIR/data/rules/koolproxy.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/yhosts.txt' -q -O $KP_DIR/data/rules/yhosts.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/fanboy.txt' -q -O $KP_DIR/data/rules/fanboy.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/ABP.txt' -q -O $KP_DIR/data/rules/ABP.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/antiad.txt' -q -O $KP_DIR/data/rules/anti-ad.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/mv.txt' -q -O $KP_DIR/data/rules/mv.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/ipsetadblock/koolproxy_ipset.conf' -q -O $KP_DIR/koolproxy_ipset.conf
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/ipsetadblock/dnsmasq.adblock' -q -O $KP_DIR/dnsmasq.adblock
ABP_rules_local=`cat /usr/share/koolproxy/data/rules/easylistchina.txt | sed -n '3p'|awk '{print $3,$4}'`
fanboy_rules_local=`cat /usr/share/koolproxy/data/rules/fanboy.txt | sed -n '3p'|awk '{print $3,$4}'`
yhosts_rules_local=`cat /usr/share/koolproxy/data/rules/yhosts.txt | sed -n '1p' | cut -d ":" -f2`
antiad_rules_local=`cat /usr/share/koolproxy/data/rules/anti-ad.txt | sed -n '2p' | cut -d "=" -f2`
koolproxy_rules_local=`cat /usr/share/koolproxy/data/rules/koolproxy.txt | sed -n '3p'|awk '{print $3,$4}'`
mv_rules_local=`cat /usr/share/koolproxy/data/rules/mv.txt | sed -n '3p'|awk '{print $3,$4}'`
echo $(date "+%F %T"): -------------------ABP规则 Version $ABP_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Fanboy规则 Version $fanboy_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Yhosts规则 Version $yhosts_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Anti-AD规则 Version $antiad_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------静态规则 Version $koolproxy_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------乘风视频 Version $mv_rules_local >>$LOGFILE
echo $(date "+%F %T"): ------------------- 内置规则更新成功! ------------------- >>$LOGFILE
RESTART_KOOLPROXY=true
echo $(date "+%F %T"): ------------------- 内置规则更新 ------------------- >>$LOGFILE
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/kp.dat' -q -O $KP_DIR/data/rules/kp.dat
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/daily.txt' -q -O $KP_DIR/data/rules/daily.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/koolproxy.txt' -q -O $KP_DIR/data/rules/koolproxy.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/yhosts.txt' -q -O $KP_DIR/data/rules/yhosts.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/fanboy.txt' -q -O $KP_DIR/data/rules/fanboy.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/ABP.txt' -q -O $KP_DIR/data/rules/ABP.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/antiad.txt' -q -O $KP_DIR/data/rules/anti-ad.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/rules/mv.txt' -q -O $KP_DIR/data/rules/mv.txt
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/ipsetadblock/koolproxy_ipset.conf' -q -O $KP_DIR/koolproxy_ipset.conf
wget 'https://raw.githubusercontents.com/project-lede/koolproxy/main/ipsetadblock/dnsmasq.adblock' -q -O $KP_DIR/dnsmasq.adblock
ABP_rules_local=`cat /usr/share/koolproxy/data/rules/easylistchina.txt | sed -n '3p'|awk '{print $3,$4}'`
fanboy_rules_local=`cat /usr/share/koolproxy/data/rules/fanboy.txt | sed -n '3p'|awk '{print $3,$4}'`
yhosts_rules_local=`cat /usr/share/koolproxy/data/rules/yhosts.txt | sed -n '1p' | cut -d ":" -f2`
antiad_rules_local=`cat /usr/share/koolproxy/data/rules/anti-ad.txt | sed -n '2p' | cut -d "=" -f2`
koolproxy_rules_local=`cat /usr/share/koolproxy/data/rules/koolproxy.txt | sed -n '3p'|awk '{print $3,$4}'`
mv_rules_local=`cat /usr/share/koolproxy/data/rules/mv.txt | sed -n '3p'|awk '{print $3,$4}'`
echo $(date "+%F %T"): -------------------ABP规则 Version $ABP_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Fanboy规则 Version $fanboy_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Yhosts规则 Version $yhosts_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------Anti-AD规则 Version $antiad_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------静态规则 Version $koolproxy_rules_local >>$LOGFILE
echo $(date "+%F %T"): -------------------乘风视频 Version $mv_rules_local >>$LOGFILE
echo $(date "+%F %T"): ------------------- 内置规则更新成功! ------------------- >>$LOGFILE
RESTART_KOOLPROXY=true
}

View File

@ -1,48 +1,57 @@
2021-11-09 05:53:19: ------------------- 规则更新 -----------------------
2021-11-09 05:53:19: ====================================================
2021-11-09 05:53:19: 开始更新koolproxy的规则请等待...
2021-11-09 05:53:19: ---------------------------------------------------------------------------------------
2021-11-09 05:53:20: ---------------------------------------------------------------------------------------
2021-11-09 05:53:21: ABP规则的本地版本号 202111090542
2021-11-09 05:53:21: ABP规则的在线版本号 202111090551
2021-11-09 05:53:21: 检测到 ABP规则 已更新,现在开始更新...
2021-11-09 05:53:21: 将临时的ABP规则文件移动到指定位置
2021-11-09 05:53:23: yhosts规则本地版本号 202110242326
2021-11-09 05:53:23: yhosts规则在线版本号 202110242326
2021-11-09 05:53:23: 检测到yhosts本地版本号和在线版本号相同那还更新个毛啊!
2021-11-09 05:53:23: 远程视频规则md5
2021-11-09 05:53:23: 您本地视频规则md548cdd7ed1e121aabf00b0884538e1cfe
2021-11-09 05:53:23: 检测到新版视频规则.开始更新..........
2021-11-09 05:53:23: 您下载的视频规则md5d41d8cd98f00b204e9800998ecf8427e
2021-11-09 05:53:23: 视频规则md5校验不通过...
2021-11-09 05:53:25: fanboy规则本地版本号 202111090500
2021-11-09 05:53:25: fanboy规则在线版本号 202111090550
2021-11-09 05:53:25: 检测到新版本 fanboy规则 列表,开始更新...
2021-11-09 05:53:25: 将临时文件覆盖到原始 fanboy规则 文件
2021-11-09 05:53:25: antiad规则本地版本号 20211108024012
2021-11-09 05:53:25: antiad规则在线版本号 20211108024012
2021-11-09 05:53:25: 检测到 antiad规则 本地版本号和在线版本号相同,那还更新个毛啊!
2021-11-09 05:53:25: Android规则本地版本号 20211107000607
2021-11-09 05:53:25: Android规则在线版本号 20211107000607
2021-11-09 05:53:25: 检测到 Android规则 本地版本号和在线版本号相同,那还更新个毛啊!
2021-11-09 05:53:25: StevenBlack规则本地版本号 04 November 2021
2021-11-09 05:53:25: StevenBlack规则在线版本号
2021-11-09 05:53:25: 检测到 StevenBlack规则 本地版本号和在线版本号相同,那还更新个毛啊!
2021-11-09 05:53:25: 正在优化 fanboy规则。。。。。
2021-11-09 05:53:26: 正在优化 ABP规则。。。。。
2021-11-09 05:53:31: 跳过优化 补充规则yhosts。。。。。
2021-11-09 05:53:31: 跳过优化 补充规则antiad。。。。。
2021-11-09 05:53:31: 跳过优化 补充规则Android。。。。。
2021-11-09 05:53:31: 跳过优化 补充规则StevenBlack。。。。。
2021-11-09 05:53:31: 所有规则更新并优化完毕!
2021-11-09 05:53:31: ====================================================
2021-11-09 05:53:33: -------------------ABP规则 version 202111090551
2021-11-09 05:53:33: -------------------Fanboy规则 version 202111090550
2021-11-09 05:53:33: -------------------Yhosts规则 version 202110242326
2021-11-09 05:53:33: -------------------Antiad规则 version 20211108024012
2021-11-09 05:53:33: -------------------Android规则 version 20211107000607
2021-11-09 05:53:33: -------------------StevenBlack规则 version 04 November 2021
2021-11-09 05:53:33: -------------------静态规则 version 2020-02-27 23:00
2021-11-09 05:53:33: -------------------乘风视频 version 202111051
2021-11-09 05:53:33: ------------------- 内置规则更新成功! -------------------
2021-11-09 05:53:33: ------------------- 规则更新成功! -------------------
2021-11-09 16:04:25: ------------------- 规则更新 -----------------------
2021-11-09 16:04:25: ====================================================
2021-11-09 16:04:25: 开始更新koolproxy的规则请等待...
2021-11-09 16:04:25: ---------------------------------------------------------------------------------------
2021-11-09 16:04:28: ---------------------------------------------------------------------------------------
2021-11-09 16:04:30: ABP规则的本地版本号 202111091551
2021-11-09 16:04:30: ABP规则的在线版本号 202111091602
2021-11-09 16:04:30: 检测到 ABP规则 已更新,现在开始更新...
2021-11-09 16:04:30: 将临时的ABP规则文件移动到指定位置
2021-11-09 16:04:31: yhosts规则本地版本号 202111082343
2021-11-09 16:04:31: yhosts规则在线版本号 202111082343
2021-11-09 16:04:31: 检测到yhosts本地版本号和在线版本号相同那还更新个毛啊!
2021-11-09 16:04:31: 远程视频规则md5
2021-11-09 16:04:31: 您本地视频规则md548cdd7ed1e121aabf00b0884538e1cfe
2021-11-09 16:04:31: 检测到新版视频规则.开始更新..........
2021-11-09 16:04:31: 您下载的视频规则md5d41d8cd98f00b204e9800998ecf8427e
2021-11-09 16:04:31: 视频规则md5校验不通过...
2021-11-09 16:04:32: fanboy规则本地版本号 202111091550
2021-11-09 16:04:32: fanboy规则在线版本号 202111091600
2021-11-09 16:04:32: 检测到新版本 fanboy规则 列表,开始更新...
2021-11-09 16:04:32: 将临时文件覆盖到原始 fanboy规则 文件
2021-11-09 16:04:33: antiad规则本地版本号
2021-11-09 16:04:33: antiad规则在线版本号 20211108024012
2021-11-09 16:04:33: 检测到新版本 antiad规则 列表,开始更新...
2021-11-09 16:04:33: 将临时文件覆盖到原始 antiad规则 文件
2021-11-09 16:04:33: Android规则本地版本号
2021-11-09 16:04:33: Android规则在线版本号 20211107000607
2021-11-09 16:04:33: 检测到新版本 Android规则 列表,开始更新...
2021-11-09 16:04:33: 将临时文件覆盖到原始 Android规则 文件
2021-11-09 16:04:33: StevenBlack规则本地版本号
2021-11-09 16:04:33: StevenBlack规则在线版本号 04 November 2021
2021-11-09 16:04:33: 检测到新版本 StevenBlack规则 列表,开始更新...
2021-11-09 16:04:33: 将临时文件覆盖到原始 StevenBlack规则 文件
2021-11-09 16:04:34: AdAway规则本地版本号
2021-11-09 16:04:34: AdAway规则在线版本号
2021-11-09 16:04:34: 检测到新版本 AdAway规则 列表,开始更新...
2021-11-09 16:04:34: 将临时文件覆盖到原始 AdAway规则 文件
2021-11-09 16:04:34: 正在优化 fanboy规则。。。。。
2021-11-09 16:04:34: 正在优化 ABP规则。。。。。
2021-11-09 16:04:40: 跳过优化 补充规则yhosts。。。。。
2021-11-09 16:04:40: 正在优化 补充规则antiad。。。。。
2021-11-09 16:04:41: 正在优化 补充规则Android。。。。。
2021-11-09 16:04:41: 正在优化 补充规则steven。。。。。
2021-11-09 16:04:43: 正在优化 补充规则AdAway。。。。。
2021-11-09 16:04:43: 所有规则更新并优化完毕!
2021-11-09 16:04:43: ====================================================
2021-11-09 16:04:45: -------------------ABP规则 version 202111091602
2021-11-09 16:04:45: -------------------Fanboy规则 version 202111091600
2021-11-09 16:04:45: -------------------Yhosts规则 version 202111082343
2021-11-09 16:04:45: -------------------Antiad规则 version 20211108024012
2021-11-09 16:04:45: -------------------AdAway规则 version
2021-11-09 16:04:45: -------------------Android规则 version 20211107000607
2021-11-09 16:04:45: -------------------StevenBlack规则 version 04 November 2021
2021-11-09 16:04:45: -------------------静态规则 version 2020-02-27 23:00
2021-11-09 16:04:45: -------------------乘风视频 version 202111051
2021-11-09 16:04:45: ------------------- 内置规则更新成功! -------------------
2021-11-09 16:04:45: ------------------- 规则更新成功! -------------------