acme.sh/notify/customscript.sh

45 lines
1.4 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env sh
# Support calling a custom script for notifications
#
# export CUSTOMSCRIPT_PATH="/usr/local/bin/acme-notification.sh"
#
# The script is called with three arguments:
# $1 subject
# $2 content
# $3 status code (0: success, 1: error, 2: skipped)
customscript_send() {
_subject="$1"
_content="$2"
_statusCode="$3" #0: success, 1: error 2($RENEW_SKIP): skipped
_debug "_subject" "$_subject"
_debug "_content" "$_content"
_debug "_statusCode" "$_statusCode"
CUSTOMSCRIPT_PATH="${CUSTOMSCRIPT_PATH:-$(_readaccountconf_mutable CUSTOMSCRIPT_PATH)}"
if [ -z "$CUSTOMSCRIPT_PATH" ]; then
_err "You didn't specify the custom script path CUSTOMSCRIPT_PATH yet."
return 1
fi
if ! _exists "$CUSTOMSCRIPT_PATH"; then
_err "The custom script $CUSTOMSCRIPT_PATH does not exist or is not executable."
return 1
fi
_saveaccountconf_mutable CUSTOMSCRIPT_PATH "$CUSTOMSCRIPT_PATH"
# Invoke directly, never through eval: the subject and content contain
# domain names and CA messages, eval would allow command injection.
_customscript_result="$("$CUSTOMSCRIPT_PATH" "$_subject" "$_content" "$_statusCode" 2>&1)"
_customscript_rc="$?"
_debug2 "_customscript_result" "$_customscript_result"
if [ "$_customscript_rc" != "0" ]; then
_err "custom script execution error ($_customscript_rc): $_customscript_result"
return 1
fi
_info "custom script executed successfully."
return 0
}