| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #!@l_prefix@/lib/openpkg/bash @l_prefix@/etc/rc
- ##
- ## rc.uvscan -- Run-Commands
- ##
- %config
- uvscan_enable="$openpkg_rc_def"
- uvscan_dat="ftp://ftp.nai.com/pub/antivirus/datfiles/4.x/"
- uvscan_update="daily"
- %common
- uvscan_update () {
- # determine information
- i=0
- while [ $i -lt 3 ]; do
- uvscan_datfile=`@l_prefix@/bin/curl -s "${uvscan_dat}" 2>/dev/null |\
- grep 'dat-[0-9][0-9]*\.tar' | sort | tail -1 |\
- sed -e 's;^.*\(dat-[0-9][0-9]*\.tar\).*$;\1;'`
- if [ ".${uvscan_datfile}" != . ]; then
- break
- else
- sleep 10
- fi
- i=$(($i + 1))
- done
- if [ ".${uvscan_datfile}" = . ]; then
- echo "rc:uvscan:ERROR: unable to determine latest DAT file version" 1>&2
- return 1
- fi
- uvscan_tmpdir=`echo "${uvscan_datfile}" | sed -e 's;\.tar$;;'`
- uvscan_datadir="@l_prefix@/var/uvscan/data"
- # determine old (installed) and new (available) versions
- uvscan_version_new=`echo "${uvscan_datfile}" | sed -e 's;^dat-;;' -e 's;\.tar$;;'`
- uvscan_version_old=`(cat "${uvscan_datadir}/VERSION") 2>/dev/null`
- if [ ".${uvscan_version_new}" = ".${uvscan_version_old}" ]; then
- # still no need for updating
- return 0
- fi
- # download and unpack latest DATs
- umask 077
- cd ${uvscan_datadir} || return 1
- rm -f ${uvscan_datfile} >/dev/null 2>&1 || true
- i=0
- while [ $i -lt 3 ]; do
- @l_prefix@/bin/curl -s -o ${uvscan_datfile} \
- ${uvscan_dat}/${uvscan_datfile} || return 1
- if [ $? -eq 0 ]; then
- break
- else
- rm -f ${uvscan_datfile} >/dev/null 2>&1 || true
- sleep 10
- fi
- i=$(($i + 1))
- done
- if [ ! -f ${uvscan_datfile} ]; then
- echo "rc:uvscan:ERROR: unable to download latest DAT file" 1>&2
- return 1
- fi
- rm -rf ${uvscan_tmpdir} >/dev/null 2>&1 || true
- mkdir ${uvscan_tmpdir}
- ( cd ${uvscan_tmpdir} && \
- @l_prefix@/bin/tar -xf ../${uvscan_datfile}
- ) || return 1
- # update DAT repository by installing updated DAT files
- @l_prefix@/lib/openpkg/shtool install -m 644 -o @l_musr@ -g @l_mgrp@ \
- ${uvscan_tmpdir}/*.dat .
- echo "${uvscan_version_new}" >VERSION
- # cleanup
- rm -f ${uvscan_datfile} >/dev/null 2>&1 || true
- rm -rf ${uvscan_tmpdir} >/dev/null 2>&1 || true
- }
- %quarterly -u @l_musr@
- rcService uvscan enable yes || exit 0
- if [ ".$uvscan_update" = .quarterly ]; then
- uvscan_update || exit $?
- fi
- %hourly -u @l_musr@
- rcService uvscan enable yes || exit 0
- if [ ".$uvscan_update" = .hourly ]; then
- uvscan_update || exit $?
- fi
- %daily -u @l_musr@
- rcService uvscan enable yes || exit 0
- if [ ".$uvscan_update" = .daily ]; then
- uvscan_update || exit $?
- fi
- %weekly -u @l_musr@
- rcService uvscan enable yes || exit 0
- if [ ".$uvscan_update" = .weekly ]; then
- uvscan_update || exit $?
- fi
|