clamscan icon indicating copy to clipboard operation
clamscan copied to clipboard

fix: support port-only connection

Open tamil-rss opened this issue 1 year ago • 0 comments

Current version doesn't support port only connection (expecting host option) by default.

The _initSocket method has the option to connect using port alone,

client = net.createConnection({ port: this.settings.clamdscan.port, timeout });

if (this.settings.clamdscan.socket)
    client = net.createConnection({ path: this.settings.clamdscan.socket, timeout });
// If a port is specified, we're going to be connecting via TCP
else if (this.settings.clamdscan.port) {
    // If a host is specified (usually for a remote host)
    if (this.settings.clamdscan.host) {
        if (this.settings.clamdscan.tls) {
            client = tls.connect({
                host: this.settings.clamdscan.host,
                port: this.settings.clamdscan.port,
                // Activate SNI
                // servername: this.settings.clamdscan.host,
                timeout,
            });
        } else {
            client = net.createConnection({
                host: this.settings.clamdscan.host,
                port: this.settings.clamdscan.port,
                timeout,
            });
        }
    }
    // Host can be ignored since the default is `localhost`
    else if (this.settings.tls) {
        client = tls.connect({ port: this.settings.clamdscan.port, timeout });
    } else {
        client = net.createConnection({ port: this.settings.clamdscan.port, timeout });
    }
}

But, init method has a validation that restricts to use port-only connection,

 if ( !this.settings.clamdscan.socket && !this.settings.clamdscan.host) {
      const err = new NodeClamError('No valid & active virus scanning binaries are active and available and no socket/host option provided!');
      return hasCb ? cb(err, null) : reject(err);
}

This fix should solve issue #123

tamil-rss avatar May 23 '24 15:05 tamil-rss