| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/usr/bin/env sh
- keyhelp_api_deploy() {
- _cdomain="$1"
- _ckey="$2"
- _ccert="$3"
- _cca="$4"
- _debug _cdomain "$_cdomain"
- _debug _ckey "$_ckey"
- _debug _ccert "$_ccert"
- _debug _cca "$_cca"
- # Read config from saved values or env
- _getdeployconf DEPLOY_KEYHELP_HOST
- _getdeployconf DEPLOY_KEYHELP_API_KEY
- _debug DEPLOY_KEYHELP_HOST "$DEPLOY_KEYHELP_HOST"
- _secure_debug DEPLOY_KEYHELP_API_KEY "$DEPLOY_KEYHELP_API_KEY"
- if [ -z "$DEPLOY_KEYHELP_HOST" ]; then
- _err "KeyHelp host not found, please define DEPLOY_KEYHELP_HOST."
- return 1
- fi
- if [ -z "$DEPLOY_KEYHELP_API_KEY" ]; then
- _err "KeyHelp api key not found, please define DEPLOY_KEYHELP_API_KEY."
- return 1
- fi
- # Save current values
- _savedeployconf DEPLOY_KEYHELP_HOST "$DEPLOY_KEYHELP_HOST"
- _savedeployconf DEPLOY_KEYHELP_API_KEY "$DEPLOY_KEYHELP_API_KEY"
- _request_key="$(tr '\n' ':' <"$_ckey" | sed 's/:/\\n/g')"
- _request_cert="$(tr '\n' ':' <"$_ccert" | sed 's/:/\\n/g')"
- _request_ca="$(tr '\n' ':' <"$_cca" | sed 's/:/\\n/g')"
- _request_body="{
- \"name\": \"$_cdomain\",
- \"components\": {
- \"private_key\": \"$_request_key\",
- \"certificate\": \"$_request_cert\",
- \"ca_certificate\": \"$_request_ca\"
- }
- }"
- _hosts="$(echo "$DEPLOY_KEYHELP_HOST" | tr "," " ")"
- _keys="$(echo "$DEPLOY_KEYHELP_API_KEY" | tr "," " ")"
- _i=1
- for _host in $_hosts; do
- _key="$(_getfield "$_keys" "$_i" " ")"
- _i="$(_math "$_i" + 1)"
- export _H1="X-API-Key: $_key"
- _put_url="$_host/api/v2/certificates/name/$_cdomain"
- if _post "$_request_body" "$_put_url" "" "PUT" "application/json" >/dev/null; then
- _code="$(grep "^HTTP" "$HTTP_HEADER" | _tail_n 1 | cut -d " " -f 2 | tr -d "\r\n")"
- else
- _err "Cannot make PUT request to $_put_url"
- return 1
- fi
- if [ "$_code" = "404" ]; then
- _info "$_cdomain not found, creating new entry at $_host"
- _post_url="$_host/api/v2/certificates"
- if _post "$_request_body" "$_post_url" "" "POST" "application/json" >/dev/null; then
- _code="$(grep "^HTTP" "$HTTP_HEADER" | _tail_n 1 | cut -d " " -f 2 | tr -d "\r\n")"
- else
- _err "Cannot make POST request to $_post_url"
- return 1
- fi
- fi
- if _startswith "$_code" "2"; then
- _info "$_cdomain set at $_host"
- else
- _err "HTTP status code is $_code"
- return 1
- fi
- done
- return 0
- }
|