
#!/bin/bash

# Скрипт для проверки сетевой связности с Traefik

source .env 2>/dev/null || true

TRAEFIK_HOST=${TRAEFIK_HOST:-192.168.50.59}
APP_PORT=${APP_PORT:-3000}

echo "🔍 Проверка сетевой связности..."
echo ""

# Получаем IP адреса текущего хоста
echo "📍 IP адреса текущего хоста:"
hostname -I
echo ""

# Проверка доступности локально
echo "🏠 Проверка локального доступа (localhost:${APP_PORT})..."
if curl -s -o /dev/null -w "%{http_code}" http://localhost:${APP_PORT} | grep -q "200"; then
    echo "✅ Приложение доступно локально"
else
    echo "❌ Приложение НЕ доступно локально"
    echo "   Проверьте: docker compose ps"
fi
echo ""

# Проверка доступности контейнера
echo "🐳 Статус контейнера:"
docker compose ps 2>/dev/null || echo "⚠️  Docker Compose не запущен"
echo ""

# Проверка порта
echo "🔌 Проверка открытых портов:"
if command -v netstat &> /dev/null; then
    netstat -tulpn | grep ${APP_PORT} || echo "⚠️  Порт ${APP_PORT} не прослушивается"
elif command -v ss &> /dev/null; then
    ss -tulpn | grep ${APP_PORT} || echo "⚠️  Порт ${APP_PORT} не прослушивается"
fi
echo ""

# Инструкции для проверки с Traefik хоста
echo "📋 Для проверки доступности с хоста Traefik (${TRAEFIK_HOST}):"
echo ""
echo "   Выполните на хосте ${TRAEFIK_HOST}:"
echo "   curl http://\${APP_HOST_IP}:${APP_PORT}"
echo ""
echo "   Где \${APP_HOST_IP} - один из IP адресов выше"
echo ""

# Проверка файрвола
echo "🔥 Проверка файрвола (UFW):"
if command -v ufw &> /dev/null; then
    sudo ufw status 2>/dev/null || echo "⚠️  UFW не установлен или требует sudo"
else
    echo "⚠️  UFW не установлен"
fi
echo ""

echo "💡 Рекомендации:"
echo "   1. Убедитесь, что порт ${APP_PORT} открыт для ${TRAEFIK_HOST}"
echo "   2. Проверьте файрвол: sudo ufw allow from ${TRAEFIK_HOST} to any port ${APP_PORT}"
echo "   3. Используйте один из IP адресов выше в конфигурации Traefik"
