Control: forcemerge -1 1039413
Control: severity -1 important
Control: retitle -1 vtun: please provide vtun@.service and mask init script

Hello,

I'm attaching a patch for the vtun debian package that should hopefully
be a good start in migrating to native systemd units.
The patch is COMPLETELY UNTESTED as I'm not myself a user of vtun.
Please make sure to set FIRST_SYSTEMD_SERVICE_VERSION to the correct
debian package version including these changes.

The attached patch adds a vtun@.service as the init script seems to have
used a home-brew template units style.
The /etc/default/vtun CLIENT$i_* variables are broken up into separate
vtun@.service instances, eg CLIENT1_NAME, CLIENT1_HOST, CLIENT1_ARGS
goes to vtun@CLIENT1.service override as NAME, HOST and OPTIONS.
This is done as a one-time migration....
(This also lifts the restrictions of having 0-9 instances.)

You most likely also want to make sure vtun.service (without the @)
is a symlink to /dev/null, to mask the init script.


See also:

https://src.fedoraproject.org/rpms/vtun/tree/81e15b3a03b89bffe0e6076a235720d40f343292

You might also want to provide the socket unit....

Regards,
Andreas Henriksson
diff '--color=auto' -uriNp vtun-3.0.4/debian/postinst vtun-3.0.4.systemd/debian/postinst
--- vtun-3.0.4/debian/postinst	2019-11-11 01:17:37.000000000 +0100
+++ vtun-3.0.4.systemd/debian/postinst	2023-07-03 15:47:08.717223223 +0200
@@ -46,6 +46,36 @@ case "$1" in
     ;;
 esac
 
+# migrate old init.d style settings to systemd
+FIRST_SYSTEMD_SERVICE_VERSION="3.0.4-2.1"
+if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt-nl "$FIRST_SYSTEMD_SERVICE_VERSION~" ; then
+(
+    echo "Checking if we need to migrate /etc/default/vtun settings to 'vtun@.service'."
+    if [ -e /etc/default/vtun ]; then
+        . /etc/default/vtun
+    fi
+
+    for i in 0 1 2 3 4 5 6 7 8 9; do
+            eval name=\$CLIENT${i}_NAME
+            eval host=\$CLIENT${i}_HOST
+            eval args=\$CLIENT${i}_ARGS
+            if [ -n "$name" ] && [ -n "$host" ]; then
+                echo "One-time migration of vtun CLIENT$i settings to vtun@CLIENT$i.service"
+                mkdir -p "/etc/systemd/system/vtun@CLIENT$i.service.d/"
+                echo "[Service]" >> "/etc/systemd/system/vtun@CLIENT$i.service.d/override.conf"
+                echo "Environment=\"NAME=$name\"" >> "/etc/systemd/system/vtun@CLIENT$i.service.d/override.conf"
+                echo "Environment=\"HOST=$host\"" >> "/etc/systemd/system/vtun@CLIENT$i.service.d/override.conf"
+                echo "Environment=\"OPTIONS=$args\"" >> "/etc/systemd/system/vtun@CLIENT$i.service.d/override.conf"
+                if [ -n "${RUN_SERVER:-}" ] && [ "${RUN_SERVER:-}" != "no" ]; then
+                    deb-systemd-helper enable "vtun@CLIENT$i"
+                fi
+            fi
+
+    done
+)
+fi
+
+
 # dh_installdeb will replace this with shell code automatically
 # generated by other debhelper scripts.
 
diff '--color=auto' -uriNp vtun-3.0.4/debian/vtun@.service vtun-3.0.4.systemd/debian/vtun@.service
--- vtun-3.0.4/debian/vtun@.service	1970-01-01 01:00:00.000000000 +0100
+++ vtun-3.0.4.systemd/debian/vtun@.service	2023-07-03 15:23:25.513183684 +0200
@@ -0,0 +1,12 @@
+[Unit]
+Description=Virtual Tunnels over TCP/IP networks
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/vtund -n $OPTIONS $NAME $HOST
+# Reload should be synchronous, but signals are not...
+ExecReload=/usr/bin/kill -HUP $MAINPID
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target

Reply via email to