|
@@ -0,0 +1,105 @@
|
|
|
+#!/usr/bin/env sh
|
|
|
+
|
|
|
+# West.cn Domain api
|
|
|
+#WEST_Username="username"
|
|
|
+#WEST_Key="sADDsdasdgdsf"
|
|
|
+#Set key at https://www.west.cn/manager/API/APIconfig.asp
|
|
|
+
|
|
|
+REST_API="https://api.west.cn/API/v2"
|
|
|
+
|
|
|
+######## Public functions #####################
|
|
|
+
|
|
|
+#Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
|
|
+dns_west_cn_add() {
|
|
|
+ fulldomain=$1
|
|
|
+ txtvalue=$2
|
|
|
+
|
|
|
+ WEST_Username="${WEST_Username:-$(_readaccountconf_mutable WEST_Username)}"
|
|
|
+ WEST_Key="${WEST_Key:-$(_readaccountconf_mutable WEST_Key)}"
|
|
|
+ if [ -z "$WEST_Username" ] || [ -z "$WEST_Key" ]; then
|
|
|
+ WEST_Username=""
|
|
|
+ WEST_Key=""
|
|
|
+ _err "You don't specify west api key and username yet."
|
|
|
+ _err "Please set you key and try again."
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ #save the api key and email to the account conf file.
|
|
|
+ _saveaccountconf_mutable WEST_Username "$WEST_Username"
|
|
|
+ _saveaccountconf_mutable WEST_Key "$WEST_Key"
|
|
|
+
|
|
|
+ add_record "$fulldomain" "$txtvalue"
|
|
|
+}
|
|
|
+
|
|
|
+#Usage: rm _acme-challenge.www.domain.com
|
|
|
+dns_west_cn_rm() {
|
|
|
+ fulldomain=$1
|
|
|
+ txtvalue=$2
|
|
|
+
|
|
|
+ WEST_Username="${WEST_Username:-$(_readaccountconf_mutable WEST_Username)}"
|
|
|
+ WEST_Key="${WEST_Key:-$(_readaccountconf_mutable WEST_Key)}"
|
|
|
+
|
|
|
+ if ! _rest POST "domain/dns/" "act=dnsrec.list&username=$WEST_Username&apikey=$WEST_Key&domain=$fulldomain&hostname=$fulldomain&record_type=TXT"; then
|
|
|
+ _err "dnsrec.list error."
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if _contains "$response" 'no records'; then
|
|
|
+ _info "Don't need to remove."
|
|
|
+ return 0
|
|
|
+ fi
|
|
|
+
|
|
|
+ record_id=$(echo "$response" | tr "{" "\n" | grep -- "$txtvalue" | grep '^"record_id"' | cut -d : -f 2 | cut -d ',' -f 1)
|
|
|
+ _debug record_id "$record_id"
|
|
|
+ if [ -z "$record_id" ]; then
|
|
|
+ _err "Can not get record id."
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if ! _rest POST "domain/dns/" "act=dnsrec.remove&username=$WEST_Username&apikey=$WEST_Key&domain=$fulldomain&hostname=$fulldomain&record_id=$record_id"; then
|
|
|
+ _err "dnsrec.remove error."
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ _contains "$response" "success"
|
|
|
+}
|
|
|
+
|
|
|
+#add the txt record.
|
|
|
+#usage: add fulldomain txtvalue
|
|
|
+add_record() {
|
|
|
+ fulldomain=$1
|
|
|
+ txtvalue=$2
|
|
|
+
|
|
|
+ _info "Adding record"
|
|
|
+
|
|
|
+ if ! _rest POST "domain/dns/" "act=dnsrec.add&username=$WEST_Username&apikey=$WEST_Key&domain=$fulldomain&hostname=$fulldomain&record_type=TXT&record_value=$txtvalue"; then
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ _contains "$response" "success"
|
|
|
+}
|
|
|
+
|
|
|
+#Usage: method URI data
|
|
|
+_rest() {
|
|
|
+ m="$1"
|
|
|
+ ep="$2"
|
|
|
+ data="$3"
|
|
|
+ _debug "$ep"
|
|
|
+ url="$REST_API/$ep"
|
|
|
+
|
|
|
+ _debug url "$url"
|
|
|
+
|
|
|
+ if [ "$m" = "GET" ]; then
|
|
|
+ response="$(_get "$url" | tr -d '\r')"
|
|
|
+ else
|
|
|
+ _debug2 data "$data"
|
|
|
+ response="$(_post "$data" "$url" | tr -d '\r')"
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ "$?" != "0" ]; then
|
|
|
+ _err "error $ep"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+ _debug2 response "$response"
|
|
|
+ return 0
|
|
|
+}
|