A ClamAV client on node.js
npm install clamdjsClamdjs
===
A ClamAV client on node.js
---
The library will uses TCP socket communicate with clamd (ClamAV daemon) through some commands
Clamd protocol is explained here:
http://linux.die.net/man/8/clamd
----
Stream and Bufferlocal File and local Directory----
``sh`
$ npm install clamdjs`
----$3
js`
const clamd = require('clamdjs')
const scanner = clamd.createScanner(host, port)`scanner.scanStream(stream, [timeout])
jsstream: ${virus} FOUND
scanner.scanStream(stream, 3000)
.then(function (reply) {
console.log(reply)
// print some thing like
// 'stream: OK', if not infected
// , if infected`
})
.catch(handler)stream (Object)
Returns a promise, which will resovle with the reply from the ClamAV server
- - read stream object timeout (Number)
- - use to set the socket's timeout option, default 5000
js
scanner.scanBuffer(buffer, 3000, 1024 * 1024)
.then(function (reply) {
console.log(reply)
// print some thing like
// 'stream: OK', if not infected
// stream: ${virus} FOUND, if infected
})
.catch(handler)
`
Returns a promise, which will resovle with the reply from the ClamAV server
- buffer (Object)
- timeout (Number) - use to set the socket's timeout option, default 5000
- chunkSize (Number) - size of the chunk, which will send to ClamAV server, default 64 * 1024scanner.scanFile(path, [timeout], [chunkSize])
`js
scanner.scanFile(path, 3000, 1024 * 1024)
.then(function (reply) {
console.log(reply)
// print some thing like
// 'stream: OK', if not infected
// stream: ${virus} FOUND, if infected
})
.catch(handler)
`
Returns a promise, which will resovle with the reply from the ClamAV server
- path (String) - file path, will be pass to path.normalize() first
- timeout (Number) - use to set the socket's timeout option, default 5000
- chunkSize (Number) - size of the chunk, which will send to ClamAV server, default 64 * 1024scanner.scanDirectory(rootPath, [options])
`js
let optins = {
timeout: 5000,
chunkSize: 64 * 1024,
scanningFile: 10,
detail: true,
cont: true
}
scanner.scanDirectory(rootPath, options)
.then(function (reply) {
console.log(reply)
/* print some thing like
{
ScannedFiles: 11,
Infected: 3,
EncounterError: 1,
Result:[...]
}
*/
})
.catch(handler)
`
Returns a promise, which will resovle with a object which contained the scan summary-
rootPath (String) - directory path, will be pass to path.normalize() first
- optinns (Object)
- timeout (Number) - use to set the socket's timeout option, default 5000
- chunkSize (Number) - size of the chunk, which will send to ClamAV server, default 64 * 1024
- scanningFile (Number) - the number of file will scan concurrently, should not be greater than the file table limit in node.js, default 10
- detail (Boolean) - if true the output object will contain the scan summary and all scaned files's scan result no matter infected or not, if false the output object will contain the scan summary and scan result of infected files and file that encountered error when scanning, default true
- cont (Boolean) - when scanning a path and an Error throw, if true, will move on to scan next path, if false, will stop scanning and return a rejected promise, default true`