New function: validate_default_vars()
Check that sourcing default pki/vars has NOT changed EASYRSA or EASYRSA_PKI. This will be resolved in v3.2.0 - See #comment for details. Refactor select_vars(): To: single if/elif/else/fi. From: separate if/fi statements. Always set EASYRSA_VARS_FILE to the used vars-file. (Required for 'help' status) Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
This commit is contained in:
parent
dd702802c1
commit
1d0ecaf17b
@ -5617,55 +5617,58 @@ select_vars() {
|
|||||||
# No vars file will be used
|
# No vars file will be used
|
||||||
if [ "$EASYRSA_NO_VARS" ]; then
|
if [ "$EASYRSA_NO_VARS" ]; then
|
||||||
verbose "select_vars: EASYRSA_NO_VARS"
|
verbose "select_vars: EASYRSA_NO_VARS"
|
||||||
return
|
unset -v EASYRSA_VARS_FILE
|
||||||
fi
|
|
||||||
|
|
||||||
# User specified vars file will be used ONLY
|
# User specified vars file will be used ONLY
|
||||||
if [ "$EASYRSA_VARS_FILE" ]; then
|
elif [ "$EASYRSA_VARS_FILE" ]; then
|
||||||
verbose "select_vars: EASYRSA_VARS_FILE"
|
verbose "select_vars: EASYRSA_VARS_FILE"
|
||||||
source_vars "$EASYRSA_VARS_FILE"
|
source_vars "$EASYRSA_VARS_FILE"
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# User specified PKI; if vars exists, use it ONLY
|
# User specified PKI; if vars exists, use it ONLY
|
||||||
if [ "$EASYRSA_PKI" ]; then
|
elif [ "$EASYRSA_PKI" ]; then
|
||||||
if [ -e "$EASYRSA_PKI/vars" ]; then
|
if [ -e "$EASYRSA_PKI/vars" ]; then
|
||||||
verbose "select_vars: source EASYRSA_PKI/vars"
|
verbose "select_vars: source EASYRSA_PKI/vars"
|
||||||
source_vars "$EASYRSA_PKI/vars"
|
EASYRSA_VARS_FILE="$EASYRSA_PKI/vars"
|
||||||
return
|
source_vars "$EASYRSA_VARS_FILE"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# User specified EASYRSA; if vars exists, use it ONLY
|
# User specified EASYRSA; if vars exists, use it ONLY
|
||||||
if [ "$EASYRSA" ]; then
|
elif [ "$EASYRSA" ]; then
|
||||||
if [ -e "$EASYRSA/vars" ]; then
|
if [ -e "$EASYRSA/vars" ]; then
|
||||||
verbose "select_vars: EASYRSA/vars"
|
verbose "select_vars: EASYRSA/vars"
|
||||||
source_vars "$EASYRSA/vars"
|
EASYRSA_VARS_FILE="$EASYRSA/vars"
|
||||||
return
|
source_vars "$EASYRSA_VARS_FILE"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Default PKI; if vars exists, use it ONLY
|
# Default PKI; if vars exists, use it ONLY
|
||||||
if [ -e "$PWD/pki/vars" ]; then
|
elif [ -e "$PWD/pki/vars" ]; then
|
||||||
# Prevent vars from changing values
|
# Prevent vars from changing expected PKI.
|
||||||
set_var EASYRSA "$PWD"
|
# A vars in the PKI MUST always imply EASYRSA_PKI
|
||||||
set_var EASYRSA_PKI "$EASYRSA/pki"
|
# This is NOT backward compatible
|
||||||
|
# Use expected value comparison for v3.1.7
|
||||||
|
expected_EASYRSA="$PWD"
|
||||||
|
expected_EASYRSA_PKI="$PWD/pki"
|
||||||
|
#
|
||||||
|
# Use this for v3.2.0
|
||||||
|
# If the pki/vars sets a different PKI then
|
||||||
|
# there will be no PKI in the default /pki
|
||||||
|
#set_var EASYRSA "$PWD"
|
||||||
|
#set_var EASYRSA_PKI "$EASYRSA/pki"
|
||||||
|
|
||||||
verbose "select_vars: PWD/pki/vars"
|
verbose "select_vars: PWD/pki/vars"
|
||||||
source_vars "$PWD/pki/vars"
|
EASYRSA_VARS_FILE="$PWD/pki/vars"
|
||||||
return
|
source_vars "$EASYRSA_VARS_FILE"
|
||||||
fi
|
|
||||||
|
|
||||||
# Default working dir; if vars exists, use it ONLY
|
# Default working dir; if vars exists, use it ONLY
|
||||||
if [ -e "$PWD/vars" ]; then
|
elif [ -e "$PWD/vars" ]; then
|
||||||
# Prevent vars from changing values
|
|
||||||
set_var EASYRSA "$PWD"
|
|
||||||
verbose "select_vars: PWD/vars"
|
verbose "select_vars: PWD/vars"
|
||||||
source_vars "$PWD/vars"
|
EASYRSA_VARS_FILE="$PWD/vars"
|
||||||
return
|
source_vars "$EASYRSA_VARS_FILE"
|
||||||
fi
|
|
||||||
|
|
||||||
information "\
|
else
|
||||||
|
information "\
|
||||||
No Easy-RSA 'vars' configuration file exists!"
|
No Easy-RSA 'vars' configuration file exists!"
|
||||||
|
fi
|
||||||
} # => setup_vars()
|
} # => setup_vars()
|
||||||
|
|
||||||
# Source a vars file
|
# Source a vars file
|
||||||
@ -5809,6 +5812,37 @@ Algorithm '$EASYRSA_ALGO' is invalid: Must be 'rsa', 'ec' or 'ed'"
|
|||||||
set_var EASYRSA_MAX_TEMP 4
|
set_var EASYRSA_MAX_TEMP 4
|
||||||
} # => default_vars()
|
} # => default_vars()
|
||||||
|
|
||||||
|
# Validate expected values for EASYRSA and EASYRSA_PKI
|
||||||
|
validate_default_vars() {
|
||||||
|
unset -v unexpected_error
|
||||||
|
|
||||||
|
# Keep checks separate
|
||||||
|
# EASYRSA
|
||||||
|
if [ "$expected_EASYRSA" ]; then
|
||||||
|
[ "$expected_EASYRSA" = "$EASYRSA" ] || \
|
||||||
|
unexpected_error="\
|
||||||
|
EASYRSA: $EASYRSA -- expected: $expected_EASYRSA${NL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# EASYRSA_PKI
|
||||||
|
if [ "$expected_EASYRSA_PKI" ]; then
|
||||||
|
[ "$expected_EASYRSA_PKI" = "$EASYRSA_PKI" ] || \
|
||||||
|
unexpected_error="${unexpected_error}\
|
||||||
|
EASYRSA_PKI: $EASYRSA_PKI -- expected: $expected_EASYRSA_PKI"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return no error
|
||||||
|
[ -z "$unexpected_error" ] && return
|
||||||
|
|
||||||
|
# This is an unacceptable error
|
||||||
|
user_error "\
|
||||||
|
The values in the vars file have unexpectedly changed the values for
|
||||||
|
EASYRSA and/or EASYRSA_PKI. The default pki/vars file is forbidden to
|
||||||
|
change these values:
|
||||||
|
vars-file: $EASYRSA_VARS_FILE
|
||||||
|
${unexpected_error}"
|
||||||
|
} # => validate_default_vars()
|
||||||
|
|
||||||
# vars setup
|
# vars setup
|
||||||
# Here sourcing of 'vars' if present occurs.
|
# Here sourcing of 'vars' if present occurs.
|
||||||
# If not present, defaults are used to support
|
# If not present, defaults are used to support
|
||||||
@ -7495,6 +7529,11 @@ select_vars
|
|||||||
# then set defaults
|
# then set defaults
|
||||||
default_vars
|
default_vars
|
||||||
|
|
||||||
|
# Check for unexpected changes to EASYRSA or EASYRSA_PKI
|
||||||
|
# This will be resolved in v3.2.0
|
||||||
|
# https://github.com/OpenVPN/easy-rsa/issues/1006
|
||||||
|
validate_default_vars
|
||||||
|
|
||||||
# Check for conflicting input options
|
# Check for conflicting input options
|
||||||
mutual_exclusions
|
mutual_exclusions
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user