summaryrefslogtreecommitdiff
path: root/data/templates/dns-dynamic/ddclient.conf.j2
blob: efc7f0fe43ab9977686ba41d1de0dfc7067f8ede (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{% macro render_config(host, address, web_options, ip_suffixes=['']) %}
{# Address: use=if, if=ethX, usev6=ifv6, ifv6=ethX, usev6=webv6, webv6=https://v6.example.com #}
{% for ipv in ip_suffixes %}
use{{ ipv }}={{ address if address == 'web' else 'if' }}{{ ipv }}, \
{%     if address == 'web' %}
{%         if web_options.url is vyos_defined %}
web{{ ipv }}={{ web_options.url }}, \
{%         endif %}
{%         if web_options.skip is vyos_defined %}
web-skip{{ ipv }}='{{ web_options.skip }}', \
{%         endif %}
{%     else %}
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 %}
{% endfor %}
{# Actual hostname for the service #}
{{ host }}
{% endmacro %}
### Autogenerated by dns_dynamic.py ###
daemon={{ timeout }}
syslog=yes
ssl=yes
pid={{ config_file | replace('.conf', '.pid') }}
cache={{ config_file | replace('.conf', '.cache') }}
{# Explicitly override global options for reliability #}
web=googledomains {# ddclient default ('dyndns') doesn't support ssl and results in process lockup #}
use=no            {# ddclient default ('ip') results in confusing warning message in log #}

{% if address is vyos_defined %}
{%     for address, service_cfg in address.items() %}
{%         if service_cfg.rfc2136 is vyos_defined %}
{%             for name, config in service_cfg.rfc2136.items() %}
{%                 if config.description is vyos_defined %}
# {{ config.description }}

{%                 endif %}
{%                 for host in config.host_name if config.host_name is vyos_defined %}
# RFC2136 dynamic DNS configuration for {{ name }}: [{{ config.zone }}, {{ host }}]
{# Don't append 'new-style' compliant suffix ('usev4', 'usev6', 'ifv4', 'ifv6' etc.)
   to the properties since 'nsupdate' doesn't support that yet. #}
{{ 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 %}
{%         if service_cfg.service is vyos_defined %}
{%             for name, config in service_cfg.service.items() %}
{%                 if config.description is vyos_defined %}
# {{ config.description }}

{%                 endif %}
{%                 for host in config.host_name if config.host_name is vyos_defined %}
{%                     set ip_suffixes = ['v4', 'v6'] if config.ip_version == 'both'
                                                      else [config.ip_version[2:]] %} {# 'ipvX' -> 'vX' #}
# 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) }}

{%                 endfor %}
{%             endfor %}
{%         endif %}
{%     endfor %}
{% endif %}