Compare commits
4 Commits
7c1d05b5ed
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bed4c4bbc | |||
| 2060f8379f | |||
| d0b389a4e6 | |||
| d2716eda75 |
@@ -14,6 +14,10 @@ fi
|
|||||||
SCRIPT="$0"
|
SCRIPT="$0"
|
||||||
SCRIPT_DIR=$(cd "${SCRIPT%/*}" && pwd )
|
SCRIPT_DIR=$(cd "${SCRIPT%/*}" && pwd )
|
||||||
SCRIPT_NAME=${SCRIPT##*/}
|
SCRIPT_NAME=${SCRIPT##*/}
|
||||||
|
CACHE_DIR=${CACHE_DIR:-~/.cache/dyndns}
|
||||||
|
CONFIG_DIR=${CONFIG_DIR:-~/.config/dyndns}
|
||||||
|
mkdir -p ${CACHE_DIR}
|
||||||
|
mkdir -p ${CONFIG_DIR}
|
||||||
|
|
||||||
IP="$($SCRIPT_DIR/get_ip_addr.sh $ip_version)"
|
IP="$($SCRIPT_DIR/get_ip_addr.sh $ip_version)"
|
||||||
if [ -z "$IP" ]; then
|
if [ -z "$IP" ]; then
|
||||||
@@ -21,20 +25,23 @@ if [ -z "$IP" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DIGITALOCEAN_TOKEN=`cat $SCRIPT_DIR/DIGITALOCEAN_TOKEN`
|
DIGITALOCEAN_TOKEN=`cat ${CONFIG_DIR}/DIGITALOCEAN_TOKEN`
|
||||||
DOMAIN=${2:-`cat $SCRIPT_DIR/DIGITALOCEAN_DOMAIN`}
|
DOMAIN=${2:-`cat ${CONFIG_DIR}/DIGITALOCEAN_DOMAIN`}
|
||||||
SUBDOMAIN=`echo $DOMAIN | sed "s/[^.]\+\.[^.]\+$//g"`
|
SUBDOMAIN=`echo $DOMAIN | sed "s/[^.]\+\.[^.]\+$//g"`
|
||||||
if [ -z "$SUBDOMAIN" ]; then
|
if [ -z "$SUBDOMAIN" ]; then
|
||||||
SUBDOMAIN="@"
|
SUBDOMAIN="@"
|
||||||
ROOT_DOMAIN=$DOMAIN
|
ROOT_DOMAIN=$DOMAIN
|
||||||
|
elif [ "$SUBDOMAIN" = "@." ]; then
|
||||||
|
SUBDOMAIN="@"
|
||||||
|
ROOT_DOMAIN=`echo $DOMAIN | sed "s/^@.//"`
|
||||||
else
|
else
|
||||||
SUBDOMAIN=`echo $SUBDOMAIN | sed "s/\.$//g"`
|
SUBDOMAIN=`echo $SUBDOMAIN | sed "s/\.$//g"`
|
||||||
ROOT_DOMAIN=`echo $DOMAIN | sed "s/^${SUBDOMAIN}\.//g"`
|
ROOT_DOMAIN=`echo $DOMAIN | sed "s/^${SUBDOMAIN}\.//g"`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
REPEAT_CHECK_DIR=$SCRIPT_DIR
|
REPEAT_CHECK_DIR=${CACHE_DIR}
|
||||||
REPEAT_CHECK_A=$REPEAT_CHECK_DIR/REPEAT_CHECK_${DOMAIN}_A
|
REPEAT_CHECK_A=$REPEAT_CHECK_DIR/REPEAT_CHECK_${SUBDOMAIN}.${ROOT_DOMAIN}_A
|
||||||
REPEAT_CHECK_AAAA=$REPEAT_CHECK_DIR/REPEAT_CHECK_${DOMAIN}_AAAA
|
REPEAT_CHECK_AAAA=$REPEAT_CHECK_DIR/REPEAT_CHECK_${SUBDOMAIN}.${ROOT_DOMAIN}_AAAA
|
||||||
REPEAT_CHECK="$([ $ip_version = 4 ] && echo $REPEAT_CHECK_A || echo $REPEAT_CHECK_AAAA)"
|
REPEAT_CHECK="$([ $ip_version = 4 ] && echo $REPEAT_CHECK_A || echo $REPEAT_CHECK_AAAA)"
|
||||||
|
|
||||||
get_a_record_ids() {
|
get_a_record_ids() {
|
||||||
@@ -86,7 +93,7 @@ add_aaaa_record() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete_record_by_id() {
|
delete_record_by_id() {
|
||||||
echo deleting existing A/AAAA record for $DOMAIN
|
echo deleting existing A/AAAA record for ${SUBDOMAIN}.${ROOT_DOMAIN}
|
||||||
curl -X DELETE \
|
curl -X DELETE \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
|
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
|
||||||
@@ -100,10 +107,10 @@ replace_a_records() {
|
|||||||
|
|
||||||
new_record_id=`add_a_record`
|
new_record_id=`add_a_record`
|
||||||
if [ "$new_record_id" = "null" ] ; then
|
if [ "$new_record_id" = "null" ] ; then
|
||||||
echo unable to add new A record for $DOMAIN with value: $IP
|
echo unable to add new A record for ${SUBDOMAIN}.${ROOT_DOMAIN} with value: $IP
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
echo added new A record for $DOMAIN with value: $IP
|
echo added new A record for ${SUBDOMAIN}.${ROOT_DOMAIN} with value: $IP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -114,10 +121,10 @@ replace_aaaa_records() {
|
|||||||
|
|
||||||
new_record_id=`add_aaaa_record`
|
new_record_id=`add_aaaa_record`
|
||||||
if [ "$new_record_id" = "null" ] ; then
|
if [ "$new_record_id" = "null" ] ; then
|
||||||
echo unable to add new AAAA record for $DOMAIN with value: $IP
|
echo unable to add new AAAA record for ${SUBDOMAIN}.${ROOT_DOMAIN} with value: $IP
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
echo added new AAAA record for $DOMAIN with value: $IP
|
echo added new AAAA record for ${SUBDOMAIN}.${ROOT_DOMAIN} with value: $IP
|
||||||
}
|
}
|
||||||
|
|
||||||
replace_records() {
|
replace_records() {
|
||||||
|
|||||||
+8
-7
@@ -7,21 +7,22 @@ if [ -z "${ip_version:-}" ] || ([ "$ip_version" != 4 ] && [ "$ip_version" != 6 ]
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $ip_version = 4 ]; then
|
if [ $ip_version = 4 ]; then
|
||||||
curl -4 http://icanhazip.com 2> /dev/null
|
dig +short myip.opendns.com @resolver1.opendns.com \
|
||||||
exit 0
|
&& exit 0 \
|
||||||
|
|| exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
CONN_NAME=${CONN_NAME:-nevis}
|
CONN_NAME=${CONN_NAME:-nevis}
|
||||||
conn_device_name="$(nmcli --fields NAME,DEVICE con show | grep ^$CONN_NAME | sed 's/\s\+/ /g' | cut -d' ' -f 2)"
|
CONN_DEVICE_NAME="${CONN_DEVICE_NAME:-$(nmcli --fields NAME,DEVICE con show | grep ^$CONN_NAME | sed 's/\s\+/ /g' | cut -d' ' -f 2)}"
|
||||||
if [ -z "${conn_device_name:-}" ]; then
|
if [ -z "${CONN_DEVICE_NAME:-}" ]; then
|
||||||
echo "Could not find the connection device name for connection: \"$CONN_NAME\"" >&2
|
echo "Could not find the connection device name for connection: \"$CONN_NAME\"" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
device_line_no="$(ip addr | grep -En ^[0-9]+:\ $conn_device_name | cut -d':' -f 1)"
|
device_line_no="$(ip addr | grep -En ^[0-9]+:\ $CONN_DEVICE_NAME | cut -d':' -f 1)"
|
||||||
if [ -z "${device_line_no:-}" ]; then
|
if [ -z "${device_line_no:-}" ]; then
|
||||||
echo "Could not find device: \"$conn_device_name\" in output of ip addr" >&2
|
echo "Could not find device: \"$CONN_DEVICE_NAME\" in output of ip addr" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -44,7 +45,7 @@ else
|
|||||||
fi
|
fi
|
||||||
ip="$(echo "$ip_addr_output_for_device" | grep "scope global" | grep -oE $ip_regex | head -n 1)"
|
ip="$(echo "$ip_addr_output_for_device" | grep "scope global" | grep -oE $ip_regex | head -n 1)"
|
||||||
if [ -z "${ip:-}" ]; then
|
if [ -z "${ip:-}" ]; then
|
||||||
echo "Could not find global IP in output of ip addr under device: $conn_device_name ($CONN_NAME)"
|
echo "Could not find global IP in output of ip addr under device: $CONN_DEVICE_NAME ($CONN_NAME)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user