fix(ui): показывать свежесть срезов Firewall
This commit is contained in:
1 parent
c2159508d5
commit
4b01f20558
6 files changed
+118
-4
No files matched your search
@@ -0,0 +1,14 @@
|
||||
import { matchesFirewallFailure, type FirewallFailure } from "./firewall-response"
|
||||
|
||||
export type FirewallSliceTime = { serverId: string; family: "ip" | "ip6"; table: string; receivedAt: string | null }
|
||||
export function updateFirewallSliceTimes(previous: FirewallSliceTime[], serverIds: string[], failures: FirewallFailure[], receivedAt: string): FirewallSliceTime[] {
|
||||
return serverIds.flatMap(serverId => (["ip", "ip6"] as const).flatMap(family => ["filter", "nat", "mangle", "raw", "address-list"].map(table => {
|
||||
const slice = { serverId, family, table }
|
||||
const old = previous.find(row => row.serverId === serverId && row.family === family && row.table === table)
|
||||
return { ...slice, receivedAt: failures.some(f => matchesFirewallFailure(f, slice)) ? old?.receivedAt ?? null : receivedAt }
|
||||
})))
|
||||
}
|
||||
export function firewallTimeRange(slices: FirewallSliceTime[]) {
|
||||
const times = slices.flatMap(slice => slice.receivedAt ? [slice.receivedAt] : []).sort()
|
||||
return { oldest: times[0], newest: times.at(-1), unknown: slices.filter(slice => !slice.receivedAt).length }
|
||||
}
|
||||
Reference in new issue
Block a user