From: Florian Eckert Date: Wed, 9 Sep 2020 15:27:12 +0000 (+0200) Subject: ddns-scripts: update bind-nsupdate to json X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=e051d3772012e97cbaec219ba5fefa453f1907c0;p=feed%2Fpackages.git ddns-scripts: update bind-nsupdate to json Signed-off-by: Florian Eckert --- diff --git a/net/ddns-scripts/Makefile b/net/ddns-scripts/Makefile index fe9497787c..1a82b298cd 100755 --- a/net/ddns-scripts/Makefile +++ b/net/ddns-scripts/Makefile @@ -432,17 +432,17 @@ endef define Package/ddns-scripts_nsupdate/install $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_nsupdate + $(INSTALL_DIR) $(1)/usr/lib/ddns - $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_nsupdate.sh $(1)/usr/lib/ddns + $(INSTALL_BIN) ./files/usr/lib/ddns/update_nsupdate.sh \ + $(1)/usr/lib/ddns + + $(INSTALL_DIR) $(1)/usr/share/ddns/services + $(INSTALL_DATA) ./files/usr/share/ddns/services/bind-nsupdate.json \ + $(1)/usr/share/ddns/services endef define Package/ddns-scripts_nsupdate/postinst #!/bin/sh - # remove old services file entries - /bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1 - /bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1 - # and create new - printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services - printf "%s\\t%s\\n" '"bind-nsupdate"' '"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6 # on real system restart service if enabled [ -z "$${IPKG_INSTROOT}" ] && { [ -x /etc/uci-defaults/ddns_nsupdate ] && \ @@ -457,9 +457,6 @@ define Package/ddns-scripts_nsupdate/prerm #!/bin/sh # if NOT run buildroot then stop service [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1 - # remove services file entries - /bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1 - /bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6 >/dev/null 2>&1 exit 0 # suppress errors endef diff --git a/net/ddns-scripts/files/update_nsupdate.sh b/net/ddns-scripts/files/update_nsupdate.sh deleted file mode 100755 index 039196ff80..0000000000 --- a/net/ddns-scripts/files/update_nsupdate.sh +++ /dev/null @@ -1,48 +0,0 @@ -# -#.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 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 0000000000..039196ff80 --- /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 diff --git a/net/ddns-scripts/files/usr/share/ddns/services/bind-nsupdate.json b/net/ddns-scripts/files/usr/share/ddns/services/bind-nsupdate.json new file mode 100644 index 0000000000..f91806a15d --- /dev/null +++ b/net/ddns-scripts/files/usr/share/ddns/services/bind-nsupdate.json @@ -0,0 +1,9 @@ +{ + "name": "bind-nsupdate", + "ipv4": { + "url": "update_nsupdate.sh" + }, + "ipv6": { + "url": "update_nsupdate.sh" + } +}