Программа для автоматизированного управления конфигурациями WAF
Find a file
2026-05-15 16:30:50 +03:00
.gitignore Work version 2026-02-24 12:08:59 +03:00
api.go Change place fallback 2026-04-17 15:04:36 +03:00
ARCHITECTURE.md Added webcheck to db 2026-05-14 17:09:15 +03:00
config.go Change timings 2026-03-13 12:25:51 +03:00
containers_part1.go Change port check 2026-05-15 15:45:55 +03:00
containers_part2.go Added webcheck to db 2026-05-14 17:06:12 +03:00
DATABASE_SCHEMA.md Added webcheck to db 2026-05-14 17:09:15 +03:00
db.go Added webcheck to db 2026-05-14 17:06:12 +03:00
drain.go Change real_ip 2026-04-24 17:44:32 +03:00
go.mod Rename module 2026-03-02 11:44:29 +03:00
go.sum Rename module 2026-03-02 11:44:29 +03:00
LICENSE Added license 2026-03-24 17:59:13 +03:00
main.go Remove check ports for new containers 2026-05-05 13:08:22 +03:00
nginx.go Added down 2026-05-15 16:30:50 +03:00
ports.go Fix ports for docker 2026-04-09 15:41:54 +03:00
ptaf_processor.go Change real_ip 2026-04-24 17:44:32 +03:00
README.md Renew docs 2026-04-16 15:21:59 +03:00
sw_processor.go Added custom error 2026-04-01 12:52:09 +03:00
types.go Added webcheck to db 2026-05-14 17:06:12 +03:00
utils.go Change real_ip 2026-04-24 17:44:32 +03:00

Magos

Программа для автоматизированного управления конфигурациями Angie, PTAF Nginx, SolidWall Nginx и Docker Compose.

Описание

Программа выполняет следующие задачи:

  1. Подключается к PostgreSQL БД (primary/secondary fallback)
  2. Определяет instances текущего хоста по hostname
  3. Для каждого клиента определяет WAF-вендор (PTAF или SolidWall)
  4. Для PTAF-клиентов:
    • Проверяет наличие Docker-образа, при необходимости скачивает
    • Выделяет свободные порты для контейнеров
    • Генерирует конфигурационные файлы Angie и Nginx
    • Создаёт docker-compose.yml и запускает контейнеры
    • Управляет graceful drain при масштабировании и миграции
  5. Для SolidWall-клиентов:
    • Генерирует конфигурационные файлы solidwall-nginx
    • Выполняет reload solidwall-nginx при изменениях
  6. Поддерживает идемпотентность — повторный запуск без изменений в БД не вносит изменений

Конфигурация

Конфигурационный файл: /etc/magos/magos.env

# База данных
DB_USER=login
DB_PASSWORD=password
DB_NAME=waf_info
DB_PORT=5432
PRIMARY_DB_HOST=10.100.10.8
SECONDARY_DB_HOST=10.100.13.5

# Docker-образ PTAF (глобальный)
DOCKER_IMAGE=ptaf-core-nginx-agent:release-4.3.1.431839-debian-bullseye-nginx-1.28.0
DOCKER_IMAGE_URL=https://example.com/image.tar

# Параметры Nginx
WORKER_PROCESSES=4
WORKER_CONNECTIONS=64000

Требования к хосту

Для корректной работы на PTAF-хостах необходимо зарезервировать диапазон портов:

# Добавить в /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports=18000-23999

# Применить немедленно
sysctl -w net.ipv4.ip_local_reserved_ports=18000-23999

Подробности

Изучить как работает программа можно в файле ARCHITECTURE.md.

Посмотреть зависимость работы программы от БД в файле DATABASE_SCHEMA.md.

Диагностика

Lock-файл завис

# Просмотреть PID
cat /var/lock/ptaf-main.lock

# Если процесс не существует — magos удалит lock автоматически при следующем запуске
# Если процесс завис — завершить вручную
kill {PID} && rm /var/lock/ptaf-main.lock

Переназначить порты контейнера

rm /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent*/.ports.json
# При следующем запуске magos порты будут перевыделены

Принудительно пересоздать контейнер

# Удалить контейнер — magos создаст новый при следующем запуске
docker-compose -f /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent001/docker-compose.yml down