make cloudflare_dns generic

This commit is contained in:
tylen 2024-12-09 21:52:14 +00:00
parent 3a3685eb8e
commit df5721e728

View File

@ -2,9 +2,12 @@
set -euo pipefail set -euo pipefail
ZONE_ID="$(cat .var/zone_id)" ZONE_ID=""
DNS_RECORD="$(cat .var/dns_record)" ZONE_ID_FILE=""
CACHED_PUBLIC_IP="$(cat .var/cached_public_ip)" DNS_RECORD=""
DNS_RECORD_FILE=""
DOMAIN=""
CACHED_PUBLIC_IP=""
AUTHORIZATION="$(cat .var/bearer)" AUTHORIZATION="$(cat .var/bearer)"
IP_URL="ifconfig.me/ip" IP_URL="ifconfig.me/ip"
@ -50,10 +53,47 @@ function check_new_ip() {
info "Public IP has changed from ${CACHED_PUBLIC_IP} to ${new_ip}. Updating records..." info "Public IP has changed from ${CACHED_PUBLIC_IP} to ${new_ip}. Updating records..."
"${SEND_TELEGRAM}" "Public IP has changed from ${CACHED_PUBLIC_IP} to ${new_ip}. Updating records..." "${SEND_TELEGRAM}" "Public IP has changed from ${CACHED_PUBLIC_IP} to ${new_ip}. Updating records..."
CACHED_PUBLIC_IP="${new_ip}" CACHED_PUBLIC_IP="${new_ip}"
echo "${new_ip}" > .var/cached_public_ip echo "${new_ip}" > ${PUBLIC_IP_FILE}
fi fi
} }
# Parse command-line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-z|--zone-id-file)
ZONE_ID_FILE="$2"
shift # past argument
shift # past value
;;
-d|--dns-record-file)
DNS_RECORD_FILE="$2"
shift # past argument
shift # past value
;;
--domain)
DOMAIN="$2"
shift # past argument
shift # past value
;;
-*|--*)
echo "Unknown option $1"
exit 1
;;
*)
echo "Unknown option $1"
exit 1
;;
esac
done
DNS_RECORD=$(cat "${DNS_RECORD_FILE}")
ZONE_ID=$(cat "${ZONE_ID_FILE}")
PUBLIC_IP_FILE=".var/${DOMAIN}_cached_ip"
if [ -e "$PUBLIC_IP_FILE" ]; then
CACHED_PUBLIC_IP=$(cat "${PUBLIC_IP_FILE}")
else
touch "${PUBLIC_IP_FILE}"
fi
check_internet_access check_internet_access
check_new_ip check_new_ip
@ -64,7 +104,7 @@ curl_answer="$(curl --request PATCH \
--silent \ --silent \
--data '{ --data '{
"content": "'${CACHED_PUBLIC_IP}'", "content": "'${CACHED_PUBLIC_IP}'",
"name": "tylencloud.com", "name": "'${DOMAIN}'",
"proxied": false, "proxied": false,
"type": "A", "type": "A",
"comment": "Main Record", "comment": "Main Record",