[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-21 00:06:52
This commit is contained in:
parent
58ee75dbb6
commit
17da1b2d92
|
|
@ -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'."
|
|
||||||
Loading…
Reference in New Issue