diff --git a/nginx/sites-available/add_error_pages.sh b/nginx/sites-available/add_error_pages.sh deleted file mode 100755 index e6600c6..0000000 --- a/nginx/sites-available/add_error_pages.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -# ============================================================================== -# SCRIPT PARA ADICIONAR O SNIPPET DE ERROS PERSONALIZADOS -# -# Descrição: Este script percorre todos os ficheiros de configuração de site -# em /etc/nginx/sites-available/ e adiciona a diretiva -# 'include /etc/nginx/snippets/custom_errors.conf;' aos blocos -# de servidor HTTPS (porta 443). -# ============================================================================== - -set -e - -# --- Variáveis de Configuração --- -SITES_DIR="/etc/nginx/sites-available" -SNIPPET_PATH="/etc/nginx/snippets/custom_errors.conf" -SNIPPET_LINE="include ${SNIPPET_PATH}; # Carrega as páginas de erro personalizadas" - -# --- Funções de Ajuda --- -info() { echo -e "\e[32m[INFO]\e[0m $1"; } -warn() { echo -e "\e[33m[AVISO]\e[0m $1"; } - -# --- Início da Execução --- -info "Iniciando o processo de adição do snippet de erros..." - -if [ "$EUID" -ne 0 ]; then - echo "ERRO: Este script precisa de ser executado como root." >&2 - exit 1 -fi - -# Verifica se o ficheiro do snippet existe antes de continuar. -if [ ! -f "$SNIPPET_PATH" ]; then - echo "ERRO: O ficheiro do snippet '${SNIPPET_PATH}' não foi encontrado." >&2 - echo "Por favor, crie o ficheiro de snippet antes de executar este script." >&2 - exit 1 -fi - -# Percorre cada ficheiro de configuração no diretório de sites disponíveis. -for file in "$SITES_DIR"/*.conf; do - # Verifica se é um ficheiro regular. - if [[ ! -f "$file" ]]; then - continue - fi - - # Usa 'awk' para processar o ficheiro. - # Esta abordagem é mais segura do que 'sed' para inserções complexas. - awk -v snippet_line=" ${SNIPPET_LINE}" ' - BEGIN { - in_https_server_block = 0 - snippet_added = 0 - } - - # Verifica se a linha já existe no ficheiro para evitar duplicação. - /include \/etc\/nginx\/snippets\/custom_errors.conf;/ { - snippet_exists = 1 - } - - # Deteta o início de um bloco 'server' que escuta na porta 443. - /server *{/ { - # Lê as próximas linhas para ver se contêm 'listen 443 ssl'. - getline line1 - getline line2 - if (line1 ~ /listen 443 ssl/ || line2 ~ /listen 443 ssl/) { - in_https_server_block = 1 - } - # Imprime as linhas que já lemos. - print $0 - print line1 - print line2 - next - } - - # Deteta o fim de um bloco de servidor. - /}/ { - if (in_https_server_block) { - in_https_server_block = 0 - } - } - - # Se estivermos dentro de um bloco HTTPS e encontrarmos a linha 'server_name', - # adicionamos o nosso snippet depois dela. - /server_name/ { - print $0 - if (in_https_server_block && !snippet_added && !snippet_exists) { - print snippet_line - snippet_added = 1 - } - next - } - - # Imprime todas as outras linhas. - { print } - - ' "$file" > "${file}.tmp" && sudo mv "${file}.tmp" "$file" - - # Informa o utilizador sobre o que foi feito. - if grep -q "include ${SNIPPET_PATH};" "$file"; then - info "Snippet de erros verificado/adicionado em: $(basename "$file")" - fi -done - -echo "" -info "Processo concluído!" -info "Por favor, teste a sua nova configuração com 'sudo nginx -t' e depois recarregue com 'sudo systemctl reload nginx'."