Normalize base address in Node class to ensure consistent URI formatting
CI / Backend (build + test) (push) Successful in 1m25s
CI / Frontend (lint + typecheck + build) (push) Successful in 33s

- Implemented `NormalizeBaseAddress` method to add a trailing slash to the `BaseAddress` when necessary, preventing issues with relative path merging in 3x-ui deployments.
- Updated `Register` and `UpdateAddress` methods to utilize the normalization logic, ensuring that both methods handle base address input consistently.
- Added unit tests to verify the normalization behavior for various input scenarios, enhancing the reliability of node address management.
- Updated domain model documentation to reflect the new normalization behavior for `BaseAddress`.
This commit is contained in:
Leonid Pershin
2026-07-23 10:55:17 +03:00
parent c4bc6ff04b
commit 2f6bb26e97
3 changed files with 41 additions and 2 deletions
+7
View File
@@ -55,6 +55,13 @@ AppUser
конфиги на ноде запрещены, но **существующие не трогаем** (клиенты остаются в 3x-ui). Статус ноды
показываем пользователю как индикатор «состояние сервера».
`BaseAddress` **нормализуется к завершающему `/`** (`Register`/`UpdateAddress`) — 3x-ui часто стоит за
нестандартным base path (`webBasePath`, напр. `https://host/benis`, панель тогда доступна по
`/benis/panel/...`); без завершающего слэша относительное объединение пути (RFC 3986 merge) отбрасывает
последний сегмент базы вместо добавления к нему, роняя `/benis` из итогового URL при запросах к панели.
Нормализация — единственная защита от этого на уровне PnvPanel; админ может вводить адрес и со слэшем,
и без него — результат одинаковый.
### Inbound — прокси-inbound на ноде
Проекция inbound из 3x-ui; определяет протокол и параметры подключения.