commit
c20c219990
55
acme.sh
55
acme.sh
|
@ -2884,6 +2884,7 @@ _initpath() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
_debug DOMAIN_PATH "$DOMAIN_PATH"
|
_debug DOMAIN_PATH "$DOMAIN_PATH"
|
||||||
|
export DOMAIN_PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$DOMAIN_BACKUP_PATH" ]; then
|
if [ -z "$DOMAIN_BACKUP_PATH" ]; then
|
||||||
|
@ -4684,28 +4685,26 @@ $_authorizations_map"
|
||||||
thumbprint="$(__calc_account_thumbprint)"
|
thumbprint="$(__calc_account_thumbprint)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
keyauthorization=""
|
||||||
|
|
||||||
|
if echo "$response" | grep '"status":"valid"' >/dev/null 2>&1; then
|
||||||
|
_debug "$d is already valid."
|
||||||
|
keyauthorization="$STATE_VERIFIED"
|
||||||
|
_debug keyauthorization "$keyauthorization"
|
||||||
|
fi
|
||||||
|
|
||||||
entry="$(echo "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
entry="$(echo "$response" | _egrep_o '[^\{]*"type":"'$vtype'"[^\}]*')"
|
||||||
_debug entry "$entry"
|
_debug entry "$entry"
|
||||||
keyauthorization=""
|
|
||||||
if [ -z "$entry" ]; then
|
if [ -z "$keyauthorization" -a -z "$entry" ]; then
|
||||||
if ! _startswith "$d" '*.'; then
|
_err "Error, can not get domain token entry $d for $vtype"
|
||||||
_debug "Not a wildcard domain, lets check whether the validation is already valid."
|
_supported_vtypes="$(echo "$response" | _egrep_o "\"challenges\":\[[^]]*]" | tr '{' "\n" | grep type | cut -d '"' -f 4 | tr "\n" ' ')"
|
||||||
if echo "$response" | grep '"status":"valid"' >/dev/null 2>&1; then
|
if [ "$_supported_vtypes" ]; then
|
||||||
_debug "$d is already valid."
|
_err "The supported validation types are: $_supported_vtypes, but you specified: $vtype"
|
||||||
keyauthorization="$STATE_VERIFIED"
|
|
||||||
_debug keyauthorization "$keyauthorization"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -z "$keyauthorization" ]; then
|
|
||||||
_err "Error, can not get domain token entry $d for $vtype"
|
|
||||||
_supported_vtypes="$(echo "$response" | _egrep_o "\"challenges\":\[[^]]*]" | tr '{' "\n" | grep type | cut -d '"' -f 4 | tr "\n" ' ')"
|
|
||||||
if [ "$_supported_vtypes" ]; then
|
|
||||||
_err "The supported validation types are: $_supported_vtypes, but you specified: $vtype"
|
|
||||||
fi
|
|
||||||
_clearup
|
|
||||||
_on_issue_err "$_post_hook"
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
_clearup
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$keyauthorization" ]; then
|
if [ -z "$keyauthorization" ]; then
|
||||||
|
@ -4731,12 +4730,6 @@ $_authorizations_map"
|
||||||
fi
|
fi
|
||||||
keyauthorization="$token.$thumbprint"
|
keyauthorization="$token.$thumbprint"
|
||||||
_debug keyauthorization "$keyauthorization"
|
_debug keyauthorization "$keyauthorization"
|
||||||
|
|
||||||
if printf "%s" "$response" | grep '"status":"valid"' >/dev/null 2>&1; then
|
|
||||||
_debug "$d is already verified."
|
|
||||||
keyauthorization="$STATE_VERIFIED"
|
|
||||||
_debug keyauthorization "$keyauthorization"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dvlist="$d$sep$keyauthorization$sep$uri$sep$vtype$sep$_currentRoot"
|
dvlist="$d$sep$keyauthorization$sep$uri$sep$vtype$sep$_currentRoot"
|
||||||
|
@ -4960,18 +4953,6 @@ $_authorizations_map"
|
||||||
if ! chmod a+r "$wellknown_path/$token"; then
|
if ! chmod a+r "$wellknown_path/$token"; then
|
||||||
_debug "chmod failed, but we just continue."
|
_debug "chmod failed, but we just continue."
|
||||||
fi
|
fi
|
||||||
if [ ! "$usingApache" ]; then
|
|
||||||
if webroot_owner=$(_stat "$_currentRoot"); then
|
|
||||||
_debug "Changing owner/group of .well-known to $webroot_owner"
|
|
||||||
if ! _exec "chown -R \"$webroot_owner\" \"$_currentRoot/.well-known\""; then
|
|
||||||
_debug "$(cat "$_EXEC_TEMP_ERR")"
|
|
||||||
_exec_err >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
_debug "not changing owner/group of webroot"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
elif [ "$vtype" = "$VTYPE_ALPN" ]; then
|
elif [ "$vtype" = "$VTYPE_ALPN" ]; then
|
||||||
acmevalidationv1="$(printf "%s" "$keyauthorization" | _digest "sha256" "hex")"
|
acmevalidationv1="$(printf "%s" "$keyauthorization" | _digest "sha256" "hex")"
|
||||||
|
|
|
@ -273,16 +273,27 @@ _check_curl_version() {
|
||||||
_minor="$(_getfield "$_cversion" 2 '.')"
|
_minor="$(_getfield "$_cversion" 2 '.')"
|
||||||
_debug2 "_minor" "$_minor"
|
_debug2 "_minor" "$_minor"
|
||||||
|
|
||||||
if [ "$_major$_minor" -lt "740" ]; then
|
if [ "$_major" -ge "8" ]; then
|
||||||
|
#ok
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [ "$_major" = "7" ]; then
|
||||||
|
if [ "$_minor" -lt "40" ]; then
|
||||||
|
_err "curl v$_cversion doesn't support unit socket"
|
||||||
|
_err "Please upgrade to curl 7.40 or later."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ "$_minor" -lt "50" ]; then
|
||||||
|
_debug "Use short host name"
|
||||||
|
export _CURL_NO_HOST=1
|
||||||
|
else
|
||||||
|
export _CURL_NO_HOST=
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
else
|
||||||
_err "curl v$_cversion doesn't support unit socket"
|
_err "curl v$_cversion doesn't support unit socket"
|
||||||
_err "Please upgrade to curl 7.40 or later."
|
_err "Please upgrade to curl 7.40 or later."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if [ "$_major$_minor" -lt "750" ]; then
|
|
||||||
_debug "Use short host name"
|
|
||||||
export _CURL_NO_HOST=1
|
|
||||||
else
|
|
||||||
export _CURL_NO_HOST=
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ _get_root() {
|
||||||
domain=$1
|
domain=$1
|
||||||
i=2
|
i=2
|
||||||
p=1
|
p=1
|
||||||
if _opns_rest "GET" "/domain/searchMasterDomain"; then
|
if _opns_rest "GET" "/domain/searchPrimaryDomain"; then
|
||||||
_domain_response="$response"
|
_domain_response="$response"
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
|
@ -150,7 +150,7 @@ _get_root() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
_debug h "$h"
|
_debug h "$h"
|
||||||
id=$(echo "$_domain_response" | _egrep_o "\"uuid\":\"[a-z0-9\-]*\",\"enabled\":\"1\",\"type\":\"master\",\"domainname\":\"${h}\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
|
id=$(echo "$_domain_response" | _egrep_o "\"uuid\":\"[a-z0-9\-]*\",\"enabled\":\"1\",\"type\":\"primary\",\"domainname\":\"${h}\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
|
||||||
if [ -n "$id" ]; then
|
if [ -n "$id" ]; then
|
||||||
_debug id "$id"
|
_debug id "$id"
|
||||||
_host=$(printf "%s" "$domain" | cut -d . -f 1-$p)
|
_host=$(printf "%s" "$domain" | cut -d . -f 1-$p)
|
||||||
|
|
|
@ -41,7 +41,7 @@ pleskxml_init_checks_done=0
|
||||||
NEWLINE='\
|
NEWLINE='\
|
||||||
'
|
'
|
||||||
|
|
||||||
pleskxml_tplt_get_domains="<packet><customer><get-domain-list><filter/></get-domain-list></customer></packet>"
|
pleskxml_tplt_get_domains="<packet><webspace><get><filter/><dataset><gen_info/></dataset></get></webspace></packet>"
|
||||||
# Get a list of domains that PLESK can manage, so we can check root domain + host for acme.sh
|
# Get a list of domains that PLESK can manage, so we can check root domain + host for acme.sh
|
||||||
# Also used to test credentials and URI.
|
# Also used to test credentials and URI.
|
||||||
# No params.
|
# No params.
|
||||||
|
@ -145,22 +145,25 @@ dns_pleskxml_rm() {
|
||||||
)"
|
)"
|
||||||
|
|
||||||
if [ -z "$reclist" ]; then
|
if [ -z "$reclist" ]; then
|
||||||
_err "No TXT records found for root domain ${root_domain_name} (Plesk domain ID ${root_domain_id}). Exiting."
|
_err "No TXT records found for root domain $fulldomain (Plesk domain ID ${root_domain_id}). Exiting."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_debug "Got list of DNS TXT records for root domain '$root_domain_name':"
|
_debug "Got list of DNS TXT records for root Plesk domain ID ${root_domain_id} of root domain $fulldomain:"
|
||||||
_debug "$reclist"
|
_debug "$reclist"
|
||||||
|
|
||||||
|
# Extracting the id of the TXT record for the full domain (NOT case-sensitive) and corresponding value
|
||||||
recid="$(
|
recid="$(
|
||||||
_value "$reclist" |
|
_value "$reclist" |
|
||||||
grep "<host>${fulldomain}.</host>" |
|
grep -i "<host>${fulldomain}.</host>" |
|
||||||
grep "<value>${txtvalue}</value>" |
|
grep "<value>${txtvalue}</value>" |
|
||||||
sed 's/^.*<id>\([0-9]\{1,\}\)<\/id>.*$/\1/'
|
sed 's/^.*<id>\([0-9]\{1,\}\)<\/id>.*$/\1/'
|
||||||
)"
|
)"
|
||||||
|
|
||||||
|
_debug "Got id from line: $recid"
|
||||||
|
|
||||||
if ! _value "$recid" | grep '^[0-9]\{1,\}$' >/dev/null; then
|
if ! _value "$recid" | grep '^[0-9]\{1,\}$' >/dev/null; then
|
||||||
_err "DNS records for root domain '${root_domain_name}' (Plesk ID ${root_domain_id}) + host '${sub_domain_name}' do not contain the TXT record '${txtvalue}'"
|
_err "DNS records for root domain '${fulldomain}.' (Plesk ID ${root_domain_id}) + host '${sub_domain_name}' do not contain the TXT record '${txtvalue}'"
|
||||||
_err "Cannot delete TXT record. Exiting."
|
_err "Cannot delete TXT record. Exiting."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
@ -251,9 +254,12 @@ _call_api() {
|
||||||
|
|
||||||
# Detect any <status> that isn't "ok". None of the used calls should fail if the API is working correctly.
|
# Detect any <status> that isn't "ok". None of the used calls should fail if the API is working correctly.
|
||||||
# Also detect if there simply aren't any status lines (null result?) and report that, as well.
|
# Also detect if there simply aren't any status lines (null result?) and report that, as well.
|
||||||
|
# Remove <data></data> structure from result string, since it might contain <status> values that are related to the status of the domain and not to the API request
|
||||||
|
|
||||||
statuslines_count_total="$(echo "$pleskxml_prettyprint_result" | grep -c '^ *<status>[^<]*</status> *$')"
|
statuslines_count_total="$(echo "$pleskxml_prettyprint_result" | sed '/<data>/,/<\/data>/d' | grep -c '^ *<status>[^<]*</status> *$')"
|
||||||
statuslines_count_okay="$(echo "$pleskxml_prettyprint_result" | grep -c '^ *<status>ok</status> *$')"
|
statuslines_count_okay="$(echo "$pleskxml_prettyprint_result" | sed '/<data>/,/<\/data>/d' | grep -c '^ *<status>ok</status> *$')"
|
||||||
|
_debug "statuslines_count_total=$statuslines_count_total."
|
||||||
|
_debug "statuslines_count_okay=$statuslines_count_okay."
|
||||||
|
|
||||||
if [ -z "$statuslines_count_total" ]; then
|
if [ -z "$statuslines_count_total" ]; then
|
||||||
|
|
||||||
|
@ -375,7 +381,7 @@ _pleskxml_get_root_domain() {
|
||||||
# Output will be one line per known domain, containing 2 <name> tages and a single <id> tag
|
# Output will be one line per known domain, containing 2 <name> tages and a single <id> tag
|
||||||
# We don't actually need to check for type, name, *and* id, but it guarantees only usable lines are returned.
|
# We don't actually need to check for type, name, *and* id, but it guarantees only usable lines are returned.
|
||||||
|
|
||||||
output="$(_api_response_split "$pleskxml_prettyprint_result" 'domain' '<type>domain</type>' | sed 's/<ascii-name>/<name>/g;s/<\/ascii-name>/<\/name>/g' | grep '<name>' | grep '<id>')"
|
output="$(_api_response_split "$pleskxml_prettyprint_result" 'result' '<status>ok</status>' | sed 's/<ascii-name>/<name>/g;s/<\/ascii-name>/<\/name>/g' | grep '<name>' | grep '<id>')"
|
||||||
|
|
||||||
_debug 'Domains managed by Plesk server are (ignore the hacked output):'
|
_debug 'Domains managed by Plesk server are (ignore the hacked output):'
|
||||||
_debug "$output"
|
_debug "$output"
|
||||||
|
|
Loading…
Reference in New Issue