Browse Source

add check config function

pull/216/head
srvrco 9 years ago
parent
commit
0c519f52e0
1 changed files with 78 additions and 59 deletions
  1. +78
    -59
      getssl

+ 78
- 59
getssl View File

@ -305,6 +305,67 @@ check_challenge_completion() { # checks with the ACME server if our challenge is
fi
}
check_config() { # check the config files for all obvious errors
debug "checking config"
# get all domains
if [[ "$IGNORE_DIRECTORY_DOMAIN" == "true" ]]; then
alldomains=${SANS//,/ }
else
alldomains=$(echo "$DOMAIN,$SANS" | sed "s/,/ /g")
fi
dn=0
tmplist=$(mktemp)
for d in $alldomains; do # loop over domains (dn is domain number)
if [[ "$(grep "^${d}$" "$tmplist")" = "$d" ]]; then
echo "$d appears to be duplicated in domain, SAN list"
config_errors=true
else
echo "$d" >> "$tmplist"
fi
if [[ "$USE_SINGLE_ACL" == "true" ]]; then
DOMAIN_ACL="${ACL[0]}"
else
DOMAIN_ACL="${ACL[$dn]}"
fi
if [[ $VALIDATE_VIA_DNS == "true" ]]; then # using dns-01 challenge
if [[ -z "$DNS_ADD_COMMAND" ]]; then
info "DNS_ADD_COMMAND not defined for $d"
config_errors=true
fi
if [[ -z "$DNS_DEL_COMMAND" ]]; then
info "DNS_DEL_COMMAND not defined for $d"
config_errors=true
fi
else # not using dns-01 challenge - using http-01 challenge
if [[ -z "${DOMAIN_ACL}" ]]; then
info "ACL location not specified for domain $d in $DOMAIN_DIR/getssl.cfg"
config_errors=true
fi
# check domain exist
if [[ "$(nslookup -query=AAAA "${d}"|grep -c "^${d}.*has AAAA address")" -ge 1 ]]; then
debug "found IPv6 record for ${d}"
elif [[ "$(nslookup "${d}"| grep -c ^Name)" -ge 1 ]]; then
debug "found IPv4 record for ${d}"
else
info "DNS lookup failed for $d"
config_errors=true
fi
fi # end of dns-01 http-01 check
((dn++))
done
# tidy up
rm -f "$tmplist"
if [[ "$config_errors" == "true" ]]; then
error_exit "exiting due to config errors"
fi
debug "check_config completed - all OK"
}
check_getssl_upgrade() { # check if a more recent version of code is available available
TEMP_UPGRADE_FILE="$(mktemp)"
curl --silent "$CODE_LOCATION" --output "$TEMP_UPGRADE_FILE"
@ -1079,13 +1140,13 @@ write_domain_template() { # write out a template file for a domain.
# 'ssh:sshuserid@server5:/var/www/${DOMAIN}/web/.well-known/acme-challenge'
# 'ftp:ftpuserid:ftppassword:${DOMAIN}:/web/.well-known/acme-challenge')
#Enable use of a single ACL for all checks
#USE_SINGLE_ACL="true"
#Set USE_SINGLE_ACL="true" to use a single ACL for all checks
#USE_SINGLE_ACL="false"
# Location for all your certs, these can either be on the server (full path name)
# or using ssh /sftp as for the ACL
#DOMAIN_CERT_LOCATION="ssh:server5:/etc/ssl/domain.crt"
#DOMAIN_KEY_LOCATION="ssh:server5:/etc/ssl/domain.key"
#DOMAIN_CERT_LOCATION="/etc/ssl/domain.crt"
#DOMAIN_KEY_LOCATION="/etc/ssl/domain.key"
#CA_CERT_LOCATION="/etc/ssl/chain.crt"
#DOMAIN_CHAIN_LOCATION="" # this is the domain cert and CA cert
#DOMAIN_KEY_CERT_LOCATION="" # this is the domain_key and domain cert
@ -1108,9 +1169,6 @@ write_domain_template() { # write out a template file for a domain.
#VALIDATE_VIA_DNS="true"
#DNS_ADD_COMMAND=
#DNS_DEL_COMMAND=
#AUTH_DNS_SERVER=""
#DNS_WAIT=10
#DNS_EXTRA_WAIT=60
_EOF_domain_
}
@ -1174,10 +1232,11 @@ trap "signal_exit TERM" TERM HUP
trap "signal_exit INT" INT
# Parse command-line
while [[ -n $1 ]]; do
while [[ -n ${1+defined} ]]; do
case $1 in
-h | --help)
help_message; graceful_exit ;;
help_message
graceful_exit ;;
-d | --debug)
_USE_DEBUG=1 ;;
-c | --create)
@ -1211,7 +1270,13 @@ while [[ -n $1 ]]; do
usage
error_exit "Unknown option $1" ;;
*)
DOMAIN="$1" ;;
if [[ ! -z $DOMAIN ]]; then
error_exit "invalid command line $DOMAIN - it appears to contain more than one domain"
fi
DOMAIN="$1"
if [[ -z $DOMAIN ]]; then
error_exit "invalid command line - it appears to contain a null variable"
fi ;;
esac
shift
done
@ -1386,6 +1451,8 @@ if [[ -s "$DOMAIN_DIR/getssl.cfg" ]]; then
. "$DOMAIN_DIR/getssl.cfg"
fi
check_config
# Obtain CA resource locations
ca_all_loc=$(curl "${CA}/directory" 2>/dev/null)
URL_new_reg=$(echo "$ca_all_loc" | grep "new-reg" | awk -F'"' '{print $4}')
@ -1572,38 +1639,6 @@ else
fi
debug "created SAN list = $SANLIST"
# list of main domain and all domains in SAN
if [[ "$IGNORE_DIRECTORY_DOMAIN" == "true" ]]; then
alldomains=${SANS//,/ }
else
alldomains=$(echo "$DOMAIN,$SANS" | sed "s/,/ /g")
fi
# check domain and SAN list for duplicates
echo "" > "$TEMP_DIR/sanlist"
for d in $alldomains; do
if [[ "$(grep "^${d}$" "$TEMP_DIR/sanlist")" = "$d" ]]; then
error_exit "$d appears to be duplicated in domain, SAN list"
else
echo "$d" >> "$TEMP_DIR/sanlist"
fi
# check nslookup for domains (ignore if using DNS check, as site may not be published yet)
if [[ $VALIDATE_VIA_DNS != "true" ]]; then
debug "checking nslookup for ${d}"
if [[ "$(nslookup -query=AAAA "${d}"|grep -c "^${d}.*has AAAA address")" -ge 1 ]]; then
debug "found IPv6 record for ${d}"
elif [[ "$(nslookup "${d}"| grep -c ^Name)" -ge 1 ]]; then
debug "found IPv4 record for ${d}"
else
error_exit "DNS lookup failed for $d"
fi
fi
done
# End of setting up SANS.
#create CSR's
if [[ "$DUAL_RSA_ECDSA" == "false" ]]; then
create_csr "$DOMAIN_DIR/${DOMAIN}.csr" "$DOMAIN_DIR/${DOMAIN}.key"
@ -1659,22 +1694,6 @@ for d in $alldomains; do
DOMAIN_ACL="${ACL[$dn]}"
fi
# check if we have the information needed to place the challenge
if [[ $VALIDATE_VIA_DNS == "true" ]]; then
if [[ -z "$DNS_ADD_COMMAND" ]]; then
error_exit "DNS_ADD_COMMAND not defined for domain $d"
fi
if [[ -z "$DNS_DEL_COMMAND" ]]; then
error_exit "DNS_DEL_COMMAND not defined for domain $d"
fi
else
if [[ -z "${DOMAIN_ACL}" ]]; then
error_exit "ACL location not specified for domain $d in $DOMAIN_DIR/getssl.cfg"
else
debug "domain $d has ACL = ${DOMAIN_ACL}"
fi
fi
# request a challenge token from ACME server
request="{\"resource\":\"new-authz\",\"identifier\":{\"type\":\"dns\",\"value\":\"$d\"}}"
send_signed_request "$URL_new_authz" "$request"
@ -1856,7 +1875,7 @@ if [[ $VALIDATE_VIA_DNS == "true" ]]; then
sleep $DNS_WAIT
else
debug "dns check failed - removing existing value"
error_exit "checking _acme-challenge.$DOMAIN gave $check_result not $auth_key"
error_exit "checking _acme-challenge.${d} gave $check_result not $auth_key"
fi
fi
done


Loading…
Cancel
Save