From ad1c7593109422a30c6258eb8f8a831cbead8e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoran=20Peri=C4=8Di=C4=87?= Date: Wed, 5 May 2021 17:45:36 +0200 Subject: [PATCH] NetworkManager support --- dnsupdate | 11 ++++++++--- dnsupdate.spec | 6 +++++- nm-dnsupdate.sh | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100755 nm-dnsupdate.sh diff --git a/dnsupdate b/dnsupdate index e922145..4a705c2 100755 --- a/dnsupdate +++ b/dnsupdate @@ -224,7 +224,12 @@ EOF } function check_ip() { - local ips=`nslookup $1 | awk '/^Address: / { print \$2 }'` + # $1 - hostname + # $2 - IP + # $3 - Replace + # $4 - Server + + local ips=`nslookup $1 $4 | awk '/^Address: / { print \$2 }'` local count=`echo $ips | wc -l` if [ "$3" == "yes" ]; then @@ -281,7 +286,7 @@ function parse_ddns_config() { tsig_key_secret=${DDNS_TSIG_KEY_SECRET} echo replace $DDNS_REPLACE - if check_ip "$rr_name" "$rr_data" "$replace"; then + if check_ip "$rr_name" "$rr_data" "$replace" "$server"; then run_nsupdate "${rr_name}" "${ttl}" "${type}" "${rr_data}" "${replace}" "${server}" "${tcp}" "${zone}" "${gss_tsig}" "${gss_keytab}" "${gss_principal}" "${tsig_file}" "${tsig_key_type}" "${tsig_key_name}" "${tsig_key_secret}" fi fi @@ -306,7 +311,7 @@ function parse_ddns_config() { tsig_key_name=$(eval echo "\${DDNS${hostnum}_TSIG_KEY_NAME-\${DDNS_TSIG_KEY_NAME}}") tsig_key_secret=$(eval echo "\${DDNS${hostnum}_TSIG_KEY_SECRET-\${DDNS_TSIG_KEY_SECRET}}") - if check_ip "$rr_name" "$rr_data" "$replace"; then + if check_ip "$rr_name" "$rr_data" "$replace" "$server"; then run_nsupdate "${rr_name}" "${ttl}" "${type}" "${rr_data}" "${replace}" "${server}" "${tcp}" "${zone}" "${gss_tsig}" "${gss_keytab}" "${gss_principal}" "${tsig_file}" "${tsig_key_type}" "${tsig_key_name}" "${tsig_key_secret}" fi (( hostnum++ )) diff --git a/dnsupdate.spec b/dnsupdate.spec index 62ca7e9..25a4cfb 100644 --- a/dnsupdate.spec +++ b/dnsupdate.spec @@ -1,6 +1,6 @@ Summary: Dynamic DNS for ppp and dhclient Name: dnsupdate -Version: 0.5.2 +Version: 0.6.0 Release: 1%{?dist} License: GPLv2+ Group: System Environment/Daemons @@ -15,6 +15,7 @@ Source0: dnsupdate Source1: dhclient-dnsupdate.sh Source2: ppp-dnsupdate.sh Source3: dnsupdate.cron +Source4: nm-dnsupdate.sh BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -31,11 +32,13 @@ install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/dhcp/ install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/dhcp/dhclient.d install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/ppp install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/ppp/ip-up.d +install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d install -pm 755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/dnsupdate install -pm 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/dhcp/dhclient.d/dnsupdate.sh install -pm 755 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/ppp/ip-up.d/dnsupdate.sh install -pm 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/dnsupdate +install -pm 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d %clean %{__rm} -rf %{buildroot} @@ -45,6 +48,7 @@ install -pm 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/dnsupdate %defattr(-,root,root,-) %{_bindir}/dnsupdate +%{_sysconfdir}/NetworkManager/dispatcher.d/nm-dnsupdate.sh %{_sysconfdir}/dhcp/dhclient.d/dnsupdate.sh %{_sysconfdir}/ppp/ip-up.d/dnsupdate.sh %{_sysconfdir}/cron.d/dnsupdate diff --git a/nm-dnsupdate.sh b/nm-dnsupdate.sh new file mode 100755 index 0000000..b221446 --- /dev/null +++ b/nm-dnsupdate.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +IF=$1 +STATUS=$2 + +case "$2" in + up|dhcp4-change) + logger -s "NM Script up $IF triggered dnsupdate" + dnsupdate "$1" + ;; + down) + logger -s "NM Script down $IF triggered dnsupdate" + ;; + *) + ;; +esac