fix(sockopt): rename interfaceName to interface so xray honors it

xray-core reads the bind-interface sockopt as json:"interface", but the schema and forms used interfaceName. Go's JSON unmarshal is case-insensitive, yet interfacename != interface, so the value never reached xray and interface binding silently did nothing. Rename the field across the schema, the inbound/outbound forms, and the golden fixture to match xray-core and the official docs.
This commit is contained in:
MHSanaei
2026-06-01 18:21:37 +02:00
parent d29a17d333
commit b6641439d4
5 changed files with 8 additions and 8 deletions

View File

@@ -130,7 +130,7 @@ export default function SockoptForm({
<Input />
</Form.Item>
<Form.Item
name={['streamSettings', 'sockopt', 'interfaceName']}
name={['streamSettings', 'sockopt', 'interface']}
label={t('pages.inbounds.info.interfaceName')}
>
<Input />

View File

@@ -89,7 +89,7 @@ export default function SockoptForm({ form }: { form: FormInstance<OutboundFormV
</Form.Item>
<Form.Item
label={t('pages.xray.outboundForm.interface')}
name={['streamSettings', 'sockopt', 'interfaceName']}
name={['streamSettings', 'sockopt', 'interface']}
>
<Input />
</Form.Item>

View File

@@ -65,7 +65,7 @@ export const SockoptStreamSettingsSchema = z.object({
tcpcongestion: TcpCongestionSchema.default('bbr'),
V6Only: z.boolean().default(false),
tcpWindowClamp: z.number().int().min(0).default(600),
interfaceName: z.string().default(''),
interface: z.string().default(''),
trustedXForwardedFor: z.array(z.string()).default([]),
addressPortStrategy: AddressPortStrategySchema.default('none'),
happyEyeballs: HappyEyeballsSchema.optional(),

View File

@@ -8,7 +8,7 @@ exports[`SockoptStreamSettingsSchema fixtures > parses defaults byte-stably 1`]
"customSockopt": [],
"dialerProxy": "",
"domainStrategy": "AsIs",
"interfaceName": "",
"interface": "",
"mark": 0,
"penetrate": false,
"tcpFastOpen": false,
@@ -32,7 +32,7 @@ exports[`SockoptStreamSettingsSchema fixtures > parses full byte-stably 1`] = `
"customSockopt": [],
"dialerProxy": "out-proxy-tag",
"domainStrategy": "UseIP",
"interfaceName": "eth0",
"interface": "eth0",
"mark": 100,
"penetrate": false,
"tcpFastOpen": true,
@@ -59,7 +59,7 @@ exports[`SockoptStreamSettingsSchema fixtures > parses tcp-tuning byte-stably 1`
"customSockopt": [],
"dialerProxy": "",
"domainStrategy": "AsIs",
"interfaceName": "",
"interface": "",
"mark": 0,
"penetrate": false,
"tcpFastOpen": true,
@@ -83,7 +83,7 @@ exports[`SockoptStreamSettingsSchema fixtures > parses tproxy byte-stably 1`] =
"customSockopt": [],
"dialerProxy": "",
"domainStrategy": "ForceIPv4",
"interfaceName": "",
"interface": "",
"mark": 255,
"penetrate": true,
"tcpFastOpen": false,

View File

@@ -14,6 +14,6 @@
"tcpcongestion": "cubic",
"V6Only": false,
"tcpWindowClamp": 600,
"interfaceName": "eth0",
"interface": "eth0",
"trustedXForwardedFor": ["10.0.0.0/8", "192.168.0.0/16"]
}