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
@@ -84,7 +84,14 @@ with a routing rule.
3x-ui can fetch NordVPN (NordLynx/WireGuard) credentials from an access token (or
accept a private key directly) and list countries/servers, so you can build a
NordVPN outbound.
NordVPN outbound. Open **Xray → Outbounds → More → NordVPN**, sign in or save a
private key, select a server, and add the outbound. You can add several servers;
each hostname has a unique `nord-<hostname>` tag and cannot be added twice.
**Reset** on an added row keeps its server, tag, peer, and routing references but
refreshes its embedded private key from the currently stored NordVPN credentials.
Logout clears only those stored credentials. Existing outbounds continue to use
their embedded keys; remove unused NordVPN outbounds from the Outbounds list.
## PIA WireGuard