Hello everyone!
I have created a new handler that can process DDNS update requests sent from ddclient or any other client that supports DynDNS2-style updates, including most routers with built-in DDNS support.
This handler uses the Caddy DNS providers to automatically update DNS records based on the zones supported by the configured provider. In other words, it acts as a bridge between DDNS clients and any existing libdns providers.
There is already an existing Caddy module called dynamic_dns, which periodically checks IP addresses and updates records. However, this handler works differently because it allows external DDNS clients to push updates directly instead of polling for changes.
It follows most of the rules described in the DynDNS API documentation. I am currently using it to monitor and update my WAN-related DNS records through my EdgeRouter, which supports DDNS.
I am still fairly new to the Caddy source code, so there are probably some things that could be improved. I would really appreciate any feedback or suggestions.