fix(ui): проверять ревизии и сохранять ошибки истории
This commit is contained in:
1 parent
46d62c98b8
commit
4a8d696e4e
11 files changed
+183
-98
No files matched your search
+3
-13
@@ -1,4 +1,4 @@
|
||||
import { z } from "zod"
|
||||
import { parseConfigRevisions } from "@/lib/config-revisions"
|
||||
import { wgIfaceDtoSchema, wgImportResponseSchema, wgExportResponseSchema } from "@mmapp/contracts/wireguard"
|
||||
import type {
|
||||
WgCreateInterface,
|
||||
@@ -128,17 +128,7 @@ export async function exportWireGuard(
|
||||
return parsed.data
|
||||
}
|
||||
|
||||
const wireguardRevisionsSchema = z.object({ revisions: z.array(z.object({
|
||||
id: z.string().min(1), serverId: z.string().min(1), section: z.literal("wireguard"),
|
||||
source: z.enum(["apply", "rollback", "observed", "copy"]), fingerprint: z.string(),
|
||||
createdAt: z.string().refine(value => Number.isFinite(Date.parse(value))),
|
||||
note: z.string().nullable(), itemCount: z.number().int().nonnegative(),
|
||||
})) })
|
||||
|
||||
export async function listWireGuardRevisions(baseUrl: string, serverId: string) {
|
||||
const result = wireguardRevisionsSchema.safeParse(await requestJson<unknown>(baseUrl, "/api/wireguard/revisions?serverId=" + encodeURIComponent(serverId)))
|
||||
if (!result.success || result.data.revisions.some(revision => revision.serverId !== serverId)) {
|
||||
throw new Error("Некорректный ответ истории WireGuard")
|
||||
}
|
||||
return result.data.revisions
|
||||
const result = await requestJson<unknown>(baseUrl, "/api/wireguard/revisions?serverId=" + encodeURIComponent(serverId))
|
||||
return parseConfigRevisions(result, serverId, "wireguard")
|
||||
}
|
||||
Reference in new issue
Block a user