Skip to content

ddclient: T6981: Upgrade ddclient to v4.0.0#5123

Open
indrajitr wants to merge 15 commits intovyos:currentfrom
indrajitr:ddclient-v4
Open

ddclient: T6981: Upgrade ddclient to v4.0.0#5123
indrajitr wants to merge 15 commits intovyos:currentfrom
indrajitr:ddclient-v4

Conversation

@indrajitr
Copy link
Copy Markdown
Contributor

@indrajitr indrajitr commented Apr 13, 2026

Change summary

Upgrade ddclient to version 4.0.0

ddclient 4.0 brings quite a few changes. Significant ones in the context of VyOS are:

  • SSL (TLS) for http(s) conections is enabled by default, we don't need to sent it explicitly anymore
  • Protocols like googledomains and woima have been removed since those services are defunct
  • checkip.dyndns.org (historically the most common host to detect IP address over webv4/webv6 finally supports tls)
  • A few protocols gained dual-stack support (viz., domeneshop, gandi, godaddy, mythicdyn, noip, nsupdate, regfishde, luadns)
  • Support for a few new protocols have been added (viz., ddns.fm, he.net, inwx, porkbun)
  • Internally, few protocols have modifications (e.g., gandi supports personal access token only)
  • Quite a few additional changes and modification have been applied to remove legacy cruft that are internal to the implementation and aren't user facing.

See: https://github.com/ddclient/ddclient/blob/main/ChangeLog.md#2025-01-19-v400 for upstream changelog.

Note: We used googedomains as default to detect IP address over webv4/webv6 in the past. Since googedomains is not available anymore, we have a migration script to adjust the legacy configuration.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes)
  • Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component
  • Other (please describe):

Related Task(s)

Related PR(s)

vyos/vyos-build/pull/1159

How to test / Smoketest result

vyos@current-2604:~$ /usr/libexec/vyos/tests/smoke/cli/test_service_dns_dynamic.py 
test_01_dyndns_service_standard (__main__.TestServiceDDNS.test_01_dyndns_service_standard) ... ok
test_02_dyndns_service_ipv6 (__main__.TestServiceDDNS.test_02_dyndns_service_ipv6) ... ok
test_03_dyndns_service_dual_stack (__main__.TestServiceDDNS.test_03_dyndns_service_dual_stack) ... ok
test_04_dyndns_rfc2136 (__main__.TestServiceDDNS.test_04_dyndns_rfc2136) ... ok
test_05_dyndns_hostname (__main__.TestServiceDDNS.test_05_dyndns_hostname) ... ok
test_06_dyndns_web_options (__main__.TestServiceDDNS.test_06_dyndns_web_options) ... ok
test_07_dyndns_dynamic_interface (__main__.TestServiceDDNS.test_07_dyndns_dynamic_interface) ... ok
test_08_dyndns_vrf (__main__.TestServiceDDNS.test_08_dyndns_vrf) ... ok

----------------------------------------------------------------------
Ran 8 tests in 524.777s

OK

Checklist:

  • I have read the CONTRIBUTING document
  • I have linked this PR to one or more Phabricator Task(s)
  • I have run the components SMOKETESTS if applicable
  • My commit headlines contain a valid Task id
  • My change requires a change to the documentation
  • I have updated the documentation accordingly

In ddclient v4, tls (ssl) is enabled by default,
there is no need to set it up explicitly in the
configuration file.
Since googledomains (domains.google.com) has been
shut down, we need to remove any configuration path
that refers to googledomains.

1. Remove 'googledomains' as the default web resolver
in ddclient.conf.j2

2. Apply migration to remove googledomains from
dynamic DNS service configurations. The migration
is also necessary to undo a previous migration
where we added 'googledomains' as default web
resolver to work around lack of tls (ssl) support
with default web resolver 'dyndns' (checkip.dyndns.org)
in ddclient v3.x.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 13, 2026

👍
No issues in PR Title / Commit Title

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 13, 2026

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@indrajitr
Copy link
Copy Markdown
Contributor Author

I have read the CLA Document and I hereby sign the CLA

Update smoketests for dual stack configuration.

Also replace 'googledomains' with 'changeip' in
smoketests since googledomains (domains.google.com)
has been shut down.
Since woima (woima.fi) has been shut down, we need
to remove any configuration path that refers to woima.

Apply migration to remove woima from dynamic DNS
service configurations.
In ddclient v4, there is no need to warn for the
usage of checkip.dyndns.org even if it does not
support http over tls. This is because the protocol
specifier (http://) is honored even when tls (ssl)
is enabled.
In ddclient v4, 'use' is not a global scope property
anymore. Besides 'use' had been deprecated in favor
of 'usev4'/'usev6' in ddclient v3.10.
In ddclient v4, the 'ip' and 'status' fields are
no longer supported. They were used to store IPv4
addresses and their status in a backward compatible
way in ddclient v3.
Protocol 'nsupdate' (rfc2136) now supports dual-stack
('usev4', 'usev6' options), so there is no need for
special treatment for 'nsupdate' in the config template.
Relocate key mapping for 'nsupdate' (rfc2136) from
Jinja template to Python. This keeps the template
simpler and allows for more complex dict handling
in Python.
In ddclient v4, some new supported protocols, viz.,
directnic, emailonly have configuration that cannot
be supported in current VyOS config mode yet.
These new protocols are supported in ddclient v4:
'ddns.fm', 'he.net', 'inwx'

These existing protocols gained dual stack support
in ddclient v4:
'domeneshop', 'gandi', 'godaddy', 'mythicdyn',
'noip', 'nsupdate', 'regfishde'
Add `app.luadns.com` and `update.dedyn.io` to allow-list
for dualstack support using 'dyndns2' protocol since
they have been reported to work as expected.
In ddclient, 'porkbun' protocol uses properties
that are different from the ones used by VyOS
configuration. Support for 'porkbun' is enabled
by adding the necessary property remaping before
applying them to the template to render the final
ddclient config.
Since the API key has been deprecated by Gandi,
enforce using personal access token for 'gandi'
protocol.
@github-actions
Copy link
Copy Markdown

CI integration ❌ failed!

Details

CI logs

  • CLI Smoketests ❌ failed
  • CLI Smoketests (interfaces only) ❌ failed
  • Config tests 👍 passed
  • RAID1 tests 👍 passed
  • CLI Smoketests VPP 👍 passed
  • Config tests VPP 👍 passed
  • TPM tests 👍 passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant