update 2025-07-27 09:46:17
This commit is contained in:
parent
70ab1b82fd
commit
f763f10397
@ -18,10 +18,14 @@ config homeproxy 'infra'
|
|||||||
option tproxy_mark '101'
|
option tproxy_mark '101'
|
||||||
option tun_mark '102'
|
option tun_mark '102'
|
||||||
|
|
||||||
|
config homeproxy 'migration'
|
||||||
|
option crontab '1'
|
||||||
|
|
||||||
config homeproxy 'config'
|
config homeproxy 'config'
|
||||||
option main_node 'nil'
|
option main_node 'nil'
|
||||||
option main_udp_node 'same'
|
option main_udp_node 'same'
|
||||||
option dns_server '8.8.8.8'
|
option dns_server '8.8.8.8'
|
||||||
|
option china_dns_server '223.5.5.5'
|
||||||
option routing_mode 'bypass_mainland_china'
|
option routing_mode 'bypass_mainland_china'
|
||||||
option routing_port 'common'
|
option routing_port 'common'
|
||||||
option proxy_mode 'redirect_tproxy'
|
option proxy_mode 'redirect_tproxy'
|
||||||
|
@ -16,6 +16,7 @@ const uciconfig = 'homeproxy';
|
|||||||
uci.load(uciconfig);
|
uci.load(uciconfig);
|
||||||
|
|
||||||
const uciinfra = 'infra',
|
const uciinfra = 'infra',
|
||||||
|
ucimigration = 'migration',
|
||||||
ucimain = 'config',
|
ucimain = 'config',
|
||||||
ucinode = 'node',
|
ucinode = 'node',
|
||||||
ucidns = 'dns',
|
ucidns = 'dns',
|
||||||
@ -31,12 +32,14 @@ if (uci.get(uciconfig, uciinfra, 'china_dns_port'))
|
|||||||
|
|
||||||
/* chinadns server now only accepts single server */
|
/* chinadns server now only accepts single server */
|
||||||
const china_dns_server = uci.get(uciconfig, ucimain, 'china_dns_server');
|
const china_dns_server = uci.get(uciconfig, ucimain, 'china_dns_server');
|
||||||
if (china_dns_server === 'wan_114')
|
if (type(china_dns_server) === 'array') {
|
||||||
|
uci.set(uciconfig, ucimain, 'china_dns_server', china_dns_server[0]);
|
||||||
|
} else {
|
||||||
|
if (china_dns_server === 'wan_114')
|
||||||
uci.set(uciconfig, ucimain, 'china_dns_server', '114.114.114.114');
|
uci.set(uciconfig, ucimain, 'china_dns_server', '114.114.114.114');
|
||||||
else if (match(china_dns_server, /,/))
|
else if (match(china_dns_server, /,/))
|
||||||
uci.set(uciconfig, ucimain, 'china_dns_server', split(china_dns_server, ',')[0]);
|
uci.set(uciconfig, ucimain, 'china_dns_server', split(china_dns_server, ',')[0]);
|
||||||
else if (match(china_dns_server, / /))
|
}
|
||||||
uci.set(uciconfig, ucimain, 'china_dns_server', split(china_dns_server, ' ')[0]);
|
|
||||||
|
|
||||||
/* github_token option has been moved to config section */
|
/* github_token option has been moved to config section */
|
||||||
const github_token = uci.get(uciconfig, uciinfra, 'github_token');
|
const github_token = uci.get(uciconfig, uciinfra, 'github_token');
|
||||||
@ -50,6 +53,17 @@ const tun_gso = uci.get(uciconfig, uciinfra, 'tun_gso');
|
|||||||
if (tun_gso || tun_gso === '0')
|
if (tun_gso || tun_gso === '0')
|
||||||
uci.delete(uciconfig, uciinfra, 'tun_gso');
|
uci.delete(uciconfig, uciinfra, 'tun_gso');
|
||||||
|
|
||||||
|
/* create migration section */
|
||||||
|
if (!uci.get(uciconfig, ucimigration))
|
||||||
|
uci.set(uciconfig, ucimigration, uciconfig);
|
||||||
|
|
||||||
|
/* delete old crontab command */
|
||||||
|
const migration_crontab = uci.get(uciconfig, ucimigration, 'crontab');
|
||||||
|
if (!migration_crontab) {
|
||||||
|
system('sed -i "/update_crond.sh/d" "/etc/crontabs/root" 2>"/dev/null"');
|
||||||
|
uci.set(uciconfig, ucimigration, 'crontab', '1');
|
||||||
|
}
|
||||||
|
|
||||||
/* empty value defaults to all ports now */
|
/* empty value defaults to all ports now */
|
||||||
if (uci.get(uciconfig, ucimain, 'routing_port') === 'all')
|
if (uci.get(uciconfig, ucimain, 'routing_port') === 'all')
|
||||||
uci.delete(uciconfig, ucimain, 'routing_port');
|
uci.delete(uciconfig, ucimain, 'routing_port');
|
||||||
|
@ -67,8 +67,8 @@ start_service() {
|
|||||||
config_get_bool auto_update "subscription" "auto_update" "0"
|
config_get_bool auto_update "subscription" "auto_update" "0"
|
||||||
if [ "$auto_update" = "1" ]; then
|
if [ "$auto_update" = "1" ]; then
|
||||||
config_get auto_update_time "subscription" "auto_update_time" "2"
|
config_get auto_update_time "subscription" "auto_update_time" "2"
|
||||||
sed -i "/update_crond.sh/d" "/etc/crontabs/root" 2>"/dev/null"
|
sed -i "/#${CONF}_autosetup/d" "/etc/crontabs/root" 2>"/dev/null"
|
||||||
echo -e "0 $auto_update_time * * * $HP_DIR/scripts/update_crond.sh" >> "/etc/crontabs/root"
|
echo -e "0 $auto_update_time * * * $HP_DIR/scripts/update_crond.sh #${CONF}_autosetup" >> "/etc/crontabs/root"
|
||||||
/etc/init.d/cron restart
|
/etc/init.d/cron restart
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ start_service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
sed -i "/update_crond.sh/d" "/etc/crontabs/root" 2>"/dev/null"
|
sed -i "/#${CONF}_autosetup/d" "/etc/crontabs/root" 2>"/dev/null"
|
||||||
/etc/init.d/cron restart >"/dev/null" 2>&1
|
/etc/init.d/cron restart >"/dev/null" 2>&1
|
||||||
|
|
||||||
# Setup firewall
|
# Setup firewall
|
||||||
|
@ -1124,6 +1124,28 @@ if is_finded("xray") then
|
|||||||
o:value("", translate("disable"))
|
o:value("", translate("disable"))
|
||||||
o:depends({type = "v2ray", tls = true})
|
o:depends({type = "v2ray", tls = true})
|
||||||
o:depends({type = "v2ray", reality = true})
|
o:depends({type = "v2ray", reality = true})
|
||||||
|
|
||||||
|
o = s:option(Flag, "enable_mldsa65verify", translate("Enable ML-DSA-65(optional)"))
|
||||||
|
o.description = translate("This item might be an empty string.")
|
||||||
|
o.rmempty = true
|
||||||
|
o.default = "0"
|
||||||
|
o:depends({type = "v2ray", v2ray_protocol = "vless", reality = true})
|
||||||
|
|
||||||
|
o = s:option(Value, "reality_mldsa65verify", translate("ML-DSA-65 Public key"))
|
||||||
|
o.description = translate(
|
||||||
|
"<font><b>" .. translate("The client has not configured mldsa65Verify, but it will not perform the \"additional verification\" step and can still connect normally, see:") .. "</b></font>" ..
|
||||||
|
" <a href='https://github.com/XTLS/Xray-core/pull/4915' target='_blank'>" ..
|
||||||
|
"<font style='color:green'><b>" .. translate("Click to the page") .. "</b></font></a>")
|
||||||
|
o:depends("enable_mldsa65verify", true)
|
||||||
|
o.rmempty = true
|
||||||
|
o.validate = function(self, value)
|
||||||
|
-- 清理空行和多余换行
|
||||||
|
value = value:gsub("\r\n", "\n"):gsub("^[ \t]*\n", ""):gsub("\n[ \t]*$", ""):gsub("\n[ \t]*\n", "\n")
|
||||||
|
if value:sub(-1) == "\n" then
|
||||||
|
value = value:sub(1, -2)
|
||||||
|
end
|
||||||
|
return value
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
o = s:option(Value, "tls_host", translate("TLS Host"))
|
o = s:option(Value, "tls_host", translate("TLS Host"))
|
||||||
|
@ -550,6 +550,11 @@ function import_ssr_url(btn, urlname, sid) {
|
|||||||
setElementValue('cbid.shadowsocksr.' + sid + '.reality_publickey', params.get("pbk") ? decodeURIComponent(params.get("pbk")) : "");
|
setElementValue('cbid.shadowsocksr.' + sid + '.reality_publickey', params.get("pbk") ? decodeURIComponent(params.get("pbk")) : "");
|
||||||
setElementValue('cbid.shadowsocksr.' + sid + '.reality_shortid', params.get("sid") || "");
|
setElementValue('cbid.shadowsocksr.' + sid + '.reality_shortid', params.get("sid") || "");
|
||||||
setElementValue('cbid.shadowsocksr.' + sid + '.reality_spiderx', params.get("spx") ? decodeURIComponent(params.get("spx")) : "");
|
setElementValue('cbid.shadowsocksr.' + sid + '.reality_spiderx', params.get("spx") ? decodeURIComponent(params.get("spx")) : "");
|
||||||
|
if (params.get("pqv") && params.get("pqv").trim() !== "") {
|
||||||
|
setElementValue('cbid.shadowsocksr.' + sid + '.enable_mldsa65verify', true); // 设置 enable_mldsa65verify 为 true
|
||||||
|
dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.enable_mldsa65verify', event); // 触发事件
|
||||||
|
setElementValue('cbid.shadowsocksr.' + sid + '.reality_mldsa65verify', params.get("pqv") || "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setElementValue('cbid.shadowsocksr.' + sid + '.tls_flow', params.get("flow") || "none");
|
setElementValue('cbid.shadowsocksr.' + sid + '.tls_flow', params.get("flow") || "none");
|
||||||
dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.tls_flow', event);
|
dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.tls_flow', event);
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -230,6 +230,7 @@ end
|
|||||||
shortId = server.reality_shortid,
|
shortId = server.reality_shortid,
|
||||||
spiderX = server.reality_spiderx,
|
spiderX = server.reality_spiderx,
|
||||||
fingerprint = server.fingerprint,
|
fingerprint = server.fingerprint,
|
||||||
|
mldsa65Verify = (server.enable_mldsa65verify == '1') and server.reality_mldsa65verify or nil,
|
||||||
serverName = server.tls_host
|
serverName = server.tls_host
|
||||||
} or nil,
|
} or nil,
|
||||||
rawSettings = (server.transport == "raw" or server.transport == "tcp") and {
|
rawSettings = (server.transport == "raw" or server.transport == "tcp") and {
|
||||||
|
@ -710,6 +710,9 @@ local function processData(szType, content)
|
|||||||
result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil
|
result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil
|
||||||
result.reality_shortid = params.sid
|
result.reality_shortid = params.sid
|
||||||
result.reality_spiderx = params.spx and UrlDecode(params.spx) or nil
|
result.reality_spiderx = params.spx and UrlDecode(params.spx) or nil
|
||||||
|
-- 检查 pqv 参数是否存在且非空
|
||||||
|
result.enable_mldsa65verify = (params.pqv and params.pqv ~= "") and "1" or nil
|
||||||
|
result.reality_mldsa65verify = (params.pqv and params.pqv ~= "") and params.pqv or nil
|
||||||
if result.transport == "ws" then
|
if result.transport == "ws" then
|
||||||
result.ws_host = (result.tls ~= "1") and (params.host and UrlDecode(params.host)) or nil
|
result.ws_host = (result.tls ~= "1") and (params.host and UrlDecode(params.host)) or nil
|
||||||
result.ws_path = params.path and UrlDecode(params.path) or "/"
|
result.ws_path = params.path and UrlDecode(params.path) or "/"
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=v2ray-core
|
PKG_NAME:=v2ray-core
|
||||||
PKG_VERSION:=5.37.0
|
PKG_VERSION:=5.38.0
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
||||||
PKG_HASH:=a8aeab23fe4dbdf2236fb7ecdeb451d92f76eb7d652628b18a1e4a219baa003d
|
PKG_HASH:=6e2412f6d08282ef06e4f3c752db443d782bb2d6cbf525ebbb2f5e2c01759f9e
|
||||||
|
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=xray-core
|
PKG_NAME:=xray-core
|
||||||
PKG_VERSION:=25.7.25
|
PKG_VERSION:=25.7.26
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
||||||
PKG_HASH:=a73c2c80ae1878a2b5b9ee5d5682767157563a3125c5df8799c730d8b384230c
|
PKG_HASH:=99f9bc67fd22a6e4fde277a4ba05fd873146154851aeebb6b4f406a59d3b0bc3
|
||||||
|
|
||||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||||
PKG_LICENSE:=MPL-2.0
|
PKG_LICENSE:=MPL-2.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user