diff options
author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2023-03-14 01:23:11 -0700 |
---|---|---|
committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2023-03-14 01:23:11 -0700 |
commit | d62a63c3841d3ef005bbf1494c7cdbfa7c25863f (patch) | |
tree | c111e52c4b400132decbc23794d7b99504d7dda2 /linode-ddns.sh | |
parent | 3e2bb49efc35039d9510ea0f9d11b5446b53c923 (diff) | |
download | hetzner-ddns-d62a63c3841d3ef005bbf1494c7cdbfa7c25863f.tar.gz hetzner-ddns-d62a63c3841d3ef005bbf1494c7cdbfa7c25863f.tar.xz |
update for Hetzner instead of Linode
Diffstat (limited to 'linode-ddns.sh')
-rwxr-xr-x | linode-ddns.sh | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/linode-ddns.sh b/linode-ddns.sh deleted file mode 100755 index cd0cd76..0000000 --- a/linode-ddns.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2022 David Vazgenovich Shakaryan -# -# LINODE_TOKEN=<token> linode-ddns.sh <domain> - -IP_RESOLVER='https://ifconfig.co' -TARGET="${1}" - -shopt -s extglob - -die() { - [[ -n "${@}" ]] && echo "${@}" >&2 - exit 1 -} - -lincurl() { - curl -sfH "Authorization: Bearer ${LINODE_TOKEN}" \ - "https://api.linode.com/v4/domains/${1}" \ - "${@:2}" -} - -ip="$(curl -sf4 "${IP_RESOLVER}")" || die 'IP lookup failed' - -dom_re="${TARGET}" -while [[ "${dom_re}" =~ ^([^\\]*)\.(.*)$ ]]; do - dom_re="(${BASH_REMATCH[1]}\\.)?${BASH_REMATCH[2]}" -done - -res="$(lincurl)" || die 'Domains lookup failed' -IFS='|' read dom_id dom_name < <(jq -er --arg re "${dom_re}" \ - '[.data[] | select(.domain | test("\\A" + $re + "\\z"))] | - if . == [] then (null | halt_error) else . end | - max_by(.domain | length) | [.id, .domain] | join("|")' \ - <<< "${res}") || die 'Domain not found' -rec_name="${TARGET%%?(.)${dom_name}}" - -res=$(lincurl "${dom_id}/records") || die 'Records lookup failed' -rec_id="$(jq -er --arg name "${rec_name}" \ - 'first(.data[] | select(.type == "A" and .name == $name)) | .id' \ - <<< "${res}")" || die 'Record not found' - -res="$(lincurl "${dom_id}/records/${rec_id}")" || die 'Record lookup failed' -old_ip="$(jq -r '.target' <<< "${res}")" - -if [[ "${old_ip}" == "${ip}" ]]; then - echo "IP unchanged from ${ip}" - exit -fi - -res="$(lincurl "${dom_id}/records/${rec_id}" \ - -H 'Content-Type: application/json' \ - -X PUT -d "{\"target\":\"${ip}\"}")" || die 'Record update failed' -new_ip="$(jq -r '.target' <<< "${res}")" - -echo "IP changed from ${old_ip} to ${new_ip}" |