diff --git a/uninstall-proxy-sinc.sh b/uninstall-proxy-sinc.sh new file mode 100644 index 0000000..9a5e3bc --- /dev/null +++ b/uninstall-proxy-sinc.sh @@ -0,0 +1,96 @@ +#!/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 "" \ No newline at end of file