138 lines
5.8 KiB
Bash
Executable File
138 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
source ovh_secrets.txt
|
|
|
|
HTTP_QUERY="https://api.ovh.com/1.0/domain"
|
|
TIME=$(curl -s https://api.ovh.com/1.0/auth/time)
|
|
|
|
ZONE_FILE="zone.photos-nas.ovh"
|
|
ZONE="photos-nas.ovh"
|
|
|
|
# zone export
|
|
|
|
export_zone() {
|
|
HTTP_METHOD="GET"
|
|
HTTP_BODY=""
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/export"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY | sed 's/\\n/\n/g' | sed 's/\"//g' | grep 'CNAME'> $ZONE_FILE
|
|
#curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY | sed 's/\\n/\n/g' | grep 'CNAME'
|
|
# |sed 's/,//g' |sed 's/\\n/\'$'\n''/g'
|
|
# | sed 's/\\n/\n/g'
|
|
echo $?
|
|
if [ $? == 0 ]; then
|
|
echo "$ZONE_FILE have been created !"
|
|
fi
|
|
}
|
|
|
|
export_zone
|
|
cat $ZONE_FILE
|
|
|
|
refresh() {
|
|
HTTP_BODY=""
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/refresh"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY
|
|
echo $? # 0
|
|
if [ $? == 0 ]; then
|
|
echo "Zone $ZONE have been successfully refresh !"
|
|
else
|
|
echo "Error while refreshing zone $ZONE !"
|
|
fi
|
|
|
|
}
|
|
|
|
# ajout d'un cname
|
|
|
|
add_cname() {
|
|
HTTP_METHOD="POST"
|
|
HTTP_BODY="{\"fieldType\": \"CNAME\",\"subDomain\": \"$1\",\"target\": \"photos-nas.ovh.\",\"ttl\": 0}"
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/record"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY
|
|
echo $? # null
|
|
if [ $? == 0 ]; then
|
|
echo "CNAME $1 have been successfully added !"
|
|
else
|
|
echo "Error adding CNAME $1 !"
|
|
fi
|
|
|
|
HTTP_BODY=""
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/refresh"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY
|
|
echo $? # 0
|
|
if [ $? == 0 ]; then
|
|
echo "Zone $ZONE have been successfully refresh !"
|
|
else
|
|
echo "Error while refreshing zone $ZONE !"
|
|
fi
|
|
}
|
|
|
|
#add_cname "example_cname"
|
|
|
|
|
|
remove_cname() {
|
|
record=""
|
|
|
|
HTTP_METHOD="GET"
|
|
HTTP_BODY=""
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/record?fieldType=CNAME&subDomain=$1"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
record=$(curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY | sed 's/.//;s/.$//')
|
|
#echo $? # 0
|
|
if [ $? == 0 ] && [ -n "$record" ]; then
|
|
echo "Record number for CNAME $1 is $record !"
|
|
|
|
HTTP_METHOD="DELETE"
|
|
HTTP_BODY=""
|
|
HTTP_QUERY="https://eu.api.ovh.com/v1/domain/zone/$ZONE/record/$record"
|
|
|
|
CLEAR_SIGN="$OVH_APP_SECRET+$OVH_CONSUMER_KEY+$HTTP_METHOD+$HTTP_QUERY+$HTTP_BODY+$TIME"
|
|
SIG='$1$'$(echo -n $CLEAR_SIGN | openssl dgst -sha1 | sed -e 's/^.* //')
|
|
|
|
curl --silent -X $HTTP_METHOD -H "Content-Type:application/json;charset=utf-8" -H "X-Ovh-Application:$OVH_APP_KEY" -H "X-Ovh-Timestamp:$TIME" -H "X-Ovh-Signature:$SIG" -H "X-Ovh-Consumer:$OVH_CONSUMER_KEY" --data "$HTTP_BODY" $HTTP_QUERY
|
|
#echo $? # 0
|
|
if [ $? == 0 ]; then
|
|
echo "CNAME $1 have been successfully deleted !"
|
|
else
|
|
echo "Error while deleting CNAME $1 !"
|
|
fi
|
|
|
|
else
|
|
echo "No record number found for CNAME $1 !"
|
|
fi
|
|
|
|
}
|
|
|
|
remove_cname "kuma"
|
|
|
|
|
|
#curl -X POST "https://eu.api.ovh.com/v1/domain/zone/photos-nas.ovh/record" \
|
|
# -H "accept: application/json"\
|
|
# -H "authorization: Bearer eyJhbGciOiJFZERTQSIsImtpZCI6IkVGNThFMkUxMTFBODNCREFEMDE4OUUzMzZERTk3MDhFNjRDMDA4MDEiLCJraW5kIjoib2F1dGgyIiwidHlwIjoiSldUIn0.eyJBY2Nlc3NUb2tlbiI6ImY4MGU5NmQwZmFiZmM3ZWY0MmMzZjZjNjcxNjZiOWUzNWQwMDc3NTJiOTFhNGQ0NDQyNmY3NTM1MzhiM2M5N2EiLCJpYXQiOjE3MjIyNTk0NzF9.C4MFvrgfF53n87q3h1xny7NBYAOozwzA5t8ty9TqNprMTfWz0Fx5JwvFaCVi8jzDvjzwIYd4MLNm-WqTfLfsAw"\
|
|
# -H "content-type: application/json" \
|
|
# -d '{"fieldType":"CNAME","subDomain":"api-test","target":"photos-nas.ovh.","ttl":0}' \
|
|
|
|
|
|
# {"fieldType": "CNAME","subDomain": "api-test","target": "photos-nas.ovh.","ttl": 0}
|
|
|
|
# refresh
|
|
|
|
# curl -X POST "https://eu.api.ovh.com/v1/domain/zone/photos-nas.ovh/refresh" \
|
|
# -H "authorization: Bearer eyJhbGciOiJFZERTQSIsImtpZCI6IkVGNThFMkUxMTFBODNCREFEMDE4OUUzMzZERTk3MDhFNjRDMDA4MDEiLCJraW5kIjoib2F1dGgyIiwidHlwIjoiSldUIn0.eyJBY2Nlc3NUb2tlbiI6ImY4MGU5NmQwZmFiZmM3ZWY0MmMzZjZjNjcxNjZiOWUzNWQwMDc3NTJiOTFhNGQ0NDQyNmY3NTM1MzhiM2M5N2EiLCJpYXQiOjE3MjIyNTk0NzF9.C4MFvrgfF53n87q3h1xny7NBYAOozwzA5t8ty9TqNprMTfWz0Fx5JwvFaCVi8jzDvjzwIYd4MLNm-WqTfLfsAw" |