diff --git a/services/cloudflare_update_dns b/services/cloudflare_update_dns index 17253d2..8d56a18 100755 --- a/services/cloudflare_update_dns +++ b/services/cloudflare_update_dns @@ -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",