A robust ClamAV virus scanning library supporting scanning files, directories, and streams with local sockets, local/remote TCP, and local clamscan/clamdscan binaries (with failover).
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);
}
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 });
But, init method has a validation that restricts to use port-only connection,
This fix should solve issue #123