File: //etc/ppp/ip-down.d/clamav-freshclam-ifupdown
#!/bin/sh
# 2004-01-25, Thomas Lamy <thomas.lamy@in-online.net>
# From Magnus Ekdahl's <magnus@debian.org> clamav-freshclam-handledaemon(8)
# Adjust to be networkd-dispatcher compatible by
# Sergio Durigan Junior <sergiodj@debian.org>
set -e
[ -f /var/lib/clamav/interface ] || exit 0
if [ -d /run/systemd/system ]; then
INIT='systemctl'
INIT_SUFFIX='clamav-freshclam'
else
INIT='invoke-rc.d clamav-freshclam'
INIT_SUFFIX=''
fi
CLAMAV_CONF_FILE=/etc/clamav/clamd.conf
FRESHCLAM_CONF_FILE=/etc/clamav/freshclam.conf
INTERNETIFACE=$(cat /var/lib/clamav/interface)
if grep -q freshclam /proc/*/stat 2>/dev/null; then
IS_RUNNING=true
else
IS_RUNNING=false
fi
handle_ifupdown ()
{
# $IFACE is set by ifup/down, $PPP_IFACE by pppd
[ -n "$PPP_IFACE" ] && IFACE=$PPP_IFACE
# This is sloppy - woody's pppd exports variables, while sid's passes them as
# arguments and exports them.
if [ "$1" = "$IFACE" ]; then # We're called by sid's pppd
shift 6 # and we already know the interface
fi # Dump the arguments passed.
if [ -z "$1" ]; then
case $(dirname "$0") in
*/if-up.d|*/ip-up.d)
# Short circuit and exit early if freshclam is already running
[ "$IS_RUNNING" = 'true' ] && exit 0
for interface in $INTERNETIFACE; do
if [ "$interface" = "$IFACE" ]; then
FMODE=start
break
else
FMODE=skip
fi
done
;;
*/if-down.d|*/ip-down.d)
# Short circuit and exit early if freshclam is not already running
[ "$IS_RUNNING" = 'false' ] && exit 0
for interface in $INTERNETIFACE; do
if [ "$interface" = "$IFACE" ]; then
FMODE=stop
break
else
FMODE=skip
fi
done
;;
*)
FMODE=skip
;;
esac
else
FMODE="$1"
fi
case "$FMODE" in
start|stop)
IFACE="$IFACE" $INIT $FMODE $INIT_SUFFIX
;;
skip)
;;
*)
echo "Usage: $0 {start|stop|skip}" >&2
exit 1
;;
esac
}
handle_networkd_dispatcher ()
{
FOUND_IFACE=false
for interface in $INTERNETIFACE; do
if [ "$interface" = "$IFACE" ]; then
FOUND_IFACE=true
break
fi
done
[ "$FOUND_IFACE" = 'false' ] && return
FMODE=""
case "$STATE" in
"off")
if [ "$IS_RUNNING" = 'true' ]; then
FMODE="stop"
fi
;;
"routable")
if [ "$IS_RUNNING" = 'false' ]; then
FMODE="start"
fi
;;
*)
return
esac
if [ -n "$FMODE" ]; then
IFACE="$IFACE" $INIT $FMODE $INIT_SUFFIX
fi
}
if [ -n "$STATE" ]; then
handle_networkd_dispatcher "$@"
else
handle_ifupdown "$@"
fi
exit 0