mirror of
https://github.com/EV21/dynb.git
synced 2025-12-26 16:39:32 +01:00
🔧 handle dns server selection
This commit is contained in:
107
dynb.sh
107
dynb.sh
@@ -41,7 +41,7 @@ _ipv4_checker=api64.ipify.org
|
|||||||
_ipv6_checker=api64.ipify.org
|
_ipv6_checker=api64.ipify.org
|
||||||
|
|
||||||
## An exernal DNS check server prevents wrong info from local DNS servers/resolvers
|
## An exernal DNS check server prevents wrong info from local DNS servers/resolvers
|
||||||
_DNS_checkServer=1.1.1.1
|
_DNS_checkServer=
|
||||||
|
|
||||||
## if you are actively using multiple network interfaces you might want to specify this
|
## if you are actively using multiple network interfaces you might want to specify this
|
||||||
## normally the default value is okay
|
## normally the default value is okay
|
||||||
@@ -161,13 +161,18 @@ function getDNSIP() {
|
|||||||
# 2. param: IP check server address
|
# 2. param: IP check server address
|
||||||
# result to stdout
|
# result to stdout
|
||||||
function getRemoteIP() {
|
function getRemoteIP() {
|
||||||
curl --silent "$_interface_str" --user-agent "$_userAgent" \
|
if [[ -n $_DNS_checkServer ]]; then
|
||||||
--ipv"${1}" --dns-servers 1.1.1.1 --location "${2}"
|
curl --silent "$_interface_str" --user-agent "$_userAgent" \
|
||||||
# shellcheck disable=2181
|
--ipv"${1}" --dns-servers "$_DNS_checkServer" --location "${2}"
|
||||||
if [[ $? -gt 0 ]]; then
|
else
|
||||||
errorMessage "IPCheck (getRemoteIP ${1}) request failed"
|
curl --silent "$_interface_str" --user-agent "$_userAgent" \
|
||||||
exit 1
|
--ipv"${1}" --location "${2}"
|
||||||
fi
|
fi
|
||||||
|
# shellcheck disable=2181
|
||||||
|
if [[ $? -gt 0 ]]; then
|
||||||
|
errorMessage "IPCheck (getRemoteIP ${1}) request failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# requires parameter
|
# requires parameter
|
||||||
@@ -412,46 +417,54 @@ function checkStatus() {
|
|||||||
# requires parameter
|
# requires parameter
|
||||||
# 1. param: 4 or 6 for IP version
|
# 1. param: 4 or 6 for IP version
|
||||||
function ipHasChanged() {
|
function ipHasChanged() {
|
||||||
case ${1} in
|
case ${1} in
|
||||||
4 )
|
4)
|
||||||
remote_ip=$(getRemoteIP 4 $_ipv4_checker)
|
remote_ip=$(getRemoteIP 4 $_ipv4_checker)
|
||||||
if [[ $DYNB_UPDATE_METHOD == domrobot ]]; then
|
if [[ $DYNB_UPDATE_METHOD == domrobot ]]; then
|
||||||
dns_ip=$(getDNSIP A)
|
dns_ip=$(getDNSIP A)
|
||||||
else
|
else
|
||||||
dig_response=$(dig @${_DNS_checkServer} in a +short "$DYNB_DYN_DOMAIN")
|
if [[ -n $_DNS_checkServer ]]; then
|
||||||
if [[ $dig_response == ";; connection timed out; no servers could be reached" ]]; then
|
dig_response=$(dig @"${_DNS_checkServer}" in a +short "$DYNB_DYN_DOMAIN")
|
||||||
errorMessage "DNS request failed $dig_response"
|
else
|
||||||
return 0
|
dig_response=$(dig in a +short "$DYNB_DYN_DOMAIN")
|
||||||
fi
|
fi
|
||||||
dns_ip=$dig_response
|
if [[ $dig_response == ";; connection timed out; no servers could be reached" ]]; then
|
||||||
fi
|
errorMessage "DNS request failed $dig_response"
|
||||||
_new_IPv4=$remote_ip
|
return 0
|
||||||
debugMessage "New IPv4: $_new_IPv4 old was: $dns_ip"
|
fi
|
||||||
;;
|
dns_ip=$dig_response
|
||||||
6 )
|
fi
|
||||||
remote_ip=$(getRemoteIP 6 $_ipv6_checker)
|
_new_IPv4=$remote_ip
|
||||||
if [[ $DYNB_UPDATE_METHOD == domrobot ]]; then
|
debugMessage "New IPv4: $_new_IPv4 old was: $dns_ip"
|
||||||
dns_ip=$(getDNSIP AAAA)
|
;;
|
||||||
else
|
6)
|
||||||
dig_response=$(dig @${_DNS_checkServer} in aaaa +short "$DYNB_DYN_DOMAIN")
|
remote_ip=$(getRemoteIP 6 $_ipv6_checker)
|
||||||
if [[ $dig_response == ";; connection timed out; no servers could be reached" ]]; then
|
if [[ $DYNB_UPDATE_METHOD == domrobot ]]; then
|
||||||
errorMessage "DNS request failed $dig_response"
|
dns_ip=$(getDNSIP AAAA)
|
||||||
return 0
|
else
|
||||||
fi
|
if [[ -n $_DNS_checkServer ]]; then
|
||||||
dns_ip=$dig_response
|
dig_response=$(dig @"${_DNS_checkServer}" in aaaa +short "$DYNB_DYN_DOMAIN")
|
||||||
fi
|
else
|
||||||
_new_IPv6=$remote_ip
|
dig_response=$(dig in aaaa +short "$DYNB_DYN_DOMAIN")
|
||||||
debugMessage "New IPv6: $_new_IPv6 old was: $dns_ip"
|
fi
|
||||||
;;
|
if [[ $dig_response == ";; connection timed out; no servers could be reached" ]]; then
|
||||||
* )
|
errorMessage "DNS request failed $dig_response"
|
||||||
;;
|
return 0
|
||||||
esac
|
fi
|
||||||
|
dns_ip=$dig_response
|
||||||
|
fi
|
||||||
|
_new_IPv6=$remote_ip
|
||||||
|
debugMessage "New IPv6: $_new_IPv6 old was: $dns_ip"
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
|
||||||
if [[ "$remote_ip" == "$dns_ip" ]]; then
|
esac
|
||||||
return 0
|
|
||||||
else
|
if [[ "$remote_ip" == "$dns_ip" ]]; then
|
||||||
return 1
|
return 0
|
||||||
fi
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
################
|
################
|
||||||
|
|||||||
Reference in New Issue
Block a user