From 6aee08497522990b19291de42f9d445679eaae27 Mon Sep 17 00:00:00 2001
From: Indrajit Raychaudhuri <irc@indrajit.com>
Date: Wed, 13 Sep 2023 01:02:12 -0500
Subject: ddclient: T5574: Support per-service cache management for services

Add support for per-service cache management for ddclient providers
via `wait-time` and `expiry-time` options. This allows for finer-grained
control over how often a service is updated and how long the hostname
will be cached before being marked expired in ddclient's cache.

More specifically, `wait-time` controls how often ddclient will attempt
to check for a change in the hostname's IP address, and `expiry-time`
controls how often ddclient to a forced update of the hostname's IP
address.

These options intentionally don't have any default values because they
are provider-specific. They get treated similar to the other provider-
specific options in that they are only used if defined.
---
 data/templates/dns-dynamic/ddclient.conf.j2 | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

(limited to 'data/templates')

diff --git a/data/templates/dns-dynamic/ddclient.conf.j2 b/data/templates/dns-dynamic/ddclient.conf.j2
index 5905b19ea..6e77abdb5 100644
--- a/data/templates/dns-dynamic/ddclient.conf.j2
+++ b/data/templates/dns-dynamic/ddclient.conf.j2
@@ -14,10 +14,8 @@ if{{ ipv }}={{ address }}, \
 {%     endif %}
 {% endfor %}
 {# Other service options #}
-{% for k,v in kwargs.items() %}
-{%     if v is vyos_defined %}
-{{ k }}={{ v }}{{ ',' if not loop.last }} \
-{%     endif %}
+{% for k,v in kwargs.items() if v is vyos_defined %}
+{{ k | replace('_', '-') }}={{ v }}{{ ',' if not loop.last }} \
 {% endfor %}
 {# Actual hostname for the service #}
 {{ host }}
@@ -49,7 +47,6 @@ use=no
 {{ render_config(host, address, service_cfg.web_options,
                  protocol='nsupdate', server=config.server, zone=config.zone,
                  password=config.key, ttl=config.ttl) }}
-
 {%                 endfor %}
 {%             endfor %}
 {%         endif %}
@@ -66,8 +63,8 @@ use=no
 # Web service dynamic DNS configuration for {{ name }}: [{{ config.protocol }}, {{ host }}]
 {{ render_config(host, address, service_cfg.web_options, ip_suffixes,
                  protocol=config.protocol, server=config.server, zone=config.zone,
-                 login=config.username, password=config.password, ttl=config.ttl) }}
-
+                 login=config.username, password=config.password, ttl=config.ttl,
+                 min_interval=config.wait_time, max_interval=config.expiry_time) }}
 {%                 endfor %}
 {%             endfor %}
 {%         endif %}
-- 
cgit v1.2.3