mirror of
https://github.com/EV21/dynb.git
synced 2025-12-26 16:39:32 +01:00
feat: temporarily disable an ip version if the connectivity/routing does not work
This commit is contained in:
48
dynb.sh
48
dynb.sh
@@ -77,6 +77,10 @@ _statusFile=/tmp/dynb.status
|
|||||||
_debug=false
|
_debug=false
|
||||||
_minimum_looptime=60
|
_minimum_looptime=60
|
||||||
_loopMode=false
|
_loopMode=false
|
||||||
|
_remote_ip=
|
||||||
|
_has_remote_ip_error=
|
||||||
|
_has_remote_ip4=false
|
||||||
|
_has_remote_ip6=false
|
||||||
|
|
||||||
# Ansi color code variables
|
# Ansi color code variables
|
||||||
yellow_color="\e[0;33m"
|
yellow_color="\e[0;33m"
|
||||||
@@ -221,7 +225,7 @@ function getRecordID
|
|||||||
}
|
}
|
||||||
|
|
||||||
## getDNSIP A
|
## getDNSIP A
|
||||||
# requires parameter A or AAAA
|
# requires parameter A or AAAA,
|
||||||
# result to stdout
|
# result to stdout
|
||||||
function getDNSIP() {
|
function getDNSIP() {
|
||||||
local record_type=$1
|
local record_type=$1
|
||||||
@@ -256,8 +260,8 @@ function getDNSIP() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_has_remote_ip_error=false
|
## getRemoteIP A
|
||||||
|
# sets the variable _remote_ip
|
||||||
# requires parameter
|
# requires parameter
|
||||||
# 1. param: 4 or 6 for ip version
|
# 1. param: 4 or 6 for ip version
|
||||||
# result to stdout
|
# result to stdout
|
||||||
@@ -289,14 +293,14 @@ function getRemoteIP
|
|||||||
# shellcheck disable=2181
|
# shellcheck disable=2181
|
||||||
if [[ $curls_status_code -gt 0 ]]
|
if [[ $curls_status_code -gt 0 ]]
|
||||||
then
|
then
|
||||||
errorMessage "Remote IPv$ip_version request failed with ${current_check_server}"
|
errorMessage "Remote IPv$ip_version request failed with ${current_check_server} curl status code: $curls_status_code"
|
||||||
_has_remote_ip_error=true
|
_has_remote_ip_error=true
|
||||||
return_value=1
|
return_value=1
|
||||||
else
|
else
|
||||||
if is_ip_address "$ip_version" "$response"
|
if is_ip_address "$ip_version" "$response"
|
||||||
then
|
then
|
||||||
_has_remote_ip_error=false
|
_has_remote_ip_error=false
|
||||||
echo "$response"
|
_remote_ip="$response"
|
||||||
return_value=0
|
return_value=0
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
@@ -307,6 +311,20 @@ function getRemoteIP
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
case $ip_version in
|
||||||
|
4)
|
||||||
|
if [[ $_has_remote_ip_error == true ]]
|
||||||
|
then _has_remote_ip4=false
|
||||||
|
else _has_remote_ip4=true
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
if [[ $_has_remote_ip_error == true ]]
|
||||||
|
then export _has_remote_ip6=false
|
||||||
|
else export _has_remote_ip6=true
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
return $return_value
|
return $return_value
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,15 +443,16 @@ function prepare_request_parameters
|
|||||||
|
|
||||||
function prepare_ip_flag_parameters
|
function prepare_ip_flag_parameters
|
||||||
{
|
{
|
||||||
if [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == true ]]
|
debugMessage "IPv4 enabled: $_is_IPv4_enabled; IPv6 enabled: $_is_IPv6_enabled; has remote IPv4: $_has_remote_ip4; has remote IPv6: $_has_remote_ip6"
|
||||||
|
if [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == true ]] && [[ $_has_remote_ip4 == true ]] && [[ $_has_remote_ip6 == true ]]
|
||||||
then
|
then
|
||||||
ip_flag_parameters=("--data-urlencode" "${ipv4_parameter_name}=${_new_IPv4}" "--data-urlencode" "${ipv6_parameter_name}=${_new_IPv6}")
|
ip_flag_parameters=("--data-urlencode" "${ipv4_parameter_name}=${_new_IPv4}" "--data-urlencode" "${ipv6_parameter_name}=${_new_IPv6}")
|
||||||
fi
|
fi
|
||||||
if [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == false ]]
|
if [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == false ]] || [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == true ]] && [[ $_has_remote_ip4 == true ]] && [[ $_has_remote_ip6 == false ]]
|
||||||
then
|
then
|
||||||
ip_flag_parameters=("--data-urlencode" "${ipv4_parameter_name}=${_new_IPv4}")
|
ip_flag_parameters=("--data-urlencode" "${ipv4_parameter_name}=${_new_IPv4}")
|
||||||
fi
|
fi
|
||||||
if [[ $_is_IPv4_enabled == false ]] && [[ $_is_IPv6_enabled == true ]]
|
if [[ $_is_IPv4_enabled == false ]] && [[ $_is_IPv6_enabled == true ]] || [[ $_is_IPv4_enabled == true ]] && [[ $_is_IPv6_enabled == true ]] && [[ $_has_remote_ip4 == false ]] && [[ $_has_remote_ip6 == true ]]
|
||||||
then
|
then
|
||||||
ip_flag_parameters=("--data-urlencode" "${ipv6_parameter_name}=${_new_IPv6}")
|
ip_flag_parameters=("--data-urlencode" "${ipv6_parameter_name}=${_new_IPv6}")
|
||||||
fi
|
fi
|
||||||
@@ -628,25 +647,24 @@ function checkStatus
|
|||||||
function ipHasChanged
|
function ipHasChanged
|
||||||
{
|
{
|
||||||
local ip_version=$1
|
local ip_version=$1
|
||||||
remote_ip=$(getRemoteIP "$ip_version")
|
getRemoteIP "$ip_version"
|
||||||
if test $? -gt 0
|
if test $? -gt 0
|
||||||
then return 1
|
then return 1
|
||||||
fi
|
fi
|
||||||
case ${ip_version} in
|
case ${ip_version} in
|
||||||
4)
|
4)
|
||||||
dns_ip=$(getDNSIP A)
|
dns_ip=$(getDNSIP A)
|
||||||
_new_IPv4=$remote_ip
|
_new_IPv4=$_remote_ip
|
||||||
debugMessage "IPv4 from remote IP check server: $_new_IPv4, IPv4 from DNS: $dns_ip"
|
debugMessage "IPv4 from remote IP check server: $_new_IPv4, IPv4 from DNS: $dns_ip"
|
||||||
;;
|
;;
|
||||||
6)
|
6)
|
||||||
dns_ip=$(getDNSIP AAAA)
|
dns_ip=$(getDNSIP AAAA)
|
||||||
_new_IPv6=$remote_ip
|
_new_IPv6=$_remote_ip
|
||||||
debugMessage "IPv6 from remote IP check server: $_new_IPv6, IPv6 from DNS: $dns_ip"
|
debugMessage "IPv6 from remote IP check server: $_new_IPv6, IPv6 from DNS: $dns_ip"
|
||||||
;;
|
;;
|
||||||
*) ;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "$remote_ip" == "$dns_ip" ]]
|
if [[ "$_remote_ip" == "$dns_ip" ]]
|
||||||
then return 1
|
then return 1
|
||||||
else
|
else
|
||||||
case ${ip_version} in
|
case ${ip_version} in
|
||||||
@@ -835,7 +853,7 @@ function doDynDNS2Updates
|
|||||||
if [[ $_is_IPv6_enabled == true ]] && ipHasChanged 6
|
if [[ $_is_IPv6_enabled == true ]] && ipHasChanged 6
|
||||||
then ((changed += 1))
|
then ((changed += 1))
|
||||||
fi
|
fi
|
||||||
if [[ $changed -gt 0 ]] && [[ $_has_remote_ip_error == false ]]
|
if [[ $changed -gt 0 ]]
|
||||||
then
|
then
|
||||||
if checkStatus
|
if checkStatus
|
||||||
then
|
then
|
||||||
|
|||||||
Reference in New Issue
Block a user