#!/bin/bash

clear

GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'

echo -e "${BLUE}"
cat << "EOF"
======================================================
   ██████╗ ██████╗  █████╗ ███████╗ █████╗ ███╗   ██╗ █████╗
  ██╔════╝ ██╔══██╗██╔══██╗██╔════╝██╔══██╗████╗  ██║██╔══██╗
  ██║  ███╗██████╔╝███████║█████╗  ███████║██╔██╗ ██║███████║
  ██║   ██║██╔══██╗██╔══██║██╔══╝  ██╔══██║██║╚██╗██║██╔══██║
  ╚██████╔╝██║  ██║██║  ██║██║     ██║  ██║██║ ╚████║██║  ██║
   ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝

        GRAFANA CMB - INSTALADOR AUTOMÁTICO
======================================================
EOF
echo -e "${NC}"

sleep 2

# Verifica se está como root
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}"
    echo "Este script precisa ser executado como ROOT."
    echo
    echo "Execute:"
    echo "sudo bash install_grafana.sh"
    echo -e "${NC}"
    exit 1
fi

step() {
    echo
    echo -e "${YELLOW}[$1/9] $2${NC}"
}

ok() {
    echo -e "${GREEN}✓ Concluído${NC}"
}

erro() {
    echo
    echo -e "${RED}✗ Ocorreu um erro durante a instalação.${NC}"
    exit 1
}

#######################################################
step 1 "Atualizando lista de pacotes (apt update)"
apt update || erro
ok

#######################################################
step 2 "Atualizando sistema (apt upgrade)"
DEBIAN_FRONTEND=noninteractive apt upgrade -y || erro
ok

#######################################################
step 3 "Instalando dependências"
apt install -y \
wget \
curl \
gnupg2 \
ca-certificates \
apt-transport-https \
software-properties-common || erro
ok

#######################################################
step 4 "Adicionando chave GPG do Grafana"

mkdir -p /usr/share/keyrings

curl -fsSL https://apt.grafana.com/gpg.key | \
gpg --dearmor -o /usr/share/keyrings/grafana.gpg || erro

ok

#######################################################
step 5 "Adicionando repositório oficial"

echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://apt.grafana.com stable main" > /etc/apt/sources.list.d/grafana.list || erro

ok

#######################################################
step 6 "Atualizando repositórios"

apt update || erro

ok

#######################################################
step 7 "Instalando Grafana"

apt install -y grafana || erro

ok

#######################################################
step 8 "Configurando serviço"

systemctl daemon-reload

systemctl enable grafana-server || erro

systemctl restart grafana-server || erro

ok

#######################################################
step 9 "Configurando Firewall"

if command -v ufw >/dev/null 2>&1; then
    ufw allow 3000/tcp >/dev/null 2>&1
fi

ok

#######################################################

STATUS=$(systemctl is-active grafana-server)

IP=$(hostname -I | awk '{print $1}')

VERSION=$(grafana-server -v 2>/dev/null | head -1)

clear

echo -e "${GREEN}"
cat << "EOF"
======================================================
            INSTALAÇÃO CONCLUÍDA COM SUCESSO
======================================================
EOF
echo -e "${NC}"

echo -e "${CYAN}Status do Serviço:${NC} $STATUS"
echo
echo -e "${CYAN}Versão:${NC}"
echo "$VERSION"
echo
echo -e "${CYAN}URL:${NC}"
echo "http://$IP:3000"
echo
echo -e "${CYAN}Usuário:${NC} admin"
echo -e "${CYAN}Senha:${NC} admin"
echo
echo "No primeiro acesso será solicitado alterar a senha."
echo
echo "Para verificar o serviço:"
echo "systemctl status grafana-server"
echo
echo "Para reiniciar:"
echo "systemctl restart grafana-server"
echo
echo "Para habilitar no boot:"
echo "systemctl enable grafana-server"
echo
echo -e "${GREEN}Obrigado por utilizar o instalador GRAFANA CMB!${NC}"