Skip to content

Commit

Permalink
Merge pull request #274 from lolo32/master
Browse files Browse the repository at this point in the history
Adding support for OVH managed DNS
  • Loading branch information
serverco committed May 14, 2017
2 parents 806921c + a9c1ee3 commit 7a9ffb5
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
33 changes: 33 additions & 0 deletions dns_scripts/dns_add_ovh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/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="YourAK"
applicationSecret="YourAS"
consumerKey="YourCK"

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
35 changes: 35 additions & 0 deletions dns_scripts/dns_del_ovh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/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="YourAK"
applicationSecret="YourAS"
consumerKey="YourCK"

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
oldResult=$(send GET "/domain/zone/${topDomain}/record?fieldType=TXT&subDomain=${subDomain}" ""|sed -e 's/\[//' -e 's/\]//')

for num in ${oldResult//,/ }
do
send DELETE "/domain/zone/${topDomain}/record/${num}" ""
done

# Refresh request
send POST /domain/zone/${topDomain}/refresh ""

0 comments on commit 7a9ffb5

Please sign in to comment.