#!/bin/bash
# Script para diagnosticar erro 413 completo

set -e

echo "=== DIAGNÓSTICO COMPLETO DO ERRO 413 ==="
echo ""

PHP_VERSION="8.2"
NGINX_CONFIG="/etc/nginx/sites-available/gestorstream"

echo "1. VERIFICANDO CONFIGURAÇÃO DO NGINX"
echo "======================================"
echo ""

if [ -f "$NGINX_CONFIG" ]; then
    echo "📄 Arquivo: $NGINX_CONFIG"
    echo ""
    
    echo "🔍 client_max_body_size:"
    grep -n "client_max_body_size" "$NGINX_CONFIG" || echo "  ❌ NÃO ENCONTRADO!"
    echo ""
    
    echo "🔍 Bloco server:"
    grep -A 5 "^server {" "$NGINX_CONFIG" | head -10
    echo ""
    
    echo "🔍 Bloco location /api:"
    grep -A 15 "location /api" "$NGINX_CONFIG" || echo "  ⚠️  Bloco location /api não encontrado"
    echo ""
    
    echo "🔍 Timeouts do proxy:"
    grep -E "proxy_.*_timeout" "$NGINX_CONFIG" || echo "  ⚠️  Timeouts não configurados"
    echo ""
else
    echo "❌ Arquivo não encontrado: $NGINX_CONFIG"
    echo "Procurando configurações alternativas..."
    ls -la /etc/nginx/sites-available/
fi

echo ""
echo "2. VERIFICANDO CONFIGURAÇÕES GLOBAIS DO NGINX"
echo "=============================================="
echo ""

if [ -f "/etc/nginx/nginx.conf" ]; then
    echo "🔍 client_max_body_size no nginx.conf:"
    grep "client_max_body_size" /etc/nginx/nginx.conf || echo "  (não configurado globalmente)"
    echo ""
fi

echo ""
echo "3. VERIFICANDO PHP-FPM"
echo "======================"
echo ""

if [ -f "/etc/php/${PHP_VERSION}/fpm/php.ini" ]; then
    echo "📄 Limites configurados:"
    grep -E "^upload_max_filesize|^post_max_size" "/etc/php/${PHP_VERSION}/fpm/php.ini"
    echo ""
fi

echo ""
echo "4. TESTANDO CONFIGURAÇÃO DO NGINX"
echo "=================================="
echo ""

if nginx -t 2>&1; then
    echo "✅ Configuração do Nginx está válida"
else
    echo "❌ Erro na configuração do Nginx!"
fi

echo ""
echo "5. VERIFICANDO STATUS DOS SERVIÇOS"
echo "==================================="
echo ""

echo "Nginx:"
systemctl is-active nginx && echo "  ✅ Ativo" || echo "  ❌ Inativo"
echo ""

echo "PHP-FPM:"
systemctl is-active php${PHP_VERSION}-fpm && echo "  ✅ Ativo" || echo "  ❌ Inativo"
echo ""

echo ""
echo "6. VERIFICANDO LOGS DO NGINX (últimas 20 linhas)"
echo "================================================="
echo ""

if [ -f "/var/log/nginx/error.log" ]; then
    echo "Últimos erros 413 ou relacionados:"
    tail -20 /var/log/nginx/error.log | grep -i "413\|too large\|client_max" || echo "  (nenhum erro 413 recente)"
else
    echo "⚠️  Arquivo de log não encontrado: /var/log/nginx/error.log"
fi

echo ""
echo "7. VERIFICANDO SE HÁ PROXY REVERSO"
echo "==================================="
echo ""

echo "Domínio: derenbox.one"
echo "Verificando se há Cloudflare ou outro proxy..."
echo ""

# Verificar se há Cloudflare
if command -v curl &> /dev/null; then
    CF_HEADER=$(curl -sI https://derenbox.one | grep -i "cf-\|cloudflare" || echo "")
    if [ -n "$CF_HEADER" ]; then
        echo "⚠️  ATENÇÃO: Possível uso de Cloudflare detectado!"
        echo "Cloudflare Free tem limite de 100MB para uploads."
        echo ""
        echo "Headers encontrados:"
        echo "$CF_HEADER" | head -5
        echo ""
    fi
fi

echo ""
echo "8. RECOMENDAÇÕES"
echo "================"
echo ""

if grep -q "client_max_body_size" "$NGINX_CONFIG" 2>/dev/null; then
    SIZE=$(grep "client_max_body_size" "$NGINX_CONFIG" | head -1 | grep -oE "[0-9]+[MG]" || echo "não encontrado")
    echo "✅ client_max_body_size configurado: $SIZE"
    
    if [[ "$SIZE" == *"M" ]] && [[ "${SIZE%M}" -lt 1024 ]]; then
        echo "⚠️  Valor menor que 1GB. Considere aumentar."
    fi
else
    echo "❌ client_max_body_size NÃO está configurado!"
    echo "   Execute: corrigir-limites-upload-backup.sh"
fi

echo ""
echo "=== FIM DO DIAGNÓSTICO ==="
echo ""
echo "📝 PRÓXIMOS PASSOS:"
echo "1. Se client_max_body_size não estiver configurado, execute: sudo ./corrigir-limites-upload-backup.sh"
echo "2. Se estiver usando Cloudflare, considere desabilitar proxy para uploads ou usar método alternativo"
echo "3. Verifique o tamanho do arquivo: ls -lh /caminho/do/backup.sql"
echo "4. Tente reiniciar Nginx: sudo systemctl restart nginx"
