From 4264a2bbd3e57951d5fec3a09bff8049b9595575 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Mon, 31 Aug 2026 20:13:48 +0100 Subject: [PATCH] feat: validate allocated server compatibility --- Game/scripts/server_config.gd | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Game/scripts/server_config.gd b/Game/scripts/server_config.gd index b9264e5d..0867b3e8 100644 --- a/Game/scripts/server_config.gd +++ b/Game/scripts/server_config.gd @@ -263,7 +263,7 @@ func _validate() -> void: if String(values[key]).is_empty(): errors.append("--allocated-mode requires --%s" % key) var digest := String(values["server-image-digest"]) - if not digest.begins_with("sha256:") or digest.length() != 71: + if not _is_sha256_digest(digest): errors.append("--server-image-digest must be sha256:<64 hex characters>") var transport := String(values["transport"]) if not transport in ["steam_sdr", "enet"]: @@ -273,6 +273,15 @@ func _validate() -> void: errors.append("--region must be EU or NA, got '%s'" % region) +static func _is_sha256_digest(value: String) -> bool: + if not value.begins_with("sha256:") or value.length() != 71: + return false + for c in value.substr(7): + if not c.to_lower() in "0123456789abcdef": + return false + return true + + static func _kind_name(kind: int) -> String: match kind: Kind.BOOL: return "bool"