moved loading of configuration to seperate method

This commit is contained in:
Lukas Schauer
2016-01-08 18:59:01 +01:00
parent 3a9e97f997
commit ff11639624

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
set -u set -u
set -o pipefail set -o pipefail
@@ -7,38 +6,26 @@ umask 077 # paranoid umask, we're creating private keys
# Get the directory in which this script is stored # Get the directory in which this script is stored
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# directory for config, private key and certificates
BASEDIR="${SCRIPTDIR}" BASEDIR="${SCRIPTDIR}"
# Default config values # Setup default config values, search for and load configuration files
CA="https://acme-v01.api.letsencrypt.org/directory" load_config() {
LICENSE="https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf" # Default values
HOOK= CA="https://acme-v01.api.letsencrypt.org/directory"
RENEW_DAYS="30" LICENSE="https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf"
PRIVATE_KEY= HOOK=
KEYSIZE="4096" RENEW_DAYS="14"
WELLKNOWN= PRIVATE_KEY="${BASEDIR}/private_key.pem"
PRIVATE_KEY_RENEW="no" KEYSIZE="4096"
OPENSSL_CNF="$(openssl version -d | cut -d'"' -f2)/openssl.cnf" WELLKNOWN="${BASEDIR}/.acme-challenges"
CONTACT_EMAIL= PRIVATE_KEY_RENEW="no"
OPENSSL_CNF="$(openssl version -d | cut -d'"' -f2)/openssl.cnf"
set_defaults() { CONTACT_EMAIL=
# Default config variables depending on BASEDIR
if [[ -z "${PRIVATE_KEY}" ]]; then
PRIVATE_KEY="${BASEDIR}/private_key.pem"
fi
if [[ -z "${WELLKNOWN}" ]]; then
WELLKNOWN="${BASEDIR}/.acme-challenges"
fi
LOCKFILE="${BASEDIR}/lock" LOCKFILE="${BASEDIR}/lock"
}
init_system() {
# Check for config in various locations # Check for config in various locations
if [[ -z "${CONFIG:-}" ]]; then if [[ -z "${CONFIG:-}" ]]; then
for check_config in "${HOME}/.letsencrypt.sh" "/etc/letsencrypt.sh" "/usr/local/etc/letsencrypt.sh" "${PWD}" "${SCRIPTDIR}"; do for check_config in "/etc/letsencrypt.sh" "/usr/local/etc/letsencrypt.sh" "${PWD}" "${SCRIPTDIR}"; do
if [[ -e "${check_config}/config.sh" ]]; then if [[ -e "${check_config}/config.sh" ]]; then
BASEDIR="${check_config}" BASEDIR="${check_config}"
CONFIG="${check_config}/config.sh" CONFIG="${check_config}/config.sh"
@@ -48,17 +35,16 @@ init_system() {
fi fi
if [[ -z "${CONFIG:-}" ]]; then if [[ -z "${CONFIG:-}" ]]; then
echo "WARNING: No config file found, using default config!" >&2 echo "#" >&2
sleep 2 echo "# !! WARNING !! No config file found, using default config!" >&2
echo "#" >&2
elif [[ -e "${CONFIG}" ]]; then elif [[ -e "${CONFIG}" ]]; then
if [[ ! "${COMMAND}" = "env" ]]; then echo "# INFO: Using config file ${CONFIG}"
echo "Using config file ${CONFIG}"
fi
BASEDIR="$(dirname "${CONFIG}")" BASEDIR="$(dirname "${CONFIG}")"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CONFIG}" . "${CONFIG}"
else else
echo "ERROR: Specified config file doesn't exist." >&2 echo "Specified config file doesn't exist." >&2
exit 1 exit 1
fi fi
@@ -67,10 +53,13 @@ init_system() {
# Check BASEDIR and set default variables # Check BASEDIR and set default variables
if [[ ! -d "${BASEDIR}" ]]; then if [[ ! -d "${BASEDIR}" ]]; then
echo "ERROR: BASEDIR does not exist: ${BASEDIR}" >&2 echo "BASEDIR does not exist: ${BASEDIR}" >&2
exit 1 exit 1
fi fi
set_defaults }
init_system() {
load_config
if [[ "${COMMAND}" = "env" ]]; then if [[ "${COMMAND}" = "env" ]]; then
return return
@@ -542,7 +531,6 @@ command_help() {
# Description: Output configuration variables for use in other scripts # Description: Output configuration variables for use in other scripts
command_env() { command_env() {
echo "# letsencrypt.sh configuration" echo "# letsencrypt.sh configuration"
typeset -p CONFIG
typeset -p CA LICENSE BASEDIR WELLKNOWN PRIVATE_KEY KEYSIZE OPENSSL_CNF HOOK RENEW_DAYS PRIVATE_KEY_RENEW CONTACT_EMAIL typeset -p CA LICENSE BASEDIR WELLKNOWN PRIVATE_KEY KEYSIZE OPENSSL_CNF HOOK RENEW_DAYS PRIVATE_KEY_RENEW CONTACT_EMAIL
exit 0 exit 0
} }