ctf-ad-mirror-tool-rust/docs/configuration.md

5.1 KiB
Raw Blame History

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

Где хранится

Обычный запуск: ./target/release/mirror-tool --config mirror.toml. Шаблон — mirror.example.toml; файл выбирается флагом --config.

Локальное демо этого проекта использует data/demo/mirror.toml, а изменения из панели — data/demo/state.json. Оба файла исключены из Git. Это тестовая конфигурация loopback с публичным тестовым паролем, не конфигурация для игры.

В [web] задаётся state_file. Относительный путь считается от каталога TOML. После первого сохранения из UI список команд/сервисов загружается из state-файла, а сеть, мониторинг, web и scoreboard — по-прежнему из TOML. Изменение [[teams]] или [[services]] в TOML не заменяет существующее сохранённое состояние. Чтобы заново импортировать стартовую топологию, остановите процесс, переместите state-файл в резервную копию и запустите процесс снова. Не удаляйте рабочее состояние во время работы.

ForcAD

  1. В начало TOML, перед секциями, добавьте адрес своей команды:

    main_team_ip = "192.0.2.10"
    
  2. Добавьте секцию с адресом scoreboard вашей авторизованной игры:

    [scoreboard]
    kind = "forcad"
    url = "http://scoreboard.example:8080"
    poll_interval_ms = 3000
    stale_after_ms = 15000
    

    Это примеры адресов, их нужно заменить. Используется Engine.IO 4 / Socket.IO namespace /game_events; URL задаётся корневой, без /socket.io, query и токенов. ForcAD-соединение постоянное; poll_interval_ms не означает новый handshake каждые 3 секунды. После изменения TOML нужен перезапуск процесса.

  3. Через «Команды» добавьте IP каждой команды и точное имя из scoreboard. Название сервиса тоже должно совпадать с именем задания в scoreboard. IP существующей команды менять нельзя: добавьте новую и выберите её в маршруте. Для прямого IP у custom-прокси отдельная команда не нужна.

  4. В настройках сервиса (клик по названию) задайте адрес/порт слушателя и реальный upstream-порт. Например, прокси 0.0.0.0:18080, сервис команд 8080. Кружок выбирает primary; строка — реплику. Затем включите прокси.

  5. Робот включает автоматический выбор из назначенных реплик. Статус TCP, свежесть scoreboard и cooldown влияют на решение. Открытые TCP-сессии сохраняют прежний upstream, новые используют выбранный. Системные маршруты не меняются.

Кнопка ⓘ показывает состояние scoreboard и краткую инструкцию. Верхняя полоска сервиса относится к своей команде (main_team_ip), а не к выбранному upstream. Серый статус означает отсутствие свежих данных, а не успех checker.

Пароль обычного процесса задаётся в MIRROR_PASSWORD (минимум 12 символов), не в TOML. Тестовый fixture для настоящей игры не используйте; запускайте бинарник напрямую с собственным конфигом и паролем. Реальная игра этой проверкой не затрагивалась.

Повторяемое локальное демо

python3 scripts/ui_fixture.py target/release/mirror-tool --data-dir data/demo

Утилита сохраняет существующий TOML/state и не перезаписывает их. Без --data-dir всё состояние временное. Для отдельной проверки используйте --port-offset 100: панель 16800, proxy 18181, echo upstream 18182. Не запускайте второй fixture на тех же портах или с той же папкой состояния. Смещение применяется к новому шаблону; у существующего TOML порты остаются как записано в файле.