From 4ca0a9f13d3c43086e23d2778806524e6210d735 Mon Sep 17 00:00:00 2001 From: Alexander Shursha Date: Mon, 20 Nov 2017 06:43:56 +0300 Subject: [PATCH] Checking .CLD and .CVD files. (#339) --- .../OPNsense/ClamAV/Api/ServiceController.php | 24 +++++++++---------- .../OPNsense/ClamAV/forms/version.xml | 6 ++--- .../scripts/OPNsense/ClamAV/freshclam.sh | 5 ++-- .../scripts/OPNsense/ClamAV/versions.sh | 6 +++++ .../conf/actions.d/actions_clamav.conf | 2 +- 5 files changed, 24 insertions(+), 19 deletions(-) create mode 100755 security/clamav/src/opnsense/scripts/OPNsense/ClamAV/versions.sh diff --git a/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/Api/ServiceController.php b/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/Api/ServiceController.php index d6879f97e..b4d50768a 100644 --- a/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/Api/ServiceController.php +++ b/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/Api/ServiceController.php @@ -170,25 +170,23 @@ class ServiceController extends ApiControllerBase public function versionAction() { $infos = array( - "clamav" => array("search" => "Version: "), - "main" => array("search" => "main.cvd: "), - "daily" => array("search" => "daily.cld: "), - "bytecode" => array("search" => "bytecode.cld: "), - "signatures" => array("search" => "Total number of signatures: ") + "clamav" => array("Version"), + "main" => array("main.cvd", "main.cld"), + "daily" => array("daily.cvd", "daily.cld"), + "bytecode" => array("bytecode.cvd", "bytecode.cld"), + "signatures" => array("Total number of signatures") ); $backend = new Backend(); $result = array(); - $response = $backend->configdRun("clamav version"); + $response = json_decode($backend->configdRun("clamav version")); if ($response != null) { - foreach (explode("\n", $response) as $str) { - foreach ($infos as $key => $info) { - if (strpos($str, $info["search"]) !== false) { - $version = substr($str, strlen($info["search"])); - if (isset($version)) { - $result[$key] = $version; - } + foreach ($response as $key => $value) { + foreach ($infos as $info_key => $info) { + if (in_array($key, $info)) { + $result[$info_key] = $value; } } + } return array("version" => $result); } diff --git a/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/forms/version.xml b/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/forms/version.xml index 166fd3d59..e1cd2027a 100644 --- a/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/forms/version.xml +++ b/security/clamav/src/opnsense/mvc/app/controllers/OPNsense/ClamAV/forms/version.xml @@ -6,17 +6,17 @@ version.main - + info version.daily - + info version.bytecode - + info diff --git a/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/freshclam.sh b/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/freshclam.sh index e54851c70..5ce3c3d66 100755 --- a/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/freshclam.sh +++ b/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/freshclam.sh @@ -26,10 +26,11 @@ # SUCH DAMAGE. PIDFILE="/var/run/clamav/freshclam-init.pid" -DBFILE="/var/db/clamav/main.cvd" +CVDDBFILE="/var/db/clamav/main.cvd" +CLDDBFILE="/var/db/clamav/main.cld" COMMAND="${1}" -if [ -f ${DBFILE} ]; then +if [ -f ${CVDDBFILE} -o -f ${CLDDBFILE} ]; then echo "done" elif pgrep -qF ${PIDFILE} 2> /dev/null; then echo "running" diff --git a/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/versions.sh b/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/versions.sh new file mode 100755 index 000000000..513923a0c --- /dev/null +++ b/security/clamav/src/opnsense/scripts/OPNsense/ClamAV/versions.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +echo -n "{" +clamconf | sed -n '/Database information/,/^$/p' | tail +2 | grep : | while read line ; do key=`echo $line | cut -d':' -f1`; value=`echo $line | cut -d':' -f2-` ; echo "\"$key\": \"$value\""; done | tr "\n", "," +clamconf | sed -n '/Software settings/,/^$/p' | tail +2 | grep : | while read line ; do key=`echo $line | cut -d':' -f1`; value=`echo $line | cut -d':' -f2-` ; echo "\"$key\": \"$value\""; done | tr "\n", "," | sed 's/,$//' +echo "}" diff --git a/security/clamav/src/opnsense/service/conf/actions.d/actions_clamav.conf b/security/clamav/src/opnsense/service/conf/actions.d/actions_clamav.conf index 63a6808e0..5203cf626 100644 --- a/security/clamav/src/opnsense/service/conf/actions.d/actions_clamav.conf +++ b/security/clamav/src/opnsense/service/conf/actions.d/actions_clamav.conf @@ -35,7 +35,7 @@ type:script_output message:Check or install signatures [version] -command:/usr/local/bin/clamconf | grep "Version:\|main.cvd: version\|.cld: version\|Total number of signatures:" +command:/usr/local/opnsense/scripts/OPNsense/ClamAV/versions.sh parameters: type:script_output message:Get ClamAV and signature versions