23 lines
2.6 KiB
Markdown
23 lines
2.6 KiB
Markdown
# Итоги: форматы вывода, агрегация 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`).
|