From befa1698ba081616ea72e500eb418f5804dcec93 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 25 Aug 2016 10:42:38 +0800 Subject: [PATCH] fix OVH issues. --- dnsapi/dns_ovh.sh | 119 +++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 59 deletions(-) diff --git a/dnsapi/dns_ovh.sh b/dnsapi/dns_ovh.sh index cfd84d9b..443aec6f 100644 --- a/dnsapi/dns_ovh.sh +++ b/dnsapi/dns_ovh.sh @@ -40,6 +40,50 @@ wiki="https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api" ovh_success="https://github.com/Neilpang/acme.sh/wiki/OVH-Success" + + +_ovh_get_api() { + _ogaep="$1" + + case "${_ogaep}" in + + ovh-eu|ovheu) + printf "%s" $OVH_EU + return + ;; + ovh-ca|ovhca) + printf "%s" $OVH_CA + return + ;; + kimsufi-eu|kimsufieu) + printf "%s" $KSF_EU + return + ;; + kimsufi-ca|kimsufica) + printf "%s" $KSF_CA + return + ;; + soyoustart-eu|soyoustarteu) + printf "%s" $SYS_EU + return + ;; + soyoustart-ca|soyoustartca) + printf "%s" $SYS_CA + return + ;; + runabove-ca|runaboveca) + printf "%s" $RAV_CA + return + ;; + + + *) + _err "Unknown parameter : $1" + return 1 + ;; + esac +} + ######## Public functions ##################### #Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs" @@ -100,12 +144,14 @@ dns_ovh_add(){ _debug _domain "$_domain" _debug "Getting txt records" - _ovh_rest GET "domain/zone/$domain/record?fieldType=TXT&subDomain=$_sub_domain" + _ovh_rest GET "domain/zone/$_domain/record?fieldType=TXT&subDomain=$_sub_domain" - if _contains "$response" '[]' || _contains "$response" "This service does not exist" ; then + if _contains "$response" '\[\]' || _contains "$response" "This service does not exist" ; then _info "Adding record" - if _ovh_rest POST "domain/zone/testit.ovh/record" "{\"fieldType\":\"TXT\",\"subDomain\":\"$_sub_domain\",\"target\":\"$txtvalue\",\"ttl\":60}"; then + if _ovh_rest POST "domain/zone/$_domain/record" "{\"fieldType\":\"TXT\",\"subDomain\":\"$_sub_domain\",\"target\":\"$txtvalue\",\"ttl\":60}"; then if _contains "$response" "$txtvalue" ; then + _ovh_rest POST "domain/zone/$_domain/refresh" + _debug "Refresh:$response" _info "Added, sleeping 10 seconds" sleep 10 return 0 @@ -115,10 +161,16 @@ dns_ovh_add(){ else _info "Updating record" record_id=$(printf "%s" "$response" | tr -d "[]" | cut -d , -f 1) + if [ -z "$record_id" ] ; then + _err "Can not get record id." + return 1 + fi _debug "record_id" $record_id if _ovh_rest PUT "domain/zone/$_domain/record/$record_id" "{\"target\":\"$txtvalue\",\"subDomain\":\"$_sub_domain\",\"ttl\":60}" ; then - if _contains "$response" "$txtvalue" ; then + if _contains "$response" "null" ; then + _ovh_rest POST "domain/zone/$_domain/refresh" + _debug "Refresh:$response" _info "Updated, sleeping 10 seconds" sleep 10 return 0; @@ -131,57 +183,8 @@ dns_ovh_add(){ } - - - #################### Private functions bellow ################################## -_ovh_get_api() { - _ogaep="$1" - - case "${_ogaep}" in - - ovh-eu|ovheu) - printf "%s" $OVH_EU - return - ;; - ovh-ca|ovhca) - printf "%s" $OVH_CA - return - ;; - kimsufi-eu|kimsufieu) - printf "%s" $KSF_EU - return - ;; - kimsufi-ca|kimsufica) - printf "%s" $KSF_CA - return - ;; - soyoustart-eu|soyoustarteu) - printf "%s" $SYS_EU - return - ;; - soyoustart-ca|soyoustartca) - printf "%s" $SYS_CA - return - ;; - runabove-ca|runaboveca) - printf "%s" $RAV_CA - return - ;; - - - *) - _err "Unknown parameter : $1" - return 1 - ;; - esac -} - - - - - _ovh_authentication() { _H1="X-Ovh-Application: $OVH_AK" @@ -189,7 +192,7 @@ _ovh_authentication() { _H3="" _H4="" - _ovhdata='{"accessRules": [{"method": "GET","path": "/*"},{"method": "POST","path": "/*"},{"method": "PUT","path": "/*"}],"redirection":"'$ovh_success'"}' + _ovhdata='{"accessRules": [{"method": "GET","path": "/*"},{"method": "POST","path": "/*"},{"method": "PUT","path": "/*"},{"method": "DELETE","path": "/*"}],"redirection":"'$ovh_success'"}' response="$(_post "$_ovhdata" "$OVH_API/auth/credential")" _debug3 response "$response" @@ -218,7 +221,6 @@ _ovh_authentication() { } - #_acme-challenge.www.domain.com #returns # _sub_domain=_acme-challenge.www @@ -256,7 +258,7 @@ _ovh_timestamp() { _H3="" _H4="" _H5="" - _get "$OVH_API/auth/time" + _get "$OVH_API/auth/time" "" 30 } _ovh_rest() { @@ -275,15 +277,14 @@ _ovh_rest() { _ovh_hex="$(printf "%s" "$_ovh_p" | _digest sha1 hex)" _debug2 _ovh_hex "$_ovh_hex" - - + _H1="X-Ovh-Application: $OVH_AK" _H2="X-Ovh-Signature: \$1\$$_ovh_hex" _debug2 _H2 "$_H2" _H3="X-Ovh-Timestamp: $_ovh_t" _H4="X-Ovh-Consumer: $OVH_CK" _H5="Content-Type: application/json;charset=utf-8" - if [ "$data" ] ; then + if [ "$data" ] || [ "$m" = "POST" ] || [ "$m" = "PUT" ] ; then _debug data "$data" response="$(_post "$data" "$_ovh_url" "" $m)" else