diff --git a/clashoo/Makefile b/clashoo/Makefile index 2cf5a642..8f9131fe 100644 --- a/clashoo/Makefile +++ b/clashoo/Makefile @@ -5,7 +5,7 @@ PKG_SHORT_SHA:=d5f57a5 PKG_COMMIT_DATE:=2026.09.08 PKG_VERSION:=$(PKG_COMMIT_DATE)~$(PKG_SHORT_SHA) -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA) diff --git a/clashoo/files/usr/share/clashoo/runtime/iprules.sh b/clashoo/files/usr/share/clashoo/runtime/iprules.sh index 8ab69cd5..29b52b97 100755 --- a/clashoo/files/usr/share/clashoo/runtime/iprules.sh +++ b/clashoo/files/usr/share/clashoo/runtime/iprules.sh @@ -12,10 +12,13 @@ trap 'rm -f "$CUSTOM_RULE_FILE" "$RULE" "$CLASH" "$CLASH_CONFIG"' EXIT [ -f "$CONFIG_YAML" ] || exit 0 +. /usr/share/clashoo/runtime/primary_group.sh + # __PROXY__ placeholder -> primary proxy group (cached by RPC); # fallback to GLOBAL (built-in mihomo group) -PRIMARY_GROUP="$(uci -q get clashoo.config.primary_proxy_group)" +CACHED_PRIMARY_GROUP="$(uci -q get clashoo.config.primary_proxy_group)" +PRIMARY_GROUP="$(clashoo_resolve_primary_group "$CONFIG_YAML" "$CACHED_PRIMARY_GROUP")" [ -n "$PRIMARY_GROUP" ] || PRIMARY_GROUP="GLOBAL" append=$(uci get clashoo.config.append_rules 2>/dev/null) diff --git a/clashoo/files/usr/share/clashoo/runtime/primary_group.sh b/clashoo/files/usr/share/clashoo/runtime/primary_group.sh new file mode 100755 index 00000000..997e941b --- /dev/null +++ b/clashoo/files/usr/share/clashoo/runtime/primary_group.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +clashoo_resolve_primary_group() { + local config_yaml="$1" + local cached_group="$2" + local group_rows + local resolved_group + + if [ "$cached_group" = "GLOBAL" ]; then + printf '%s\n' "GLOBAL" + return 0 + fi + + if [ ! -f "$config_yaml" ] || ! command -v yq >/dev/null 2>&1; then + printf '%s\n' "GLOBAL" + return 0 + fi + + group_rows="$(yq -M e -r '(."proxy-groups" // [])[] | [.name, .type] | @tsv' "$config_yaml" 2>/dev/null)" || { + printf '%s\n' "GLOBAL" + return 0 + } + + if [ -n "$cached_group" ] && printf '%s\n' "$group_rows" | + awk -F '\t' -v wanted="$cached_group" '$1 == wanted { found = 1; exit } END { exit !found }' + then + printf '%s\n' "$cached_group" + return 0 + fi + + resolved_group="$(printf '%s\n' "$group_rows" | awk -F '\t' ' + tolower($2) == "select" && + (index($1, "节点选择") || index($1, "代理") || index($1, "🚀") || tolower($1) ~ /proxy/) { + print $1 + exit + } + ')" + + if [ -z "$resolved_group" ]; then + resolved_group="$(printf '%s\n' "$group_rows" | awk -F '\t' ' + tolower($2) == "select" { + print $1 + exit + } + ')" + fi + + printf '%s\n' "${resolved_group:-GLOBAL}" +} diff --git a/tuic-client/Makefile b/tuic-client/Makefile index bc28e1d2..580011d6 100644 --- a/tuic-client/Makefile +++ b/tuic-client/Makefile @@ -5,15 +5,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=tuic-client -PKG_UPSTREAM_VERSION:=2.0.0-dev5 -PKG_VERSION:=2.0.0_pre5 +PKG_UPSTREAM_VERSION:=2.0.0-dev7 +PKG_VERSION:=2.0.0_pre7 PKG_RELEASE:=1 -TUIC_HASH_AARCH64:=9491a3d817288972555bba4e6ad853adf97723235ebb0bd7daba69584404c6cc -TUIC_HASH_ARMV7:=021ebfbfa9f7f7f005c0501b6391dcd9e23e121553bad32943c1d8cb0c0f213e -TUIC_HASH_ARMV7HF:=1de389a016faedde858706be98187a19bc1b55276030b1a4903110782ae3773e -TUIC_HASH_I686:=d35be9cd8289afbb7fb4653b1763d760ffdb22282ec81277defcd643e2b2bb66 -TUIC_HASH_X86_64:=78ecf1c1250ddd2926459ffed47b25832e19e0ea9deda204dfcd9519a274e5ab +TUIC_HASH_AARCH64:=8bd5069db703993aee8c8d83fc9e9979e2bcc645c366bcb6f5c6da110d3c5ee5 +TUIC_HASH_ARMV7:=5b84acfa582385992d05287e26e1d863b0ac55080fb26300493866305758c357 +TUIC_HASH_ARMV7HF:=2be6e93400528fa49a8114a49420cb0a96402f4c615d8683b9e1863e804c943f +TUIC_HASH_I686:=d0ba6fe4074bcd47056470985b0adef393342a27f0c2ff6a15c6023f9e43c97c +TUIC_HASH_X86_64:=6b11db38f4e9737f65a4f77044fa7e4a80d7debfd4dc1f6d32465598c8463b71 PKG_MAINTAINER:=Tianling Shen PKG_LICENSE:=GPL-3.0-or-later