mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-04 23:33:56 +08:00
update 2026-10-29 11:59:06
This commit is contained in:
1 parent
bc85557d34
commit
e2f86e09f4
5033 files changed
-2043160
No files matched your search
@@ -1,50 +0,0 @@
|
||||
-- Copyright (C) 2020 mingxiaoyu <fengying0347@163.com>
|
||||
-- Licensed to the public under the GNU General Public License v3.
|
||||
module("luci.controller.cloudflarespeedtest",package.seeall)
|
||||
|
||||
function index()
|
||||
|
||||
if not nixio.fs.access('/etc/config/cloudflarespeedtest') then
|
||||
return
|
||||
end
|
||||
|
||||
local page
|
||||
page = entry({"admin", "services", "cloudflarespeedtest"}, firstchild(), _("Cloudflare Speed Test"), 99)
|
||||
page.dependent = false
|
||||
page.acl_depends = { "luci-app-cloudflarespeedtest" }
|
||||
|
||||
entry({"admin", "services", "cloudflarespeedtest", "general"}, cbi("cloudflarespeedtest/cloudflarespeedtest"), _("Base Setting"), 1)
|
||||
entry({"admin", "services", "cloudflarespeedtest", "logread"}, form("cloudflarespeedtest/logread"), _("Logs"), 2)
|
||||
|
||||
entry({"admin", "services", "cloudflarespeedtest", "status"}, call("act_status")).leaf = true
|
||||
entry({"admin", "services", "cloudflarespeedtest", "stop"}, call("act_stop"))
|
||||
entry({"admin", "services", "cloudflarespeedtest", "start"}, call("act_start"))
|
||||
entry({"admin", "services", "cloudflarespeedtest", "getlog"}, call("get_log"))
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e = {}
|
||||
e.running = luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep >/dev/null") == 0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
|
||||
function act_stop()
|
||||
luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep | xargs kill -9 >/dev/null")
|
||||
luci.http.write('')
|
||||
end
|
||||
|
||||
function act_start()
|
||||
act_stop()
|
||||
luci.sys.call("/usr/bin/cloudflarespeedtest/cloudflarespeedtest.sh start")
|
||||
luci.http.write('')
|
||||
end
|
||||
|
||||
function get_log()
|
||||
local fs = require "nixio.fs"
|
||||
local e = {}
|
||||
e.running = luci.sys.call("busybox ps -w | grep cdnspeedtest | grep -v grep >/dev/null") == 0
|
||||
e.log= fs.readfile("/var/log/cloudflarespeedtest.log") or ""
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
-340
@@ -1,340 +0,0 @@
|
||||
require("luci.sys")
|
||||
|
||||
local uci = luci.model.uci.cursor()
|
||||
|
||||
m = Map('cloudflarespeedtest')
|
||||
m.title = translate('Cloudflare Speed Test')
|
||||
m.description = '<a href=\"https://github.com/mingxiaoyu/luci-app-cloudflarespeedtest\" target=\"_blank\">GitHub</a>'
|
||||
|
||||
-- [[ 基本设置 ]]--
|
||||
|
||||
s = m:section(NamedSection, 'global')
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
o=s:option(Flag,"enabled",translate("Enabled"))
|
||||
o.description = translate("Enabled scheduled task test Cloudflare IP")
|
||||
o.rmempty=false
|
||||
o.default = 0
|
||||
|
||||
o=s:option(Flag,"ipv6_enabled",translate("IPv6 Enabled"))
|
||||
o.description = translate("Provides only one method, if IPv6 is enabled, IPv4 will not be tested")
|
||||
o.default = 0
|
||||
o.rmempty=false
|
||||
|
||||
o=s:option(Value,"speed",translate("Broadband speed"))
|
||||
o.description =translate("100M broadband download speed is about 12M/s. It is not recommended to fill in an excessively large value, and it may run all the time.");
|
||||
o.datatype ="uinteger"
|
||||
o.rmempty=false
|
||||
|
||||
o=s:option(Value,"custome_url",translate("Custome Url"))
|
||||
o.description = translate("<a href=\"https://github.com/XIU2/CloudflareSpeedTest/issues/168\" target=\"_blank\">How to create</a>")
|
||||
o.rmempty=false
|
||||
|
||||
o=s:option(Flag,"custome_cors_enabled",translate("Custome Cron Enabled"))
|
||||
o.default = 0
|
||||
o.rmempty=false
|
||||
|
||||
o = s:option(Value, "custome_cron", translate("Custome Cron"))
|
||||
o:depends("custome_cors_enabled", 1)
|
||||
|
||||
hour = s:option(Value, "hour", translate("Hour"))
|
||||
hour.datatype = "range(0,23)"
|
||||
hour:depends("custome_cors_enabled", 0)
|
||||
|
||||
minute = s:option(Value, "minute", translate("Minute"))
|
||||
minute.datatype = "range(0,59)"
|
||||
minute:depends("custome_cors_enabled", 0)
|
||||
|
||||
o = s:option(ListValue, "proxy_mode", translate("Proxy Mode"))
|
||||
o:value("nil", translate("HOLD"))
|
||||
o.description = translate("during the speed testing, swith to which mode")
|
||||
o:value("gfw", translate("GFW List"))
|
||||
o:value("close", translate("CLOSE"))
|
||||
o.default = "gfw"
|
||||
|
||||
o=s:option(Flag,"advanced",translate("Advanced"))
|
||||
o.description = translate("Not recommended")
|
||||
o.default = 0
|
||||
o.rmempty=false
|
||||
|
||||
o = s:option(Value, "threads", translate("Thread"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 200
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "tl", translate("Average Latency Cap"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 200
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "tll", translate("Average Latency Lower Bound"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 40
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "t", translate("Delayed speed measurement time"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 4
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "dt", translate("Download speed test time"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 10
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "dn", translate("Number of download speed tests"))
|
||||
o.datatype ="uinteger"
|
||||
o.default = 1
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Flag, "dd", translate("Disable download speed test"))
|
||||
o.default = 0
|
||||
o.rmempty=true
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(Value, "tp", translate("Port"))
|
||||
o.rmempty=true
|
||||
o.default = 443
|
||||
o.datatype ="port"
|
||||
o:depends("advanced", 1)
|
||||
|
||||
o = s:option(DummyValue, '', '')
|
||||
o.rawhtml = true
|
||||
o.template = "cloudflarespeedtest/actions"
|
||||
|
||||
s = m:section(NamedSection, "servers", "section", translate("Third party applications settings"))
|
||||
|
||||
if nixio.fs.access("/etc/config/shadowsocksr") then
|
||||
s:tab("ssr", translate("Shadowsocksr Plus+"))
|
||||
|
||||
o=s:taboption("ssr", Flag, "ssr_enabled",translate("Shadowsocksr Plus+ Enabled"))
|
||||
o.rmempty=true
|
||||
|
||||
local ssr_server_table = {}
|
||||
uci:foreach("shadowsocksr", "servers", function(s)
|
||||
if s.alias then
|
||||
ssr_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.v2ray_protocol or s.type), s.alias}
|
||||
elseif s.server and s.server_port then
|
||||
ssr_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.v2ray_protocol or s.type), s.server, s.server_port}
|
||||
end
|
||||
end)
|
||||
|
||||
local ssr_key_table = {}
|
||||
for key, _ in pairs(ssr_server_table) do
|
||||
table.insert(ssr_key_table, key)
|
||||
end
|
||||
|
||||
table.sort(ssr_key_table)
|
||||
|
||||
o = s:taboption("ssr", DynamicList, "ssr_services",
|
||||
translate("Shadowsocksr Servers"),
|
||||
translate("Please select a service"))
|
||||
|
||||
for _, key in pairs(ssr_key_table) do
|
||||
o:value(key, ssr_server_table[key])
|
||||
end
|
||||
o:depends("ssr_enabled", 1)
|
||||
o.forcewrite = true
|
||||
|
||||
end
|
||||
|
||||
|
||||
if nixio.fs.access("/etc/config/passwall") then
|
||||
s:tab("passwalltab", translate("passwall"))
|
||||
|
||||
o=s:taboption("passwalltab", Flag, "passwall_enabled",translate("Passwall Enabled"))
|
||||
o.rmempty=true
|
||||
|
||||
local passwall_server_table = {}
|
||||
uci:foreach("passwall", "nodes", function(s)
|
||||
if s.remarks then
|
||||
passwall_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.remarks}
|
||||
end
|
||||
end)
|
||||
|
||||
local passwall_key_table = {}
|
||||
for key, _ in pairs(passwall_server_table) do
|
||||
table.insert(passwall_key_table, key)
|
||||
end
|
||||
|
||||
table.sort(passwall_key_table)
|
||||
|
||||
o = s:taboption("passwalltab", DynamicList, "passwall_services",
|
||||
translate("Passwall Servers"),
|
||||
translate("Please select a service"))
|
||||
|
||||
for _, key in pairs(passwall_key_table) do
|
||||
o:value(key, passwall_server_table[key])
|
||||
end
|
||||
o:depends("passwall_enabled", 1)
|
||||
o.forcewrite = true
|
||||
|
||||
end
|
||||
|
||||
if nixio.fs.access("/etc/config/passwall2") then
|
||||
s:tab("passwall2tab", translate("passwall2"))
|
||||
|
||||
o=s:taboption("passwall2tab", Flag, "passwall2_enabled",translate("PassWall2 Enabled"))
|
||||
o.rmempty=true
|
||||
|
||||
local passwall2_server_table = {}
|
||||
uci:foreach("passwall2", "nodes", function(s)
|
||||
if s.remarks then
|
||||
passwall2_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.remarks}
|
||||
end
|
||||
end)
|
||||
|
||||
local passwall2_key_table = {}
|
||||
for key, _ in pairs(passwall2_server_table) do
|
||||
table.insert(passwall2_key_table, key)
|
||||
end
|
||||
|
||||
table.sort(passwall2_key_table)
|
||||
|
||||
o = s:taboption("passwall2tab", DynamicList, "passwall2_services",
|
||||
translate("Passwall2 Servers"),
|
||||
translate("Please select a service"))
|
||||
|
||||
for _, key in pairs(passwall2_key_table) do
|
||||
o:value(key, passwall2_server_table[key])
|
||||
end
|
||||
o:depends("passwall2_enabled", 1)
|
||||
o.forcewrite = true
|
||||
|
||||
end
|
||||
|
||||
s:tab("bypasstab", translate("Bypass"))
|
||||
if nixio.fs.access("/etc/config/bypass") then
|
||||
|
||||
o=s:taboption("bypasstab", Flag, "bypass_enabled",translate("Bypass Enabled"))
|
||||
o.rmempty=true
|
||||
|
||||
local bypass_server_table = {}
|
||||
uci:foreach("bypass", "servers", function(s)
|
||||
if s.alias then
|
||||
bypass_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.alias}
|
||||
elseif s.server and s.server_port then
|
||||
bypass_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.protocol or s.type), s.server, s.server_port}
|
||||
end
|
||||
end)
|
||||
|
||||
local bypass_key_table = {}
|
||||
for key, _ in pairs(bypass_server_table) do
|
||||
table.insert(bypass_key_table, key)
|
||||
end
|
||||
|
||||
table.sort(bypass_key_table)
|
||||
|
||||
o = s:taboption("bypasstab", DynamicList, "bypass_services",
|
||||
translate("Bypass Servers"),
|
||||
translate("Please select a service"))
|
||||
|
||||
for _, key in pairs(bypass_key_table) do
|
||||
o:value(key, bypass_server_table[key])
|
||||
end
|
||||
o:depends("bypass_enabled", 1)
|
||||
o.forcewrite = true
|
||||
|
||||
end
|
||||
|
||||
s:tab("vssrtab", translate("Vssr"))
|
||||
if nixio.fs.access("/etc/config/vssr") then
|
||||
|
||||
o=s:taboption("vssrtab", Flag, "vssr_enabled",translate("Vssr Enabled"))
|
||||
o.rmempty=true
|
||||
|
||||
local vssr_server_table = {}
|
||||
uci:foreach("vssr", "servers", function(s)
|
||||
if s.alias then
|
||||
vssr_server_table[s[".name"]] = "[%s]:%s" % {string.upper(s.protocol or s.type), s.alias}
|
||||
elseif s.server and s.server_port then
|
||||
vssr_server_table[s[".name"]] = "[%s]:%s:%s" % {string.upper(s.protocol or s.type), s.server, s.server_port}
|
||||
end
|
||||
end)
|
||||
|
||||
local vssr_key_table = {}
|
||||
for key, _ in pairs(vssr_server_table) do
|
||||
table.insert(vssr_key_table, key)
|
||||
end
|
||||
|
||||
table.sort(vssr_key_table)
|
||||
|
||||
o = s:taboption("vssrtab", DynamicList, "vssr_services",
|
||||
translate("Vssr Servers"),
|
||||
translate("Please select a service"))
|
||||
|
||||
for _, key in pairs(vssr_key_table) do
|
||||
o:value(key, vssr_server_table[key])
|
||||
end
|
||||
o:depends("vssr_enabled", 1)
|
||||
o.forcewrite = true
|
||||
|
||||
end
|
||||
|
||||
s:tab("dnstab", translate("DNS"))
|
||||
|
||||
o=s:taboption("dnstab", Flag, "DNS_enabled",translate("DNS Enabled"))
|
||||
|
||||
o=s:taboption("dnstab", ListValue, "DNS_type", translate("DNS Type"))
|
||||
o:value("aliyu", translate("AliyuDNS"))
|
||||
o:depends("DNS_enabled", 1)
|
||||
|
||||
o=s:taboption("dnstab", Value,"app_key",translate("Access Key ID"))
|
||||
o.rmempty=true
|
||||
o:depends("DNS_enabled", 1)
|
||||
o=s:taboption("dnstab", Value,"app_secret",translate("Access Key Secret"))
|
||||
o.rmempty=true
|
||||
o:depends("DNS_enabled", 1)
|
||||
|
||||
o=s:taboption("dnstab", Value,"main_domain",translate("Main Domain"),translate("For example: test.github.com -> github.com"))
|
||||
o.rmempty=true
|
||||
o:depends("DNS_enabled", 1)
|
||||
o=s:taboption("dnstab", DynamicList,"sub_domain",translate("Sub Domain"),translate("For example: test.github.com -> test"))
|
||||
o.rmempty=true
|
||||
o:depends("DNS_enabled", 1)
|
||||
|
||||
o=s:taboption("dnstab", ListValue, "line", translate("Lines"))
|
||||
o:value("default", translate("default"))
|
||||
o:value("telecom", translate("telecom"))
|
||||
o:value("unicom", translate("unicom"))
|
||||
o:value("mobile", translate("mobile"))
|
||||
o:depends("DNS_enabled", 1)
|
||||
o.default ="telecom"
|
||||
|
||||
s:tab("dnshost", translate("HOST"))
|
||||
o=s:taboption("dnshost", Flag, "HOST_enabled",translate("HOST Enabled"))
|
||||
o=s:taboption("dnshost", Value,"host_domain",translate("Domain"))
|
||||
o.rmempty=true
|
||||
o:depends("HOST_enabled", 1)
|
||||
|
||||
s:tab("mosdns", translate("MosDNS"))
|
||||
o=s:taboption("mosdns", Flag, "MosDNS_enabled",translate("MosDNS Enabled"))
|
||||
o=s:taboption("mosdns", Flag, "openclash_restart",translate("OpenClash Restart"))
|
||||
o:depends("MosDNS_enabled", 1)
|
||||
|
||||
e=m:section(TypedSection,"global",translate("Best IP"))
|
||||
e.anonymous=true
|
||||
local a="/usr/share/cloudflarespeedtestresult.txt"
|
||||
tvIPs=e:option(TextValue,"syipstext")
|
||||
tvIPs.rows=8
|
||||
tvIPs.readonly="readonly"
|
||||
tvIPs.wrap="off"
|
||||
|
||||
function tvIPs.cfgvalue(e,e)
|
||||
sylogtext=""
|
||||
if a and nixio.fs.access(a) then
|
||||
sylogtext=luci.sys.exec("tail -n 100 %s"%a)
|
||||
end
|
||||
return sylogtext
|
||||
end
|
||||
tvIPs.write=function(e,e,e)
|
||||
end
|
||||
|
||||
return m
|
||||
@@ -1,9 +0,0 @@
|
||||
log = SimpleForm("logview")
|
||||
log.submit = false
|
||||
log.reset = false
|
||||
|
||||
t = log:field(DummyValue, '', '')
|
||||
t.rawhtml = true
|
||||
t.template = 'cloudflarespeedtest/logread'
|
||||
|
||||
return log
|
||||
@@ -1,56 +0,0 @@
|
||||
<%+cbi/valueheader%>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
const STATUS_URL = '<%=luci.dispatcher.build_url("admin", "services", "cloudflarespeedtest","status")%>';
|
||||
const RUN_URL = '<%=luci.dispatcher.build_url("admin", "services", "cloudflarespeedtest","start")%>';
|
||||
const STOP_URL = '<%=luci.dispatcher.build_url("admin", "services", "cloudflarespeedtest","stop")%>';
|
||||
const LOG_URL = '<%=luci.dispatcher.build_url("admin", "services", "cloudflarespeedtest","logread")%>';
|
||||
|
||||
XHR.poll(3, STATUS_URL, null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('cloudflarespeedtest_status');
|
||||
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
buttonStatus(true)
|
||||
tb.innerHTML = '<em><b><font color=green><%:RUNNING %></font></b></em>';
|
||||
} else {
|
||||
buttonStatus(false)
|
||||
tb.innerHTML = '<em><b><font color=red> <%:NOT RUNNING %></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
function cloudflarespeedtest_act_start() {
|
||||
buttonStatus(true)
|
||||
XHR.get(RUN_URL, null, () => {
|
||||
});
|
||||
setTimeout(() => { window.location = LOG_URL }, 500);
|
||||
return false;
|
||||
}
|
||||
|
||||
function cloudflarespeedtest_act_stop(){
|
||||
XHR.get(STOP_URL, null, () => {
|
||||
buttonStatus(false)
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
function buttonStatus(running){
|
||||
document.getElementById('cloudflarespeedtest_start').style.display = running ? "none" : "block"
|
||||
document.getElementById('cloudflarespeedtest_stop').style.display = running ? "block" : "none"
|
||||
}
|
||||
|
||||
//]]></script>
|
||||
<label class="cbi-value-title"><%= translate("Status") %></label>
|
||||
<div class="cbi-value-field">
|
||||
<p id="cloudflarespeedtest_status"><em><%:Collecting data...%></em></p>
|
||||
</div>
|
||||
|
||||
<label class="cbi-value-title"><%= translate("Speed Test") %></label>
|
||||
<div class="cbi-value-field">
|
||||
<input id="cloudflarespeedtest_start" type="button" style="display:block;" class="btn cbi-button cbi-button-apply" value="<%= translate('TEST AND APPLY') %>" onclick="cloudflarespeedtest_act_start()" />
|
||||
<input id="cloudflarespeedtest_stop" type="button" style="display:none;" class="btn cbi-button cbi-button-apply" value="<%= translate('STOP') %>" onclick="cloudflarespeedtest_act_stop()" />
|
||||
</div>
|
||||
|
||||
<%+cbi/valuefooter%>
|
||||
@@ -1,23 +0,0 @@
|
||||
<%+cbi/valueheader%>
|
||||
<input type="checkbox" id="checkbox1" checked><%:Auto refresh%></input>
|
||||
<textarea id="logview" class="cbi-input-textarea" style="width: 100%" rows="30" readonly="readonly"></textarea>
|
||||
|
||||
<script type="text/javascript">
|
||||
const LOG_URL = '<%=luci.dispatcher.build_url("admin", "services", "cloudflarespeedtest","getlog")%>';
|
||||
|
||||
function getlog(){
|
||||
XHR.get(LOG_URL, null, function(x, data) {
|
||||
logview.value = data.log;
|
||||
if(document.getElementById("checkbox1").checked == true){
|
||||
logview.scrollTop = logview.scrollHeight;
|
||||
}
|
||||
});
|
||||
}
|
||||
getlog()
|
||||
setInterval(() => {
|
||||
if(document.getElementById("checkbox1").checked == true){
|
||||
getlog()
|
||||
}
|
||||
}, 2000);
|
||||
</script>
|
||||
<%+cbi/valuefooter%>
|
||||
Reference in new issue
Block a user