#!/bin/sh # Copyright (C) 2014-2021 Daniel Baumann # # SPDX-License-Identifier: GPL-3.0+ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . set -e . /etc/network-tools/config/ddns-client.conf # alternatives handling for knsupdate/nsupdate if command -v knsupdate > /dev/null 2>&1 then # knot-dnsutils NSUPDATE="knsupdate -k ${TSIG_KEYFILE}" elif command -v nsupdate > /dev/null 2>&1 then # bind9-dnsutils NSUPDATE="nsupdate -k ${TSIG_KEYFILE}" else echo "'${HOOK}': need nsupdate from bind9-dnsutils or knot-dnsutils" >&2 exit 1 fi # alternatives handling for wget/curl if command -v wget > /dev/null 2>&1 then # wget GET="wget -q -O - -U $(basename "${0}")/git" elif command -v curl > /dev/null 2>&1 then # curl GET="curl -s -A $(basename "${0}")/git" else echo "'${HOOK}': need wget or curl" >&2 exit 1 fi IPV4_ADDRESS="$(${GET} -4 https://tools.bfh.info/api/v0/ipv4/address/ | jq -r -M '.data.ipv4_address')" IPV6_ADDRESS="$(${GET} -6 https://tools.bfh.info/api/v0/ipv6/address/ | jq -r -M '.data.ipv6_address')" DATE="$(date +%Y-%m-%d\ %H:%M:%S)" Update_record () { ACTION="${1}" TYPE="${2}" ADDRESS="${3}" echo -n "${NAMESERVER}: ${ACTION} ${RECORD}.${ZONE} ${TTL} ${TYPE} ${ADDRESS}:" # shellcheck disable=SC2086 echo "server ${NAMESERVER} zone ${ZONE} ttl ${TTL} update ${ACTION} ${RECORD}.${ZONE} ${TTL} ${TYPE} ${ADDRESS} send" | ${NSUPDATE} echo " done." } # Run for NAMESERVER in ${NAMESERVERS} do Update_record delete AAAA Update_record delete A Update_record delete TXT echo done