fix(outbounds): support proxyProtocol on freedom outbound

Xray's freedom outbound accepts a numeric proxyProtocol (0 disabled,
1 or 2 for the PROXY protocol version), but the panel had no field for
it and the typed form adapter dropped the key on save — so a value set
via the JSON editor disappeared the moment the outbound was saved.

Model proxyProtocol through the freedom wire schema, the form schema,
and both adapter directions (clamped to 0/1/2, omitted from the wire
when 0), and add a Select (none / v1 / v2) to the freedom section of
the outbound form. Add round-trip test coverage and the proxyProtocol
label across all locales.

Closes #4486
This commit is contained in:
MHSanaei
2026-05-29 17:18:21 +02:00
parent 5d0081a3b9
commit 62c293e034
18 changed files with 39 additions and 0 deletions
@@ -52,6 +52,7 @@ export type FreedomFinalRule = z.infer<typeof FreedomFinalRuleSchema>;
export const FreedomOutboundSettingsSchema = z.object({
domainStrategy: OutboundDomainStrategySchema.optional(),
redirect: z.string().optional(),
proxyProtocol: z.number().optional(),
fragment: FreedomFragmentSchema.optional(),
noises: z.array(FreedomNoiseSchema).optional(),
finalRules: z.array(FreedomFinalRuleSchema).optional(),