#!/bin/bash
# DR Network & DR Wi-Fi Analyzer — Instalador Linux/macOS
# (sem 'set -e': a instalação de dependências é idempotente e não-fatal)

GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "  DR Network & DR Wi-Fi Analyzer — Agente"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# ── Python 3.8+ ──────────────────────────────────────
if ! command -v python3 &>/dev/null; then
    echo -e "${RED}[ERRO]${NC} Python 3 não encontrado."
    echo "  Ubuntu/Debian: sudo apt install python3"
    echo "  macOS:         brew install python3"
    exit 1
fi

PYVER=$(python3 -c "import sys; print(sys.version_info.major * 10 + sys.version_info.minor)")
if [ "$PYVER" -lt 38 ]; then
    echo -e "${RED}[ERRO]${NC} Python 3.8+ necessário (encontrado: $(python3 --version))"
    exit 1
fi
echo -e "${GREEN}[OK]${NC} Python $(python3 --version)"

# ── Dependências de diagnóstico (idempotente + não-fatal) ─────────────
# Instala nmap, iperf3, mtr e speedtest. Instala só o que faltar; se uma
# dep falhar, o instalador segue (degradação graciosa no diagnóstico).
need()     { ! command -v "$1" &>/dev/null; }
say_ok()   { echo -e "${GREEN}[OK]${NC} $1"; }
say_warn() { echo -e "${YELLOW}[OPC]${NC} $1"; }

install_linux_deps() {
    local pkgs=()
    if command -v apt-get &>/dev/null; then
        need nmap         && pkgs+=(nmap)
        need iperf3       && pkgs+=(iperf3)
        need mtr          && pkgs+=(mtr-tiny)
        need speedtest-cli && pkgs+=(speedtest-cli)
        if [ ${#pkgs[@]} -gt 0 ]; then
            echo "  Instalando via apt: ${pkgs[*]}"
            sudo apt-get update -y || true
            sudo apt-get install -y "${pkgs[@]}" || say_warn "alguma dep apt falhou — seguindo"
        fi
    elif command -v dnf &>/dev/null; then
        need nmap   && pkgs+=(nmap)
        need iperf3 && pkgs+=(iperf3)
        need mtr    && pkgs+=(mtr)
        if [ ${#pkgs[@]} -gt 0 ]; then
            echo "  Instalando via dnf: ${pkgs[*]}"
            sudo dnf install -y "${pkgs[@]}" || say_warn "alguma dep dnf falhou — seguindo"
        fi
        if need speedtest-cli; then
            pip3 install --user speedtest-cli &>/dev/null \
                && say_ok "speedtest-cli (pip)" \
                || say_warn "speedtest-cli: instale com 'pip3 install speedtest-cli'"
        fi
    else
        say_warn "gestor de pacotes não detectado — instale manualmente: nmap iperf3 mtr speedtest-cli"
    fi
}

install_macos_deps() {
    local pkgs=()
    if command -v brew &>/dev/null; then
        need nmap          && pkgs+=(nmap)
        need iperf3        && pkgs+=(iperf3)
        need mtr           && pkgs+=(mtr)
        need speedtest-cli && pkgs+=(speedtest-cli)
        if [ ${#pkgs[@]} -gt 0 ]; then
            echo "  Instalando via brew: ${pkgs[*]}"
            brew install "${pkgs[@]}" || say_warn "alguma dep brew falhou — seguindo"
        fi
    else
        say_warn "Homebrew ausente — instale em https://brew.sh e rode: brew install nmap iperf3 mtr speedtest-cli"
    fi
}

echo ""
echo "Verificando dependências de diagnóstico (nmap, iperf3, mtr, speedtest)…"
if [ "$(uname -s)" = "Darwin" ]; then
    install_macos_deps
else
    install_linux_deps
fi

# Relatório final das ferramentas (Wi-Fi + diagnóstico)
for t in iw nmcli iwconfig iperf3 nmap mtr speedtest-cli; do
    if command -v "$t" &>/dev/null; then
        say_ok "$t disponível"
    else
        say_warn "$t ausente (opcional — diagnóstico degrada sem quebrar)"
    fi
done

# ── Script de execução ────────────────────────────────
DIR="$(cd "$(dirname "$0")" && pwd)"
RUNNER="$DIR/run_agent.sh"
cat > "$RUNNER" << 'SCRIPT'
#!/bin/bash
DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$DIR"
exec python3 "$DIR/drwifi_agent.py" "$@"
SCRIPT
chmod +x "$RUNNER"

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "${GREEN}Instalação concluída!${NC}"
echo ""
echo "1. Acesse o painel → Agentes → Novo agente → copie o código"
echo ""
echo "2. Registre o agente (1ª vez):"
echo -e "   ${YELLOW}python3 drwifi_agent.py --server http://SEU_SERVIDOR --enroll-code XXXX-XXXX-XX${NC}"
echo ""
echo "3. Rode continuamente:"
echo -e "   ${YELLOW}python3 drwifi_agent.py --server http://SEU_SERVIDOR${NC}"
echo ""
echo "   Em background:"
echo -e "   ${YELLOW}nohup python3 drwifi_agent.py --server http://SEU_SERVIDOR &${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
