Compare commits

...

4 Commits

2 changed files with 25 additions and 17 deletions
+17 -10
View File
@@ -14,6 +14,10 @@ fi
SCRIPT="$0"
SCRIPT_DIR=$(cd "${SCRIPT%/*}" && pwd )
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)"
if [ -z "$IP" ]; then
@@ -21,20 +25,23 @@ if [ -z "$IP" ]; then
exit 1
fi
DIGITALOCEAN_TOKEN=`cat $SCRIPT_DIR/DIGITALOCEAN_TOKEN`
DOMAIN=${2:-`cat $SCRIPT_DIR/DIGITALOCEAN_DOMAIN`}
DIGITALOCEAN_TOKEN=`cat ${CONFIG_DIR}/DIGITALOCEAN_TOKEN`
DOMAIN=${2:-`cat ${CONFIG_DIR}/DIGITALOCEAN_DOMAIN`}
SUBDOMAIN=`echo $DOMAIN | sed "s/[^.]\+\.[^.]\+$//g"`
if [ -z "$SUBDOMAIN" ]; then
SUBDOMAIN="@"
ROOT_DOMAIN=$DOMAIN
elif [ "$SUBDOMAIN" = "@." ]; then
SUBDOMAIN="@"
ROOT_DOMAIN=`echo $DOMAIN | sed "s/^@.//"`
else
SUBDOMAIN=`echo $SUBDOMAIN | sed "s/\.$//g"`
ROOT_DOMAIN=`echo $DOMAIN | sed "s/^${SUBDOMAIN}\.//g"`
fi
REPEAT_CHECK_DIR=$SCRIPT_DIR
REPEAT_CHECK_A=$REPEAT_CHECK_DIR/REPEAT_CHECK_${DOMAIN}_A
REPEAT_CHECK_AAAA=$REPEAT_CHECK_DIR/REPEAT_CHECK_${DOMAIN}_AAAA
REPEAT_CHECK_DIR=${CACHE_DIR}
REPEAT_CHECK_A=$REPEAT_CHECK_DIR/REPEAT_CHECK_${SUBDOMAIN}.${ROOT_DOMAIN}_A
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)"
get_a_record_ids() {
@@ -86,7 +93,7 @@ add_aaaa_record() {
}
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 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
@@ -100,10 +107,10 @@ replace_a_records() {
new_record_id=`add_a_record`
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
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`
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
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() {
+8 -7
View File
@@ -7,21 +7,22 @@ if [ -z "${ip_version:-}" ] || ([ "$ip_version" != 4 ] && [ "$ip_version" != 6 ]
fi
if [ $ip_version = 4 ]; then
curl -4 http://icanhazip.com 2> /dev/null
exit 0
dig +short myip.opendns.com @resolver1.opendns.com \
&& exit 0 \
|| exit 1
fi
set -eu
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)"
if [ -z "${conn_device_name:-}" ]; then
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
echo "Could not find the connection device name for connection: \"$CONN_NAME\"" >&2
exit 1
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
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
fi
@@ -44,7 +45,7 @@ else
fi
ip="$(echo "$ip_addr_output_for_device" | grep "scope global" | grep -oE $ip_regex | head -n 1)"
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
fi