[3.14.2] - 2026-04-09
Fixed
- Socket leaks —
tcp_connect()and_get_cert_der()now use context managers to ensure cleanup on exception paths. - nginx
return 444in HTTP block — invalid stream directive replaced withreturn 403;for IP-mode deployments. - WARP deploy silent failures —
systemctl enable,set-proxy-port, andwarp-cli connectreturn codes now checked; step fails instead of claiming success. - Firewall policy silent failures —
ufw default deny/allowreturn codes now checked in both exit and relay firewall steps. - Reality port conflict — standalone mode now pre-checks port 443 availability before creating Xray inbound.
- SSRF in icon download —
_process_image_url()now blocks private/loopback/reserved IP addresses. - IPv6 URL formatting — protocol URL builders now wrap IPv6 addresses in brackets per RFC 3986.
- Fragile tmp_zip cleanup —
ensure_xray_binary()uses reliableNoneinit instead of"in dir()"check. - Broad exception handlers — narrowed
except Exceptionto specific types in QR generation, HTTP date parsing, and version checking. - Redundant branding condition — removed duplicate check in deploy setup.
SystemExitcatch anti-pattern — addedtry_resolve_server()wrapper; uninstall command uses the safer pattern.- E2E Docker image — added missing
fail2banpackage that was breaking CI.
Improved
- Type annotations —
_deploy_client_page()now has typedlist[ProtocolURL]andlist[RelayURLSet]parameters. - Test coverage — added 80 new tests: branding module (37), xray_client module (35), render template content assertions (8). Total: 721 tests.