Update package versions and enhance IXuiPanelGateway interface
CI / Backend (build + test) (push) Failing after 55s
CI / Frontend (lint + typecheck + build) (push) Successful in 34s

- Updated the version of `ThreeXui.Net` to 1.0.2 in `Directory.Packages.props`.
- Enhanced the `IXuiPanelGateway` interface to include detailed documentation on the new `ForcedFingerprint` and `ForcedPacketEncoding` parameters for the `BuildConnectionStringAsync` method, clarifying their roles in client application interactions.
- Refactored `XuiPanelGateway` to implement the new parameters, ensuring compatibility with client requirements for TLS fingerprinting and packet encoding based on transport type.
- Updated architecture documentation to reflect changes in connection string handling and the implications for client applications.
This commit is contained in:
Leonid Pershin
2026-07-23 00:24:02 +03:00
parent 29291b5dec
commit fb320fbb31
4 changed files with 79 additions and 106 deletions
+6 -4
View File
@@ -173,10 +173,12 @@ POST /api/configs
- Синхронизация инбаундов ноды (`SyncNodeCommandHandler`) реконсилирует пропажу инбаунда с панели:
без привязанных конфигов запись удаляется, с конфигами — помечается `IsAvailable=false` (детали и
инварианты — [domain-model.md](domain-model.md#inbound--прокси-inbound-на-ноде)).
- `BuildConnectionStringAsync` поверх ссылки из `ThreeXui.Net` принудительно подставляет
`fp=firefox` (TLS-fingerprint клиента) для tls/reality-ссылок vless/trojan/vmess, независимо
от того, что задано в `streamSettings` ноды; shadowsocks (без TLS) и ссылки без security не
трогает. Правится в одном месте — применяется и к сайту, и к боту, и к подписке.
- `BuildConnectionStringAsync` передаёт в `ThreeXui.Net` (`XuiConnectionStringRequest.ForcedFingerprint:
"firefox"`) принудительный TLS-fingerprint клиента для tls/reality-ссылок vless/trojan/vmess,
независимо от того, что задано в `streamSettings` ноды; shadowsocks (без TLS) и ссылки без security
библиотека не трогает. Для транспорта `xhttp` дополнительно передаётся
`ForcedPacketEncoding: "xudp"` (не 3x-ui-настройка, а требование части клиентских приложений).
Правится в одном месте — применяется и к сайту, и к боту, и к подписке.
- **Дрейф с 3x-ui активно не реконсилируется**: `TrafficSyncService` при недоступной ноде или
при отсутствии клиента в ответе панели (`GetClientTrafficAsync`) просто пропускает его в этом цикле
синхронизации — не помечает конфиг рассинхронизованным и не шлёт алерт. Если клиента удалили прямо