fix: validate dotted IPv4 addresses correctly

This commit is contained in:
root committed 2026-09-05 12:29:31 +00:00
1 parent a682a7be54
commit 749eedbf1e
1 file changed
+9 -1
+9 -1
View File
@@ -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 "授权码不能为空"