aboutsummaryrefslogtreecommitdiffstats
path: root/package/sbin/painless-le
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2022-11-02 11:40:17 +0100
committerThomas Lange <code@nerdmind.de>2022-11-02 11:51:52 +0100
commit21f43360a5f044d20caa9f9cccabe234cb2fc9a7 (patch)
tree9bb32281c7b36d2d62a24a23eef2aa7cfe9c89cb /package/sbin/painless-le
parent35215a4678627f29fe791d51e71d5cc0dd4840f7 (diff)
downloadpainlessle-master.tar.gz
painlessle-master.tar.xz
painlessle-master.zip
Add "--server" and "--staging" optionsHEADmaster
Introduce a "--server" and "--staging" option to easily specify a custom ACME endpoint (or use of the staging server) which eliminates the hassle of manually editing the script for specifying a different ACME endpoint.
Diffstat (limited to 'package/sbin/painless-le')
-rwxr-xr-xpackage/sbin/painless-le38
1 files changed, 24 insertions, 14 deletions
diff --git a/package/sbin/painless-le b/package/sbin/painless-le
index 177662d..59ac735 100755
--- a/package/sbin/painless-le
+++ b/package/sbin/painless-le
@@ -14,23 +14,19 @@
# TARGET_DIR: Path to the target directory for the certificate files. #
# DNS_DOMAIN: One or more DNS hostnames to include in the certficate. #
# #
-# OPTION [-K]: Filename of the existing private key in target directory. #
-# OPTION [-I]: Filename for the intermediate certificate in target directory. #
-# OPTION [-C]: Filename for the standalone certificate in target directory. #
-# OPTION [-F]: Filename for the certificate+intermediate in target directory. #
+# [-K name]: Filename of the existing private key in target directory. #
+# [-I name]: Filename for the intermediate certificate in target directory. #
+# [-C name]: Filename for the standalone certificate in target directory. #
+# [-F name]: Filename for the certificate+intermediate in target directory. #
+# [--server URL]: Specify a custom URL to an ACME endpoint. #
+# [--staging]: Use a staging server to obtain an invalid test certificate. #
# #
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#
#===============================================================================
-# Define ACME endpoint URL
-#===============================================================================
-ACME_ENDPOINT="https://acme-v02.api.letsencrypt.org/directory"
-#ACME_ENDPOINT="https://acme-staging-v02.api.letsencrypt.org/directory"
-
-#===============================================================================
# Normalize command-line argument string
#===============================================================================
-eval set -- "$(getopt -o K:I:C:F: -- "$@")"
+eval set -- "$(getopt -o K:I:C:F: -l server:,staging -- "$@")"
#===============================================================================
# Parse command-line options
@@ -41,6 +37,8 @@ while true; do
-I) OPT_INTERMEDIATE="$2"; shift 2;;
-C) OPT_CERTIFICATE_ONLY="$2"; shift 2;;
-F) OPT_CERTIFICATE_FULL="$2"; shift 2;;
+ --server) OPT_SERVER="$2"; shift 2;;
+ --staging) OPT_STAGING=1; shift;;
--) shift; break;;
esac
done
@@ -97,10 +95,22 @@ if [ $? != 0 ]; then
fi
#===============================================================================
-# Run Certbot to accomplish the ACME challenge to get the certificate
+# Run Certbot to obtain the certificate
#===============================================================================
-certbot certonly --authenticator standalone --server "${ACME_ENDPOINT}" --csr "${REQUESTFILE}" \
- --cert-path "${CERTIFICATE_ONLY}.$$" --fullchain-path "${CERTIFICATE_FULL}.$$" --chain-path "${INTERMEDIATE}.$$"
+CERTBOT_OPTIONS=(
+ "--csr" "${REQUESTFILE}"
+ "--cert-path" "${CERTIFICATE_ONLY}.$$"
+ "--chain-path" "${INTERMEDIATE}.$$"
+ "--fullchain-path" "${CERTIFICATE_FULL}.$$"
+)
+
+[ ! -z "$OPT_STAGING" ] && \
+ CERTBOT_OPTIONS+=("--staging")
+
+[ ! -z "$OPT_SERVER" ] && [ -z "$OPT_STAGING" ] && \
+ CERTBOT_OPTIONS+=("--server" "${OPT_SERVER}")
+
+certbot certonly --authenticator standalone "${CERTBOT_OPTIONS[@]}"
#===============================================================================
# Check if Certbot failed to obtain a certificate