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