@ -57,55 +57,57 @@ cleanup() {
sed -i "#'##g" $DATFILE # remove "'" (single quote)
}
# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
# to "rec_load_all" to detect rec_id needed for update
__URL = "https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
__URL = " ${ __URL } ?a=rec_load_all " # -d 'a=rec_load_all'
__URL = " ${ __URL } &tkn= $password " # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
__URL = " ${ __URL } &email= $username " # -d 'email=sample@example.com'
__URL = " ${ __URL } &z= $__DOMAIN " # -d 'z=example.com'
# lets request the data
do_transfer " $__URL " || return 1
cleanup # cleanup dat file
json_load " $( cat $DATFILE ) " # lets extract data
__FOUND = 0 # found record indicator
json_get_var __RES "result" # cloudflare result of last request
json_get_var __MSG "msg" # cloudflare error message
[ " $__RES " != "success" ] && {
write_log 4 " 'rec_load_all' failed with error: \n $__MSG "
return 1
}
json_select "response"
json_select "recs"
json_select "objs"
json_get_keys __KEYS
for __KEY in $__KEYS ; do
local __ZONE __DISPLAY __NAME __TYPE
json_select " $__KEY "
# json_get_var __ZONE "zone_name" # for debugging
# json_get_var __DISPLAY "display_name" # for debugging
json_get_var __NAME "name"
json_get_var __TYPE "type"
if [ " $__NAME " = " $domain " ] ; then
# we must verify IPv4 and IPv6 because there might be both for the same host
[ \( $use_ipv6 -eq 0 -a " $__TYPE " = "A" \) -o \( $use_ipv6 -eq 1 -a " $__TYPE " = "AAAA" \) ] && {
__FOUND = 1 # mark found
break # found leave for loop
}
fi
json_select ..
done
[ $__FOUND -eq 0 ] && {
# we don't need to continue trying to update cloudflare because record to update does not exist
# user has to setup record first outside ddns-scripts
write_log 14 "No valid record found at Cloudflare setup. Please create first!"
[ -n " $rec_id " ] && __RECID = " $rec_id " || {
# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
# to "rec_load_all" to detect rec_id needed for update
__URL = "https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
__URL = " ${ __URL } ?a=rec_load_all " # -d 'a=rec_load_all'
__URL = " ${ __URL } &tkn= $password " # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
__URL = " ${ __URL } &email= $username " # -d 'email=sample@example.com'
__URL = " ${ __URL } &z= $__DOMAIN " # -d 'z=example.com'
# lets request the data
do_transfer " $__URL " || return 1
cleanup # cleanup dat file
json_load " $( cat $DATFILE ) " # lets extract data
__FOUND = 0 # found record indicator
json_get_var __RES "result" # cloudflare result of last request
json_get_var __MSG "msg" # cloudflare error message
[ " $__RES " != "success" ] && {
write_log 4 " 'rec_load_all' failed with error: \n $__MSG "
return 1
}
json_select "response"
json_select "recs"
json_select "objs"
json_get_keys __KEYS
for __KEY in $__KEYS ; do
local __ZONE __DISPLAY __NAME __TYPE
json_select " $__KEY "
# json_get_var __ZONE "zone_name" # for debugging
# json_get_var __DISPLAY "display_name" # for debugging
json_get_var __NAME "name"
json_get_var __TYPE "type"
if [ " $__NAME " = " $domain " ] ; then
# we must verify IPv4 and IPv6 because there might be both for the same host
[ \( $use_ipv6 -eq 0 -a " $__TYPE " = "A" \) -o \( $use_ipv6 -eq 1 -a " $__TYPE " = "AAAA" \) ] && {
__FOUND = 1 # mark found
break # found leave for loop
}
fi
json_select ..
done
[ $__FOUND -eq 0 ] && {
# we don't need to continue trying to update cloudflare because record to update does not exist
# user has to setup record first outside ddns-scripts
write_log 14 "No valid record found at Cloudflare setup. Please create first!"
}
json_get_var __RECID "rec_id" # last thing to do get rec_id
json_cleanup # cleanup
write_log 7 " rec_id ' $__RECID ' detected for host/domain ' $domain ' "
}
json_get_var __RECID "rec_id" # last thing to do get rec_id
json_cleanup # cleanup
write_log 7 " rec_id ' $__RECID ' detected for host/domain ' $domain ' "
# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
# for "rec_edit" to update IP address