Update resolve_subconverter.sh

This commit is contained in:
wnlen
2026-01-15 12:21:32 +08:00
parent 376f2be0b8
commit 0e1bf1d230

View File

@ -34,14 +34,20 @@ try_subconverter_bin() {
return 1 return 1
} }
if [ -n "$SUBCONVERTER_PATH" ]; then # ------------------------------------------------------------
try_subconverter_bin "$SUBCONVERTER_PATH" && return 0 # FIX: SUBCONVERTER_PATH may be unbound when parent shell uses `set -u`
# Use ${SUBCONVERTER_PATH:-} to avoid "unbound variable"
# ------------------------------------------------------------
SUBCONVERTER_PATH_SAFE="${SUBCONVERTER_PATH:-}"
if [ -n "$SUBCONVERTER_PATH_SAFE" ]; then
try_subconverter_bin "$SUBCONVERTER_PATH_SAFE" && return 0
else else
try_subconverter_bin "$Default_Bin" && return 0 try_subconverter_bin "$Default_Bin" && return 0
fi fi
Detected_Arch="${CpuArch:-$(uname -m 2>/dev/null)}" Detected_Arch="${CpuArch:-$(uname -m 2>/dev/null)}"
Resolved_Arch=$(resolve_subconverter_arch "$Detected_Arch") Resolved_Arch="$(resolve_subconverter_arch "$Detected_Arch")"
if [ -n "$Resolved_Arch" ]; then if [ -n "$Resolved_Arch" ]; then
try_subconverter_bin "${Subconverter_Dir}/subconverter-${Resolved_Arch}" && return 0 try_subconverter_bin "${Subconverter_Dir}/subconverter-${Resolved_Arch}" && return 0
@ -60,6 +66,10 @@ if [ "$Auto_Download" != "false" ] && [ -n "$Resolved_Arch" ]; then
fi fi
Download_Url="${Download_Template//\{arch\}/${Resolved_Arch}}" Download_Url="${Download_Template//\{arch\}/${Resolved_Arch}}"
# Ensure temp dirs exist
mkdir -p "${Server_Dir}/temp" "${Subconverter_Dir}"
Download_Archive="${Server_Dir}/temp/subconverter-${Resolved_Arch}.tar.gz" Download_Archive="${Server_Dir}/temp/subconverter-${Resolved_Arch}.tar.gz"
Extract_Dir="${Server_Dir}/temp/subconverter-${Resolved_Arch}" Extract_Dir="${Server_Dir}/temp/subconverter-${Resolved_Arch}"
mkdir -p "${Extract_Dir}" mkdir -p "${Extract_Dir}"
@ -73,14 +83,18 @@ if [ "$Auto_Download" != "false" ] && [ -n "$Resolved_Arch" ]; then
return 0 return 0
fi fi
if [ -f "${Download_Archive}" ]; then # Only extract if archive exists and is non-empty
if [ -s "${Download_Archive}" ]; then
tar -xzf "${Download_Archive}" -C "${Extract_Dir}" 2>/dev/null tar -xzf "${Download_Archive}" -C "${Extract_Dir}" 2>/dev/null
Downloaded_Bin=$(find "${Extract_Dir}" -maxdepth 3 -type f -name "subconverter" -print -quit) Downloaded_Bin="$(find "${Extract_Dir}" -maxdepth 3 -type f -name "subconverter" -print -quit)"
if [ -n "${Downloaded_Bin}" ]; then if [ -n "${Downloaded_Bin}" ]; then
mv "${Downloaded_Bin}" "${Subconverter_Dir}/subconverter-${Resolved_Arch}" mv "${Downloaded_Bin}" "${Subconverter_Dir}/subconverter-${Resolved_Arch}"
chmod +x "${Subconverter_Dir}/subconverter-${Resolved_Arch}" chmod +x "${Subconverter_Dir}/subconverter-${Resolved_Arch}"
try_subconverter_bin "${Subconverter_Dir}/subconverter-${Resolved_Arch}" && return 0 try_subconverter_bin "${Subconverter_Dir}/subconverter-${Resolved_Arch}" && return 0
fi fi
fi fi
echo -e "\033[33m[WARN] subconverter 自动下载失败,跳过订阅转换\033[0m" echo -e "\033[33m[WARN] subconverter 自动下载失败,跳过订阅转换\033[0m"
fi fi
return 0