Compare commits
4 Commits
7c1d05b5ed
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bed4c4bbc | |||
| 2060f8379f | |||
| d0b389a4e6 | |||
| d2716eda75 |
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user