#!/bin/bash # The DNS-server IP to use for checking the domain->IP mapping # If the local system has it's own DNS server which maps IPs differently # this should point to an external DNS like 1.1.1.1 #NAMESERVER="1.1.1.1" NAMESERVER="2606:4700:4700::1111" IPV6_INTERFACE_ID="c03c:17ff:feeb:21e7" IPV6_SUBNET_ID="01" # ----- END CONFIG ------------------------------- COMMANDS="dirname cat dig" for COMMAND in $COMMANDS; do if ! command -v $COMMAND &> /dev/null then echo "$COMMAND could not be found!" exit 1 fi done set -e SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" DOMAIN="$1" echo "DOMAIN -------------------> ${DOMAIN}" LAST_IP_FILE="/tmp/lastIp-${DOMAIN}" LAST_IP="" if [ -f "${LAST_IP_FILE}" ]; then LAST_IP=$(cat ${LAST_IP_FILE}) fi echo "Last UPDATE-IP -----------> ${LAST_IP}" #WAN_IP=$(${SCRIPTPATH}/easyBoxCtrl.sh wan ip 2>/dev/null) #echo "Current WAN-IP -----------> ${WAN_IP}" IPV6_PREFIX=$(${SCRIPTPATH}/easyBoxCtrl.sh wan ipv6prefix 2>/dev/null) echo "Current IPv6-Prefix ------> ${IPV6_PREFIX}" IPV6_IP="$(sed -r 's/(.*)00::.*/\1/' <<< ${IPV6_PREFIX})${IPV6_SUBNET_ID}:${IPV6_INTERFACE_ID}" echo "Current IPv6-IP ----------> ${IPV6_IP}" PROBE_DOMAIN="${DOMAIN}" if [[ "${PROBE_DOMAIN}" == \*.* ]]; then PROBE_DOMAIN="probe.${PROBE_DOMAIN:2}" echo "Probe domain is ----------> ${PROBE_DOMAIN}" fi DNS_IP=$(dig @${NAMESERVER} +short ${PROBE_DOMAIN} AAAA) echo "Current DNS-IP -----------> ${DNS_IP}" if [ "${IPV6_IP}" == "${DNS_IP}" ]; then echo "IPs match - nothing to do." exit 0 else if [ "${LAST_IP}" == "${IPV6_IP}" ]; then echo "Last update IP matches current IP - waiting for DNS to propagate changes." else echo "IP mismatch - trying to update AAAA-record(s)..." $SCRIPTPATH/unitedDomainsCtrl.sh ${DOMAIN} ${IPV6_IP} if [ "$?" == "0" ]; then echo "Save UPDATE_IP." echo "${IPV6_IP}" > ${LAST_IP_FILE} fi fi fi