import net from 'node:net' /** * Fragt clamd ueber den Unix-Socket. Der Socket liegt im geteilten Volume * clamav_socket, siehe compose.yaml. Antwort auf zPING ist "PONG". */ export function pingClamav(socketPath: string, timeoutMs = 2000): Promise { return new Promise((resolve) => { let settled = false const done = (ok: boolean) => { if (settled) return settled = true socket.destroy() resolve(ok) } const socket = net.createConnection(socketPath) socket.setTimeout(timeoutMs) socket.on('connect', () => socket.write('zPING\0')) socket.on('data', (chunk) => done(chunk.toString().includes('PONG'))) socket.on('timeout', () => done(false)) socket.on('error', () => done(false)) }) }