83 lines
2.4 KiB
Bash
83 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Скрипт запуска BGP сервера
|
|
|
|
set -e
|
|
|
|
echo "Starting BGP Server..."
|
|
|
|
# Создание директорий если не существуют
|
|
mkdir -p /app/logs
|
|
mkdir -p /app/run
|
|
mkdir -p /run/exabgp
|
|
mkdir -p /app/data
|
|
|
|
# Создание named pipes для CLI в стандартном месте
|
|
if [ ! -p "/run/exabgp/exabgp.in" ] || [ ! -p "/run/exabgp/exabgp.out" ]; then
|
|
echo "Creating named pipes for ExaBGP CLI..."
|
|
mkfifo /run/exabgp/exabgp.in /run/exabgp/exabgp.out
|
|
chmod 600 /run/exabgp/exabgp.in /run/exabgp/exabgp.out
|
|
fi
|
|
|
|
# Также создаем в /app/run для совместимости
|
|
if [ ! -p "/app/run/exabgp.in" ] || [ ! -p "/app/run/exabgp.out" ]; then
|
|
echo "Creating named pipes in /app/run for compatibility..."
|
|
mkfifo /app/run/exabgp.in /app/run/exabgp.out
|
|
chmod 600 /app/run/exabgp.in /app/run/exabgp.out
|
|
fi
|
|
|
|
# Проверка наличия файлов с префиксами
|
|
if [ ! -f "/app/data/prefixes.txt" ]; then
|
|
echo "Warning: /app/data/prefixes.txt not found. Creating empty file."
|
|
echo "# Default prefixes file" > /app/data/prefixes.txt
|
|
echo "192.168.1.0/24" >> /app/data/prefixes.txt
|
|
fi
|
|
|
|
echo "Prefixes file content:"
|
|
cat /app/data/prefixes.txt
|
|
echo "---"
|
|
|
|
# Генерация конфигурации из переменных окружения
|
|
echo "Generating ExaBGP configuration from environment variables..."
|
|
python3 /app/scripts/generate_config.py
|
|
|
|
# Проверка конфигурации
|
|
echo "Validating ExaBGP configuration..."
|
|
echo "Configuration file content:"
|
|
cat /app/exabgp.conf
|
|
echo "---"
|
|
exabgp --validate /app/exabgp.conf
|
|
|
|
# Запуск ExaBGP в фоновом режиме
|
|
echo "Starting ExaBGP..."
|
|
exabgp /app/exabgp.conf &
|
|
|
|
# Сохранение PID
|
|
EXABGP_PID=$!
|
|
echo $EXABGP_PID > /app/logs/exabgp.pid
|
|
|
|
# Ожидание запуска
|
|
sleep 5
|
|
|
|
# Проверка статуса
|
|
if kill -0 $EXABGP_PID 2>/dev/null; then
|
|
echo "ExaBGP started successfully with PID: $EXABGP_PID"
|
|
else
|
|
echo "Failed to start ExaBGP"
|
|
exit 1
|
|
fi
|
|
|
|
# Функция для graceful shutdown
|
|
cleanup() {
|
|
echo "Shutting down BGP server..."
|
|
if [ -f "/app/logs/exabgp.pid" ]; then
|
|
kill $(cat /app/logs/exabgp.pid) 2>/dev/null || true
|
|
fi
|
|
exit 0
|
|
}
|
|
|
|
# Обработка сигналов
|
|
trap cleanup SIGTERM SIGINT
|
|
|
|
# Ожидание завершения
|
|
wait $EXABGP_PID |