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
- Scan
Stream
andBuffer
- Scan
local File
andlocal Directory
- Check the daemon’s state
- Get the version detail of the running ClamAV program
$ npm install clamdjs
const clamd = require('clamdjs')
const scanner = clamd.createScanner(host, port)
scanner.scanStream(stream, 3000)
.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
stream (Object)
- read stream objecttimeout (Number)
- use to set the socket's timeout option, default5000
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, default5000
chunkSize (Number)
- size of the chunk, which will send to ClamAV server, default64 * 1024
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() firsttimeout (Number)
- use to set the socket's timeout option, default5000
chunkSize (Number)
- size of the chunk, which will send to ClamAV server, default64 * 1024
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() firstoptinns (Object)
timeout (Number)
- use to set the socket's timeout option, default5000
chunkSize (Number)
- size of the chunk, which will send to ClamAV server, default64 * 1024
scanningFile (Number)
- the number of file will scan concurrently, should not be greater than the file table limit in node.js, default10
detail (Boolean)
- iftrue
the output object will contain the scan summary and all scaned files's scan result no matter infected or not, iffalse
the output object will contain the scan summary and scan result of infected files and file that encountered error when scanning, defaulttrue
cont (Boolean)
- when scanning a path and an Error throw, iftrue
, will move on to scan next path, iffalse
, will stop scanning and return a rejected promise, defaulttrue
Returns true if clamd daemon alive
Returns clamav version information
Returns true if the reply of a scan means OK, false if means infected