From c7e838c95a82a54ae565a9f33220ec095693853b Mon Sep 17 00:00:00 2001 From: abdulrahman Date: Tue, 12 May 2026 20:03:06 +0300 Subject: [PATCH] fix(hysteria2): restore missing masquerade config in inbound form Fixes #4303 The Hysteria2 Masquerade option was missing from the Stream settings tab after the v3.0.0 form rewrite. Added the UI form and ensured the masquerade block is passed through in subscription JSON generation. --- .../src/pages/inbounds/InboundFormModal.vue | 68 +++++++++++++++++++ sub/subJsonService.go | 3 + 2 files changed, 71 insertions(+) diff --git a/frontend/src/pages/inbounds/InboundFormModal.vue b/frontend/src/pages/inbounds/InboundFormModal.vue index fd045bbb..67ba1693 100644 --- a/frontend/src/pages/inbounds/InboundFormModal.vue +++ b/frontend/src/pages/inbounds/InboundFormModal.vue @@ -1671,6 +1671,74 @@ watch( + + + diff --git a/sub/subJsonService.go b/sub/subJsonService.go index fc35698e..4fe77b88 100644 --- a/sub/subJsonService.go +++ b/sub/subJsonService.go @@ -447,6 +447,9 @@ func (s *SubJsonService) genHy(inbound *model.Inbound, newStream map[string]any, if udpIdleTimeout, ok := hyStream["udpIdleTimeout"].(float64); ok { outHyStream["udpIdleTimeout"] = int(udpIdleTimeout) } + if masquerade, ok := hyStream["masquerade"].(map[string]any); ok { + outHyStream["masquerade"] = masquerade + } newStream["hysteriaSettings"] = outHyStream if finalmask, ok := hyStream["finalmask"].(map[string]any); ok {