fix(sub): make Happ require auth on its local SOCKS/HTTP proxy (#6628)

Happ ships its local SOCKS5 (127.0.0.1:10808) and HTTP inbounds with
authorization disabled by default. Any app on the same device can then
connect to that proxy, bypassing Android's per-app VPN routing, and learn
the VPN server address - the leak publicly described in March-April 2026
for Happ, v2rayNG and other VLESS clients. Happ fixed its Xray API
exposure, but the unauthenticated local proxy remained.

Happ exposes a standard subscription header for this (no Provider ID
required): socks-auth-mode / http-auth-mode = auto|manual|from-json|
disable. A new subscription setting, subHappLocalProxyAuth (default
"auto"), sends both headers to Happ clients. Like every other Happ header
it is emitted only when Happ auto-detect is enabled and the User-Agent is
Happ, so panels that never opted into the Happ integration see no change.
An empty value sends nothing and keeps the client's own setting.

Verified on Happ Android 4.4.1 (Xray 26.7.28): a subscription carrying
socks-auth-mode manual + a test user/password switched the client's
Inbounds screen to Manual with those credentials on "refresh subscription",
and "auto" switched it to Auto with generated credentials.

Co-authored-by: Kirill Rudenko <rudenko@npp-energy.ru>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
This commit is contained in:
Kirill Rudenko
2026-09-26 23:03:20 +03:00
committed by GitHub
parent 8979072bd9
commit 6ab718f813
27 changed files with 162 additions and 0 deletions
+5
View File
@@ -1558,6 +1558,11 @@
"subHappColorProfileDesc": "iOS 用のカスタムカラーテーマを JSON 文字列で指定します。デフォルトの色に戻すには resetcolors を指定します。",
"subHappPingType": "遅延の測定方法",
"subHappPingTypeDesc": "Happ がノードの遅延を測定する方法: プロキシ経由 (GET または HEAD)、TCP、または ICMP。",
"subHappLocalProxyAuth": "ローカルプロキシの認証",
"subHappLocalProxyAuthDesc": "Happ に socks-auth-mode / http-auth-mode を送信します。認証がないと、端末上のどのアプリも Happ のローカル SOCKS5/HTTP プロキシ経由でトンネルに入り、サーバーのアドレスを知ることができます。「自動」では Happ がランダムな認証情報を生成します。Provider ID は不要です。",
"subHappLocalProxyAuthAuto": "自動 (ランダムな認証情報)",
"subHappLocalProxyAuthDisable": "無効",
"subHappLocalProxyAuthUnset": "送信しない (クライアントの既定)",
"subHappAutoConnect": "起動時に自動接続",
"subHappAutoConnectDesc": "アプリの起動時に VPN へ自動接続するよう Happ に指示します。",
"subHappAutoConnectType": "自動接続先",