Files
3x-ui/frontend/src/test/__snapshots__/inbound-form-blocks.test.tsx.snap
T
MHSanaei 7c8889466b feat(tls,reality): port xray TLS/REALITY fields, cert-hash helpers, fallback UX
TLS: add verifyPeerCertByName (vcn) to inbound settings + emit in both share-link generators (frontend + Go sub) and outbound parser; the allowInsecure replacement xray removed after 2026-06-01. Add server-side curvePreferences, masterKeyLog, echSockopt (passthrough + form) at tlsSettings top-level so they survive the panel-only settings strip.

REALITY: add limitFallbackUpload/Download (afterBytes/bytesPerSec/burstBytesPerSec) with per-field tooltips, plus masterKeyLog. Verified field names/semantics against pinned xray v1.260327.1 (bytesPerSec=0 disables).

Hosts: fix verify_peer_cert_by_name column bool->string (xray expects comma-separated names) with an idempotent, history-gate-free migration (SQLite typeof blank; Postgres ALTER once); emit vcn for hosts/external proxies.

Server: add getCertHash (local cert DER SHA-256) and getRemoteCertHash (xray tls ping) endpoints + api-docs; wire pinned-cert field buttons. Drop the meaningless random-hash button.

Xray UI: metrics endpoint (listen/tag) config in Basics; import/export for routing rules and outbounds.

Fallbacks card: compact empty state, header-aligned actions, responsive labeled grid rows.

i18n: add all new keys to every locale; drop unused generateRandomPin.
2026-06-21 15:58:42 +02:00

126 lines
2.2 KiB
Plaintext

// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`inbound security forms > RealityForm field structure is stable 1`] = `
[
"Show",
"Xver",
"uTLS",
"Target",
"SNI",
"Max Time Diff (ms)",
"Min Client Ver",
"Max Client Ver",
"Short IDs",
"SpiderX",
"Public Key",
"Private Key",
"mldsa65 Seed",
"mldsa65 Verify",
"Master Key Log",
]
`;
exports[`inbound security forms > TlsForm field structure is stable 1`] = `
[
"SNI",
"Cipher Suites",
"Min/Max Version",
"uTLS",
"ALPN",
"Curve Preferences",
"Reject Unknown SNI",
"Disable System Root",
"Session Resumption",
"Digital Certificate",
"Master Key Log",
"ECH Sockopt",
"ECH key",
"ECH config",
"Pinned Peer Cert SHA-256",
"Verify Peer Cert By Name",
]
`;
exports[`inbound transport forms > GrpcForm field structure is stable 1`] = `
[
"Service Name",
"Authority",
"Multi Mode",
]
`;
exports[`inbound transport forms > HttpUpgradeForm field structure is stable 1`] = `
[
"Proxy Protocol",
"Host",
"Path",
"Headers",
]
`;
exports[`inbound transport forms > KcpForm field structure is stable 1`] = `
[
"MTU",
"TTI (ms)",
"Uplink (MB/s)",
"Downlink (MB/s)",
"CWND Multiplier",
"Max Sending Window",
]
`;
exports[`inbound transport forms > RawForm field structure is stable 1`] = `
[
"Proxy Protocol",
"HTTP Obfuscation",
]
`;
exports[`inbound transport forms > SockoptForm field structure is stable (server-side fields only) 1`] = `
[
"Sockopt",
"Real client IP",
"Route Mark",
"TCP Keep Alive Interval",
"TCP Keep Alive Idle",
"TCP Max Seg",
"TCP User Timeout",
"TCP Window Clamp",
"Proxy Protocol",
"TCP Fast Open",
"Penetrate",
"V6 Only",
"TCP Congestion",
"TProxy",
"Trusted X-Forwarded-For",
"Custom sockopt",
]
`;
exports[`inbound transport forms > WsForm field structure is stable 1`] = `
[
"Proxy Protocol",
"Host",
"Path",
"Heartbeat Period",
"Headers",
]
`;
exports[`inbound transport forms > XhttpForm field structure is stable 1`] = `
[
"Host",
"Path",
"Mode",
"Server Max Header Bytes",
"Padding Bytes",
"Headers",
"Uplink HTTP Method",
"Padding Obfs Mode",
"Session Placement",
"Sequence Placement",
"No SSE Header",
"XMUX",
]
`;