Package: ddclient
Version: 3.8.3-1.1
Severity: normal

Dear Maintainer,

Please consider shipping a native systemd service masking the
init script (fixing lintian tag[1] in subject).

I'm attaching the service file I've quickly thrown together
and works for me.
Please note that I've spent about 5 minutes on this in total
including installing ddclient for the first time and figuring
out how to actually get it to work with freedns.afraid.org (see
#793066).

While looking at the init script I noticed it's affected by the
"ENABLED" /etc/default anti-pattern[2]. Please drop this code and
instead just disable the service when it's not wanted.

Finally, the attached service could be extended with some security
hardening settings[3].

Please also note that I set the default/fallback value of
daemon_interval to 900 (rather than 300) in the service file
because of #489997. (Debconf defaulting to 300 will still apply though,
so you should probably consider changing the default to a higher value
in debconf.)

Regards,
Andreas Henriksson


[1]: 
https://lintian.debian.org/tags/missing-systemd-service-for-init.d-script.html
[2]: 
https://lintian.debian.org/tags/init.d-script-should-always-start-service.html
[3]: 
https://lintian.debian.org/tags/systemd-service-file-missing-hardening-features.html
[Unit]
Documentation=man:ddclient(8)
Description=Update dynamic domain name service entries
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/ddclient.pid
Environment=daemon_interval=900
EnvironmentFile=-/etc/default/ddclient
ExecStartPre=/bin/sh -c 'if [ "$run_daemon" != "true" ]; then echo "To run 
ddclient as a daemon, please set run_daemon to 'true' in /etc/default/ddclient" 
; exit 1 ; fi'
ExecStart=/usr/sbin/ddclient -daemon $daemon_interval -nosyslog -pid 
/run/ddclient.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target

Reply via email to