Control: tags -1 + patch

On Wednesday, November 17 2021, I wrote:

> Hello,
>
> I am taking the liberty to file this bug in order to replicate the
> following Merge Request:
>
>   https://salsa.debian.org/clamav-team/clamav/-/merge_requests/4
[...]
> I will attach a debdiff as soon as I have a bug number.

Here it is.

Thank you,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
https://sergiodj.net/

diff --git a/debian/changelog b/debian/changelog
index 8844213d..359a48f4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+clamav (0.103.4+dfsg-2) UNRELEASED; urgency=medium
+
+  * Extend ifupdown script to support networkd-dispatcher.
+    - d/clamav-freshclam-ifupdown: Modernize some parts of the script.
+      Implement support for networkd-dispatcher.
+    - d/clamav-freshclam.links: Install the clamav-freshclam-ifupdown
+      script inside the proper
+      /usr/lib/networkd-dispatcher/{off,routable}.d/ directories.
+    (Closes: #999869) (LP: #1718227)
+
+ -- Sergio Durigan Junior <sergi...@debian.org>  Wed, 17 Nov 2021 18:37:32 
-0500
+
 clamav (0.103.4+dfsg-1) unstable; urgency=medium
 
   * Import 0.103.4
diff --git a/debian/clamav-freshclam-ifupdown b/debian/clamav-freshclam-ifupdown
index 875c0cca..232fd79b 100755
--- a/debian/clamav-freshclam-ifupdown
+++ b/debian/clamav-freshclam-ifupdown
@@ -1,16 +1,25 @@
 #!/bin/sh
 # 2004-01-25, Thomas Lamy <thomas.l...@in-online.net>
 # From Magnus Ekdahl's <mag...@debian.org> clamav-freshclam-handledaemon(8)
+# Adjust to be networkd-dispatcher compatible by
+# Sergio Durigan Junior <sergi...@debian.org>
 
 set -e
 
-[ -e /var/lib/clamav/interface ] || exit 0
+[ -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
 
-INIT=invoke-rc.d clamav-freshclam
 CLAMAV_CONF_FILE=/etc/clamav/clamd.conf
 FRESHCLAM_CONF_FILE=/etc/clamav/freshclam.conf
 
-INTERNETIFACE=`cat /var/lib/clamav/interface`
+INTERNETIFACE=$(cat /var/lib/clamav/interface)
 
 if grep -q freshclam /proc/*/stat 2>/dev/null; then
   IS_RUNNING=true
@@ -18,61 +27,104 @@ else
   IS_RUNNING=false
 fi
 
-# $IFACE is set by ifup/down, $PPP_IFACE by pppd 
-[ -n "$PPP_IFACE" ] && IFACE=$PPP_IFACE
+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.
+    # 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 [ "$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
 
-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
+       if [ "$interface" = "$IFACE" ]; then
+           FOUND_IFACE=true
+           break
+       fi
     done
-    ;;
-    *)
-    FMODE=skip
-    ;;
-  esac
+
+    [ "$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
-  FMODE="$1"
+    handle_ifupdown "$@"
 fi
 
-case "$FMODE" in
-  start|stop)
-  IFACE="$IFACE" $INIT $FMODE
-  ;;
-  skip)
-  ;;
-  *)
-  echo "Usage: $0 {start|stop|skip}" >&2
-  exit 1
-  ;;
-esac
-
 exit 0
-
diff --git a/debian/clamav-freshclam.links b/debian/clamav-freshclam.links
index 04ad83db..3f0cfff1 100644
--- a/debian/clamav-freshclam.links
+++ b/debian/clamav-freshclam.links
@@ -1,2 +1,4 @@
 /usr/share/doc/clamav-base/README.Debian.gz 
/usr/share/doc/clamav-freshclam/README.Debian.gz
 /usr/share/doc/clamav-base/NEWS.gz /usr/share/doc/clamav-freshclam/NEWS.gz
+/etc/network/if-up.d/clamav-freshclam-ifupdown 
/usr/lib/networkd-dispatcher/routable.d/clamav-freshclam
+/etc/network/if-down.d/clamav-freshclam-ifupdown 
/usr/lib/networkd-dispatcher/off.d/clamav-freshclam

Attachment: signature.asc
Description: PGP signature

Reply via email to