123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/bin/bash
- # shellcheck disable=SC1090 # https://www.shellcheck.net/wiki/SC1090
- # shellcheck disable=SC2154 # https://www.shellcheck.net/wiki/SC2154
- # shellcheck disable=SC2016 # https://www.shellcheck.net/wiki/SC2016
- # main variables
- # using same config file than for Golang script
- OVH_CONF="../golang/ovh.conf"
- OVH_API_VERSION="1.0"
- # source all ovh keys
- source <( grep '=' "${OVH_CONF}" )
- # Create ENDPOINT
- case "${endpoint}" in
- ovh-eu) ENDPOINT="https://eu.api.ovh.com/${OVH_API_VERSION}" ;;
- ovh-us) ENDPOINT="https://us.api.ovh.com/${OVH_API_VERSION}" ;;
- ovh-ca) ENDPOINT="https://ca.api.ovh.com/${OVH_API_VERSION}" ;;
- *) echo "${endpoint} is not yet supported" ; exit ;;
- esac
- # Signing process
- # @"method" "url" "post_data" "timestamp"
- TIME=$( curl -s "${ENDPOINT}/auth/time" )
- # Method
- # ovh-bash get vps
- HTTP_METHOD="${1:?need a http method}"
- HTTP_QUERY="${ENDPOINT}/${2:?need a query}"
- HTTP_BODY=""
- CLEAR_SIGN="${application_secret}+${consumer_key}+${HTTP_METHOD^^}+${HTTP_QUERY}+${HTTP_BODY}+${TIME}"
- SIG='$1$'$( echo -n "${CLEAR_SIGN}" | sha1sum - | cut -d' ' -f1 )
- # curl call
- curl -sL -X "${HTTP_METHOD^^}" \
- -H "Content-Type:application/json;charset=utf-8" \
- -H "X-Ovh-Application:${application_key}" \
- -H "X-Ovh-Timestamp:${TIME}" \
- -H "X-Ovh-Signature:${SIG}" \
- -H "X-Ovh-Consumer:${consumer_key}" \
- --data "${HTTP_BODY}" "${HTTP_QUERY}"
- exit $?
|