74 lines
2.0 KiB
Bash
Executable File
74 lines
2.0 KiB
Bash
Executable File
#!/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}
|
|
$SCRIPTPATH/cloudflareCtrl.sh ${DOMAIN} ${IPV6_IP}
|
|
|
|
if [ "$?" == "0" ]; then
|
|
echo "Save UPDATE_IP."
|
|
echo "${IPV6_IP}" > ${LAST_IP_FILE}
|
|
fi
|
|
fi
|
|
fi
|