#!/bin/bash # ============================================================================== # DESINSTALADOR DO SERVIÇO PROXY-SINC # # Descrição: Este script remove de forma segura todos os componentes do serviço # de versionamento automático Proxy-Sinc do sistema. # ============================================================================== set -e # --- Variáveis de Configuração --- REPO_DIR="/opt/config_repo" SCRIPT_INSTALL_DIR="/usr/local/sbin" SYSTEMD_DIR="/etc/systemd/system" MAN_DIR="/usr/share/man/man8" CONFIG_DIR="/etc/proxy-sinc" # --- Ficheiros a serem removidos --- SCRIPT_FILE="${SCRIPT_INSTALL_DIR}/commit_configs.sh" UPDATE_SCRIPT_FILE="${SCRIPT_INSTALL_DIR}/proxy-sinc-update" SERVICE_FILE="${SYSTEMD_DIR}/proxy-sinc.service" TIMER_FILE="${SYSTEMD_DIR}/proxy-sinc.timer" UPDATE_SERVICE_FILE="${SYSTEMD_DIR}/proxy-sinc-update.service" UPDATE_TIMER_FILE="${SYSTEMD_DIR}/proxy-sinc-update.timer" MAN_FILE="${MAN_DIR}/proxy-sinc.8.gz" # --- Funções de Ajuda --- info() { echo -e "\e[32m[INFO]\e[0m $1"; } error() { echo -e "\e[31m[ERRO]\e[0m $1" >&2; exit 1; } warn() { echo -e "\e[33m[AVISO]\e[0m $1"; } # --- Início da Execução --- info "Iniciando a desinstalação do serviço Proxy-Sinc..." if [ "$EUID" -ne 0 ]; then error "Este script precisa de ser executado como root." fi # --- 1. Parar e Desativar os Serviços systemd --- info "A parar e a desativar os timers do systemd..." systemctl stop proxy-sinc.timer 2>/dev/null || true systemctl disable proxy-sinc.timer 2>/dev/null || true systemctl stop proxy-sinc-update.timer 2>/dev/null || true systemctl disable proxy-sinc-update.timer 2>/dev/null || true info "Timers parados e desativados." # --- 2. Remover os Ficheiros do systemd --- info "A remover os ficheiros de serviço do systemd..." rm -f "$SERVICE_FILE" "$TIMER_FILE" "$UPDATE_SERVICE_FILE" "$UPDATE_TIMER_FILE" info "A recarregar o daemon do systemd..." systemctl daemon-reload # --- 3. Remover os Scripts e a Man Page --- info "A remover os scripts e a página de manual..." rm -f "$SCRIPT_FILE" "$UPDATE_SCRIPT_FILE" "$MAN_FILE" info "Ficheiros de sistema removidos com sucesso." # --- 4. Remover o Diretório de Configuração (Com Confirmação) --- if [ -d "$CONFIG_DIR" ]; then read -p "Deseja remover o diretório de configuração ${CONFIG_DIR}? (Isto irá apagar os seus ficheiros git.conf e paths.conf) [s/n]: " choice case "$choice" in s|S ) info "A remover o diretório de configuração ${CONFIG_DIR}..." rm -rf "$CONFIG_DIR" info "Diretório de configuração removido." ;; * ) warn "O diretório de configuração ${CONFIG_DIR} não foi removido." ;; esac fi # --- 5. Remover o Repositório Local (Com Confirmação) --- if [ -d "$REPO_DIR" ]; then read -p "Deseja remover o repositório Git local ${REPO_DIR}? (AVISO: Isto não apaga o repositório remoto no Gitea) [s/n]: " choice case "$choice" in s|S ) info "A remover o diretório do repositório ${REPO_DIR}..." rm -rf "$REPO_DIR" info "Diretório do repositório removido." ;; * ) warn "O diretório do repositório ${REPO_DIR} não foi removido." ;; esac fi # --- Conclusão --- echo "" info "======================================================================" info " Desinstalação Concluída!" info "======================================================================" info "Todos os componentes do serviço Proxy-Sinc foram removidos do sistema." info "Agora você pode executar o script de instalação da nova versão com segurança." info ""