I forgot to document the new service in commit c436a34ede ("Add
support for Digital Ocean"). The changelog has since been updated to
mention it, but it's still missing from the README.
This fixes caching issues when using the 'usev4' or 'usev6' parameters.
Without this, the "min-interval" and "warned-min-interval" limits will
not work.
For the legacy 'use' parameter, the wrapping code takes care of
translating 'status-ipv*' to 'status'.
With this change, any config value may be set through an environment
variable by appending '_env' to the keyword (i.e. 'password_env' instead
of 'password') and setting the value to the name of the environment
variable that contains the actual configuration value.
This allows keeping sensitive info (i.e. login and password)
out of the configuration file.
Example configuration snippet:
protocol=namecheap, \
server=dynamicdns.park-your-domain.com, \
login_env=DD_LOGIN, \
password_env=DD_PASSWORD \
@
With this configuration snippet, ddclient will use the contents of
DD_LOGIN as the login value and the contents of DD_PASSWORD as the
password value.
These can in turn be supplied via the command line, .env files or any
other mechanism to safeguard sensitive information.
The password regex searches for password assignments, extracts the
password and replaces it with a dummy value to prevent it being logged.
This change adjusts the password regex to no longer accept trailing
characters behind the password string
Looks like there is a bug in line 542 in ddclient.in. The syntax of how the server URL is being set is different to all the other dynamic DNS services. To be precise there is one additional parameter. Instead of handing over the URL, the server variable receives the second "1" in the code below.
This improves the chances that the local DNS resolver (e.g. dnsmasq,
systemd-resolved, Unbound) is up before the service runs and avoids
DNS related failures.
Pull in network-online.target via Wants= to comply with its description
in the systemd.special(7) man page and remove the redundant
"After=network.target" since network-online.target already orders itself
after network.target.
$globals{postscript} can now contain a full command string including
arguments. In order to facilitate this, the file executability check
(-x) has been modified such that the first substring up to the first
space (if it exists) is what is checked, rather than the whole string.