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