Merge pull request #3034 from acmesh-official/dev

sync
This commit is contained in:
neil 2020-07-08 21:30:43 +08:00 committed by GitHub
commit 4daef52991
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 90 additions and 39 deletions

14
acme.sh
View File

@ -188,28 +188,28 @@ _dlg_versions() {
if _exists "${ACME_OPENSSL_BIN:-openssl}"; then if _exists "${ACME_OPENSSL_BIN:-openssl}"; then
${ACME_OPENSSL_BIN:-openssl} version 2>&1 ${ACME_OPENSSL_BIN:-openssl} version 2>&1
else else
echo "$ACME_OPENSSL_BIN doesn't exists." echo "$ACME_OPENSSL_BIN doesn't exist."
fi fi
echo "apache:" echo "apache:"
if [ "$_APACHECTL" ] && _exists "$_APACHECTL"; then if [ "$_APACHECTL" ] && _exists "$_APACHECTL"; then
$_APACHECTL -V 2>&1 $_APACHECTL -V 2>&1
else else
echo "apache doesn't exists." echo "apache doesn't exist."
fi fi
echo "nginx:" echo "nginx:"
if _exists "nginx"; then if _exists "nginx"; then
nginx -V 2>&1 nginx -V 2>&1
else else
echo "nginx doesn't exists." echo "nginx doesn't exist."
fi fi
echo "socat:" echo "socat:"
if _exists "socat"; then if _exists "socat"; then
socat -V 2>&1 socat -V 2>&1
else else
_debug "socat doesn't exists." _debug "socat doesn't exist."
fi fi
} }
@ -2801,10 +2801,10 @@ _setApache() {
apacheVer="$($_APACHECTL -V | grep "Server version:" | cut -d : -f 2 | cut -d " " -f 2 | cut -d '/' -f 2)" apacheVer="$($_APACHECTL -V | grep "Server version:" | cut -d : -f 2 | cut -d " " -f 2 | cut -d '/' -f 2)"
_debug "apacheVer" "$apacheVer" _debug "apacheVer" "$apacheVer"
apacheMajer="$(echo "$apacheVer" | cut -d . -f 1)" apacheMajor="$(echo "$apacheVer" | cut -d . -f 1)"
apacheMinor="$(echo "$apacheVer" | cut -d . -f 2)" apacheMinor="$(echo "$apacheVer" | cut -d . -f 2)"
if [ "$apacheVer" ] && [ "$apacheMajer$apacheMinor" -ge "24" ]; then if [ "$apacheVer" ] && [ "$apacheMajor$apacheMinor" -ge "24" ]; then
echo " echo "
Alias /.well-known/acme-challenge $ACME_DIR Alias /.well-known/acme-challenge $ACME_DIR
@ -5519,7 +5519,7 @@ revoke() {
fi fi
fi fi
else else
_info "Domain key file doesn't exists." _info "Domain key file doesn't exist."
fi fi
_info "Try account key." _info "Try account key."

View File

@ -1,6 +1,6 @@
#!/usr/bin/env sh #!/usr/bin/env sh
# If certificate already exist it will update only cert and key not touching other parameter # If certificate already exists it will update only cert and key, not touching other parameters
# If certificate doesn't exist it will only upload cert and key and not set other parameter # If certificate doesn't exist it will only upload cert and key, and not set other parameters
# Note that we deploy full chain # Note that we deploy full chain
# Written by Geoffroi Genot <ggenot@voxbone.com> # Written by Geoffroi Genot <ggenot@voxbone.com>

View File

@ -181,6 +181,7 @@ _describe_records_query() {
_clean() { _clean() {
_check_exist_query "$_domain" "$_sub_domain" _check_exist_query "$_domain" "$_sub_domain"
# do not correct grammar here
if ! _ali_rest "Check exist records" "ignore"; then if ! _ali_rest "Check exist records" "ignore"; then
return 1 return 1
fi fi

View File

@ -22,7 +22,7 @@ dns_dgon_add() {
txtvalue=$2 txtvalue=$2
DO_API_KEY="${DO_API_KEY:-$(_readaccountconf_mutable DO_API_KEY)}" DO_API_KEY="${DO_API_KEY:-$(_readaccountconf_mutable DO_API_KEY)}"
# Check if API Key Exist # Check if API Key Exists
if [ -z "$DO_API_KEY" ]; then if [ -z "$DO_API_KEY" ]; then
DO_API_KEY="" DO_API_KEY=""
_err "You did not specify DigitalOcean API key." _err "You did not specify DigitalOcean API key."
@ -77,7 +77,7 @@ dns_dgon_rm() {
txtvalue=$2 txtvalue=$2
DO_API_KEY="${DO_API_KEY:-$(_readaccountconf_mutable DO_API_KEY)}" DO_API_KEY="${DO_API_KEY:-$(_readaccountconf_mutable DO_API_KEY)}"
# Check if API Key Exist # Check if API Key Exists
if [ -z "$DO_API_KEY" ]; then if [ -z "$DO_API_KEY" ]; then
DO_API_KEY="" DO_API_KEY=""
_err "You did not specify DigitalOcean API key." _err "You did not specify DigitalOcean API key."

View File

@ -91,13 +91,12 @@ dns_duckdns_rm() {
#################### Private functions below ################################## #################### Private functions below ##################################
#fulldomain=_acme-challenge.domain.duckdns.org # fulldomain may be 'domain.duckdns.org' (if using --domain-alias) or '_acme-challenge.domain.duckdns.org'
#returns # either way, return 'domain'. (duckdns does not allow further subdomains and restricts domains to [a-z0-9-].)
# _duckdns_domain=domain
_duckdns_get_domain() { _duckdns_get_domain() {
# We'll extract the domain/username from full domain # We'll extract the domain/username from full domain
_duckdns_domain="$(printf "%s" "$fulldomain" | _lower_case | _egrep_o '[.][^.][^.]*[.]duckdns.org' | cut -d . -f 2)" _duckdns_domain="$(printf "%s" "$fulldomain" | _lower_case | _egrep_o '^(_acme-challenge\.)?[a-z0-9-]*\.duckdns\.org' | sed 's/^\(_acme-challenge\.\)\?\([a-z0-9-]*\)\.duckdns\.org/\2/')"
if [ -z "$_duckdns_domain" ]; then if [ -z "$_duckdns_domain" ]; then
_err "Error extracting the domain." _err "Error extracting the domain."

View File

@ -18,7 +18,7 @@ dns_dynv6_add() {
if ! _contains "$_your_hosts" "$_host"; then if ! _contains "$_your_hosts" "$_host"; then
_debug "The host is $_host and the record $_record" _debug "The host is $_host and the record $_record"
_debug "Dynv6 returned $_your_hosts" _debug "Dynv6 returned $_your_hosts"
_err "The host $_host does not exists on your dynv6 account" _err "The host $_host does not exist on your dynv6 account"
return 1 return 1
fi fi
_debug "found host on your account" _debug "found host on your account"
@ -49,7 +49,7 @@ dns_dynv6_rm() {
if ! _contains "$_your_hosts" "$_host"; then if ! _contains "$_your_hosts" "$_host"; then
_debug "The host is $_host and the record $_record" _debug "The host is $_host and the record $_record"
_debug "Dynv6 returned $_your_hosts" _debug "Dynv6 returned $_your_hosts"
_err "The host $_host does not exists on your dynv6 account" _err "The host $_host does not exist on your dynv6 account"
return 1 return 1
fi fi
_debug "found host on your account" _debug "found host on your account"

View File

@ -91,7 +91,7 @@ dns_gd_rm() {
fi fi
if ! _contains "$response" "$txtvalue"; then if ! _contains "$response" "$txtvalue"; then
_info "The record is not existing, skip" _info "The record does not exist, skip"
return 0 return 0
fi fi

View File

@ -155,7 +155,7 @@ _get_root() {
if [ "$HETZNER_Zone_ID" ]; then if [ "$HETZNER_Zone_ID" ]; then
_debug "Found, using: $HETZNER_Zone_ID" _debug "Found, using: $HETZNER_Zone_ID"
if ! _hetzner_rest GET "zones/${HETZNER_Zone_ID}"; then if ! _hetzner_rest GET "zones/${HETZNER_Zone_ID}"; then
_debug "Zone with id '$HETZNER_Zone_ID' not exists." _debug "Zone with id '$HETZNER_Zone_ID' does not exist."
_cleardomainconf "$domain_param_name" _cleardomainconf "$domain_param_name"
unset HETZNER_Zone_ID unset HETZNER_Zone_ID
else else

View File

@ -42,7 +42,7 @@ dns_hexonet_add() {
_debug _domain "$_domain" _debug _domain "$_domain"
_debug "Getting txt records" _debug "Getting txt records"
_hexonet_rest "&command=QueryDNSZoneRRList&dnszone=${h}.&RRTYPE=TXT" _hexonet_rest "command=QueryDNSZoneRRList&dnszone=${h}.&RRTYPE=TXT"
if ! _contains "$response" "CODE=200"; then if ! _contains "$response" "CODE=200"; then
_err "Error" _err "Error"
@ -88,7 +88,7 @@ dns_hexonet_rm() {
_debug _domain "$_domain" _debug _domain "$_domain"
_debug "Getting txt records" _debug "Getting txt records"
_hexonet_rest "&command=QueryDNSZoneRRList&dnszone=${h}.&RRTYPE=TXT&RR=${txtvalue}" _hexonet_rest "command=QueryDNSZoneRRList&dnszone=${h}.&RRTYPE=TXT&RR=${_sub_domain}%20IN%20TXT%20\"${txtvalue}\""
if ! _contains "$response" "CODE=200"; then if ! _contains "$response" "CODE=200"; then
_err "Error" _err "Error"
@ -100,7 +100,7 @@ dns_hexonet_rm() {
if [ "$count" = "0" ]; then if [ "$count" = "0" ]; then
_info "Don't need to remove." _info "Don't need to remove."
else else
if ! _hexonet_rest "&command=UpdateDNSZone&dnszone=${_domain}.&delrr0='${_sub_domain}%20IN%20TXT%20\"${txtvalue}\""; then if ! _hexonet_rest "command=UpdateDNSZone&dnszone=${_domain}.&delrr0=${_sub_domain}%20IN%20TXT%20\"${txtvalue}\""; then
_err "Delete record error." _err "Delete record error."
return 1 return 1
fi fi
@ -126,7 +126,7 @@ _get_root() {
return 1 return 1
fi fi
if ! _hexonet_rest "&command=QueryDNSZoneRRList&dnszone=${h}."; then if ! _hexonet_rest "command=QueryDNSZoneRRList&dnszone=${h}."; then
return 1 return 1
fi fi

View File

@ -37,7 +37,7 @@ dns_kinghost_add() {
_debug "Getting txt records" _debug "Getting txt records"
_kinghost_rest GET "dns" "name=$fulldomain&content=$txtvalue" _kinghost_rest GET "dns" "name=$fulldomain&content=$txtvalue"
#This API call returns "status":"ok" if dns record does not exists #This API call returns "status":"ok" if dns record does not exist
#We are creating a new txt record here, so we expect the "ok" status #We are creating a new txt record here, so we expect the "ok" status
if ! echo "$response" | grep '"status":"ok"' >/dev/null; then if ! echo "$response" | grep '"status":"ok"' >/dev/null; then
_err "Error" _err "Error"

View File

@ -5,7 +5,6 @@
# #
# REGRU_API_Password="test" # REGRU_API_Password="test"
# #
_domain=$_domain
REGRU_API_URL="https://api.reg.ru/api/regru2" REGRU_API_URL="https://api.reg.ru/api/regru2"
@ -27,10 +26,17 @@ dns_regru_add() {
_saveaccountconf_mutable REGRU_API_Username "$REGRU_API_Username" _saveaccountconf_mutable REGRU_API_Username "$REGRU_API_Username"
_saveaccountconf_mutable REGRU_API_Password "$REGRU_API_Password" _saveaccountconf_mutable REGRU_API_Password "$REGRU_API_Password"
_info "Adding TXT record to ${fulldomain}" _debug "First detect the root zone"
response="$(_get "$REGRU_API_URL/zone/add_txt?input_data={%22username%22:%22${REGRU_API_Username}%22,%22password%22:%22${REGRU_API_Password}%22,%22domains%22:[{%22dname%22:%22${_domain}%22}],%22subdomain%22:%22_acme-challenge%22,%22text%22:%22${txtvalue}%22,%22output_content_type%22:%22plain%22}&input_format=json")" if ! _get_root "$fulldomain"; then
_err "invalid domain"
return 1
fi
_debug _domain "$_domain"
if _contains "${response}" 'success'; then _info "Adding TXT record to ${fulldomain}"
_regru_rest POST "zone/add_txt" "input_data={%22username%22:%22${REGRU_API_Username}%22,%22password%22:%22${REGRU_API_Password}%22,%22domains%22:[{%22dname%22:%22${_domain}%22}],%22subdomain%22:%22_acme-challenge%22,%22text%22:%22${txtvalue}%22,%22output_content_type%22:%22plain%22}&input_format=json"
if ! _contains "${response}" 'error'; then
return 0 return 0
fi fi
_err "Could not create resource record, check logs" _err "Could not create resource record, check logs"
@ -51,13 +57,64 @@ dns_regru_rm() {
return 1 return 1
fi fi
_info "Deleting resource record $fulldomain" _debug "First detect the root zone"
response="$(_get "$REGRU_API_URL/zone/remove_record?input_data={%22username%22:%22${REGRU_API_Username}%22,%22password%22:%22${REGRU_API_Password}%22,%22domains%22:[{%22dname%22:%22${_domain}%22}],%22subdomain%22:%22_acme-challenge%22,%22content%22:%22${txtvalue}%22,%22record_type%22:%22TXT%22,%22output_content_type%22:%22plain%22}&input_format=json")" if ! _get_root "$fulldomain"; then
_err "invalid domain"
return 1
fi
_debug _domain "$_domain"
if _contains "${response}" 'success'; then _info "Deleting resource record $fulldomain"
_regru_rest POST "zone/remove_record" "input_data={%22username%22:%22${REGRU_API_Username}%22,%22password%22:%22${REGRU_API_Password}%22,%22domains%22:[{%22dname%22:%22${_domain}%22}],%22subdomain%22:%22_acme-challenge%22,%22content%22:%22${txtvalue}%22,%22record_type%22:%22TXT%22,%22output_content_type%22:%22plain%22}&input_format=json"
if ! _contains "${response}" 'error'; then
return 0 return 0
fi fi
_err "Could not delete resource record, check logs" _err "Could not delete resource record, check logs"
_err "${response}" _err "${response}"
return 1 return 1
} }
#################### Private functions below ##################################
#_acme-challenge.www.domain.com
#returns
# _domain=domain.com
_get_root() {
domain=$1
_regru_rest POST "service/get_list" "username=${REGRU_API_Username}&password=${REGRU_API_Password}&output_format=xml&servtype=domain"
domains_list=$(echo "${response}" | grep dname | sed -r "s/.*dname=\"([^\"]+)\".*/\\1/g")
for ITEM in ${domains_list}; do
case "${domain}" in
*${ITEM}*)
_domain=${ITEM}
_debug _domain "${_domain}"
return 0
;;
esac
done
return 1
}
#returns
# response
_regru_rest() {
m=$1
ep="$2"
data="$3"
_debug "$ep"
export _H1="Content-Type: application/x-www-form-urlencoded"
if [ "$m" != "GET" ]; then
_debug data "$data"
response="$(_post "$data" "$REGRU_API_URL/$ep" "" "$m")"
else
response="$(_get "$REGRU_API_URL/$ep?$data")"
fi
_debug response "${response}"
return 0
}

View File

@ -5,7 +5,7 @@
# #
#UNO_User="UExxxxxx" #UNO_User="UExxxxxx"
Uno_Api="https://api.unoeuro.com/1" Uno_Api="https://api.simply.com/1"
######## Public functions ##################### ######## Public functions #####################
@ -24,12 +24,6 @@ dns_unoeuro_add() {
return 1 return 1
fi fi
if ! _contains "$UNO_User" "UE"; then
_err "It seems that the UNO_User=$UNO_User is not a valid username."
_err "Please check and retry."
return 1
fi
#save the api key and email to the account conf file. #save the api key and email to the account conf file.
_saveaccountconf_mutable UNO_Key "$UNO_Key" _saveaccountconf_mutable UNO_Key "$UNO_Key"
_saveaccountconf_mutable UNO_User "$UNO_User" _saveaccountconf_mutable UNO_User "$UNO_User"