node-clamav

    1.0.11 • Public • Published

    Clamdjs

    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


    Provide

    • Scan Stream and Buffer
    • Scan local File and local Directory
    • Check the daemon’s state
    • Get the version detail of the running ClamAV program

    Installation

    $ npm install clamdjs

    API

    const clamd = require('clamdjs')
    const scanner = clamd.createScanner(host, port)

    scanner.scanStream(stream, [timeout])

    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 object
    • timeout (Number) - use to set the socket's timeout option, default 5000

    scanner.scanBuffer(buffer, [timeout], [chunkSize])

    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 * 1024

    scanner.scanFile(path, [timeout], [chunkSize])

    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 * 1024

    scanner.scanDirectory(rootPath, [options])

    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

    clamd.ping()

    Returns true if clamd daemon alive

    clamd.version()

    Returns clamav version information

    clamd.isCleanReply(reply)

    Retuens true if the reply of a scan means OK, false if means infected

    Install

    npm i node-clamav

    DownloadsWeekly Downloads

    10

    Version

    1.0.11

    License

    MIT

    Unpacked Size

    15.8 kB

    Total Files

    4

    Last publish

    Collaborators

    • ealtuna