Spaces:
Sleeping
Sleeping
| set -e | |
| echo "🚀 Запуск Security Tools MCP Collection..." | |
| # Функция для ожидания запуска сервиса | |
| wait_for_service() { | |
| local port=$1 | |
| local service_name=$2 | |
| local max_attempts=30 | |
| local attempt=1 | |
| echo "⏳ Ожидание запуска $service_name на порту $port..." | |
| while [ $attempt -le $max_attempts ]; do | |
| if curl -f http://localhost:$port/health 2>/dev/null || curl -f http://localhost:$port 2>/dev/null; then | |
| echo "✅ $service_name запущен на порту $port" | |
| return 0 | |
| fi | |
| echo " Попытка $attempt/$max_attempts для $service_name..." | |
| sleep 2 | |
| attempt=$((attempt + 1)) | |
| done | |
| echo "❌ Не удалось дождаться запуска $service_name" | |
| return 1 | |
| } | |
| # Экспортируем переменные окружения для MCP серверов | |
| export GRADIO_SERVER_NAME=${GRADIO_SERVER_NAME:-0.0.0.0} | |
| # Запускаем Bandit MCP сервер в фоне | |
| echo "🔒 Запуск Bandit Security Scanner..." | |
| export GRADIO_SERVER_PORT=7861 | |
| python bandit_mcp.py & | |
| BANDIT_PID=$! | |
| # Запускаем Detect Secrets MCP сервер в фоне | |
| echo "🔍 Запуск Detect Secrets Scanner..." | |
| export GRADIO_SERVER_PORT=7862 | |
| python detect_secrets_mcp.py & | |
| DETECT_SECRETS_PID=$! | |
| # Запускаем Pip Audit MCP сервер в фоне | |
| echo "🛡️ Запуск Pip Audit Scanner..." | |
| export GRADIO_SERVER_PORT=7863 | |
| python pip_audit_mcp.py & | |
| PIP_AUDIT_PID=$! | |
| # Запускаем Circle Test MCP сервер в фоне | |
| echo "📋 Запуск Circle Test Scanner..." | |
| export GRADIO_SERVER_PORT=7864 | |
| python circle_test_mcp.py & | |
| CIRCLE_TEST_PID=$! | |
| # Запускаем Semgrep MCP сервер в фоне | |
| echo "🔍 Запуск Semgrep Scanner..." | |
| export GRADIO_SERVER_PORT=7865 | |
| python semgrep_mcp.py & | |
| SEMGREP_PID=$! | |
| # Даем серверам время на запуск | |
| echo "⏳ Ожидание запуска всех MCP серверов..." | |
| sleep 10 | |
| # Проверяем что все серверы запустились | |
| wait_for_service 7861 "Bandit" | |
| wait_for_service 7862 "Detect Secrets" | |
| wait_for_service 7863 "Pip Audit" | |
| wait_for_service 7864 "Circle Test" | |
| wait_for_service 7865 "Semgrep" | |
| # Функция для корректного завершения всех процессов | |
| cleanup() { | |
| echo "🛑 Завершение всех сервисов..." | |
| kill $BANDIT_PID $DETECT_SECRETS_PID $PIP_AUDIT_PID $CIRCLE_TEST_PID $SEMGREP_PID 2>/dev/null || true | |
| wait $BANDIT_PID $DETECT_SECRETS_PID $PIP_AUDIT_PID $CIRCLE_TEST_PID $SEMGREP_PID 2>/dev/null || true | |
| echo "✅ Все сервисы завершены" | |
| } | |
| # Регистрируем обработчик сигналов | |
| trap cleanup SIGTERM SIGINT | |
| # Запускаем главный агент на порту 7860 | |
| echo "🎯 Запуск главного Security Tools Agent..." | |
| export GRADIO_SERVER_PORT=7860 | |
| python main.py | |
| # Если main.py завершился, останавливаем все остальные сервисы | |
| cleanup |