diff options
author | Christian Breunig <christian@breunig.cc> | 2023-06-10 07:45:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 07:45:36 +0200 |
commit | 0b99a4cba1279b5a27d2fa013004501f89b3edce (patch) | |
tree | d2db029afbd2b3cbaa656414f66d41da5f2bbd6a | |
parent | a7ee793b4e1f038e9b0f0774f10c407fc36ec164 (diff) | |
parent | 2e79de15fc3852a67d2fa4ae557ecd091a3ad780 (diff) | |
download | vyos-1x-0b99a4cba1279b5a27d2fa013004501f89b3edce.tar.gz vyos-1x-0b99a4cba1279b5a27d2fa013004501f89b3edce.zip |
Merge pull request #2035 from indrajitr/ddclient-improvement-round-4
dns: T5144: Improve dynamic dns monitor and log and miscellaneous updates
-rw-r--r-- | data/templates/dns-dynamic/ddclient.conf.j2 | 9 | ||||
-rw-r--r-- | data/templates/dns-dynamic/override.conf.j2 | 1 | ||||
-rw-r--r-- | interface-definitions/dns-dynamic.xml.in | 2 | ||||
-rw-r--r-- | interface-definitions/dns-forwarding.xml.in | 2 | ||||
-rw-r--r-- | op-mode-definitions/dns-dynamic.xml.in | 35 | ||||
-rw-r--r-- | op-mode-definitions/dns-forwarding.xml.in | 10 | ||||
-rwxr-xr-x | src/conf_mode/dns_dynamic.py | 8 |
7 files changed, 50 insertions, 17 deletions
diff --git a/data/templates/dns-dynamic/ddclient.conf.j2 b/data/templates/dns-dynamic/ddclient.conf.j2 index a19b79c00..4da7153c7 100644 --- a/data/templates/dns-dynamic/ddclient.conf.j2 +++ b/data/templates/dns-dynamic/ddclient.conf.j2 @@ -28,6 +28,9 @@ 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() %} @@ -58,9 +61,9 @@ cache={{ config_file | replace('.conf', '.cache') }} {% set ip_suffixes = ['v4', 'v6'] if config.ip_version == 'both' else (['v6'] if config.ip_version == 'ipv6' else ['']) %} # Web service dynamic DNS configuration for {{ name }}: [{{ config.protocol }}, {{ host }}] -{# For ipv4 only setup, don't append 'new-style' compliant suffix ('usev4', 'ifv4', 'webv4' etc.) - to the properties and instead live through the deprecation warnings for better compatibility - with most ddclient protocols. #} +{# For ipv4 only setup or legacy ipv6 setup, don't append 'new-style' compliant suffix + ('usev4', 'ifv4', 'webv4' etc.) to the properties and instead live through the + deprecation warnings for better compatibility with most ddclient protocols. #} {{ 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) }} diff --git a/data/templates/dns-dynamic/override.conf.j2 b/data/templates/dns-dynamic/override.conf.j2 index 8a9dfcd70..6ca1b8a45 100644 --- a/data/templates/dns-dynamic/override.conf.j2 +++ b/data/templates/dns-dynamic/override.conf.j2 @@ -4,7 +4,6 @@ ConditionPathExists={{ config_file }} After=vyos-router.service [Service] -PIDFile= PIDFile={{ config_file | replace('.conf', '.pid') }} EnvironmentFile= ExecStart= diff --git a/interface-definitions/dns-dynamic.xml.in b/interface-definitions/dns-dynamic.xml.in index 292c50603..c7b45b8f7 100644 --- a/interface-definitions/dns-dynamic.xml.in +++ b/interface-definitions/dns-dynamic.xml.in @@ -4,7 +4,7 @@ <children> <node name="dns"> <properties> - <help>Domain Name System related services</help> + <help>Domain Name System (DNS) related services</help> </properties> <children> <node name="dynamic" owner="${vyos_conf_scripts_dir}/dns_dynamic.py"> diff --git a/interface-definitions/dns-forwarding.xml.in b/interface-definitions/dns-forwarding.xml.in index ced1c9c31..86dc47a47 100644 --- a/interface-definitions/dns-forwarding.xml.in +++ b/interface-definitions/dns-forwarding.xml.in @@ -5,7 +5,7 @@ <children> <node name="dns"> <properties> - <help>Domain Name System related services</help> + <help>Domain Name System (DNS) related services</help> </properties> <children> <node name="forwarding" owner="${vyos_conf_scripts_dir}/dns_forwarding.py"> diff --git a/op-mode-definitions/dns-dynamic.xml.in b/op-mode-definitions/dns-dynamic.xml.in index 8047d55cd..4f0399964 100644 --- a/op-mode-definitions/dns-dynamic.xml.in +++ b/op-mode-definitions/dns-dynamic.xml.in @@ -1,16 +1,40 @@ <?xml version="1.0"?> <interfaceDefinition> + <node name="monitor"> + <children> + <node name="log"> + <children> + <node name="dns"> + <properties> + <help>Monitor last lines of Domain Name System (DNS) related services</help> + </properties> + <children> + <node name="dynamic"> + <properties> + <help>Monitor last lines of Dynamic DNS update service</help> + </properties> + <command>journalctl --no-hostname --follow --boot --unit ddclient.service</command> + </node> + </children> + </node> + </children> + </node> + </children> + </node> <node name="show"> <children> <node name="log"> <children> <node name="dns"> + <properties> + <help>Show log for Domain Name System (DNS) related services</help> + </properties> <children> <node name="dynamic"> <properties> - <help>Show log for dynamic DNS</help> + <help>Show log for Dynamic DNS update service</help> </properties> - <command>cat $(printf "%s\n" /var/log/messages* | sort -nr) | grep -e "ddclient"</command> + <command>journalctl --no-hostname --boot --unit ddclient.service</command> </node> </children> </node> @@ -18,7 +42,7 @@ </node> <node name="dns"> <properties> - <help>Show DNS information</help> + <help>Show Domain Name System (DNS) related information</help> </properties> <children> <node name="dynamic"> @@ -41,6 +65,9 @@ <node name="restart"> <children> <node name="dns"> + <properties> + <help>Restart specific Domain Name System (DNS) related service</help> + </properties> <children> <node name="dynamic"> <properties> @@ -59,7 +86,7 @@ <children> <node name="dns"> <properties> - <help>Update DNS information</help> + <help>Update Domain Name System (DNS) related information</help> </properties> <children> <node name="dynamic"> diff --git a/op-mode-definitions/dns-forwarding.xml.in b/op-mode-definitions/dns-forwarding.xml.in index c8ca117be..a4c650c38 100644 --- a/op-mode-definitions/dns-forwarding.xml.in +++ b/op-mode-definitions/dns-forwarding.xml.in @@ -6,7 +6,7 @@ <children> <node name="dns"> <properties> - <help>Monitor last lines of Domain Name Service (DNS)</help> + <help>Monitor last lines of Domain Name System (DNS) related services</help> </properties> <children> <node name="forwarding"> @@ -27,7 +27,7 @@ <children> <node name="dns"> <properties> - <help>Show log for Domain Name Service (DNS)</help> + <help>Show log for Domain Name System (DNS) related services</help> </properties> <children> <node name="forwarding"> @@ -42,7 +42,7 @@ </node> <node name="dns"> <properties> - <help>Show DNS information</help> + <help>Show Domain Name System (DNS) related information</help> </properties> <children> <node name="forwarding"> @@ -66,7 +66,7 @@ <children> <node name="dns"> <properties> - <help>Restart specific DNS service</help> + <help>Restart specific Domain Name System (DNS) related service</help> </properties> <children> <leafNode name="forwarding"> @@ -83,7 +83,7 @@ <children> <node name="dns"> <properties> - <help>Reset a DNS service state</help> + <help>Reset Domain Name System (DNS) related service state</help> </properties> <children> <node name="forwarding"> diff --git a/src/conf_mode/dns_dynamic.py b/src/conf_mode/dns_dynamic.py index e070a3502..67134e681 100755 --- a/src/conf_mode/dns_dynamic.py +++ b/src/conf_mode/dns_dynamic.py @@ -117,13 +117,17 @@ def generate(dyndns): return None def apply(dyndns): + systemd_service = 'ddclient.service' + # Reload systemd manager configuration + call('systemctl daemon-reload') + # bail out early - looks like removal from running config if not dyndns or 'address' not in dyndns: - call('systemctl stop ddclient.service') + call(f'systemctl stop {systemd_service}') if os.path.exists(config_file): os.unlink(config_file) else: - call('systemctl restart ddclient.service') + call(f'systemctl reload-or-restart {systemd_service}') return None |