diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/node.js b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/node.js
index 2f25795..3a2ad1f 100644
--- a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/node.js
+++ b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/node.js
@@ -1136,6 +1136,7 @@ function renderNodeSettings(section, data, features, main_node, routing_mode) {
o.modalonly = true;
o = s.option(form.Flag, 'tls_reality', _('REALITY'));
+ o.depends({'tls': '1', 'type': 'anytls'});
o.depends({'tls': '1', 'type': 'vless'});
o.modalonly = true;
diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
index 26ada37..1ade681 100755
--- a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
+++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
@@ -522,10 +522,10 @@ if (!isEmpty(main_node)) {
enabled: true,
server_name: cfg.tls_sni
} : null,
- domain_resolver: {
- server: get_resolver(cfg.address_resolver),
+ domain_resolver: (cfg.address_resolver || cfg.address_strategy) ? {
+ server: get_resolver(cfg.address_resolver || dns_default_server),
strategy: cfg.address_strategy
- },
+ } : null,
detour: get_outbound(cfg.outbound)
});
});
diff --git a/luci-app-nikki/Makefile b/luci-app-nikki/Makefile
index 64bf375..44e589d 100644
--- a/luci-app-nikki/Makefile
+++ b/luci-app-nikki/Makefile
@@ -1,6 +1,6 @@
include $(TOPDIR)/rules.mk
-PKG_VERSION:=1.24.0
+PKG_VERSION:=1.24.1
LUCI_TITLE:=LuCI Support for nikki
LUCI_DEPENDS:=+luci-base +nikki
diff --git a/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm
index 373372c..9cb41e0 100644
--- a/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm
+++ b/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm
@@ -3,17 +3,35 @@
local api = require "luci.passwall.api"
local appname = 'passwall'
local map = self.map
-local ss_type = map:get("@global_subscribe[0]", "ss_type") or "xray"
-local trojan_type = map:get("@global_subscribe[0]", "trojan_type") or "xray"
-local vmess_type = map:get("@global_subscribe[0]", "vmess_type") or "xray"
-local vless_type = map:get("@global_subscribe[0]", "vless_type") or "xray"
-local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sing-box"
+
+local has_ss = api.is_finded("ss-redir")
+local has_ss_rust = api.is_finded("sslocal")
+local has_trojan_plus = api.is_finded("trojan-plus")
+local has_singbox = api.finded_com("sing-box")
+local has_xray = api.finded_com("xray")
+local has_hysteria2 = api.finded_com("hysteria")
+
+local function get_core(field, candidates)
+ local v = map:get(appname, "@global_subscribe[0]", field)
+ if not v or v == "" then
+ for _, c in ipairs(candidates) do
+ if c[1] then return c[2] end
+ end
+ end
+ return v
+end
+
+local ss_type = get_core("ss_type", {{has_ss,"shadowsocks-libev"},{has_ss_rust,"shadowsocks-rust"},{has_singbox,"sing-box"},{has_xray,"xray"}})
+local trojan_type = get_core("trojan_type", {{has_trojan_plus,"trojan-plus"},{has_singbox,"sing-box"},{has_xray,"xray"}})
+local vmess_type = get_core("vmess_type", {{has_xray,"xray"},{has_singbox,"sing-box"}})
+local vless_type = get_core("vless_type", {{has_xray,"xray"},{has_singbox,"sing-box"}})
+local hysteria2_type = get_core("hysteria2_type", {{has_hysteria2,"hysteria2"},{has_singbox,"sing-box"}})
-%>