Backend: REST API статуса туннеля awg0 #10

Open
opened 2026-10-18 22:18:01 +03:00 by embeddevio · 0 comments
Owner

Владелец: backend-engineer | Оценка: 5 SP | Приоритет: P1

Часть эпика #9 (панель состояния VPN-туннеля).

Scope

Реализовать GET /api/v1/tunnel/status, читающий состояние интерфейса awg0 и внешний IP; контракт — OpenAPI spec в репозитории.

Acceptance criteria

  • GIVEN интерфейс awg0 поднят, WHEN выполняется GET /api/v1/tunnel/status, THEN возвращается 200 и JSON {status:"up", peer_endpoint, external_ip, last_handshake_at, error:null}.
  • GIVEN awg0 отсутствует или down, WHEN выполняется тот же запрос, THEN возвращается 200 c status:"down" и непустым error, без 5xx.
  • GIVEN внешний IP недоступен, WHEN запрос обрабатывается, THEN отдаётся last-known IP или null с указанием причины, таймаут запроса < 3s.

Definition of Done

  • OpenAPI spec обновлён и валиден.
  • Unit-тесты на парсинг wg show/аналога и на оба статуса; покрытие нового кода ≥70%.
  • CI зелёный.
Владелец: backend-engineer | Оценка: 5 SP | Приоритет: P1 Часть эпика #9 (панель состояния VPN-туннеля). ## Scope Реализовать `GET /api/v1/tunnel/status`, читающий состояние интерфейса awg0 и внешний IP; контракт — OpenAPI spec в репозитории. ## Acceptance criteria - GIVEN интерфейс awg0 поднят, WHEN выполняется `GET /api/v1/tunnel/status`, THEN возвращается 200 и JSON `{status:"up", peer_endpoint, external_ip, last_handshake_at, error:null}`. - GIVEN awg0 отсутствует или down, WHEN выполняется тот же запрос, THEN возвращается 200 c `status:"down"` и непустым `error`, без 5xx. - GIVEN внешний IP недоступен, WHEN запрос обрабатывается, THEN отдаётся last-known IP или `null` с указанием причины, таймаут запроса < 3s. ## Definition of Done - OpenAPI spec обновлён и валиден. - Unit-тесты на парсинг `wg show`/аналога и на оба статуса; покрытие нового кода ≥70%. - CI зелёный.
embeddevio added the backend label 2026-10-18 22:18:01 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: embeddevio/awg-dash#10