mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-11-05 20:55:29 +03:00
feat(xray): add loopback sniffing and per-segment fragment masks
- Loopback outbound: add sniffing support (xray-core #6320) - FinalMask fragment: support per-segment lengths/delays arrays with legacy length/delay migration (xray-core #6334) - Consolidate sniffing into a shared SniffingFields component and the canonical SniffingSchema across inbound, VLESS reverse, and loopback
This commit is contained in:
@@ -5,19 +5,6 @@ import { InboundSettingsSchema } from '@/schemas/protocols/inbound';
|
||||
import { SecuritySettingsSchema } from '@/schemas/protocols/security';
|
||||
import { NetworkSettingsSchema, StreamExtrasSchema } from '@/schemas/protocols/stream';
|
||||
|
||||
// InboundFormValues = the values shape Form.useForm<T>() carries in
|
||||
// InboundFormModal. Mirrors the wire shape (so submission can hand
|
||||
// values straight to Schema.parse + POST) plus the DB-side fields that
|
||||
// the panel's /panel/api/inbounds/add endpoint expects alongside.
|
||||
//
|
||||
// Differences from schemas/api/inbound.ts InboundSchema:
|
||||
// - settings/streamSettings/sniffing are nested OBJECTS here, not the
|
||||
// JSON strings the endpoint accepts. The form holds typed data; the
|
||||
// submit handler stringifies right before POSTing.
|
||||
// - Adds DB fields not in InboundSchema: up, down, total, trafficReset,
|
||||
// lastTrafficResetTime, nodeId. These flow through the DBInbound row,
|
||||
// not the xray-config slice.
|
||||
|
||||
export const InboundStreamFormSchema = NetworkSettingsSchema
|
||||
.and(SecuritySettingsSchema)
|
||||
.and(StreamExtrasSchema);
|
||||
@@ -43,9 +30,6 @@ export const InboundDbFieldsSchema = z.object({
|
||||
});
|
||||
export type InboundDbFields = z.infer<typeof InboundDbFieldsSchema>;
|
||||
|
||||
// Base fields that apply to every inbound regardless of protocol or
|
||||
// transport. The protocol-specific `settings` and the transport-specific
|
||||
// `streamSettings` are layered on via intersection below.
|
||||
export const InboundFormBaseSchema = z.object({
|
||||
remark: z.string().default(''),
|
||||
enable: z.boolean().default(true),
|
||||
@@ -73,10 +57,6 @@ export const InboundFormSchema = InboundFormBaseSchema
|
||||
.and(InboundSettingsSchema);
|
||||
export type InboundFormValues = z.infer<typeof InboundFormSchema>;
|
||||
|
||||
// Fallback rows ride alongside the inbound submission for VLESS/Trojan
|
||||
// hosts. They're saved via a separate endpoint after the main inbound
|
||||
// POST returns, so the schema lives here but is not part of the wire
|
||||
// inbound payload.
|
||||
export const FallbackRowSchema = z.object({
|
||||
rowKey: z.string(),
|
||||
childId: z.number().int().nullable(),
|
||||
|
||||
Reference in New Issue
Block a user