ddns-scripts: update bind-nsupdate to json
authorFlorian Eckert <fe@dev.tdt.de>
Wed, 9 Sep 2020 15:27:12 +0000 (17:27 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Mon, 21 Sep 2020 08:17:01 +0000 (10:17 +0200)
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/ddns-scripts/Makefile
net/ddns-scripts/files/update_nsupdate.sh [deleted file]
net/ddns-scripts/files/usr/lib/ddns/update_nsupdate.sh [new file with mode: 0644]
net/ddns-scripts/files/usr/share/ddns/services/bind-nsupdate.json [new file with mode: 0644]

index fe9497787c27e03e7df1c2db2b30145b920dde7d..1a82b298cdf03e12a2f61cc6384265a4b43458d6 100755 (executable)
@@ -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 (executable)
index 039196f..0000000
+++ /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 <de at r-jan dot de>
-#.2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-#
-# 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 (file)
index 0000000..039196f
--- /dev/null
@@ -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 <de at r-jan dot de>
+#.2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# 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 (file)
index 0000000..f91806a
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "name": "bind-nsupdate",
+       "ipv4": {
+               "url": "update_nsupdate.sh"
+       },
+       "ipv6": {
+               "url": "update_nsupdate.sh"
+       }
+}