feat: implement update-service v1 migration and enrollment flow

- added /update/enroll endpoint and enrollment logic
- migrated update client to v1 api endpoints and bearer auth
- implemented remote status reporting in backend and scripts
- updated requirements and project status
This commit is contained in:
2025-12-31 00:05:46 +01:00
parent fde2825112
commit 47290d2d8f
41 changed files with 1384 additions and 19 deletions

View File

@ -2,9 +2,11 @@
set -euo pipefail
SERVICE_NAME="${SERVICE_NAME:-skd}"
UPDATE_URL="${SKD_UPDATE_URL:-https://update.wlkns.org}"
UPDATE_SERVICE_URL="${SKD_UPDATE_SERVICE_URL:-https://update.wlkns.org}"
PROJECT_ID="${SKD_UPDATE_PROJECT_ID:-safe-kiddo-control}"
UPDATE_TOKEN="${SKD_UPDATE_TOKEN:-}"
STATUS_URL="${SKD_UPDATE_STATUS_URL:-https://update.wlkns.org/status}"
MANIFEST_URL="${UPDATE_SERVICE_URL}/v1/projects/${PROJECT_ID}/manifest"
STATUS_URL="${UPDATE_SERVICE_URL}/v1/projects/${PROJECT_ID}/status"
STATUS_FILE="${SKD_UPDATE_STATUS_FILE:-/var/lib/skd/update_status.json}"
LOG_FILE="${SKD_UPDATE_LOG_FILE:-/var/lib/skd/update_logs.jsonl}"
INSTALL_DIR="${INSTALL_DIR:-/opt/sk}"
@ -53,7 +55,15 @@ with log_file.open("a", encoding="utf-8") as handle:
PY
local payload
payload=$(cat <<JSON
{"device_id":"$(hostname)","version":"${VERSION}","status":"${status}","error":"${error}","timestamp":"${timestamp}"}
{
"project_id": "${PROJECT_ID}",
"version": "${VERSION}",
"status": "${status}",
"timestamp": "${timestamp}",
"client_id": "$(hostname)",
"error_code": "${error}",
"reason": "${error}"
}
JSON
)
if [[ -n "${UPDATE_TOKEN}" ]]; then
@ -89,12 +99,12 @@ require_cmd tar
require_cmd sha256sum
require_cmd python3
log "Fetching update manifest from ${UPDATE_URL}..."
log "Fetching update manifest from ${MANIFEST_URL}..."
MANIFEST_FILE="$(mktemp)"
if [[ -n "${UPDATE_TOKEN}" ]]; then
curl -fsS -H "Authorization: Bearer ${UPDATE_TOKEN}" "${UPDATE_URL}" -o "${MANIFEST_FILE}"
curl -fsS -H "Authorization: Bearer ${UPDATE_TOKEN}" "${MANIFEST_URL}" -o "${MANIFEST_FILE}"
else
curl -fsS "${UPDATE_URL}" -o "${MANIFEST_FILE}"
curl -fsS "${MANIFEST_URL}" -o "${MANIFEST_FILE}"
fi
read_manifest() {