File: /volume1/@appstore/AntiVirus/scripts/clamav.sh
#!/bin/sh
PKG_DIR="/var/packages/AntiVirus"
CLAMAV_URL="current.cvd.clamav.net"
CLAMAV_DB_CLD="${PKG_DIR}/target/engine/clamav/var/lib/daily.cld"
CLAMAV_DB_CVD="${PKG_DIR}/target/engine/clamav/var/lib/daily.cvd"
CLAMAV_SIGTOOL="${PKG_DIR}/target/engine/clamav/bin/sigtool"
STATUS_UPDATED="updated"
STATUS_OUTDATED="outdated"
STATUS_CHECKFAIL="updatecheckfail"
check_update()
{
local new_ver
local old_ver
local db
if [ -f "${CLAMAV_DB_CLD}" ]; then
db="${CLAMAV_DB_CLD}"
fi
if [ -f "${CLAMAV_DB_CVD}" ]; then
db="${CLAMAV_DB_CVD}"
fi
if [ -z "${db}" ]; then
echo ${STATUS_OUTDATED}
return
fi
isNumRegex='^[0-9]+$'
new_ver=`nslookup -query=txt ${CLAMAV_URL} |grep text | awk 'BEGIN {FS=":"} {print $3}'`
old_ver=`${CLAMAV_SIGTOOL} -i "${db}" 2>/dev/null | grep Version | awk 'BEGIN {FS=": "} {print $2}'`
if ! [[ ${new_ver} =~ ${isNumRegex} ]] || ! [[ ${old_ver} =~ ${isNumRegex} ]]; then
echo ${STATUS_CHECKFAIL}
return
elif [ "${new_ver}" -gt "${old_ver}" ]; then
echo ${STATUS_OUTDATED}
return
fi
echo ${STATUS_UPDATED}
}
case "$1" in
check_update)
check_update
;;
*)
echo "Usage: $0 {check_update}" >&2
exit 1
;;
esac