Step 5: Install ClamAV eCAP Adapter

Important

By default ClamAV eCAP adapter does not compile of Raspberry PI. This error was fixed in Web Safety 7.4 and it is now possible to run the eCAP adapter for ClamAV on Raspberry PI (although it is slow due to generally under-powered platform).

Checking downloaded files for viruses will be implemented using eCAP ClamAV adapter by Measurement Factory, see http://www.e-cap.org/downloads. To download and compile all required packages, navigate to core.debian10 sub folder and run script 05_clamav.sh .

#!/bin/bash

# all packages are installed as root
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

# install clamav
apt-get install -y clamav clamav-daemon libclamav-dev

# from now on every error is fatal
set -e

# download the sources
wget http://www.e-cap.org/archive/ecap_clamav_adapter-2.0.0.tar.gz

# unpack
tar -xvzf ecap_clamav_adapter-2.0.0.tar.gz

# patch the CL_SCAN_STDOPT error
patch ecap_clamav_adapter-2.0.0/src/ClamAv.cc < ClamAv.cc.patch

# change into working dir
pushd ecap_clamav_adapter-2.0.0

# build
./configure && make && make install

# revert back
popd

The following patch fixes CL_SCAN_STDOPT error, as indicated on https://bugs.launchpad.net/ecap/+bug/1813962

--- ClamAv.cc   2015-11-08 13:07:35.000000000 -0500
+++ ClamAv.cc.new   2019-07-29 08:34:21.000000000 -0400
@@ -44,8 +44,13 @@
     // We assume that cl_*() functions used here are threadsafe.

     const char *virname = 0;
-    const int eScanResult = cl_scanfile(answer.fileName.c_str(), &virname, 0, engine, CL_SCAN_STDOPT);

+    static struct cl_scan_options options = {};
+    {
+        options.parse |= ~0; // enable all parsers
+    }
+    const int eScanResult = cl_scanfile(answer.fileName.c_str(), &virname, 0, engine, &options);
+
     switch (eScanResult) {
     case CL_CLEAN:
         answer.statusCode = Answer::scClean;

Press Next to continue to Step 6.