Step 5: Install ClamAV eCAP Adapter

Important

Unfortunately ClamAV eCAP adapter does not compile of Raspbian 10. Please skip this step if you are deploying Web Safety on Raspberry PI.

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.