#!/usr/bin/env bash
# ============================================================
# Axiom Zero — Pi 5 Master Startup Verification Script
# Runs at boot via axiom-startup-check.service
# Verifies all services are healthy and logs diagnostics.
# ============================================================

LOG="/home/cade/.axiom-zero/startup.log"
mkdir -p /home/cade/.axiom-zero
exec >> "$LOG" 2>&1

echo ""
echo "============================================================"
echo " AXIOM ZERO STARTUP CHECK — $(date)"
echo "============================================================"

FAIL=0

check_service() {
    local name="$1"
    if systemctl is-active --quiet "$name"; then
        echo "  ✅ $name — ACTIVE"
    else
        echo "  ❌ $name — FAILED — attempting restart..."
        sudo systemctl restart "$name"
        sleep 2
        if systemctl is-active --quiet "$name"; then
            echo "  🔄 $name — RESTARTED OK"
        else
            echo "  💀 $name — RESTART FAILED"
            FAIL=$((FAIL+1))
        fi
    fi
}

check_port() {
    local port="$1"
    local desc="$2"
    if ss -tlnp | grep -q ":$port "; then
        echo "  ✅ Port $port — $desc LISTENING"
    else
        echo "  ❌ Port $port — $desc NOT LISTENING"
        FAIL=$((FAIL+1))
    fi
}

echo ""
echo "── SERVICES ────────────────────────────────────────────"
check_service "axiom-zero"
check_service "axiom-gateway"
check_service "axiom-ddns"

echo ""
echo "── PORTS ───────────────────────────────────────────────"
check_port 8085 "API Gateway"
check_port 7443 "mTLS Bridge"

echo ""
echo "── SOCKET ──────────────────────────────────────────────"
if [ -S /tmp/axiom_zero_ipc.sock ]; then
    echo "  ✅ IPC Socket /tmp/axiom_zero_ipc.sock — OK"
else
    echo "  ❌ IPC Socket MISSING"
    FAIL=$((FAIL+1))
fi

echo ""
echo "── NETWORK ─────────────────────────────────────────────"
PUBLIC_IP=$(curl -sf --max-time 5 https://api.ipify.org || echo "UNKNOWN")
echo "  Public IP: $PUBLIC_IP"
echo "  Local IP:  $(hostname -I | awk '{print $1}')"

echo ""
echo "── HARDWARE ────────────────────────────────────────────"
TEMP=$(vcgencmd measure_temp 2>/dev/null || cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null | awk '{printf "temp=%.1f'\''C\n", $1/1000}')
THROTTLE=$(vcgencmd get_throttled 2>/dev/null || echo "n/a")
MEM=$(free -h | awk '/^Mem:/{print "used="$3" total="$2}')
echo "  Temperature: $TEMP"
echo "  Throttled:   $THROTTLE"
echo "  Memory:      $MEM"

echo ""
if [ "$FAIL" -eq 0 ]; then
    echo "✅ ALL CHECKS PASSED — Axiom Zero fully operational"
else
    echo "⚠️  $FAIL CHECK(S) FAILED — review log above"
fi
echo "============================================================"
echo ""
