diff --git a/Instal-Proxy-Sinc.sh b/Instal-Proxy-Sinc.sh index ffdfe59..9d102d4 100644 --- a/Instal-Proxy-Sinc.sh +++ b/Instal-Proxy-Sinc.sh @@ -19,6 +19,7 @@ CONFIG_DIR="/etc/proxy-sinc" PATHS_FILE="${CONFIG_DIR}/paths.conf" # A URL para o script de atualização deve apontar para o ficheiro RAW. UPDATE_SCRIPT_URL="https://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder/raw/branch/main/Instal-Proxy-Sinc.sh" + # --- 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; } @@ -110,10 +111,10 @@ if [ ! -f "$DEPLOY_LOG_FILE" ]; then info "Registo de deploy enviado para o Gitea." fi -# --- 6. Instalar os Ficheiros do Serviço --- -info "A instalar/atualizar os ficheiros do serviço..." +# --- 6. Gerar os Ficheiros do Serviço no Diretório Atual --- +info "A gerar os ficheiros do serviço..." -# Cria o diretório de configuração e o ficheiro de caminhos, se não existirem +# Cria o diretório de configuração e o ficheiro de caminhos mkdir -p "$CONFIG_DIR" if [ ! -f "$PATHS_FILE" ]; then info "A criar o ficheiro de caminhos padrão em $PATHS_FILE" @@ -124,7 +125,7 @@ if [ ! -f "$PATHS_FILE" ]; then fi # Gera o script principal de commit -cat > "$SCRIPT_INSTALL_DIR/commit_configs.sh" << 'EOF' +cat > ./commit_configs.sh << 'EOF' #!/bin/bash set -e @@ -145,15 +146,12 @@ if [ ! -f "$PATHS_FILE" ]; then echo "[AVISO] O ficheiro de caminhos $PATHS_FILE não foi encontrado. Nenhum ficheiro de configuração foi sincronizado." else while IFS= read -r path_to_sync || [ -n "$path_to_sync" ]; do - # Ignora linhas vazias e comentários if [ -z "$path_to_sync" ] || [[ "$path_to_sync" =~ ^# ]]; then continue fi if [ -e "$path_to_sync" ]; then - dest_name=$(basename "$path_to_sync") - log_info "A sincronizar '$path_to_sync' para '$REPO_PATH/$dest_name/'..." - # Usa rsync para copiar para uma pasta com o mesmo nome do original + # Copia para a raiz do repositório rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='sites-enabled/' --exclude='modules-enabled/' --exclude='/var/log/' --exclude='/var/run/' --exclude='/var/cache/' "$path_to_sync" "$REPO_PATH/" else echo "[AVISO] O caminho '$path_to_sync' definido em $PATHS_FILE não existe. A ignorar." @@ -165,7 +163,6 @@ log_info "Sincronizando ficheiros de automação..." mkdir -p "$AUTOMATION_FILES_DEST" for file in "${AUTOMATION_FILES_SOURCE[@]}"; do if [ -f "$file" ]; then - # -R preserva a estrutura de pastas (ex: /etc/proxy-sinc/paths.conf) rsync -aR "$file" "$AUTOMATION_FILES_DEST" fi done @@ -192,16 +189,15 @@ exit 0 EOF # Gera o script de atualização -cat > "$SCRIPT_INSTALL_DIR/proxy-sinc-update" << EOF +cat > ./proxy-sinc-update << EOF #!/bin/bash set -e echo "A procurar por atualizações para o serviço Proxy-Sinc..." -# A URL precisa de apontar para o ficheiro RAW. -UPDATE_SCRIPT_URL="${UPDATE_REPO_URL/src\/branch\/main/raw\/branch\/main}" +UPDATE_SCRIPT_URL="${UPDATE_SCRIPT_URL}" TEMP_SCRIPT="/tmp/setup_latest.sh" echo "A baixar a versão mais recente do instalador de: \$UPDATE_SCRIPT_URL" -# Adiciona o --insecure se o repo local estiver configurado para não verificar SSL + SSL_VERIFY_FLAG="" if [ -d "/opt/config_repo/.git" ]; then if [ "\$(cd /opt/config_repo && git config --get http.sslVerify)" == "false" ]; then @@ -213,7 +209,6 @@ fi if curl \$SSL_VERIFY_FLAG -L "\$UPDATE_SCRIPT_URL" -o "\$TEMP_SCRIPT"; then chmod +x "\$TEMP_SCRIPT" echo "Instalador baixado com sucesso. A executar a atualização..." - # Executa o novo instalador. Ele irá pedir as credenciais novamente para reconfigurar. sudo "\$TEMP_SCRIPT" rm "\$TEMP_SCRIPT" echo "Atualização concluída!" @@ -225,7 +220,7 @@ exit 0 EOF # Gera os ficheiros de serviço do systemd -cat > "$SYSTEMD_DIR/proxy-sinc.service" << 'EOF' +cat > ./proxy-sinc.service << 'EOF' [Unit] Description=Serviço de Sincronização de Configurações do Nginx para o Git After=network.target @@ -234,7 +229,7 @@ Type=oneshot ExecStart=/usr/local/sbin/commit_configs.sh EOF -cat > "$SYSTEMD_DIR/proxy-sinc.timer" << 'EOF' +cat > ./proxy-sinc.timer << 'EOF' [Unit] Description=Executa o serviço de sincronização de configurações a cada minuto [Timer] @@ -246,7 +241,7 @@ WantedBy=timers.target EOF # Gera a nova man page -cat > "/tmp/proxy-sinc.8" << 'EOF' +cat > ./proxy-sinc.8 << 'EOF' .TH PROXY-SINC 8 "Setembro 2025" "iT Guys - Equipa de Infraestrutura" "Ferramentas de Sistema" .SH NAME proxy-sinc \- Serviço de versionamento automático de configurações de servidor @@ -306,15 +301,16 @@ O diretório local onde o repositório Git é clonado. EOF # --- 7. Mover ficheiros para os locais corretos e instalar --- +info "A mover os ficheiros para os seus destinos..." # Garante que os diretórios de destino existem mkdir -p "$SCRIPT_INSTALL_DIR" "$SYSTEMD_DIR" "$MAN_DIR" -# Move os ficheiros +# Move os ficheiros gerados mv ./commit_configs.sh "$SCRIPT_INSTALL_DIR/" mv ./proxy-sinc-update "$SCRIPT_INSTALL_DIR/" mv ./proxy-sinc.service "$SYSTEMD_DIR/" mv ./proxy-sinc.timer "$SYSTEMD_DIR/" -mv "/tmp/proxy-sinc.8" "$MAN_DIR/" +mv ./proxy-sinc.8 "$MAN_DIR/" # Define as permissões corretas chmod +x "$SCRIPT_INSTALL_DIR/commit_configs.sh" @@ -345,4 +341,4 @@ info " Para atualizar o serviço no futuro: proxy-sinc-update" info "" info "Para adicionar novos ficheiros/pastas à sincronização, edite:" info " /etc/proxy-sinc/paths.conf" -info "" \ No newline at end of file +info ""