|
|
@@ -0,0 +1,86 @@
|
|
|
+#!/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
|
|
|
+}
|