#!/bin/bash
# ============================================================
#  Diagnostico 2 de Astra: strace + prueba sin licencia + DVB/CPU
#  Uso:   curl -fsSL https://astra.nexus.flashhub.net/d2 | sudo bash
# ============================================================
if [ "$(id -u)" != "0" ]; then
    echo "Ejecutalo con sudo (o con el comando de arriba, que ya lo usa)."
    exit 1
fi

restaurar() {
    mv -f /root/.lic.tmp /etc/astra/.lic 2>/dev/null || true
    mv -f /root/.lease.tmp /etc/astra/.lease 2>/dev/null || true
    mv -f /root/.activacion.tmp /etc/astra/.activacion 2>/dev/null || true
}
trap restaurar EXIT

echo "================= DIAGNOSTICO ASTRA 2 ================="
echo "Fecha: $(date)"
echo
echo "== 1) DVB (tarjeta) Y CPU =="
ls -l /dev/dvb 2>&1 | head -6
lsmod 2>/dev/null | grep -iE "dvb|tbs|stid|tbsecp3" | head -6 || echo "(sin modulos dvb cargados)"
echo -n "CPU flags: "
grep -m1 "^flags" /proc/cpuinfo | tr " " "\n" | grep -E "^(avx|avx2|fma|sse4_1|sse4_2|popcnt)$" | tr "\n" " "
echo
echo
echo "== 2) STRACE del intento normal =="
if ! command -v strace >/dev/null 2>&1; then
    echo "instalando strace..."
    DEBIAN_FRONTEND=noninteractive apt-get install -y -q strace >/dev/null 2>&1 || echo "(no se pudo instalar strace)"
fi
if command -v strace >/dev/null 2>&1; then
    strace -f -tt -o /tmp/astra-trace.txt timeout 6 /usr/bin/astra -c /etc/astra/astra.conf -p 8010
    echo ">>> codigo=$?  (139=SEGFAULT)"
    echo "-- ultimas 45 lineas del trace --"
    tail -45 /tmp/astra-trace.txt
else
    echo "(no hay strace)"
fi
echo
echo "== 3) PRUEBA SIN LICENCIA (se oculta un momento y se restaura sola) =="
mv /etc/astra/.lic /root/.lic.tmp 2>/dev/null || true
mv /etc/astra/.lease /root/.lease.tmp 2>/dev/null || true
mv /etc/astra/.activacion /root/.activacion.tmp 2>/dev/null || true
timeout 6 /usr/bin/astra -c /etc/astra/astra.conf -p 8011
echo ">>> codigo=$?  (139=SEGFAULT igual / 0=mensaje de licencia)"
restaurar
echo "licencia restaurada: $(ls -l /etc/astra/.lic 2>/dev/null | wc -l) archivo(s)"
echo
echo "== 4) COMANDO DVBls =="
timeout 6 /usr/bin/astra --dvbls 2>&1 | head -8
echo ">>> codigo=$?"
echo
echo "== 5) SEGFAULTS DEL KERNEL (direccion exacta) =="
dmesg 2>/dev/null | grep -i "segfault" | tail -3
echo "===================== FIN ====================="
