import { type DashboardImageMime, detectImageMime } from '../dashboard/dashboard-image-rules'; /** * Regeln fuer hochgeladene Cloud-Logos (quick-261002-k67, L-02, D-A). * Kein Nest, kein Prisma — direkt an den Bytes testbar. * * Erlaubt sind PNG, JPEG, GIF und WebP bis 1 MiB. KEIN SVG: ein SVG kann * Skript tragen und wuerde, direkt im Tab geoeffnet, unter der Adresse von * Tessera laufen. Der Typ kommt aus den Magic Bytes, nie aus dem vom Browser * behaupteten `mimetype` oder der Dateiendung (Muster T-PI9-01); der erkannte * Typ ist zugleich der Typ, mit dem die Auslieferung antwortet (T-k67-02). */ /** Hoechstgroesse: 1 MiB (multer `limits.fileSize` an der Route + zweites Netz im Dienst). */ export const NEXTCLOUD_LOGO_MAX_BYTES = 1024 * 1024; /** Erkannter Bildtyp oder `null`, wenn leer, zu gross oder kein erlaubtes Bildformat. */ export function checkLogoUpload(buffer: Uint8Array): DashboardImageMime | null { if (buffer.length === 0 || buffer.length > NEXTCLOUD_LOGO_MAX_BYTES) return null; return detectImageMime(buffer); }