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:
@ -2,6 +2,10 @@
|
||||
set -euo pipefail
|
||||
|
||||
SERVICE_NAME="${SERVICE_NAME:-skd}"
|
||||
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="${UPDATE_SERVICE_URL}/v1/projects/${PROJECT_ID}/status"
|
||||
INSTALL_DIR="${INSTALL_DIR:-/opt/sk}"
|
||||
STATUS_FILE="${SKD_UPDATE_STATUS_FILE:-/var/lib/skd/update_status.json}"
|
||||
LOG_FILE="${SKD_UPDATE_LOG_FILE:-/var/lib/skd/update_logs.jsonl}"
|
||||
@ -14,6 +18,8 @@ write_status() {
|
||||
local status="$1"
|
||||
local error="${2:-}"
|
||||
local version="$3"
|
||||
local timestamp
|
||||
timestamp="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
|
||||
SKD_STATUS="${status}" SKD_ERROR="${error}" SKD_VERSION="${version}" \
|
||||
SKD_STATUS_FILE="${STATUS_FILE}" SKD_LOG_FILE="${LOG_FILE}" python3 - <<'PY'
|
||||
import json
|
||||
@ -41,7 +47,25 @@ status_file.write_text(json.dumps(payload), encoding="utf-8")
|
||||
with log_file.open("a", encoding="utf-8") as handle:
|
||||
handle.write(json.dumps(payload) + "\n")
|
||||
PY
|
||||
local payload
|
||||
payload=$(cat <<JSON
|
||||
{
|
||||
"project_id": "${PROJECT_ID}",
|
||||
"version": "${version}",
|
||||
"status": "${status}",
|
||||
"timestamp": "${timestamp}",
|
||||
"client_id": "$(hostname)",
|
||||
"error_code": "${error}",
|
||||
"reason": "${error}"
|
||||
}
|
||||
JSON
|
||||
)
|
||||
if [[ -n "${UPDATE_TOKEN}" ]]; then
|
||||
curl -sS -X POST -H "Authorization: Bearer ${UPDATE_TOKEN}" -H "Content-Type: application/json" \
|
||||
-d "${payload}" "${STATUS_URL}" >/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
LATEST_BACKUP="$(ls -dt /opt/sk_backup_* 2>/dev/null | head -1 || true)"
|
||||
if [[ -z "${LATEST_BACKUP}" ]]; then
|
||||
|
||||
@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user