diff --git a/getsslD b/getsslD index 52f235b..820ddd8 100755 --- a/getsslD +++ b/getsslD @@ -16,8 +16,11 @@ # GNU General Public License at for # more details. +# shellcheck disable=SC2140,SC2169 +# shellcheck shell=dash + PROGNAME=getsslD -VERSION="0.2 commit cd8d5b8" +VERSION="0.2 commit 9444e69" # Default values, accepts environment variables if set, otherwise default are used WORKING_DIR=${WORKING_DIR:="/ssl}" @@ -44,15 +47,15 @@ create_key() { printf 'Key exists at %s skipping generation.\n' "$key_loc" 1>&2 return 0 elif [[ ! -d $(dirname "$key_loc") ]]; then - printf 'Directory for storing $key_loc does not exist.' 1>&2 + printf 'Directory for storing %s does not exist.' "$key_loc" 1>&2 return 1 fi # Determine key type by length - # Valid Let's Encrypt RSA key lengths 2048-8192 - # Valid Let's Encrypt ECC key lengths 256, 384, 521 + # Valid Lets Encrypt RSA key lengths 2048-8192 + # Valid Lets Encrypt ECC key lengths 256, 384, 521 - if [[ "$key_len" -ge 2048 ]] && [[ "$key_len" -le 8192 ]] && [[ "$key_type" == "rsa" ]]; then + if [[ "$key_len" -ge "2048" ]] && [[ "$key_len" -le "8192" ]] && [[ "$key_type" == "rsa" ]]; then valid_key_type="RSA" fi @@ -66,8 +69,8 @@ create_key() { fi fi - if [[ -z ${valid_key_type+x} ]]; then - printf "Invalid key length. Please check your configuration." 1>&2 + if [[ -z "${valid_key_type+x}" ]]; then + printf 'Invalid key length. Please check your configuration.' 1>&2 return 1 fi @@ -85,9 +88,9 @@ create_key() { esac # Error inside case statement openssl generation - printf "Error creating OpenSSL key, deleting key..." 1>&2 + printf 'Error creating OpenSSL key, deleting key...' 1>&2 rm "$key_loc" - printf "Done.\n" 1>&2 + printf 'Done.\n' 1>&2 return 1 } @@ -99,7 +102,7 @@ get_date() { help_message_top() { cat <<- _EOL_ - Usage: "$PROGNAME" [option] [COMMAND] [ARGS...] + Usage: $PROGNAME [option] [COMMAND] [ARGS...] Obtain SSL certificates from the letsencrypt.org ACME server. Commands: @@ -116,7 +119,7 @@ help_message_top() { help_message_account() { cat <<- _EOL_ - Usage: "$PROGNAME" account [COMMAND] [ARGS...] + Usage: $PROGNAME account [COMMAND] [ARGS...] Manage Lets Encrypt account Commands: @@ -126,13 +129,13 @@ help_message_account() { return 0 } -prep_workdir() { +prep_workdir() { ## DAN FIX THIS # Prepare working directory for key/cert functions if [[ ! -d "$WORKING_DIR" ]]; then printf '%s' "Creating getsslD certificate storage directory - $WORKING_DIR..." if ! mkdir -p "$WORKING_DIR" >& /dev/null; then - printf "!! Could not create $WORKING_DIR. Check volumes." 1>&2 + printf '!! Could not create %s. Check volumes.' "$WORKING_DIR" 1>&2 exit 1 else printf '%s\n' "Done." @@ -141,12 +144,16 @@ prep_workdir() { return 0 } -print_error() { - # Output error messages to STDERR - local error=$1 - - printf '!! %s\n' "$1" 1>&2 - return 0 +read_config() { + # read any variables from config in working directory + if [[ -s "$WORKING_DIR/getsslD.cfg" ]]; then + printf 'Reading config from from %s/getsslD.cfg\n' "$WORKING_DIR" + # shellcheck source=/dev/null + . "$WORKING_DIR/getsslD.cfg" + else + printf '!! Unable to find %s/getsslD.cfg. Please generate or mount directory with file location.' "$WORKING_DIR" 1>&2 + exit 1 + fi } arg_parser() { @@ -154,7 +161,7 @@ arg_parser() { local key_type local key_length - while [[ ! -z ${1+x} ]]; do + while [[ ! -z "${1+x}" ]]; do case $1 in -h | --help | "") help_message_top @@ -162,21 +169,23 @@ arg_parser() { ;; account) shift - case $1 in # account subcommand + read_config + prep_workdir + case "$1" in # account subcommand -h | --help | "") help_message_account exit 0 ;; key) shift - case $1 in # key subcommand + case "$1" in # key subcommand -h | --help | "") help_message_account_key exit 0 ;; create) shift - case $1 in # create subcommand + case "$1" in # create subcommand -h | --help | "") help_message_account_key_create exit 0 @@ -184,15 +193,17 @@ arg_parser() { r | rsa) shift key_type="rsa" - printf 'Creating %s bit RSA account key...' $1 - create_key $ACCOUNT_KEY_LOCATION $1 $key_type + key_length="$1" + printf 'Creating %s bit RSA account key...' "$key_length" + create_key "$ACCOUNT_KEY_LOCATION" "$key_length" "$key_type" shift ;; e | ecc) shift key_type="ecc" - printf 'Creating %s bit ECC account key...' $1 - create_key $ACCOUNT_KEY_LOCATION $1 $key_type + key_length="$1" + printf 'Creating %s bit ECC account key...' "$key_length" + create_key "ACCOUNT_KEY_LOCATION" "$key_length" "$key_type" shift ;; *) @@ -241,20 +252,13 @@ if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]] || [[ "$1" == "" ]]; then exit 0 fi -# read any variables from config in working directory -if [[ -s "$WORKING_DIR/getsslD.cfg" ]]; then - printf 'Reading config from from %s/getsslD.cfg\n' "$WORKING_DIR" - source "$WORKING_DIR/getsslD.cfg" -else - printf "!! Unable to find $WORKING_DIR/getsslD.cfg. Please generate or mount directory with file location." 1>&2 - exit 1 -fi +printf '%s' $get_date -arg_parser $* +arg_parser "$@" } # Only run main if we are not testing. if [[ "$GETSSLD_TEST" != true ]]; then - main $@ + main "$@" fi