diff --git a/frontend/src/pages/inbounds/InboundFormModal.tsx b/frontend/src/pages/inbounds/InboundFormModal.tsx index 43df00bd..0704cade 100644 --- a/frontend/src/pages/inbounds/InboundFormModal.tsx +++ b/frontend/src/pages/inbounds/InboundFormModal.tsx @@ -1157,7 +1157,17 @@ export default function InboundFormModal({ onChange={(v) => { setFieldValue( ['streamSettings', 'tcpSettings', 'header'], - v ? { type: 'http' } : { type: 'none' }, + v + ? { + type: 'http', + request: { + version: '1.1', + method: 'GET', + path: ['/'], + headers: {}, + }, + } + : { type: 'none' }, ); }} /> @@ -1165,6 +1175,62 @@ export default function InboundFormModal({ }} + {/* Host + path camouflage inputs only render when the Switch + above is on. Both are string[] on the wire; normalize + + getValueProps translate to/from comma-joined input. Mirrors + the symmetric outbound side. */} + + prev.streamSettings?.tcpSettings?.header?.type + !== curr.streamSettings?.tcpSettings?.header?.type + } + > + {({ getFieldValue }) => { + const headerType = getFieldValue( + ['streamSettings', 'tcpSettings', 'header', 'type'], + ) as string | undefined; + if (headerType !== 'http') return null; + return ( + <> + + typeof v === 'string' + ? v.split(',').map((s) => s.trim()).filter(Boolean) + : Array.isArray(v) ? v : [] + } + getValueProps={(v: unknown) => ({ + value: Array.isArray(v) ? v.join(',') : '', + })} + > + + + + typeof v === 'string' + ? v.split(',').map((s) => s.trim()).filter(Boolean) + : Array.isArray(v) ? v : ['/'] + } + getValueProps={(v: unknown) => ({ + value: Array.isArray(v) ? v.join(',') : '/', + })} + > + + + + ); + }} + )} diff --git a/frontend/src/pages/xray/OutboundFormModal.tsx b/frontend/src/pages/xray/OutboundFormModal.tsx index fffd5e15..ef39ad24 100644 --- a/frontend/src/pages/xray/OutboundFormModal.tsx +++ b/frontend/src/pages/xray/OutboundFormModal.tsx @@ -38,6 +38,7 @@ import { OutboundDomainStrategies, OutboundProtocols as Protocols, SNIFFING_OPTION, + TCP_CONGESTION_OPTION, TLS_FLOW_CONTROL, USERS_SECURITY, UTLS_FINGERPRINT, @@ -1516,6 +1517,49 @@ export default function OutboundFormModal({ > + + ({ + value: v, + label: v, + }))} + /> + + + + + + + + + + )}