diff --git a/dns/ddclient/Makefile b/dns/ddclient/Makefile index d4f5a1914..f058a437e 100644 --- a/dns/ddclient/Makefile +++ b/dns/ddclient/Makefile @@ -1,5 +1,6 @@ PLUGIN_NAME= ddclient PLUGIN_VERSION= 1.3 +PLUGIN_REVISION= 1 PLUGIN_DEPENDS= ddclient PLUGIN_COMMENT= Dynamic DNS client PLUGIN_MAINTAINER= ad@opnsense.org diff --git a/dns/ddclient/src/opnsense/mvc/app/controllers/OPNsense/DynDNS/forms/dialogAccount.xml b/dns/ddclient/src/opnsense/mvc/app/controllers/OPNsense/DynDNS/forms/dialogAccount.xml index 020d20216..22a8fa8ca 100644 --- a/dns/ddclient/src/opnsense/mvc/app/controllers/OPNsense/DynDNS/forms/dialogAccount.xml +++ b/dns/ddclient/src/opnsense/mvc/app/controllers/OPNsense/DynDNS/forms/dialogAccount.xml @@ -69,7 +69,8 @@ account.force_ssl checkbox - Force update using HTTPS + Force update using HTTPS, please note setting this option will enforce https updates on all accounts + as ddclient only supports SSL=yes on a global level (check check ip service may still use HTTP on other services) account.interface diff --git a/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf b/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf index 71d3f1972..dfdd9c0e8 100644 --- a/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf +++ b/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf @@ -5,76 +5,87 @@ pid=/var/run/ddclient.pid # record PID in file. {% if not helpers.empty('OPNsense.DynDNS.general.verbose') %} verbose=yes {% endif %} - - +{% set accounts = [] %} +{% set force_ssl = [] %} {% if helpers.exists('OPNsense.DynDNS.accounts.account') %} {% for account in helpers.toList('OPNsense.DynDNS.accounts.account') %} {% if account.enabled|default('0') == '1' %} -{% if account.checkip == 'if' %} -use=if, if={{physical_interface(account.interface)}}, \ -{% elif account.checkip.startswith('web_') %} -{% if account.interface %} -use=cmd, cmd="/usr/local/opnsense/scripts/ddclient/checkip -i {{physical_interface(account.interface)}} -t {{account.force_ssl}} -s {{account.checkip[4:]}}", -{% else %} -use=cmd, cmd="/usr/local/opnsense/scripts/ddclient/checkip -t {{account.force_ssl}} -s {{account.checkip[4:]}}", -{% endif %} +{% do accounts.append(account) %} +{% if account.force_ssl|default('0') == '1' %} +{% do force_ssl.append(1) %} {% endif %} -{% if account.service == 'custom' %} -protocol={{account.protocol}}, \ -server={{account.server}}, \ -{% elif account.service == 'cloudflare' %} -protocol=cloudflare, \ -zone={{account.zone}}, \ -{% elif account.service == 'dnsmadeeasy' %} -protocol=dnsmadeeasy, \ -{% elif account.service == 'dns-o-matic' %} -protocol=dyndns2, \ -server=updates.dnsomatic.com, \ -{% elif account.service == 'freedns' %} -protocol=freedns, \ -server=freedns.afraid.org, \ -{% elif account.service == 'dynu' %} -protocol=dyndns2, \ -server=api.dynu.com, \ -{% elif account.service == 'he-net' %} -protocol=dyndns2, \ -server=dyn.dns.he.net, \ -{% elif account.service == 'he-net-tunnel' %} -protocol=dyndns2, \ -server=ipv4.tunnelbroker.net, \ -{% elif account.service == 'inwx' %} -protocol=dyndns2, \ -server=dyndns.inwx.com, \ -{% elif account.service == 'loopia' %} -protocol=dyndns2, \ -server=dyndns.loopia.se, \ -{% elif account.service == 'nsupdatev4' %} -protocol=dyndns2, \ -server=ipv4.nsupdate.info, \ -{% elif account.service == 'nsupdatev6' %} -protocol=dyndns2, \ -server=ipv6.nsupdate.info, \ -{% elif account.service == 'spdyn' %} -protocol=dyndns2, \ -server=update.spdyn.de, \ -{% elif account.service == 'strato' %} -protocol=dyndns2, \ -server=dyndns.strato.com, \ -{% elif account.service == 'ovh' %} -protocol=dyndns2, \ -server=www.ovh.com, \ -{% else %} -protocol={{account.service}}, \ -{% endif %} -{% if account.wildcard|default('0') == '1' %} -wildcard=yes, \ -{% endif %} -{% if account.username %} -login={{account.username}}, \ -{% endif %} -password={{account.password}} \ -{{account.hostnames}} - {% endif %} {% endfor %} {% endif %} +{% if force_ssl %} +ssl=yes +{% endif %} + + +{% for account in accounts %} +{% if account.checkip == 'if' %} +use=if, if={{physical_interface(account.interface)}}, \ +{% elif account.checkip.startswith('web_') %} +{% if account.interface %} +use=cmd, cmd="/usr/local/opnsense/scripts/ddclient/checkip -i {{physical_interface(account.interface)}} -t {{account.force_ssl}} -s {{account.checkip[4:]}}", +{% else %} +use=cmd, cmd="/usr/local/opnsense/scripts/ddclient/checkip -t {{account.force_ssl}} -s {{account.checkip[4:]}}", +{% endif %} +{% endif %} +{% if account.service == 'custom' %} +protocol={{account.protocol}}, \ +server={{account.server}}, \ +{% elif account.service == 'cloudflare' %} +protocol=cloudflare, \ +zone={{account.zone}}, \ +{% elif account.service == 'dnsmadeeasy' %} +protocol=dnsmadeeasy, \ +{% elif account.service == 'dns-o-matic' %} +protocol=dyndns2, \ +server=updates.dnsomatic.com, \ +{% elif account.service == 'freedns' %} +protocol=freedns, \ +server=freedns.afraid.org, \ +{% elif account.service == 'dynu' %} +protocol=dyndns2, \ +server=api.dynu.com, \ +{% elif account.service == 'he-net' %} +protocol=dyndns2, \ +server=dyn.dns.he.net, \ +{% elif account.service == 'he-net-tunnel' %} +protocol=dyndns2, \ +server=ipv4.tunnelbroker.net, \ +{% elif account.service == 'inwx' %} +protocol=dyndns2, \ +server=dyndns.inwx.com, \ +{% elif account.service == 'loopia' %} +protocol=dyndns2, \ +server=dyndns.loopia.se, \ +{% elif account.service == 'nsupdatev4' %} +protocol=dyndns2, \ +server=ipv4.nsupdate.info, \ +{% elif account.service == 'nsupdatev6' %} +protocol=dyndns2, \ +server=ipv6.nsupdate.info, \ +{% elif account.service == 'spdyn' %} +protocol=dyndns2, \ +server=update.spdyn.de, \ +{% elif account.service == 'strato' %} +protocol=dyndns2, \ +server=dyndns.strato.com, \ +{% elif account.service == 'ovh' %} +protocol=dyndns2, \ +server=www.ovh.com, \ +{% else %} +protocol={{account.service}}, \ +{% endif %} +{% if account.wildcard|default('0') == '1' %} +wildcard=yes, \ +{% endif %} +{% if account.username %} +login={{account.username}}, \ +{% endif %} +password={{account.password}} \ +{{account.hostnames}} + +{% endfor %}