ddns-scripts-cloudflare: allow explicit zone_id
authorGlen Huang <redacted>
Sun, 9 Jan 2022 05:02:58 +0000 (13:02 +0800)
committerGlen Huang <redacted>
Mon, 10 Jan 2022 12:44:40 +0000 (20:44 +0800)
When zone id is explicitly provided, there is no need for the API token to have read permission. Inspired by acme.sh's cloudflare logic.

Signed-off-by: Glen Huang <redacted>
net/ddns-scripts/Makefile
net/ddns-scripts/files/usr/lib/ddns/update_cloudflare_com_v4.sh

index f7eff06e9158aa68642fb0a911bbe609b9bedaee..34a366a5666114f41c0adcaa8cfbac8902d9666c 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ddns-scripts
 PKG_VERSION:=2.8.2
-PKG_RELEASE:=20
+PKG_RELEASE:=21
 
 PKG_LICENSE:=GPL-2.0
 
index c5bbe17993ec744ce8e158c0abd25618a070cf3b..82ea417da42657d2ff48907720cbe84eff976b84 100644 (file)
@@ -15,7 +15,7 @@
 # option password  - cloudflare api key, you can get it from cloudflare.com/my-account/
 # option domain    - "hostname@yourdomain.TLD" # syntax changed to remove split_FQDN() function and tld_names.dat.gz
 #
-# The proxy status would not be changed by this script. Please change it in Cloudflare dashboard manually. 
+# The proxy status would not be changed by this script. Please change it in Cloudflare dashboard manually.
 #
 # variable __IP already defined with the ip-address to use for update
 #
@@ -134,15 +134,19 @@ else
 fi
 __PRGBASE="$__PRGBASE --header 'Content-Type: application/json' "
 
-# read zone id for registered domain.TLD
-__RUNPROG="$__PRGBASE --request GET '$__URLBASE/zones?name=$__DOMAIN'"
-cloudflare_transfer || return 1
-# extract zone id
-__ZONEID=$(grep -o '"id":\s*"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
-[ -z "$__ZONEID" ] && {
-       write_log 4 "Could not detect 'zone id' for domain.tld: '$__DOMAIN'"
-       return 127
-}
+if [ -n "$zone_id"]; then
+       __ZONEID="$zone_id"
+else
+       # read zone id for registered domain.TLD
+       __RUNPROG="$__PRGBASE --request GET '$__URLBASE/zones?name=$__DOMAIN'"
+       cloudflare_transfer || return 1
+       # extract zone id
+       __ZONEID=$(grep -o '"id":\s*"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
+       [ -z "$__ZONEID" ] && {
+               write_log 4 "Could not detect 'zone id' for domain.tld: '$__DOMAIN'"
+               return 127
+       }
+fi
 
 # read record id for A or AAAA record of host.domain.TLD
 __RUNPROG="$__PRGBASE --request GET '$__URLBASE/zones/$__ZONEID/dns_records?name=$__HOST&type=$__TYPE'"
git clone https://git.99rst.org/PROJECT