feat(lookup): resolve domain to IPs for membership check
CI / changes (push) Successful in 5s
CI / commitlint (push) Skipped
CI / openapi (push) Successful in 28s
CI / web (push) Successful in 1m6s
CI / go (push) Successful in 57s
CI / bird2 (push) Successful in 15s
CI / release (push) Successful in 4m6s
CI / changes (push) Successful in 5s
CI / commitlint (push) Skipped
CI / openapi (push) Successful in 28s
CI / web (push) Successful in 1m6s
CI / go (push) Successful in 57s
CI / bird2 (push) Successful in 15s
CI / release (push) Successful in 4m6s
Для FQDN после проверки DOMAINS выполняется live DNS (A/AAAA), каждый IP проверяется по IP_RANGES и snapshots; в ответе resolved_ips / resolved_ip, UI KPI и OpenAPI обновлены. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
+15
-2
@@ -813,6 +813,11 @@ components:
|
||||
community_title:
|
||||
type: string
|
||||
description: Человекочитаемое название community.
|
||||
resolved_ip:
|
||||
type: string
|
||||
description: |
|
||||
IP, полученный DNS-resolve domain-запроса, из-за которого появился этот матч.
|
||||
Пусто для прямого IP-запроса и для FQDN entry/snapshot без resolve.
|
||||
|
||||
LookupResponse:
|
||||
type: object
|
||||
@@ -842,6 +847,11 @@ components:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/LookupMatch"
|
||||
resolved_ips:
|
||||
type: array
|
||||
description: IP-адреса после live DNS resolve (только для query_kind=domain; A/AAAA).
|
||||
items:
|
||||
type: string
|
||||
|
||||
BgpPeer:
|
||||
type: object
|
||||
@@ -1882,12 +1892,15 @@ paths:
|
||||
- **IP** — слой `entry` (`IP_RANGES`, `CIDR.Contains`) и слой `snapshot`
|
||||
(все module prefix snapshots, `Prefix.Contains`);
|
||||
- **Domain** — слой `entry` (нормализованный FQDN в `DOMAINS`) и слой `snapshot`
|
||||
(префиксы `source=domain` у matched DOMAINS-модулей, если snapshot есть).
|
||||
(префиксы `source=domain` у matched DOMAINS-модулей, если snapshot есть);
|
||||
затем **live DNS resolve** (A/AAAA через системный резолвер) и проверка
|
||||
каждого полученного IP так же, как для IP-запроса (ranges + все snapshots).
|
||||
|
||||
Community на матче: `entry.community_id || module.default_community_id` (entry)
|
||||
или `PrefixRow.community_id` (snapshot), с join к справочнику communities.
|
||||
|
||||
Live DoH resolve не выполняется — только уже материализованный snapshot.
|
||||
Поля `resolved_ips` / `resolved_ip` заполняются только для domain-запросов
|
||||
(после успешного DNS). Ошибка DNS не даёт 5xx: FQDN-слой всё равно возвращается.
|
||||
operationId: lookupMembership
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/TenantId"
|
||||
|
||||
Reference in New Issue
Block a user