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
ZONE_ID="$(cat .var/zone_id)"
DNS_RECORD="$(cat .var/dns_record)"
CACHED_PUBLIC_IP="$(cat .var/cached_public_ip)"
ZONE_ID=""
ZONE_ID_FILE=""
DNS_RECORD=""
DNS_RECORD_FILE=""
DOMAIN=""
CACHED_PUBLIC_IP=""
AUTHORIZATION="$(cat .var/bearer)"
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..."
"${SEND_TELEGRAM}" "Public IP has changed from ${CACHED_PUBLIC_IP} to ${new_ip}. Updating records..."
CACHED_PUBLIC_IP="${new_ip}"
echo "${new_ip}" > .var/cached_public_ip
echo "${new_ip}" > ${PUBLIC_IP_FILE}
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_new_ip
@ -64,7 +104,7 @@ curl_answer="$(curl --request PATCH \
--silent \
--data '{
"content": "'${CACHED_PUBLIC_IP}'",
"name": "tylencloud.com",
"name": "'${DOMAIN}'",
"proxied": false,
"type": "A",
"comment": "Main Record",