Preview — /tmp/fix-v2-handoff-permissions.sh

/tmp/fix-v2-handoff-permissions.sh

#!/usr/bin/env bash
set -euo pipefail

SLUG="vqngx6j8dc9q1lvt7g2a7a646q2t"
HOST="vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au"
PUBLIC_BASE="/var/www/handoff/public/$SLUG"
RUN="complete-handoff-v2-20260609-124454"
OUT="$PUBLIC_BASE/$RUN"
LATEST="$PUBLIC_BASE/latest-complete-handoff"

echo "=== FIX V2 HANDOFF PERMISSIONS ==="
date

if [ ! -d "$OUT" ]; then
  echo "ERROR: missing $OUT"
  exit 1
fi

echo
echo "=== BEFORE ==="
stat -c '%A %U:%G %n' "$PUBLIC_BASE" "$OUT" "$OUT/index.html" "$LATEST" 2>/dev/null || true

echo
echo "=== APPLY WEB-READABLE PERMISSIONS ==="
chmod 755 /var/www /var/www/handoff /var/www/handoff/public "$PUBLIC_BASE"
find "$OUT" -type d -exec chmod 755 {} \;
find "$OUT" -type f -exec chmod 644 {} \;

if [ -d "$LATEST" ]; then
  find "$LATEST" -type d -exec chmod 755 {} \;
  find "$LATEST" -type f -exec chmod 644 {} \;
fi

chmod 644 "$PUBLIC_BASE/index.html" 2>/dev/null || true

echo
echo "=== AFTER ==="
stat -c '%A %U:%G %n' "$PUBLIC_BASE" "$OUT" "$OUT/index.html" "$LATEST" "$LATEST/index.html" 2>/dev/null || true

echo
echo "=== LOCAL NGINX CHECK ==="
for url in \
  "/$SLUG/" \
  "/$SLUG/$RUN/index.html" \
  "/$SLUG/$RUN/all-links.html" \
  "/$SLUG/$RUN/new-chat-start.html" \
  "/$SLUG/latest-complete-handoff/index.html"
do
  code="$(curl -sk -o /tmp/handoff-check.html -w '%{http_code}' -H "Host: $HOST" "https://127.0.0.1$url" || true)"
  bytes="$(wc -c < /tmp/handoff-check.html 2>/dev/null || echo 0)"
  echo "$code $bytes $url"
done

echo
echo "=== PORTAL MARKER CHECK ==="
grep -n "COMPLETE-HANDOFF-V2" "$PUBLIC_BASE/index.html" || true

echo
echo "Open:"
echo "https://$HOST/$SLUG/$RUN/index.html"
echo "https://$HOST/$SLUG/latest-complete-handoff/index.html"
echo
echo "=== DONE ==="