fix(api): отклонять несогласованные объекты IPsec и VXLAN
This commit is contained in:
1 parent
0e0f98e0f4
commit
d112935c73
6 files changed
+31
-7
No files matched your search
@@ -8,13 +8,13 @@ export const vxlanResponseSchema = z.object({
|
||||
vtepIp: z.string(), remoteVteps: z.array(z.string()), l2mtu: z.number().int().nonnegative(),
|
||||
arpProxy: z.boolean(), arpMode: z.enum(["disabled", "enabled", "local-proxy-arp", "proxy-arp", "reply-only"]).optional(), macLearning: z.boolean(), comment: z.string(), enabled: z.boolean(),
|
||||
status: z.enum(["up", "down"]),
|
||||
})).refine(rows => new Set(rows.map(row => JSON.stringify([row.serverId, row.id]))).size === rows.length),
|
||||
failures: z.array(z.object({ serverId: z.string().min(1), serverName: z.string().optional(), error: z.string() })).default([]),
|
||||
})
|
||||
})).refine(rows => new Set(rows.map(row => JSON.stringify([row.serverId, row.id]))).size === rows.length && rows.every(row => row.arpMode === undefined || row.arpProxy === (row.arpMode === "proxy-arp" || row.arpMode === "local-proxy-arp"))),
|
||||
failures: z.array(z.object({ serverId: z.string().trim().min(1), serverName: z.string().optional(), error: z.string() })).default([]),
|
||||
}).refine(data => new Set(data.failures.map(f => f.serverId)).size === data.failures.length && !data.tunnels.some(t => data.failures.some(f => f.serverId === t.serverId)))
|
||||
|
||||
export const vxlanServersSchema = z.array(z.object({
|
||||
id: z.number().int().positive(), name: z.string(), host: z.string(), country: z.string(), enabled: z.boolean(),
|
||||
type: z.enum(["jump-host", "exit-node", "home-router"]).optional(), site: z.string().optional(),
|
||||
asn: z.string().optional(), status: z.enum(["online", "offline", "degraded"]).optional(),
|
||||
latency: z.number().finite().nullable().optional(),
|
||||
}))
|
||||
})).refine(rows => new Set(rows.map(row => row.id)).size === rows.length)
|
||||
Reference in new issue
Block a user