From 7d8f916ea59e42e227244997c53dc4cd16861958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Wed, 20 May 2026 18:49:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(update):=20=E6=A3=80=E6=B5=8B=E5=B9=B6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20CONSOLE=5FDOMAIN=20=E5=8F=8A=20SDK=20URL?= =?UTF-8?q?=20=E4=B8=BA=E5=86=85=E7=BD=91=20IP=20=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CONSOLE_DOMAIN 为私有 IP 段时提示用户输入正确的公网域名 - SDK_IM_WS_URL / SDK_IM_API_URL / SDK_FILE_SERVICE_URL 包含 裸 IP(10.x / 172.x / 192.168.x / 127.x)时同样触发修复 - 提取 _url_needs_fix 辅助函数消除重复判断逻辑 Co-Authored-By: Claude Sonnet 4.6 --- VERSION | 2 +- scripts/update.sh | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 93f609d..45da1e2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2026.05.20-private.3 +2026.05.20-private.4 diff --git a/scripts/update.sh b/scripts/update.sh index 7e09fac..47317e3 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -96,6 +96,22 @@ ok "NGINX_BIND=${_NGINX_BIND}" [ -n "$_CONSOLE_DOMAIN" ] || fail "config/xuqm.env 中 CONSOLE_DOMAIN 未设置,请手动补充后重试" +# CONSOLE_DOMAIN 若为裸 IP(内网/公网)则强制要求更新为域名,否则 SDK URL 无法从外部访问 +_domain_stripped="$(printf '%s' "$_CONSOLE_DOMAIN" | sed 's|https\?://||' | cut -d: -f1)" +if printf '%s' "$_domain_stripped" | grep -qE \ + '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$)'; then + warn "CONSOLE_DOMAIN 当前为 IP 地址(${_CONSOLE_DOMAIN}),客户端浏览器可能无法访问" + printf ' 外部访问域名应为公网域名(如 https://console.example.com)\n' + read -rp " 请输入正确的外部访问地址(直接回车保持不变): " _new_domain + if [ -n "$_new_domain" ]; then + _set_env "$ROOT_DIR/config/xuqm.env" "CONSOLE_DOMAIN" "$_new_domain" + _CONSOLE_DOMAIN="$_new_domain" + ok "CONSOLE_DOMAIN 已更新 → ${_CONSOLE_DOMAIN}" + else + warn "保持原值 ${_CONSOLE_DOMAIN},如外部无法访问请手动修改 config/xuqm.env 后重试" + fi +fi + # --------------------------------------------------------------------------- # 1. 修复配置问题 # --------------------------------------------------------------------------- @@ -114,9 +130,11 @@ _SDK_FILE_URL="${_CONSOLE_DOMAIN}" _FIXED=0 -# 检查 SDK_IM_WS_URL +# 检查 SDK_IM_WS_URL(xuqinmin.com 残留 或 内网/裸 IP 均需修复) _CURRENT_WS="$(grep '^SDK_IM_WS_URL=' "$ROOT_DIR/config/xuqm.env" 2>/dev/null | cut -d= -f2- || echo '')" -if [ -z "$_CURRENT_WS" ] || printf '%s' "$_CURRENT_WS" | grep -qi 'xuqinmin\.com'; then +# ws/wss URL 转为 http/https 格式后复用 _url_needs_fix +_CURRENT_WS_AS_HTTP="$(printf '%s' "$_CURRENT_WS" | sed 's|^wss://|https://|; s|^ws://|http://|')" +if _url_needs_fix "$_CURRENT_WS_AS_HTTP"; then _set_env "$ROOT_DIR/config/xuqm.env" "SDK_IM_WS_URL" "$_SDK_IM_WS_URL" ok "SDK_IM_WS_URL 已更新 → ${_SDK_IM_WS_URL}" _FIXED=1 @@ -124,9 +142,21 @@ else ok "SDK_IM_WS_URL 正常: ${_CURRENT_WS}" fi +# 辅助函数:检查一个 URL 是否需要修复(空、xuqinmin.com 残留、或裸 IP) +_url_needs_fix() { + local val="$1" + local host + host="$(printf '%s' "$val" | sed 's|https\?://||' | cut -d/ -f1 | cut -d: -f1)" + [ -z "$val" ] && return 0 + printf '%s' "$val" | grep -qi 'xuqinmin\.com' && return 0 + printf '%s' "$host" | grep -qE \ + '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$)' && return 0 + return 1 +} + # 检查 SDK_IM_API_URL _CURRENT_IM_API="$(grep '^SDK_IM_API_URL=' "$ROOT_DIR/config/xuqm.env" 2>/dev/null | cut -d= -f2- || echo '')" -if [ -z "$_CURRENT_IM_API" ] || printf '%s' "$_CURRENT_IM_API" | grep -qi 'xuqinmin\.com'; then +if _url_needs_fix "$_CURRENT_IM_API"; then _set_env "$ROOT_DIR/config/xuqm.env" "SDK_IM_API_URL" "$_SDK_IM_API_URL" ok "SDK_IM_API_URL 已更新 → ${_SDK_IM_API_URL}" _FIXED=1 @@ -136,7 +166,7 @@ fi # 检查 SDK_FILE_SERVICE_URL _CURRENT_FILE="$(grep '^SDK_FILE_SERVICE_URL=' "$ROOT_DIR/config/xuqm.env" 2>/dev/null | cut -d= -f2- || echo '')" -if [ -z "$_CURRENT_FILE" ] || printf '%s' "$_CURRENT_FILE" | grep -qi 'xuqinmin\.com'; then +if _url_needs_fix "$_CURRENT_FILE"; then _set_env "$ROOT_DIR/config/xuqm.env" "SDK_FILE_SERVICE_URL" "$_SDK_FILE_URL" ok "SDK_FILE_SERVICE_URL 已更新 → ${_SDK_FILE_URL}" _FIXED=1