fix(install): 修复平滑升级时长效配置覆盖问题,强行以 SAFE_PUBLIC_IP 为基座重铸多宿主弹匣,彻底防止首发 IPv6 遗失

This commit is contained in:
hotyue
2026-06-01 08:16:31 +00:00
parent 591100a27f
commit 4375fac814
+15 -12
View File
@@ -637,10 +637,8 @@ if [ "$UPGRADE_MODE" == "true" ]; then
SAFE_PUBLIC_IP="${PUBLIC_IP}" SAFE_PUBLIC_IP="${PUBLIC_IP}"
fi fi
# [v4.2.2 热修复] 为老版本平滑补齐多宿主容灾通讯 IP # [v4.2.2 热修复] 为所有老节点 (无论是否已有残缺的 COMM_IP) 强行重铸多宿主容灾弹匣
if ! grep -q "^COMM_IP=" "$CONFIG_FILE"; then echo -e "\n🔄 [平滑迁移] 正在对老节点执行 v4.2.2 全域容灾弹匣重构..."
echo -e "\n🔄 [平滑迁移] 正在为老节点无损注入 v4.2.2 容灾通讯架构..."
TMP_PUB_IP=$(grep "^PUBLIC_IP=" "$CONFIG_FILE" | cut -d'"' -f2 | tr -d '[]')
RAW_V4=$(curl -4 -s -m 3 api.ip.sb/ip 2>/dev/null | tr -d '[:space:]') RAW_V4=$(curl -4 -s -m 3 api.ip.sb/ip 2>/dev/null | tr -d '[:space:]')
RAW_V6=$(curl -6 -s -m 3 api.ip.sb/ip 2>/dev/null | tr -d '[:space:]') RAW_V6=$(curl -6 -s -m 3 api.ip.sb/ip 2>/dev/null | tr -d '[:space:]')
@@ -655,22 +653,27 @@ if [ "$UPGRADE_MODE" == "true" ]; then
RAW_V6="" RAW_V6=""
fi fi
[[ "$TMP_PUB_IP" == *":"* ]] && NEW_COMM_IP="[${TMP_PUB_IP}]" || NEW_COMM_IP="$TMP_PUB_IP" # 绝对基座:始终确保养护 IP (SAFE_PUBLIC_IP) 处于弹匣的首发位置
NEW_COMM_IP="$SAFE_PUBLIC_IP"
RAW_BASE_IP=$(echo "$SAFE_PUBLIC_IP" | tr -d '[]')
if [[ -n "$RAW_V4" ]] && [[ "$RAW_V4" != "$TMP_PUB_IP" ]]; then # 追加 V4 容灾备弹
if [[ -n "$RAW_V4" ]] && [[ "$RAW_V4" != "$RAW_BASE_IP" ]]; then
NEW_COMM_IP="${NEW_COMM_IP},${RAW_V4}" NEW_COMM_IP="${NEW_COMM_IP},${RAW_V4}"
fi fi
if [[ -n "$RAW_V6" ]] && [[ "$RAW_V6" != "$TMP_PUB_IP" ]]; then # 追加 V6 容灾备弹
NEW_COMM_IP="${NEW_COMM_IP},[${RAW_V6}]" if [[ -n "$RAW_V6" ]] && [[ "$RAW_V6" != "$RAW_BASE_IP" ]]; then
[[ "$RAW_V6" != *"["* ]] && SAFE_V6="[${RAW_V6}]" || SAFE_V6="$RAW_V6"
NEW_COMM_IP="${NEW_COMM_IP},${SAFE_V6}"
fi fi
# 强制覆盖 config.conf 中的旧 COMM_IP 记录
sed -i '/^COMM_IP=/d' "$CONFIG_FILE"
echo "COMM_IP=\"$NEW_COMM_IP\"" >> "$CONFIG_FILE" echo "COMM_IP=\"$NEW_COMM_IP\"" >> "$CONFIG_FILE"
SAFE_COMM_IP="$NEW_COMM_IP" SAFE_COMM_IP="$NEW_COMM_IP"
echo -e " \033[32m✅ 成功注入容灾通讯专线: $SAFE_COMM_IP\033[0m"
else echo -e " \033[32m✅ 重铸容灾通讯专线完成: $SAFE_COMM_IP\033[0m"
SAFE_COMM_IP=$(grep "^COMM_IP=" "$CONFIG_FILE" | cut -d'"' -f2)
fi
if ! grep -q "^NODE_NAME=" "$CONFIG_FILE"; then if ! grep -q "^NODE_NAME=" "$CONFIG_FILE"; then
TMP_HASH=$(echo "${SAFE_PUBLIC_IP:-127.0.0.1}" | md5sum | cut -c 1-4 | tr 'a-z' 'A-Z') TMP_HASH=$(echo "${SAFE_PUBLIC_IP:-127.0.0.1}" | md5sum | cut -c 1-4 | tr 'a-z' 'A-Z')