support google dns

This commit is contained in:
neilpang 2019-10-03 20:37:46 +08:00
parent be0df07dfb
commit 10eec7d48c

55
acme.sh
View File

@ -90,6 +90,9 @@ DEBUG_LEVEL_3=3
DEBUG_LEVEL_DEFAULT=$DEBUG_LEVEL_1 DEBUG_LEVEL_DEFAULT=$DEBUG_LEVEL_1
DEBUG_LEVEL_NONE=0 DEBUG_LEVEL_NONE=0
DOH_CLOUDFLARE=1
DOH_GOOGLE=2
HIDDEN_VALUE="[hidden](please add '--output-insecure' to see this value)" HIDDEN_VALUE="[hidden](please add '--output-insecure' to see this value)"
SYSLOG_ERROR="user.error" SYSLOG_ERROR="user.error"
@ -3636,7 +3639,7 @@ __trigger_validation() {
} }
#endpoint domain type #endpoint domain type
_ns_lookup() { _ns_lookup_impl() {
_ns_ep="$1" _ns_ep="$1"
_ns_domain="$2" _ns_domain="$2"
_ns_type="$3" _ns_type="$3"
@ -3660,7 +3663,7 @@ _ns_lookup_cf() {
_cf_ld="$1" _cf_ld="$1"
_cf_ld_type="$2" _cf_ld_type="$2"
_cf_ep="https://cloudflare-dns.com/dns-query" _cf_ep="https://cloudflare-dns.com/dns-query"
_ns_lookup "$_cf_ep" "$_cf_ld" "$_cf_ld_type" _ns_lookup_impl "$_cf_ep" "$_cf_ld" "$_cf_ld_type"
} }
#domain, type #domain, type
@ -3673,6 +3676,44 @@ _ns_purge_cf() {
_debug2 response "$response" _debug2 response "$response"
} }
#checks if cf server is available
_ns_is_available_cf() {
if _get "https://cloudflare-dns.com"; then
return 0
else
return 1
fi
}
#domain, type
_ns_lookup_google() {
_cf_ld="$1"
_cf_ld_type="$2"
_cf_ep="https://dns.google/resolve"
_ns_lookup_impl "$_cf_ep" "$_cf_ld" "$_cf_ld_type"
}
#domain, type
_ns_lookup() {
if [ -z "$DOH_USE" ]; then
_debug "Detect dns server first."
if _ns_is_available_cf; then
_debug "Use cloudflare doh server"
export DOH_USE=$DOH_CLOUDFLARE
else
_debug "Use google doh server"
export DOH_USE=$DOH_GOOGLE
fi
fi
if [ "$DOH_USE" = "$DOH_CLOUDFLARE" ] || [ -z "$DOH_USE" ]; then
_ns_lookup_cf "$@"
else
_ns_lookup_google "$@"
fi
}
#txtdomain, alias, txt #txtdomain, alias, txt
__check_txt() { __check_txt() {
_c_txtdomain="$1" _c_txtdomain="$1"
@ -3681,7 +3722,7 @@ __check_txt() {
_debug "_c_txtdomain" "$_c_txtdomain" _debug "_c_txtdomain" "$_c_txtdomain"
_debug "_c_aliasdomain" "$_c_aliasdomain" _debug "_c_aliasdomain" "$_c_aliasdomain"
_debug "_c_txt" "$_c_txt" _debug "_c_txt" "$_c_txt"
_answers="$(_ns_lookup_cf "$_c_aliasdomain" TXT)" _answers="$(_ns_lookup "$_c_aliasdomain" TXT)"
_contains "$_answers" "$_c_txt" _contains "$_answers" "$_c_txt"
} }
@ -3690,7 +3731,13 @@ __check_txt() {
__purge_txt() { __purge_txt() {
_p_txtdomain="$1" _p_txtdomain="$1"
_debug _p_txtdomain "$_p_txtdomain" _debug _p_txtdomain "$_p_txtdomain"
_ns_purge_cf "$_p_txtdomain" "TXT" if [ "$DOH_USE" = "$DOH_CLOUDFLARE" ] || [ -z "$DOH_USE" ]; then
_ns_purge_cf "$_p_txtdomain" "TXT"
else
_debug "no purge api for google dns api, just sleep 5 secs"
_sleep 5
fi
} }
#wait and check each dns entries #wait and check each dns entries