mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-23 00:17:16 +08:00
Update On Tue Apr 7 21:19:03 CEST 2026
This commit is contained in:
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+4
-3
@@ -32,9 +32,10 @@ o = s:option(Value, _n("hop"), translate("Port hopping range"))
|
||||
o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).")
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, _n("hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)")
|
||||
o.placeholder = "30s"
|
||||
o.default = "30s"
|
||||
o = s:option(Value, _n("hop_interval"), translate("Hop Interval(second)"), translate("Supports a fixed value or a random range (e.g., 30, 5-30), minimum 5."))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o.placeholder = "30"
|
||||
o.default = "30"
|
||||
o.rewrite_option = o.option
|
||||
|
||||
o = s:option(Value, _n("obfs"), translate("Obfs Password"))
|
||||
|
||||
@@ -305,9 +305,10 @@ o = s:option(Value, _n("hysteria2_hop"), translate("Port hopping range"))
|
||||
o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).")
|
||||
o:depends({ [_n("protocol")] = "hysteria2" })
|
||||
|
||||
o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)")
|
||||
o.placeholder = "30s"
|
||||
o.default = "30s"
|
||||
o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval(second)"), translate("Supports a fixed value or a random range (e.g., 30, 5-30), minimum 5."))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o.placeholder = "30"
|
||||
o.default = "30"
|
||||
o:depends({ [_n("protocol")] = "hysteria2" })
|
||||
|
||||
o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps"))
|
||||
|
||||
+8
-6
@@ -278,9 +278,10 @@ if singbox_tags:find("with_quic") then
|
||||
o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).")
|
||||
o:depends({ [_n("protocol")] = "hysteria" })
|
||||
|
||||
o = s:option(Value, _n("hysteria_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)")
|
||||
o.placeholder = "30s"
|
||||
o.default = "30s"
|
||||
o = s:option(Value, _n("hysteria_hop_interval"), translate("Hop Interval(second)"), translate("Example:") .. "30 (≥5)")
|
||||
o.datatype = "uinteger"
|
||||
o.placeholder = "30"
|
||||
o.default = "30"
|
||||
o:depends({ [_n("protocol")] = "hysteria" })
|
||||
|
||||
o = s:option(Value, _n("hysteria_obfs"), translate("Obfs Password"))
|
||||
@@ -362,9 +363,10 @@ if singbox_tags:find("with_quic") then
|
||||
o.description = translate("Format as 1000:2000 or 1000-2000 Multiple groups are separated by commas (,).")
|
||||
o:depends({ [_n("protocol")] = "hysteria2" })
|
||||
|
||||
o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval"), translate("Example:") .. "30s (≥5s)")
|
||||
o.placeholder = "30s"
|
||||
o.default = "30s"
|
||||
o = s:option(Value, _n("hysteria2_hop_interval"), translate("Hop Interval(Second)"), translate("Supports a fixed value or a random range (e.g., 30, 5-30), minimum 5."))
|
||||
o.datatype = "or(uinteger,portrange)"
|
||||
o.placeholder = "30"
|
||||
o.default = "30"
|
||||
o:depends({ [_n("protocol")] = "hysteria2" })
|
||||
|
||||
o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps"))
|
||||
|
||||
@@ -64,16 +64,27 @@ function gen_config(var)
|
||||
server = server,
|
||||
transport = {
|
||||
type = "udp",
|
||||
udp = {
|
||||
hopInterval = (function()
|
||||
local HopIntervalStr = tostring(node.hysteria2_hop_interval or "30s")
|
||||
local HopInterval = tonumber(HopIntervalStr:match("^%d+"))
|
||||
if HopInterval and HopInterval >= 5 then
|
||||
return tostring(HopInterval) .. "s"
|
||||
end
|
||||
return "30s"
|
||||
end)(),
|
||||
}
|
||||
udp = node.hysteria2_hop and (function()
|
||||
local udp = {}
|
||||
local t = node.hysteria2_hop_interval
|
||||
if not t then return nil end
|
||||
if t:find("-", 1, true) then
|
||||
local min, max = t:match("^(%d+)%-(%d+)$")
|
||||
min = tonumber(min)
|
||||
max = tonumber(max)
|
||||
if min and max then
|
||||
min = (min >= 5) and min or 5
|
||||
max = (max >= min) and max or min
|
||||
udp.minHopInterval = min .. "s"
|
||||
udp.maxHopInterval = max .. "s"
|
||||
return udp
|
||||
end
|
||||
end
|
||||
t = tonumber((t or "30"):match("^%d+"))
|
||||
t = (t and t >= 5) and t or 30
|
||||
udp.hopInterval = t .. "s"
|
||||
return udp
|
||||
end)() or nil
|
||||
},
|
||||
obfs = (node.hysteria2_obfs) and {
|
||||
type = "salamander",
|
||||
|
||||
@@ -421,7 +421,7 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
server_ports = next(server_ports) and server_ports or nil,
|
||||
hop_interval = (function()
|
||||
if not next(server_ports) then return nil end
|
||||
local v = tonumber((node.hysteria_hop_interval or "30s"):match("^%d+"))
|
||||
local v = tonumber((node.hysteria_hop_interval or "30"):match("^%d+"))
|
||||
return (v and v >= 5) and (v .. "s") or "30s"
|
||||
end)(),
|
||||
up_mbps = tonumber(node.hysteria_up_mbps),
|
||||
@@ -474,13 +474,30 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
end
|
||||
end
|
||||
end
|
||||
local interval, interval_max
|
||||
if next(server_ports) then
|
||||
interval = "30s"
|
||||
local t = node.hysteria2_hop_interval or "30s"
|
||||
if t:find("-", 1, true) then
|
||||
local min, max = t:match("^(%d+)%-(%d+)$")
|
||||
min = tonumber(min)
|
||||
max = tonumber(max)
|
||||
if min and max then
|
||||
min = (min >= 5) and min or 5
|
||||
max = (max >= min) and max or min
|
||||
interval = min .. "s"
|
||||
interval_max = max .. "s"
|
||||
end
|
||||
else
|
||||
t = tonumber(t:match("^%d+"))
|
||||
t = (t and t >= 5) and t or 30
|
||||
interval = t .. "s"
|
||||
end
|
||||
end
|
||||
protocol_table = {
|
||||
server_ports = next(server_ports) and server_ports or nil,
|
||||
hop_interval = (function()
|
||||
if not next(server_ports) then return nil end
|
||||
local v = tonumber((node.hysteria2_hop_interval or "30s"):match("^%d+"))
|
||||
return (v and v >= 5) and (v .. "s") or "30s"
|
||||
end)(),
|
||||
hop_interval = interval,
|
||||
hop_interval_max = interval_max,
|
||||
up_mbps = (node.hysteria2_up_mbps and tonumber(node.hysteria2_up_mbps)) and tonumber(node.hysteria2_up_mbps) or nil,
|
||||
down_mbps = (node.hysteria2_down_mbps and tonumber(node.hysteria2_down_mbps)) and tonumber(node.hysteria2_down_mbps) or nil,
|
||||
obfs = node.hysteria2_obfs_type and {
|
||||
@@ -891,7 +908,7 @@ function gen_config_server(node)
|
||||
outbound = require("luci.passwall.util_sing-box").gen_outbound(nil, outbound_node_t, "outbound")
|
||||
end
|
||||
if outbound then
|
||||
route.final = "outbound"
|
||||
route.final = outbound.tag
|
||||
table.insert(outbounds, 1, outbound)
|
||||
end
|
||||
end
|
||||
@@ -903,6 +920,12 @@ function gen_config_server(node)
|
||||
timestamp = true,
|
||||
--output = logfile,
|
||||
},
|
||||
dns = {
|
||||
servers = {{
|
||||
type = "local",
|
||||
tag = "direct"
|
||||
}}
|
||||
},
|
||||
inbounds = { inbound },
|
||||
outbounds = outbounds,
|
||||
route = route
|
||||
|
||||
@@ -284,7 +284,19 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
udpHop = (node.hysteria2_hop) and {
|
||||
ports = string.gsub(node.hysteria2_hop, ":", "-"),
|
||||
interval = (function(v)
|
||||
v = tonumber((v or "30s"):match("^%d+"))
|
||||
if not v then return 30 end
|
||||
if v:find("-", 1, true) then
|
||||
local min, max = v:match("^(%d+)%-(%d+)$")
|
||||
min = tonumber(min)
|
||||
max = tonumber(max)
|
||||
if min and max then
|
||||
min = (min >= 5) and min or 5
|
||||
max = (max >= min) and max or min
|
||||
return min .. "-" .. max
|
||||
end
|
||||
return 30
|
||||
end
|
||||
v = tonumber((v or "30"):match("^%d+"))
|
||||
return (v and v >= 5) and v or 30
|
||||
end)(node.hysteria2_hop_interval)
|
||||
} or nil,
|
||||
@@ -700,6 +712,14 @@ function gen_config_server(node)
|
||||
end
|
||||
end
|
||||
|
||||
for index, value in ipairs(config.outbounds) do
|
||||
for k, v in pairs(config.outbounds[index]) do
|
||||
if k and k:find("_") == 1 then
|
||||
config.outbounds[index][k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return config
|
||||
end
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<%
|
||||
local api = require "luci.passwall.api"
|
||||
-%>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=26.1.9"></script>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=1.15.7"></script>
|
||||
|
||||
<style>
|
||||
table .cbi-button-up,
|
||||
table .cbi-button-down {
|
||||
table .cbi-button-down,
|
||||
.td.cbi-section-actions .cbi-button-up,
|
||||
.td.cbi-section-actions .cbi-button-down {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
local api = require "luci.passwall.api"
|
||||
local appname = api.appname
|
||||
-%>
|
||||
<script src="<%=resource%>/view/<%=appname%>/Sortable.min.js?v=25.11.27"></script>
|
||||
<script src="<%=resource%>/view/<%=appname%>/Sortable.min.js?v=1.15.7"></script>
|
||||
|
||||
<style>
|
||||
table th, .table .th {
|
||||
@@ -962,7 +962,11 @@ table td, .table .td {
|
||||
} else {
|
||||
innerHTML = innerHTML.split("{{tcping}}").join('<span class="tcping_value" cbiid="{{id}}"><a href="javascript:void(0)" style="color:inherit">---</a></span>');
|
||||
}
|
||||
innerHTML = innerHTML.split("{{url_test}}").join('<span class="ping"><a href="javascript:void(0)" onclick="javascript:urltest_node(\'{{id}}\', this)" title="<%:TLS handshake test, latency for reference only%>"><%:Test%></a></span>');
|
||||
if (o["protocol"] && o["protocol"] !== '_shunt') {
|
||||
innerHTML = innerHTML.split("{{url_test}}").join('<span class="ping"><a href="javascript:void(0)" onclick="javascript:urltest_node(\'{{id}}\', this)" title="<%:TLS handshake test, latency for reference only%>"><%:Test%></a></span>');
|
||||
} else {
|
||||
innerHTML = innerHTML.split("{{url_test}}").join('<span class="ping" cbiid="{{id}}">---</span>');
|
||||
}
|
||||
innerHTML = innerHTML.split("{{id}}").join(o[".name"]);
|
||||
innerHTML = innerHTML.split("{{group}}").join(o["group"] || "");
|
||||
let node_remarks = get_remarks_name(o);
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<%
|
||||
local api = require "luci.passwall.api"
|
||||
-%>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=26.1.11"></script>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=1.15.7"></script>
|
||||
|
||||
<style>
|
||||
table .cbi-button-up,
|
||||
table .cbi-button-down {
|
||||
table .cbi-button-down,
|
||||
.td.cbi-section-actions .cbi-button-up,
|
||||
.td.cbi-section-actions .cbi-button-down {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,11 +4,13 @@ local fs = api.fs
|
||||
local has_old_geoip = fs.access("/tmp/bak_v2ray/geoip.dat")
|
||||
local has_old_geosite = fs.access("/tmp/bak_v2ray/geosite.dat")
|
||||
-%>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=26.1.9"></script>
|
||||
<script src="<%=resource%>/view/<%=api.appname%>/Sortable.min.js?v=1.15.7"></script>
|
||||
|
||||
<style>
|
||||
table .cbi-button-up,
|
||||
table .cbi-button-down {
|
||||
table .cbi-button-down,
|
||||
.td.cbi-section-actions .cbi-button-up,
|
||||
.td.cbi-section-actions .cbi-button-down {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -1807,14 +1807,14 @@ msgstr "缓冲区大小"
|
||||
msgid "Buffer size for every connection (kB)"
|
||||
msgstr "每一个连接的缓冲区大小(kB)"
|
||||
|
||||
msgid "Handshake Timeout"
|
||||
msgstr "握手超时 "
|
||||
|
||||
msgid "Idle Timeout"
|
||||
msgstr "空闲超时 "
|
||||
msgstr "空闲超时"
|
||||
|
||||
msgid "Hop Interval"
|
||||
msgstr "端口跳跃时间 "
|
||||
msgid "Hop Interval(second)"
|
||||
msgstr "端口跳跃间隔(秒)"
|
||||
|
||||
msgid "Supports a fixed value or a random range (e.g., 30, 5-30), minimum 5."
|
||||
msgstr "支持固定值或随机范围(如 30 或 5-30),最小 5 秒。"
|
||||
|
||||
msgid "HeartbeatPeriod(second)"
|
||||
msgstr "心跳周期(单位:秒)"
|
||||
|
||||
@@ -1851,6 +1851,7 @@ start() {
|
||||
export XRAY_LOCATION_ASSET=$V2RAY_LOCATION_ASSET
|
||||
export ENABLE_DEPRECATED_GEOSITE=true
|
||||
export ENABLE_DEPRECATED_GEOIP=true
|
||||
export SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN=1
|
||||
ulimit -n 65535
|
||||
start_haproxy
|
||||
start_socks
|
||||
@@ -1919,6 +1920,9 @@ stop() {
|
||||
done
|
||||
pgrep -f "sleep.*(6s|9s|58s)" | xargs kill -9 >/dev/null 2>&1
|
||||
pgrep -af "${CONFIG}/" | awk '! /app\.sh|subscribe\.lua|rule_update\.lua|tasks\.sh|server_app\.lua|ujail/{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||
unset V2RAY_LOCATION_ASSET
|
||||
unset XRAY_LOCATION_ASSET
|
||||
unset SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
|
||||
stop_crontab
|
||||
source $APP_PATH/helper_smartdns.sh del
|
||||
rm -rf $GLOBAL_DNSMASQ_CONF
|
||||
|
||||
Reference in New Issue
Block a user