You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/usr/bin/env sh
# #RAGE4_TOKEN="sdfsdfsdfljlbjkljlkjsdfoiwje" # #RAGE4_USERNAME="xxxx@sss.com"
RAGE4_Api="https://rage4.com/rapi/"
######## Public functions #####################
#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs" dns_rage4_add() { fulldomain=$1 txtvalue=$2
unquotedtxtvalue=$(echo "$txtvalue" | tr -d \")
RAGE4_USERNAME="${RAGE4_USERNAME:-$(_readaccountconf_mutable RAGE4_USERNAME)}" RAGE4_TOKEN="${RAGE4_TOKEN:-$(_readaccountconf_mutable RAGE4_TOKEN)}"
if [ -z "$RAGE4_USERNAME" ] || [ -z "$RAGE4_TOKEN" ]; then RAGE4_USERNAME="" RAGE4_TOKEN="" _err "You didn't specify a Rage4 api token and username yet." return 1 fi
#save the api key and email to the account conf file. _saveaccountconf_mutable RAGE4_USERNAME "$RAGE4_USERNAME" _saveaccountconf_mutable RAGE4_TOKEN "$RAGE4_TOKEN"
_debug "First detect the root zone" if ! _get_root "$fulldomain"; then _err "invalid domain" return 1 fi _debug _domain_id "$_domain_id"
_rage4_rest "createrecord/?id=$_domain_id&name=$fulldomain&content=$unquotedtxtvalue&type=TXT&active=true&ttl=1" return 0 }
#fulldomain txtvalue dns_rage4_rm() { fulldomain=$1 txtvalue=$2
RAGE4_USERNAME="${RAGE4_USERNAME:-$(_readaccountconf_mutable RAGE4_USERNAME)}" RAGE4_TOKEN="${RAGE4_TOKEN:-$(_readaccountconf_mutable RAGE4_TOKEN)}"
_debug "First detect the root zone" if ! _get_root "$fulldomain"; then _err "invalid domain" return 1 fi _debug _domain_id "$_domain_id"
_debug "Getting txt records" _rage4_rest "getrecords/?id=${_domain_id}"
_record_id=$(echo "$response" | sed -rn 's/.*"id":([[:digit:]]+)[^\}]*'"$txtvalue"'.*/\1/p') _rage4_rest "deleterecord/?id=${_record_id}" return 0 }
#################### Private functions below ################################## #_acme-challenge.www.domain.com #returns # _domain=domain.com # _domain_id=sdjkglgdfewsdfg _get_root() { domain=$1
if ! _rage4_rest "getdomains"; then return 1 fi _debug _get_root_domain "$domain"
for line in $(echo "$response" | tr '}' '\n'); do __domain=$(echo "$line" | sed -rn 's/.*"name":"([^"]*)",.*/\1/p') __domain_id=$(echo "$line" | sed -rn 's/.*"id":([^,]*),.*/\1/p') if [ "$domain" != "${domain%"$__domain"*}" ]; then _domain_id="$__domain_id" break fi done
if [ -z "$_domain_id" ]; then return 1 fi
return 0 }
_rage4_rest() { ep="$1" _debug "$ep"
username_trimmed=$(echo "$RAGE4_USERNAME" | tr -d '"') token_trimmed=$(echo "$RAGE4_TOKEN" | tr -d '"') auth=$(printf '%s:%s' "$username_trimmed" "$token_trimmed" | _base64)
export _H1="Content-Type: application/json" export _H2="Authorization: Basic $auth"
response="$(_get "$RAGE4_Api$ep")"
if [ "$?" != "0" ]; then _err "error $ep" return 1 fi _debug2 response "$response" return 0 }
|