changes for ipv6 handling
This commit is contained in:
30
ddns.sh
30
ddns.sh
@@ -3,7 +3,11 @@
|
|||||||
# The DNS-server IP to use for checking the domain->IP mapping
|
# 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
|
# 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
|
# this should point to an external DNS like 1.1.1.1
|
||||||
NAMESERVER="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 -------------------------------
|
# ----- END CONFIG -------------------------------
|
||||||
|
|
||||||
@@ -32,31 +36,37 @@ if [ -f "${LAST_IP_FILE}" ]; then
|
|||||||
fi
|
fi
|
||||||
echo "Last UPDATE-IP -----------> ${LAST_IP}"
|
echo "Last UPDATE-IP -----------> ${LAST_IP}"
|
||||||
|
|
||||||
WAN_IP=$(${SCRIPTPATH}/easyBoxCtrl.sh wan ip 2>/dev/null)
|
#WAN_IP=$(${SCRIPTPATH}/easyBoxCtrl.sh wan ip 2>/dev/null)
|
||||||
echo "Current WAN-IP -----------> ${WAN_IP}"
|
#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}"
|
PROBE_DOMAIN="${DOMAIN}"
|
||||||
if [[ "${PROBE_DOMAIN}" == \*.* ]]; then
|
if [[ "${PROBE_DOMAIN}" == \*.* ]]; then
|
||||||
PROBE_DOMAIN="probe.${PROBE_DOMAIN:2}"
|
PROBE_DOMAIN="probe.${PROBE_DOMAIN:2}"
|
||||||
echo "Probe domain is ----------> ${PROBE_DOMAIN}"
|
echo "Probe domain is ----------> ${PROBE_DOMAIN}"
|
||||||
fi
|
fi
|
||||||
DNS_IP=$(dig @${NAMESERVER} +short ${PROBE_DOMAIN})
|
DNS_IP=$(dig @${NAMESERVER} +short ${PROBE_DOMAIN} AAAA)
|
||||||
echo "Current DNS-IP -----------> ${DNS_IP}"
|
echo "Current DNS-IP -----------> ${DNS_IP}"
|
||||||
|
|
||||||
|
|
||||||
if [ "${WAN_IP}" == "${DNS_IP}" ]; then
|
if [ "${IPV6_IP}" == "${DNS_IP}" ]; then
|
||||||
echo "IPs match - nothing to do."
|
echo "IPs match - nothing to do."
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
if [ "${LAST_IP}" == "${WAN_IP}" ]; then
|
if [ "${LAST_IP}" == "${IPV6_IP}" ]; then
|
||||||
echo "Last update IP matches WAN-IP - waiting for DNS to propagate changes."
|
echo "Last update IP matches current IP - waiting for DNS to propagate changes."
|
||||||
else
|
else
|
||||||
echo "IP mismatch - trying to update A-record(s)..."
|
echo "IP mismatch - trying to update AAAA-record(s)..."
|
||||||
$SCRIPTPATH/unitedDomainsCtrl.sh ${DOMAIN} ${WAN_IP}
|
$SCRIPTPATH/unitedDomainsCtrl.sh ${DOMAIN} ${IPV6_IP}
|
||||||
|
|
||||||
if [ "$?" == "0" ]; then
|
if [ "$?" == "0" ]; then
|
||||||
echo "Save UPDATE_IP."
|
echo "Save UPDATE_IP."
|
||||||
echo "${WAN_IP}" > ${LAST_IP_FILE}
|
echo "${IPV6_IP}" > ${LAST_IP_FILE}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ fi
|
|||||||
echo "DOMAIN=${DOMAIN}"
|
echo "DOMAIN=${DOMAIN}"
|
||||||
echo "SUBDOMAIN=${SUBDOMAIN}"
|
echo "SUBDOMAIN=${SUBDOMAIN}"
|
||||||
|
|
||||||
IPV4=$2
|
UPDATE_IP=$2
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
|
|
||||||
@@ -111,12 +111,13 @@ current=$(wget -U " $UA" \
|
|||||||
|
|
||||||
|
|
||||||
RECORD_ID=$(echo $current | \
|
RECORD_ID=$(echo $current | \
|
||||||
jq -cM --arg v "${SUBDOMAIN}" '.data.A | map(select(.sub_domain == $v)) | .[0].id')
|
jq -cM --arg v "${SUBDOMAIN}" '.data.AAAA | map(select(.sub_domain == $v)) | .[0].id')
|
||||||
|
echo "RECORD_ID=${RECORD_ID}"
|
||||||
|
|
||||||
record=$(echo $current |
|
record=$(echo $current |
|
||||||
jq -cM --arg v "${SUBDOMAIN}" '.data.A | map(select(.sub_domain == $v)) | .[0]' | \
|
jq -cM --arg v "${SUBDOMAIN}" '.data.AAAA | map(select(.sub_domain == $v)) | .[0]' | \
|
||||||
sed "s/ //g" | \
|
sed "s/ //g" | \
|
||||||
sed "s/\"address\":\"[0-9.]\+\"/\"address\":\"${IPV4}\",\"formId\":${RECORD_ID}/g")
|
sed "s/\"address\":\"[0-9a-z:.]\+\"/\"address\":\"${UPDATE_IP}\",\"formId\":${RECORD_ID}/g")
|
||||||
echo "NEW: $record"
|
echo "NEW: $record"
|
||||||
|
|
||||||
|
|
||||||
@@ -153,7 +154,7 @@ OUT=$(wget -U " $UA" \
|
|||||||
-O- "https://www.united-domains.de/pfapi/dns/domain/$DOMAIN_ID/records" 2>&1)
|
-O- "https://www.united-domains.de/pfapi/dns/domain/$DOMAIN_ID/records" 2>&1)
|
||||||
#echo "UD answered: $OUT"
|
#echo "UD answered: $OUT"
|
||||||
|
|
||||||
#echo $OUT | grep "$IPV4" >/dev/null 2>&1
|
#echo $OUT | grep "$UPDATE_IP" >/dev/null 2>&1
|
||||||
|
|
||||||
SUCCESS=$?
|
SUCCESS=$?
|
||||||
echo "Retval: $SUCCESS"
|
echo "Retval: $SUCCESS"
|
||||||
|
|||||||
Reference in New Issue
Block a user