From 55e452b6a2dc9964fc6b2f61adfa6424011dfddb Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 15 Jan 2026 09:34:06 +0100 Subject: [PATCH] fix: parse env safely in enrollment script --- scripts/enroll_update_service.sh | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/scripts/enroll_update_service.sh b/scripts/enroll_update_service.sh index 4dedc17..a797487 100755 --- a/scripts/enroll_update_service.sh +++ b/scripts/enroll_update_service.sh @@ -39,16 +39,34 @@ while [[ $# -gt 0 ]]; do esac done -if [[ -f "${ENV_FILE}" ]]; then - set -a - # shellcheck disable=SC1090 - . "${ENV_FILE}" - set +a -fi +read_env_value() { + local key="$1" + python3 - <<'PY' "${ENV_FILE}" "${key}" +from pathlib import Path +import sys -SERVICE_URL="${SERVICE_URL:-${SKD_UPDATE_SERVICE_URL:-}}" -PROJECT_ID="${PROJECT_ID:-${SKD_UPDATE_PROJECT_ID:-}}" -TOKEN_FILE="${OUTPUT_PATH:-${TOKEN_FILE}}" +path = Path(sys.argv[1]) +key = sys.argv[2] +if not path.exists(): + sys.exit(0) + +for raw in path.read_text(encoding="utf-8").splitlines(): + line = raw.strip() + if not line or line.startswith("#"): + continue + if not line.startswith(f"{key}="): + continue + value = line.split("=", 1)[1].strip() + if (value.startswith('"') and value.endswith('"')) or (value.startswith("'") and value.endswith("'")): + value = value[1:-1] + print(value) + sys.exit(0) +PY +} + +SERVICE_URL="${SERVICE_URL:-$(read_env_value SKD_UPDATE_SERVICE_URL)}" +PROJECT_ID="${PROJECT_ID:-$(read_env_value SKD_UPDATE_PROJECT_ID)}" +TOKEN_FILE="${OUTPUT_PATH:-${TOKEN_FILE:-$(read_env_value SKD_UPDATE_TOKEN_FILE)}}" CLIENT_ID="${CLIENT_ID:-$(hostname)}" if [[ -z "${SERVICE_URL}" || -z "${PROJECT_ID}" ]]; then