From e051d3772012e97cbaec219ba5fefa453f1907c0 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Wed, 9 Sep 2020 17:27:12 +0200 Subject: ddns-scripts: update bind-nsupdate to json Signed-off-by: Florian Eckert --- .../files/usr/lib/ddns/update_nsupdate.sh | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh (limited to 'net/ddns-scripts/files/usr/lib') diff --git a/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh b/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh new file mode 100644 index 000000000..039196ff8 --- /dev/null +++ b/net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh @@ -0,0 +1,48 @@ +# +#.Distributed under the terms of the GNU General Public License (GPL) version 2.0 +# +# The script directly updates a PowerDNS (or maybe bind server) via nsupdate from bind-client package. +#.based on github request #957 by Jan Riechers +#.2015 Christian Schoenebeck +# +# This script is parsed by dynamic_dns_functions.sh inside send_update() function +# +# using following options from /etc/config/ddns +# option username - keyname +# option password - shared secret (base64 encoded) +# option domain - full qualified domain to update +# option dns_server - DNS server to update +# +# variable __IP already defined with the ip-address to use for update +# +local __TTL=600 #.preset DNS TTL (in seconds) +local __RRTYPE __PW __TCP +local __PROG=$(command -v nsupdate) # BIND nsupdate ? +[ -z "$__PROG" ] && __PROG=$(command -v knsupdate) # Knot nsupdate ? + +[ -z "$__PROG" ] && write_log 14 "'nsupdate' or 'knsupdate' not installed !" +[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'" +[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'" +[ -z "$dns_server" ] && write_log 14 "Service section not configured correctly! Missing 'dns_server'" + +[ $use_ipv6 -ne 0 ] && __RRTYPE="AAAA" || __RRTYPE="A" +[ $force_dnstcp -ne 0 ] && __TCP="-v" || __TCP="" + +# create command file +cat >$DATFILE <<-EOF +server $dns_server +key $username $password +update del $domain $__RRTYPE +update add $domain $__TTL $__RRTYPE $__IP +show +send +answer +quit +EOF + +$__PROG -d $__TCP $DATFILE >$ERRFILE 2>&1 + +# nsupdate always return success +write_log 7 "(k)nsupdate reports:${N}$(cat $ERRFILE)" + +return 0 -- cgit v1.2.3