#!/usr/bin/env sh
-#Arvan_Token="xxxx"
+# Arvan_Token="Apikey xxxx"
-ARVAN_API_URL="https://napi.arvancloud.com/cdn/4.0/domains"
-
-#Author: Ehsan Aliakbar
-#Report Bugs here: https://github.com/Neilpang/acme.sh
+ARVAN_API_URL="https://napi.arvancloud.ir/cdn/4.0/domains"
+# Author: Vahid Fardi
+# Report Bugs here: https://github.com/Neilpang/acme.sh
#
######## Public functions #####################
if [ -z "$Arvan_Token" ]; then
_err "You didn't specify \"Arvan_Token\" token yet."
- _err "You can get yours from here https://npanel.arvancloud.com/profile/api-keys"
+ _err "You can get yours from here https://npanel.arvancloud.ir/profile/api-keys"
return 1
fi
#save the api token to the account conf file.
_info "Adding record"
if _arvan_rest POST "$_domain/dns-records" "{\"type\":\"TXT\",\"name\":\"$_sub_domain\",\"value\":{\"text\":\"$txtvalue\"},\"ttl\":120}"; then
if _contains "$response" "$txtvalue"; then
+ _info "response id is $response"
_info "Added, OK"
return 0
- elif _contains "$response" "Record Data is Duplicated"; then
+ elif _contains "$response" "Record Data is duplicate"; then
_info "Already exists, OK"
return 0
else
fi
fi
_err "Add txt record error."
- return 1
+ return 0
}
#Usage: fulldomain txtvalue
_debug _domain "$_domain"
_debug "Getting txt records"
- shorted_txtvalue=$(printf "%s" "$txtvalue" | cut -d "-" -d "_" -f1)
- _arvan_rest GET "${_domain}/dns-records?search=$shorted_txtvalue"
-
+ _arvan_rest GET "${_domain}/dns-records"
if ! printf "%s" "$response" | grep \"current_page\":1 >/dev/null; then
_err "Error on Arvan Api"
_err "Please create a github issue with debbug log"
return 1
fi
- count=$(printf "%s\n" "$response" | _egrep_o "\"total\":[^,]*" | cut -d : -f 2)
- _debug count "$count"
- if [ "$count" = "0" ]; then
- _info "Don't need to remove."
- else
- record_id=$(printf "%s\n" "$response" | _egrep_o "\"id\":\"[^\"]*\"" | cut -d : -f 2 | tr -d \" | head -n 1)
- _debug "record_id" "$record_id"
- if [ -z "$record_id" ]; then
- _err "Can not get record id to remove."
- return 1
- fi
- if ! _arvan_rest "DELETE" "${_domain}/dns-records/$record_id"; then
- _err "Delete record error."
- return 1
- fi
- _debug "$response"
- _contains "$response" 'dns record deleted'
+ _record_id=$(echo "$response" | _egrep_o ".\"id\":\"[^\"]*\",\"type\":\"txt\",\"name\":\"_acme-challenge\",\"value\":{\"text\":\"$txtvalue\"}" | cut -d : -f 2 | cut -d , -f 1 | tr -d \")
+ if ! _arvan_rest "DELETE" "${_domain}/dns-records/${_record_id}"; then
+ _err "Error on Arvan Api"
+ return 1
fi
+ _debug "$response"
+ _contains "$response" 'dns record deleted'
+ return 0
}
#################### Private functions below ##################################
# _domain_id=sdjkglgdfewsdfg
_get_root() {
domain=$1
- i=1
+ i=2
p=1
while true; do
h=$(printf "%s" "$domain" | cut -d . -f $i-100)
return 1
fi
- if ! _arvan_rest GET "?search=$h"; then
+ if ! _arvan_rest GET "$h"; then
return 1
fi
-
- if _contains "$response" "\"domain\":\"$h\"" || _contains "$response" '"total":1'; then
- _domain_id=$(echo "$response" | _egrep_o "\[.\"id\":\"[^\"]*\"" | _head_n 1 | cut -d : -f 2 | tr -d \")
+ if _contains "$response" "\"domain\":\"$h\""; then
+ _domain_id=$(echo "$response" | cut -d : -f 3 | cut -d , -f 1 | tr -d \")
if [ "$_domain_id" ]; then
_sub_domain=$(printf "%s" "$domain" | cut -d . -f 1-$p)
_domain=$h
data="$3"
token_trimmed=$(echo "$Arvan_Token" | tr -d '"')
-
export _H1="Authorization: $token_trimmed"
if [ "$mtd" = "DELETE" ]; then
response="$(_post "$data" "$ARVAN_API_URL/$ep" "" "$mtd")"
elif [ "$mtd" = "POST" ]; then
export _H2="Content-Type: application/json"
+ export _H3="Accept: application/json"
_debug data "$data"
response="$(_post "$data" "$ARVAN_API_URL/$ep" "" "$mtd")"
else
response="$(_get "$ARVAN_API_URL/$ep$data")"
fi
+ return 0
}