#!/usr/bin/env bash

set -Eeuo pipefail
umask 077

q102_finish() {
  rc=$?
  trap - EXIT
  printf '\nQ102_MANUAL_PREFLIGHT_END RC=%s\n' "$rc"
  exit "$rc"
}
trap q102_finish EXIT

printf 'Q102_MANUAL_PREFLIGHT_BEGIN\n'
date --iso-8601=seconds

readonly Q102_ARCHIVE=/root/q102-nginx02-activation-20260729.tar.gz
readonly Q102_SIDECAR=/root/q102-nginx02-activation-20260729.tar.gz.sha256
readonly Q102_DIR=/root/q102-nginx02-activation
readonly Q102_RUN_ID="q102-manual-$(date -u +%Y%m%dT%H%M%SZ)"
readonly Q102_STATIC_ROOT="/root/q102-static-evidence-${Q102_RUN_ID}"

cd /root

printf 'Q102_STEP=TARGET_IDENTITY_READONLY\n'
hostname -s
ip -o -4 addr show scope global
test "$(hostname -s)" = "sqjcnginx02"
ip -o -4 addr show scope global |
  awk '{print $4}' |
  cut -d/ -f1 |
  grep -Fxq '10.2.203.103'
printf 'Q102_TARGET_IDENTITY_READONLY=PASS\n'

printf 'Q102_STEP=OUTER_SHA256\n'
test -f "$Q102_ARCHIVE"
test -f "$Q102_SIDECAR"
sha256sum -c "$Q102_SIDECAR"
test "$(sha256sum "$Q102_ARCHIVE" | awk '{print $1}')" = \
  'f034270d0043171e9df5f7c031528df8f242da40b603a687b3f54b3e85eb7a1e'
printf 'Q102_OUTER_SHA256=PASS\n'

printf 'Q102_STEP=EXTRACT\n'
test ! -e "$Q102_DIR"
tar -xzf "$Q102_ARCHIVE" -C /root
test -d "$Q102_DIR"
cd "$Q102_DIR"
printf 'Q102_EXTRACT=PASS\n'

printf 'Q102_STEP=INNER_SHA256\n'
sha256sum -c SHA256SUMS
test -x q102-nginx02.sh
printf 'Q102_INNER_SHA256_AND_MODE=PASS\n'

printf 'Q102_STEP=STATIC_VALIDATE\n'
env \
  Q102_RUN_ID="${Q102_RUN_ID}-static" \
  Q102_EVIDENCE_ROOT="$Q102_STATIC_ROOT" \
  ./q102-nginx02.sh --static-validate

while IFS= read -r evidence_file; do
  printf '%s\n' "Q102_STATIC_EVIDENCE_FILE=$evidence_file"
  sed -n '1,240p' "$evidence_file"
done < <(find "$Q102_STATIC_ROOT" -type f | sort)

grep -R -Fq 'Q102_STATIC_VALIDATE_PASS' "$Q102_STATIC_ROOT"
grep -R -Fq 'Q102_RC=0' "$Q102_STATIC_ROOT"
printf 'Q102_STATIC_VALIDATE_GATE=PASS\n'

printf 'Q102_STEP=PREFLIGHT_READONLY\n'
printf 'Q102_RUN_ID=%s\n' "$Q102_RUN_ID"

env \
  Q102_RUN_ID="$Q102_RUN_ID" \
  Q102_REMOTE_LOCK_GRANTED=1 \
  Q102_REMOTE_LOCK_OWNER=NGINX_Q102 \
  Q102_SECRET_SOURCE_CONFIRMATION=Q101_NGINX01_CLONE_PRESERVED_CONFIRMED_BY_GLOBAL \
  ./q102-nginx02.sh preflight

test -f "/var/backups/zhct-q102/evidence/${Q102_RUN_ID}/preflight.pass"
grep -R -Fq 'Q102_PREFLIGHT_PASS' \
  "/var/backups/zhct-q102/evidence/${Q102_RUN_ID}"
grep -R -Fq 'Q102_RC=0' \
  "/var/backups/zhct-q102/evidence/${Q102_RUN_ID}"

printf 'Q102_PREFLIGHT_READONLY_GATE=PASS\n'
