From e22fe58138ee8c595fdc206f2f901f5286b5ace4 Mon Sep 17 00:00:00 2001 From: Admin Date: Sat, 26 Sep 2026 22:55:56 +0000 Subject: [PATCH] feat(api): accept bounded Linux CUPS capture diagnostics --- apps/api/src/printTelemetry.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/api/src/printTelemetry.ts b/apps/api/src/printTelemetry.ts index 8962775..7f3dd39 100644 --- a/apps/api/src/printTelemetry.ts +++ b/apps/api/src/printTelemetry.ts @@ -1,9 +1,10 @@ export const streamFormats = ['zpl', 'pdf', 'postscript', 'pjl', 'pcl', 'zip', 'unknown'] as const export const failureKinds = ['capture', 'forward', 'parser'] as const +export const captureSources = ['raw-proxy', 'spool-folder', 'cups-original', 'cups-test'] as const export type PrintTelemetry = { id: string - source: 'raw-proxy' + source: (typeof captureSources)[number] streamFormat: (typeof streamFormats)[number] byteCount: number barcodeCount: number @@ -21,7 +22,7 @@ export function parsePrintTelemetry(payload: unknown): PrintTelemetry | null { const allowed = ['id', 'source', 'streamFormat', 'byteCount', 'barcodeCount', 'forwarded', 'failureKind', 'appVersion', 'capturedAt'] if (Object.keys(value).some((key) => !allowed.includes(key))) return null if (typeof value.id !== 'string' || !uuid.test(value.id)) return null - if (value.source !== 'raw-proxy') return null + if (!captureSources.includes(value.source as PrintTelemetry['source'])) return null if (!streamFormats.includes(value.streamFormat as PrintTelemetry['streamFormat'])) return null if (!Number.isSafeInteger(value.byteCount) || (value.byteCount as number) < 0) return null if (!Number.isSafeInteger(value.barcodeCount) || (value.barcodeCount as number) < 0) return null