feat(nord): support multi-server NordLynx outbounds (#6311)

* feat(nord): support multi-server NordLynx outbounds

* fix(nord): address verified PR review findings

Tighten the NordVPN multi-outbound implementation and its regression
coverage based on the verified review feedback.

- remove the redundant Xray validation test that duplicated the base
  branch and did not exercise multiple outbounds
- make NordModal tests wait for server loading and assert the modal close
  callback, duplicate-server state, and endpoint behavior
- add coverage for resolving the NordLynx public key from technology
  metadata instead of a numeric technology ID
- use a real httptest server for Nord integration tests through an
  injectable API base URL
- represent the All Cities sentinel consistently as null and reset it
  when a country changes

The existing NordVPN API contracts and persisted outbound schema remain
unchanged.
This commit is contained in:
Masterain
2026-09-03 02:20:10 +08:00
committed by GitHub
parent f727d04f65
commit f9cfd87cb2
23 changed files with 1186 additions and 215 deletions
@@ -92,7 +92,15 @@ WARP. Также можно применить бесплатную лиценз
3x-ui может получать учётные данные NordVPN (NordLynx/WireGuard) из токена доступа
(или принимать приватный ключ напрямую) и выводить список стран/серверов, чтобы вы
могли построить outbound-соединение NordVPN.
могли построить outbound-соединение NordVPN. Откройте
**Xray → Исходящие → Ещё → NordVPN**, войдите или сохраните приватный ключ,
выберите сервер и добавьте исходящее. Можно добавить несколько серверов; каждый
hostname получает уникальный тег `nord-<hostname>` и не может быть добавлен дважды.
**Reset** в строке сохраняет сервер, тег, peer и ссылки маршрутизации, но обновляет
встроенный приватный ключ из текущих сохранённых учётных данных NordVPN. Выход
очищает только сохранённые учётные данные. Существующие исходящие продолжают
использовать встроенные ключи; удаляйте ненужные NordVPN-исходящие в общем списке.
## PIA WireGuard