🌈 Sync 2026-04-27 20:35:30

This commit is contained in:
github-actions[bot] committed 2026-04-27 20:35:30 +08:00
1 parent 7ae30bfa80
commit fbb5eb79e7
22 files changed
+49 -54

No files matched your search

+2 -2
View File
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=daed PKG_NAME:=daed
PKG_VERSION:=1.24.0 PKG_VERSION:=1.27.0
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/daeuniverse/daed.git PKG_SOURCE_URL:=https://github.com/daeuniverse/daed.git
+2 -2
View File
@@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk
-include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk -include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk
PKG_NAME:=easytier PKG_NAME:=easytier
PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.1) PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.2)
PKG_RELEASE:=3 PKG_RELEASE:=4
ifeq ($(ARCH),mipsel) ifeq ($(ARCH),mipsel)
APP_ARCH:=mipsel APP_ARCH:=mipsel
+3 -3
View File
@@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=gn PKG_NAME:=gn
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gn.googlesource.com/gn.git PKG_SOURCE_URL:=https://gn.googlesource.com/gn.git
PKG_SOURCE_DATE:=2025-11-07 PKG_SOURCE_DATE:=2026-03-31
PKG_SOURCE_VERSION:=e7f3202128bdb2429872fdb138626a010b2bff7f PKG_SOURCE_VERSION:=6e8dcdebbadf4f8aa75e6a4b6e0bdf89dce1513a
PKG_MIRROR_HASH:=skip PKG_MIRROR_HASH:=skip
PKG_LICENSE:=BSD 3-Clause PKG_LICENSE:=BSD 3-Clause
+2 -2
View File
@@ -3,7 +3,7 @@
#ifndef OUT_LAST_COMMIT_POSITION_H_ #ifndef OUT_LAST_COMMIT_POSITION_H_
#define OUT_LAST_COMMIT_POSITION_H_ #define OUT_LAST_COMMIT_POSITION_H_
#define LAST_COMMIT_POSITION_NUM 2292 #define LAST_COMMIT_POSITION_NUM 2355
#define LAST_COMMIT_POSITION "2292 (e7f3202128bd)" #define LAST_COMMIT_POSITION "2355 (6e8dcdebbadf)"
#endif // OUT_LAST_COMMIT_POSITION_H_ #endif // OUT_LAST_COMMIT_POSITION_H_
+2 -2
View File
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=hysteria PKG_NAME:=hysteria
PKG_VERSION:=2.8.1 PKG_VERSION:=2.8.2
PKG_RELEASE:=3 PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/apernet/hysteria/tar.gz/app/v$(PKG_VERSION)? PKG_SOURCE_URL:=https://codeload.github.com/apernet/hysteria/tar.gz/app/v$(PKG_VERSION)?
+2 -2
View File
@@ -7,8 +7,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
-include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk -include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk
PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.0) PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.2)
PKG_RELEASE:=7 PKG_RELEASE:=8
LUCI_TITLE:=LuCI support for EasyTier LUCI_TITLE:=LuCI support for EasyTier
LUCI_DEPENDS:=+kmod-tun +easytier +luci-compat LUCI_DEPENDS:=+kmod-tun +easytier +luci-compat
@@ -163,7 +163,7 @@ function get_upload_config()
easytierbin = uci:get_first("easytier", "easytier", "easytierbin") or "/usr/bin/easytier-core", easytierbin = uci:get_first("easytier", "easytier", "easytierbin") or "/usr/bin/easytier-core",
webbin = uci:get_first("easytier", "easytier", "webbin") or "/usr/bin/easytier-web", webbin = uci:get_first("easytier", "easytier", "webbin") or "/usr/bin/easytier-web",
github_proxys = {}, github_proxys = {},
fallback_version = uci:get_first("easytier", "easytier", "fallback_version") or "v2.6.1" fallback_version = uci:get_first("easytier", "easytier", "fallback_version") or "v2.6.2"
} }
-- 读取代理列表(list 类型) -- 读取代理列表(list 类型)
@@ -200,7 +200,7 @@ function save_upload_config()
-- 保存配置 -- 保存配置
uci:set("easytier", "@easytier[0]", "easytierbin", data.easytierbin or "/usr/bin/easytier-core") uci:set("easytier", "@easytier[0]", "easytierbin", data.easytierbin or "/usr/bin/easytier-core")
uci:set("easytier", "@easytier[0]", "webbin", data.webbin or "/usr/bin/easytier-web") uci:set("easytier", "@easytier[0]", "webbin", data.webbin or "/usr/bin/easytier-web")
uci:set("easytier", "@easytier[0]", "fallback_version", data.fallback_version or "v2.6.1") uci:set("easytier", "@easytier[0]", "fallback_version", data.fallback_version or "v2.6.2")
-- 删除旧的代理列表 -- 删除旧的代理列表
uci:delete("easytier", "@easytier[0]", "github_proxys") uci:delete("easytier", "@easytier[0]", "github_proxys")
@@ -649,7 +649,7 @@ function renderService(name, data, isRunning) {
var displayVersion = data.version === 'unknown' ? '<%=translate("Unknown")%>' : data.version; var displayVersion = data.version === 'unknown' ? '<%=translate("Unknown")%>' : data.version;
html += '<span>' + (displayVersion || '-') + '</span>'; html += '<span>' + (displayVersion || '-') + '</span>';
if (!versionInfo.match && versionInfo.latest && data.version !== 'unknown') { if (!versionInfo.match && versionInfo.latest && data.version !== 'unknown') {
html += '<span class="et-version-badge"><%=translate("New")%>: ' + versionInfo.latest + '</span>'; html += '<span class="et-version-badge"><%=translate("New Version")%>: ' + versionInfo.latest + '</span>';
} }
html += '</div>'; html += '</div>';
html += '</div></div>'; html += '</div></div>';
@@ -383,7 +383,7 @@ local translate = i18n.translate
<select id="fallback_version_select" class="config-input" style="display:none;width:100%;"> <select id="fallback_version_select" class="config-input" style="display:none;width:100%;">
<option value=""><%=translate("Loading versions...")%></option> <option value=""><%=translate("Loading versions...")%></option>
</select> </select>
<input type="text" id="fallback_version" class="config-input" placeholder="v2.6.1" style="display:none;width:100%;"> <input type="text" id="fallback_version" class="config-input" placeholder="v2.6.2" style="display:none;width:100%;">
</div> </div>
<button type="button" class="upload-btn" onclick="showDownloadModal()" style="padding:8px 16px;min-width:auto;flex-shrink:0;"> <button type="button" class="upload-btn" onclick="showDownloadModal()" style="padding:8px 16px;min-width:auto;flex-shrink:0;">
<%=translate("Online Download")%> <%=translate("Online Download")%>
@@ -758,14 +758,14 @@ function loadConfig() {
proxyList = Array.isArray(proxys) ? proxys : []; proxyList = Array.isArray(proxys) ? proxys : [];
renderProxyList(); renderProxyList();
versionManager.setVersion(config.fallback_version || 'v2.6.1'); versionManager.setVersion(config.fallback_version || 'v2.6.2');
// 保存原始配置 // 保存原始配置
originalConfig = { originalConfig = {
easytierbin: config.easytierbin || '/usr/bin/easytier-core', easytierbin: config.easytierbin || '/usr/bin/easytier-core',
webbin: config.webbin || '/usr/bin/easytier-web', webbin: config.webbin || '/usr/bin/easytier-web',
github_proxys: JSON.stringify(proxyList), github_proxys: JSON.stringify(proxyList),
fallback_version: config.fallback_version || 'v2.6.1' fallback_version: config.fallback_version || 'v2.6.2'
}; };
checkDiskSpace('easytierbin'); checkDiskSpace('easytierbin');
@@ -843,7 +843,7 @@ function getCurrentConfig() {
easytierbin: document.getElementById('easytierbin').value || '/usr/bin/easytier-core', easytierbin: document.getElementById('easytierbin').value || '/usr/bin/easytier-core',
webbin: document.getElementById('webbin').value || '/usr/bin/easytier-web', webbin: document.getElementById('webbin').value || '/usr/bin/easytier-web',
github_proxys: JSON.stringify(proxyList), github_proxys: JSON.stringify(proxyList),
fallback_version: versionManager.getCurrentVersion() || 'v2.6.1' fallback_version: versionManager.getCurrentVersion() || 'v2.6.2'
}; };
} }
@@ -868,7 +868,7 @@ function saveConfig() {
easytierbin: document.getElementById('easytierbin').value || '/usr/bin/easytier-core', easytierbin: document.getElementById('easytierbin').value || '/usr/bin/easytier-core',
webbin: document.getElementById('webbin').value || '/usr/bin/easytier-web', webbin: document.getElementById('webbin').value || '/usr/bin/easytier-web',
github_proxys: proxyList, github_proxys: proxyList,
fallback_version: versionManager.getCurrentVersion() || 'v2.6.1' fallback_version: versionManager.getCurrentVersion() || 'v2.6.2'
}; };
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
+1 -1
View File
@@ -1072,7 +1072,7 @@ msgstr "Web 控制台主页"
msgid "Service not running" msgid "Service not running"
msgstr "服务未运行" msgstr "服务未运行"
msgid "New" msgid "New Version"
msgstr "发现新版本" msgstr "发现新版本"
msgid "Unknown" msgid "Unknown"
+1 -1
View File
@@ -103,7 +103,7 @@ check_bin() {
# 如果获取失败,从 UCI 配置或使用默认版本 # 如果获取失败,从 UCI 配置或使用默认版本
if [ -z "$tag" ]; then if [ -z "$tag" ]; then
tag=$(uci -q get easytier.@easytier[0].fallback_version) tag=$(uci -q get easytier.@easytier[0].fallback_version)
[ -z "$tag" ] && tag="v2.6.1" [ -z "$tag" ] && tag="v2.6.2"
fi fi
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 开始在线下载${tag}版本,${proxy}https://github.com/EasyTier/EasyTier/releases/download/${tag}/easytier-linux-${cpucore}-${tag}.zip下载较慢耐心等候" >>/tmp/easytier.log echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 开始在线下载${tag}版本,${proxy}https://github.com/EasyTier/EasyTier/releases/download/${tag}/easytier-linux-${cpucore}-${tag}.zip下载较慢耐心等候" >>/tmp/easytier.log
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 开始在线下载${tag}版本,${proxy}https://github.com/EasyTier/EasyTier/releases/download/${tag}/easytier-linux-${cpucore}-${tag}.zip下载较慢耐心等候" >>/tmp/easytierweb.log echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 开始在线下载${tag}版本,${proxy}https://github.com/EasyTier/EasyTier/releases/download/${tag}/easytier-linux-${cpucore}-${tag}.zip下载较慢耐心等候" >>/tmp/easytierweb.log
@@ -42,7 +42,7 @@ get_latest_version() {
# 如果获取失败,从 UCI 配置或使用默认版本 # 如果获取失败,从 UCI 配置或使用默认版本
if [ -z "$tag" ]; then if [ -z "$tag" ]; then
tag=$(uci -q get easytier.@easytier[0].fallback_version) tag=$(uci -q get easytier.@easytier[0].fallback_version)
[ -z "$tag" ] && tag="v2.6.0" [ -z "$tag" ] && tag="v2.6.2"
fi fi
echo "$tag" echo "$tag"
+1 -1
View File
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall PKG_NAME:=luci-app-passwall
PKG_VERSION:=26.4.15 PKG_VERSION:=26.4.15
PKG_RELEASE:=98 PKG_RELEASE:=99
PKG_PO_VERSION:=$(PKG_VERSION) PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \ PKG_CONFIG_DEPENDS:= \
@@ -54,7 +54,6 @@ o = s:option(Flag, _n("tls_allowInsecure"), translate("allowInsecure"), translat
o.default = "0" o.default = "0"
o = s:option(Value, _n("tls_pinSHA256"), translate("PinSHA256"),translate("Certificate fingerprint")) o = s:option(Value, _n("tls_pinSHA256"), translate("PinSHA256"),translate("Certificate fingerprint"))
o.rewrite_option = o.option
o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps")) o = s:option(Value, _n("up_mbps"), translate("Max upload Mbps"))
o.rewrite_option = o.option o.rewrite_option = o.option
@@ -376,7 +376,7 @@ if api.compare_versions(os.date("%Y.%m.%d"), "<", "2026.6.1") then
end end
if api.compare_versions(xray_version, ">=", "26.1.31") then if api.compare_versions(xray_version, ">=", "26.1.31") then
o = s:option(Value, _n("tls_CertSha"), translate("TLS Chain Fingerprint (SHA256)")) o = s:option(Value, _n("tls_pinSHA256"), translate("TLS Chain Fingerprint (SHA256)"))
o:depends({ [_n("tls")] = true, [_n("reality")] = false }) o:depends({ [_n("tls")] = true, [_n("reality")] = false })
o:depends({ [_n("protocol")] = "hysteria2" }) o:depends({ [_n("protocol")] = "hysteria2" })
o.description = translate("Once set, connects only when the server’s chain fingerprint matches.") .. o.description = translate("Once set, connects only when the server’s chain fingerprint matches.") ..
@@ -96,7 +96,7 @@ function gen_config(var)
tls = { tls = {
sni = node.tls_serverName, sni = node.tls_serverName,
insecure = (node.tls_allowInsecure == "1") and true or false, insecure = (node.tls_allowInsecure == "1") and true or false,
pinSHA256 = (node.hysteria2_tls_pinSHA256) and node.hysteria2_tls_pinSHA256 or nil, pinSHA256 = (node.tls_pinSHA256) and node.tls_pinSHA256 or nil,
}, },
quic = { quic = {
initStreamReceiveWindow = (node.hysteria2_recv_window) and tonumber(node.hysteria2_recv_window) or nil, initStreamReceiveWindow = (node.hysteria2_recv_window) and tonumber(node.hysteria2_recv_window) or nil,
@@ -149,14 +149,14 @@ function gen_outbound(flag, node, tag, proxy_table)
tlsSettings = (node.stream_security == "tls") and { tlsSettings = (node.stream_security == "tls") and {
serverName = node.tls_serverName, serverName = node.tls_serverName,
allowInsecure = (function() allowInsecure = (function()
if node.tls_CertSha and node.tls_CertSha ~= "" then return nil end if node.tls_pinSHA256 and node.tls_pinSHA256 ~= "" then return nil end
if api.compare_versions(os.date("%Y.%m.%d"), "<", "2026.6.1") and node.tls_allowInsecure == "1" then return true end if api.compare_versions(os.date("%Y.%m.%d"), "<", "2026.6.1") and node.tls_allowInsecure == "1" then return true end
end)(), end)(),
fingerprint = (node.type == "Xray" and node.utls == "1" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or nil, fingerprint = (node.type == "Xray" and node.utls == "1" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or nil,
pinnedPeerCertSha256 = (function() pinnedPeerCertSha256 = (function()
if api.compare_versions(xray_version, "<", "26.1.31") then return nil end if api.compare_versions(xray_version, "<", "26.1.31") then return nil end
if not node.tls_CertSha then return "" end if not node.tls_pinSHA256 then return "" end
return node.tls_CertSha return node.tls_pinSHA256
end)(), end)(),
verifyPeerCertByName = (function() verifyPeerCertByName = (function()
if api.compare_versions(xray_version, "<", "26.1.31") then return nil end if api.compare_versions(xray_version, "<", "26.1.31") then return nil end
@@ -70,7 +70,7 @@ local api = self.api
alert(res && res.msg ? res.msg : "<%:Fetch Failed%> !"); alert(res && res.msg ? res.msg : "<%:Fetch Failed%> !");
return; return;
} }
const inputs = document.querySelectorAll('input[id$=".xray_tls_CertSha"]'); const inputs = document.querySelectorAll('input[id$=".xray_tls_pinSHA256"]');
inputs.forEach(function(input) { inputs.forEach(function(input) {
input.value = res.data; input.value = res.data;
}); });
@@ -310,7 +310,7 @@ local current_node = map:get(section)
params += opt.query("alpn", dom_prefix + "alpn"); params += opt.query("alpn", dom_prefix + "alpn");
params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("sni", dom_prefix + "tls_serverName");
params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure"); params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure");
params += opt.query("pcs", dom_prefix + "tls_CertSha"); params += opt.query("pcs", dom_prefix + "tls_pinSHA256");
params += opt.query("vcn", dom_prefix + "tls_CertByName"); params += opt.query("vcn", dom_prefix + "tls_CertByName");
params += opt.query("ech", dom_prefix + "ech_config"); params += opt.query("ech", dom_prefix + "ech_config");
} }
@@ -503,7 +503,7 @@ local current_node = map:get(section)
params += opt.query("alpn", dom_prefix + "alpn"); params += opt.query("alpn", dom_prefix + "alpn");
params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("sni", dom_prefix + "tls_serverName");
params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure"); params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure");
params += opt.query("pcs", dom_prefix + "tls_CertSha"); params += opt.query("pcs", dom_prefix + "tls_pinSHA256");
params += opt.query("vcn", dom_prefix + "tls_CertByName"); params += opt.query("vcn", dom_prefix + "tls_CertByName");
params += opt.query("ech", dom_prefix + "ech_config"); params += opt.query("ech", dom_prefix + "ech_config");
} }
@@ -574,7 +574,7 @@ local current_node = map:get(section)
params += opt.query("alpn", dom_prefix + "alpn"); params += opt.query("alpn", dom_prefix + "alpn");
params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("sni", dom_prefix + "tls_serverName");
params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure"); params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure");
params += opt.query("pcs", dom_prefix + "tls_CertSha"); params += opt.query("pcs", dom_prefix + "tls_pinSHA256");
params += opt.query("vcn", dom_prefix + "tls_CertByName"); params += opt.query("vcn", dom_prefix + "tls_CertByName");
params += opt.query("ech", dom_prefix + "ech_config"); params += opt.query("ech", dom_prefix + "ech_config");
} }
@@ -595,14 +595,14 @@ local current_node = map:get(section)
var params = ""; var params = "";
params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("sni", dom_prefix + "tls_serverName");
params += opt.query("insecure", dom_prefix + "tls_allowInsecure"); params += opt.query("insecure", dom_prefix + "tls_allowInsecure");
params += opt.query("pcs", dom_prefix + "tls_CertSha"); params += opt.query("pinSHA256", dom_prefix + "tls_pinSHA256");
params += opt.query("pcs", dom_prefix + "tls_pinSHA256");
params += opt.query("vcn", dom_prefix + "tls_CertByName"); params += opt.query("vcn", dom_prefix + "tls_CertByName");
var v_password = null; var v_password = null;
if (v_type === "Hysteria2") { if (v_type === "Hysteria2") {
v_password = opt.get("hysteria2_auth_password"); v_password = opt.get("hysteria2_auth_password");
params += opt.query("pinSHA256", "hysteria2_tls_pinSHA256");
var dom_obfs = opt.get("hysteria2_obfs"); var dom_obfs = opt.get("hysteria2_obfs");
if (dom_obfs && dom_obfs.value != "") { if (dom_obfs && dom_obfs.value != "") {
params += "&obfs=" + "salamander"; params += "&obfs=" + "salamander";
@@ -1073,7 +1073,7 @@ local current_node = map:get(section)
} }
opt.set(dom_prefix + 'ech', !!queryParam.ech); opt.set(dom_prefix + 'ech', !!queryParam.ech);
opt.set(dom_prefix + 'ech_config', queryParam.ech || ''); opt.set(dom_prefix + 'ech_config', queryParam.ech || '');
opt.set(dom_prefix + 'tls_CertSha', queryParam.pcs || ''); opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || '');
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || ''); opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
} }
@@ -1314,7 +1314,7 @@ local current_node = map:get(section)
if (queryParam.security === "tls") { if (queryParam.security === "tls") {
opt.set(dom_prefix + 'tls_serverName', queryParam.peer || queryParam.sni || ""); opt.set(dom_prefix + 'tls_serverName', queryParam.peer || queryParam.sni || "");
opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default');
opt.set(dom_prefix + 'tls_CertSha', queryParam.pcs || ''); opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || '');
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || ''); opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
} }
opt.set( opt.set(
@@ -1478,7 +1478,7 @@ local current_node = map:get(section)
} }
opt.set(dom_prefix + 'ech', !!queryParam.ech); opt.set(dom_prefix + 'ech', !!queryParam.ech);
opt.set(dom_prefix + 'ech_config', queryParam.ech || ''); opt.set(dom_prefix + 'ech_config', queryParam.ech || '');
opt.set(dom_prefix + 'tls_CertSha', queryParam.pcs || ''); opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || '');
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || ''); opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
} }
@@ -1619,9 +1619,6 @@ local current_node = map:get(section)
if (queryParam["obfs-password"] || queryParam["obfs_password"]) { if (queryParam["obfs-password"] || queryParam["obfs_password"]) {
opt.set(dom_prefix + 'obfs', queryParam["obfs-password"] || queryParam["obfs_password"]); opt.set(dom_prefix + 'obfs', queryParam["obfs-password"] || queryParam["obfs_password"]);
} }
if (queryParam.pinSHA256) {
opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pinSHA256);
}
opt.set(dom_prefix + 'hop', queryParam.mport || ""); opt.set(dom_prefix + 'hop', queryParam.mport || "");
} }
@@ -1633,7 +1630,7 @@ local current_node = map:get(section)
dom_prefix + 'tls_allowInsecure', dom_prefix + 'tls_allowInsecure',
!((queryParam.allowinsecure ?? '0') === '0' && (queryParam.allowInsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0') !((queryParam.allowinsecure ?? '0') === '0' && (queryParam.allowInsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')
); );
opt.set(dom_prefix + 'tls_CertSha', queryParam.pcs || ''); opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || queryParam.pinSHA256 || '');
opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || ''); opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || '');
if (m.hash) { if (m.hash) {
opt.set('remarks', decodeURIComponent(m.hash.substr(1))); opt.set('remarks', decodeURIComponent(m.hash.substr(1)));
@@ -962,10 +962,10 @@ table td, .table .td {
} else { } 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("{{tcping}}").join('<span class="tcping_value" cbiid="{{id}}"><a href="javascript:void(0)" style="color:inherit">---</a></span>');
} }
if (o["protocol"] && o["protocol"] !== '_shunt') { 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("{{url_test}}").join('<span class="ping" cbiid="{{id}}">---</span>');
} else {
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>');
} }
innerHTML = innerHTML.split("{{id}}").join(o[".name"]); innerHTML = innerHTML.split("{{id}}").join(o[".name"]);
innerHTML = innerHTML.split("{{group}}").join(o["group"] || ""); innerHTML = innerHTML.split("{{group}}").join(o["group"] || "");
@@ -667,7 +667,7 @@ local function processData(szType, content, add_mode, group, sub_cfg)
if info.tls == "tls" or info.tls == "1" then if info.tls == "tls" or info.tls == "1" then
result.tls = "1" result.tls = "1"
result.tls_serverName = (info.sni and info.sni ~= "") and info.sni or info.host result.tls_serverName = (info.sni and info.sni ~= "") and info.sni or info.host
result.tls_CertSha = info.pcs result.tls_pinSHA256 = info.pcs
result.tls_CertByName = info.vcn result.tls_CertByName = info.vcn
local insecure = info.allowinsecure or info.allowInsecure or info.insecure local insecure = info.allowinsecure or info.allowInsecure or info.insecure
result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0") result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0")
@@ -938,7 +938,7 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.ech = "1" result.ech = "1"
result.ech_config = params.ech result.ech_config = params.ech
end end
result.tls_CertSha = params.pcs result.tls_pinSHA256 = params.pcs
result.tls_CertByName = params.vcn result.tls_CertByName = params.vcn
if params.security == "reality" then if params.security == "reality" then
result.reality = "1" result.reality = "1"
@@ -1052,7 +1052,7 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.tls = '1' result.tls = '1'
result.tls_serverName = params.peer or params.sni or "" result.tls_serverName = params.peer or params.sni or ""
result.tls_CertSha = params.pcs result.tls_pinSHA256 = params.pcs
result.tls_CertByName = params.vcn result.tls_CertByName = params.vcn
local insecure = params.allowinsecure or params.allowInsecure or params.insecure local insecure = params.allowinsecure or params.allowInsecure or params.insecure
result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0") result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0")
@@ -1296,7 +1296,7 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.ech = "1" result.ech = "1"
result.ech_config = params.ech result.ech_config = params.ech
end end
result.tls_CertSha = params.pcs result.tls_pinSHA256 = params.pcs
result.tls_CertByName = params.vcn result.tls_CertByName = params.vcn
if params.security == "reality" then if params.security == "reality" then
result.reality = "1" result.reality = "1"
@@ -1407,11 +1407,10 @@ local function processData(szType, content, add_mode, group, sub_cfg)
result.address = host_port result.address = host_port
end end
result.tls_serverName = params.sni result.tls_serverName = params.sni
result.tls_CertSha = params.pcs result.tls_pinSHA256 = params.pcs or params.pinsha256
result.tls_CertByName = params.vcn result.tls_CertByName = params.vcn
local insecure = params.allowinsecure or params.insecure local insecure = params.allowinsecure or params.insecure
result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0") result.tls_allowInsecure = (insecure == "1" or insecure == "0") and insecure or (sub_allowinsecure and "1" or "0")
result.hysteria2_tls_pinSHA256 = params.pinSHA256
result.hysteria2_hop = params.mport result.hysteria2_hop = params.mport
if (sub_hysteria2_type == "sing-box" and has_singbox) or (sub_hysteria2_type == "xray" and has_xray) then if (sub_hysteria2_type == "sing-box" and has_singbox) or (sub_hysteria2_type == "xray" and has_xray) then
@@ -687,7 +687,7 @@ function getConfiguredWirelessMode(hwtype, hwmode, htmode) {
function isPpeVpTarget(boardinfo) { function isPpeVpTarget(boardinfo) {
const target = String(boardinfo?.release?.target || ''); const target = String(boardinfo?.release?.target || '');
return /(^|\/)ipq(?:53|95)xx\//.test(target); return (/(^|\/)ipq(?:53|95)xx\//).test(target);
} }
function getFrequencyListBand(entry, hwmode) { function getFrequencyListBand(entry, hwmode) {