diff --git a/install.sh b/install.sh index 9348881..eb9fe7c 100755 --- a/install.sh +++ b/install.sh @@ -50,10 +50,6 @@ verificar_dependencias() { exit 1 fi - if ! command -v tar &> /dev/null; then - deps_faltando="$deps_faltando tar" - fi - if ! command -v unbound-checkconf &> /dev/null; then deps_faltando="$deps_faltando unbound-checkconf" fi @@ -280,62 +276,84 @@ instalar() { systemctl stop dnsblock-agent 2>/dev/null || true systemctl disable dnsblock-agent 2>/dev/null || true rm -rf "$INSTALL_DIR" + rm -f "$SERVICE_FILE" fi - # Solicitar serial - SERIAL=$(solicitar_serial) - - # Exibir progresso + # Exibir progresso - Fase 1: Criar diretórios e copiar arquivos { - echo "10"; echo "# Criando diretórios..." + echo "5"; echo "# Criando diretórios..." mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR/logs" mkdir -p "$INSTALL_DIR/rpz" - sleep 0.3 + sleep 0.2 - echo "30"; echo "# Copiando arquivos..." - # Copiar todos os arquivos exceto o service file e o próprio install.sh - for item in "$SCRIPT_DIR"/*; do - local basename=$(basename "$item") - if [ "$basename" != "dnsblock-agent.service" ] && [ "$basename" != "install.sh" ]; then - cp -r "$item" "$INSTALL_DIR/" - fi - done - sleep 0.3 + echo "15"; echo "# Copiando binário..." + # Copiar o binário + if [ -f "$SCRIPT_DIR/dnsblock-agent" ]; then + cp "$SCRIPT_DIR/dnsblock-agent" "$INSTALL_DIR/" + chmod +x "$INSTALL_DIR/dnsblock-agent" + else + echo "ERRO: dnsblock-agent não encontrado!" >&2 + exit 1 + fi + sleep 0.2 - echo "50"; echo "# Configurando permissões..." - chmod +x "$INSTALL_DIR/dnsblock-agent" 2>/dev/null || true + echo "25"; echo "# Criando config.json..." + # Criar config.json a partir do exemplo + if [ -f "$SCRIPT_DIR/config.json.example" ]; then + cp "$SCRIPT_DIR/config.json.example" "$INSTALL_DIR/config.json" + else + echo "ERRO: config.json.example não encontrado!" >&2 + exit 1 + fi + sleep 0.2 + + echo "35"; echo "# Configurando permissões..." touch "$INSTALL_DIR/logs/agent.log" chown -R unbound:unbound "$INSTALL_DIR" chmod 755 "$INSTALL_DIR" - sleep 0.3 + sleep 0.2 - echo "60"; echo "# Configurando serial..." + echo "40"; echo "# Aguardando..." + } | whiptail --title "DNSBlock Agent - Instalação" --gauge "Preparando arquivos..." 8 60 0 + + # Solicitar serial (fora do gauge para funcionar corretamente) + SERIAL=$(solicitar_serial) + + # Exibir progresso - Fase 2: Configurar serial e serviço + { + echo "45"; echo "# Configurando serial..." if [ -n "$SERIAL" ]; then atualizar_config_serial "$SERIAL" fi - sleep 0.3 + sleep 0.2 - echo "70"; echo "# Instalando serviço..." + echo "55"; echo "# Instalando serviço systemd..." if [ -f "$SCRIPT_DIR/dnsblock-agent.service" ]; then - mv "$SCRIPT_DIR/dnsblock-agent.service" "$SERVICE_FILE" + cp "$SCRIPT_DIR/dnsblock-agent.service" "$SERVICE_FILE" + else + echo "ERRO: dnsblock-agent.service não encontrado!" >&2 + exit 1 fi + sleep 0.2 + + echo "65"; echo "# Habilitando serviço..." systemctl daemon-reload - systemctl enable dnsblock-agent - sleep 0.3 + systemctl enable dnsblock-agent 2>/dev/null || true + sleep 0.2 - echo "85"; echo "# Configurando Unbound..." + echo "75"; echo "# Configurando Unbound..." configurar_unbound || true - sleep 0.3 + sleep 0.2 - echo "95"; echo "# Finalizando..." + echo "90"; echo "# Finalizando..." if [ -n "$SERIAL" ]; then - systemctl start dnsblock-agent + systemctl start dnsblock-agent 2>/dev/null || true fi - sleep 0.3 + sleep 0.2 echo "100"; echo "# Concluído!" - } | whiptail --title "DNSBlock Agent - Instalação" --gauge "Iniciando instalação..." 8 60 0 + } | whiptail --title "DNSBlock Agent - Instalação" --gauge "Configurando sistema..." 8 60 45 # Exibir mensagem final if [ -n "$SERIAL" ]; then