#!/usr/bin/env bash domains=($(echo "$1"|sed -e 's/^\(\([a-zA-Z0-9.-]*\?\)\.\)*\([a-zA-Z0-9-]\+\.[a-zA-Z-]\+\)$/"\1" _acme-challenge.\2 \3/g')) challenge="$2" # Please, do not forget to ask for your credentials at https://eu.api.ovh.com/createToken/ # permissions needed are /domain/zone/* in GET,POST,DELETE applicationKey=${OVH_APPLICATION_KEY:-''} applicationSecret=${OVH_APPLICATION_SECRET:-''} consumerKey=${OVH_CONSUMER_KEY:-''} topDomain=${domains[2]} subDomain=${domains[1]%%.} function send { method=$1 url=$2 body=$3 ts=$(date +%s) sign=\$1\$$(echo -n "${applicationSecret}+${consumerKey}+${method}+https://eu.api.ovh.com/1.0${url}+${body}+${ts}"|sha1sum|cut -d" " -f1) curl -X "${method}" -H "Content-Type: application/json" -H "X-Ovh-Application: ${applicationKey}" -H "X-Ovh-Timestamp: ${ts}" -H "X-Ovh-Signature: ${sign}" -H "X-Ovh-Consumer: ${consumerKey}" -d "${body}" "https://eu.api.ovh.com/1.0${url}" } # Creation request send POST "/domain/zone/${topDomain}/record" "{\"fieldType\":\"TXT\",\"subDomain\":\"$subDomain\",\"ttl\":60,\"target\":\"$challenge\"}" # Refresh request send POST "/domain/zone/${topDomain}/refresh" "" # Pause for 10 seconds, for DNS propagation sleep 10