Files
ripe-cidr-collector/docs/summary-output-formats.md
ayurishchevandClaude Sonnet 5 bcf8156085 Initial commit: RIPE CIDR/FQDN collector
Collector daemon, FastAPI server (addresses, diff, collect, sources),
SQLite storage with change journal, Docker Compose deployment,
tests, documentation and project rules.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 07:29:38 +03:00

2.6 KiB
Raw Permalink Blame History

Итоги: форматы вывода, агрегация CIDR, ip_version

План: docs/plan-output-formats.md.

Сделано

  • formatters.py (новый): фильтр по версии IP, агрегация (ipaddress.collapse_addresses, отдельно v4/v6, после объединения источников), рендер nftables, mikrotik, bird, frr. Все скрипты идемпотентны (замена списка при повторном применении).
  • GET /addresses: новые параметры format, ip_version, aggregate, name (валидация имени защищает от подстановки в конфиг, ошибки -> 422). Ответ по умолчанию не изменился.
  • README: таблица параметров, форматы и способы применения.
  • Тесты: tests/test_formats.py (3 теста, параметризованный на 4 формата). Всего 9 тестов, все в контейнере: 9 passed.

Проверка

  • На реальных данных ответы type=all|cidr|fqdn без параметров побайтно совпадают с прежними.
  • Агрегация: 26 -> 14 записей; ip_version=6 отдаёт только IPv6.
  • Генерируемые конфиги: BIRD (bird -p, Debian 12) - OK; nftables (nft -c, Alpine) - OK.
  • В процессе проверки найдена и исправлена ошибка: BIRD не принимает запятую после последнего элемента [...] (теперь запятые только между элементами).

Не проверено

  • MikroTik и FRR не проверялись на реальном ПО (эмулятора нет), синтаксис сверен по документации. В FRR нужно убедиться, что no ip prefix-list <name> для ещё не существующего списка не даёт ошибку при vtysh -f; если даёт - убрать эту строку или применять с -m.
  • Нет тестов на очень большие списки (десятки тысяч записей).

Замечания

  • Формат json с aggregate=true печатает /32 и /128 как «голый» IP.
  • nftables: имя таблицы совпадает с name; свои правила пользователь добавляет в эту же таблицу (или создаёт набор в своей, изменив name).