UNPKG

pompelmi

Version:

RFI-safe file uploads for Node.js — Express/Koa/Next.js middleware with deep ZIP inspection, MIME/size checks, and optional YARA scanning.

31 lines (30 loc) 1.17 kB
import type { YaraMatch } from '../yara/index'; export interface NodeScanOptions { enableYara?: boolean; yaraRules?: string; yaraRulesPath?: string; includeExtensions?: string[]; yaraAsync?: boolean; maxFileSizeBytes?: number; yaraSampleBytes?: number; yaraPreferBuffer?: boolean; } export type NodeYaraVerdict = 'malicious' | 'suspicious' | 'clean'; export interface NodeYaraResult { matches: YaraMatch[]; status: 'scanned' | 'skipped' | 'error'; /** per i 'skipped', perché abbiamo saltato */ reason?: 'max-size' | 'filtered-ext' | 'not-enabled' | 'engine-missing' | 'error'; /** come abbiamo scansionato quando status = 'scanned' */ mode?: 'async' | 'file' | 'buffer' | 'buffer-sampled'; /** verdetto derivato dai match (solo quando status='scanned') */ verdict?: NodeYaraVerdict; } export interface NodeFileEntry { path: string; absPath: string; isDir: boolean; yara?: NodeYaraResult; } /** Scansiona una directory in modo ricorsivo, emettendo le entry e (opzionale) i match YARA. */ export declare function scanDir(root: string, opts?: NodeScanOptions): AsyncGenerator<NodeFileEntry>;