#!/bin/bash
# ============================================================
#  Diagnostico de Astra  (solo lectura + 2 pruebas cortas)
#  Uso:   curl -fsSL https://astra.nexus.flashhub.net/diag-astra.sh | sudo bash
# ============================================================
if [ "$(id -u)" != "0" ]; then
    echo "Ejecutalo con sudo (o con el comando de arriba, que ya lo usa)."
    exit 1
fi

echo "================= DIAGNOSTICO ASTRA ================="
echo "Fecha: $(date)"
echo
echo "== 1) EQUIPO =="
lsb_release -ds 2>/dev/null
uname -r
uname -m
grep -m1 "model name" /proc/cpuinfo
echo
echo "== 2) ESTADO DEL SERVICIO =="
systemctl status astra --no-pager -l 2>&1 | head -16
echo
echo "== 3) CONFIG ACTUAL =="
echo "bytes: $(wc -c < /etc/astra/astra.conf 2>/dev/null)"
echo "primeros 500 caracteres:"
head -c 500 /etc/astra/astra.conf 2>/dev/null
echo
echo "archivos en /etc/astra:"
ls -la /etc/astra/ 2>/dev/null
echo
echo "== 4) LOG DEL SERVICIO (40) =="
journalctl -u astra -n 40 --no-pager 2>&1
echo
echo "== 4b) SEGFAULTS EN EL KERNEL =="
dmesg 2>/dev/null | grep -i "segfault\|astra" | tail -6 || echo "(sin datos)"
echo
echo "== 5) PRUEBA A: config ACTUAL, puerto 8010, 8 segundos =="
timeout 8 /usr/bin/astra -c /etc/astra/astra.conf -p 8010
echo ">>> codigo=$?   (124=se mantuvo vivo / 139=SEGFAULT / otro=error)"
echo
echo "== 6) PRUEBA B: config VACIA {}, puerto 8011, 8 segundos =="
echo "{}" > /tmp/astra-vacio.conf
timeout 8 /usr/bin/astra -c /tmp/astra-vacio.conf -p 8011
echo ">>> codigo=$?   (124=se mantuvo vivo => el problema es la CONFIG / 139=SEGFAULT => entorno o binario)"
rm -f /tmp/astra-vacio.conf
echo
echo "== 7) PUERTOS Y FIREWALL =="
ss -ltnp 2>/dev/null | grep -E ":8000|:8010|:8011" || echo "(nada escuchando en esos puertos)"
ufw status 2>/dev/null | head -4
echo
echo "== 8) BINARIO =="
file /usr/bin/astra
sha256sum /usr/bin/astra
ldd /usr/bin/astra 2>/dev/null | grep -i "not found" || echo "(dependencias: OK)"
echo
echo "== 9) CORE DUMP (si el sistema lo guarda) =="
coredumpctl list --no-pager 2>/dev/null | tail -4 || echo "(sin coredumpctl)"
echo "===================== FIN ====================="
