From 749eedbf1e15bbdd2a3ffedf668baa240a88032b Mon Sep 17 00:00:00 2001 From: root Date: Sat, 5 Sep 2026 12:29:31 +0000 Subject: [PATCH] fix: validate dotted IPv4 addresses correctly --- install.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 3990c76..c13da46 100755 --- a/install.sh +++ b/install.sh @@ -22,7 +22,15 @@ command -v git >/dev/null 2>&1 || die "未找到 git" [ -n "$SERVER_IP" ] || SERVER_IP=$(ip -4 route get 1.1.1.1 2>/dev/null | awk '{for (i=1;i<=NF;i++) if ($i=="src") {print $(i+1); exit}}') [ -n "$SERVER_IP" ] || SERVER_IP=$(hostname -I 2>/dev/null | awk '{print $1}') [ -n "$SERVER_IP" ] || die "无法识别服务器 IP,请设置 OVERCOOKED_SERVER_IP" -case "$SERVER_IP" in *[!0-9.]*|*[!0-9]*) die "仅支持 IPv4 地址:$SERVER_IP";; esac +is_ipv4() { + old_ifs=$IFS; IFS=.; set -- $1; IFS=$old_ifs + [ "$#" = 4 ] || return 1 + for octet in "$@"; do + case "$octet" in ''|*[!0-9]*) return 1;; esac + [ "$octet" -le 255 ] 2>/dev/null || return 1 + done +} +is_ipv4 "$SERVER_IP" || die "仅支持有效 IPv4 地址:$SERVER_IP" [ -n "$AUTH_PUBLIC_KEYS" ] || die "请设置 OVERCOOKED_AUTH_PUBLIC_KEYS(Auth 公钥 JSON)" [ -n "$ACTIVATION_CODE" ] || printf '请输入授权码: '; [ -n "$ACTIVATION_CODE" ] || read -r ACTIVATION_CODE [ -n "$ACTIVATION_CODE" ] || die "授权码不能为空"