mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-05-07 16:54:51 +00:00
Cover all known suffixes
thanks to https://www.reddit.com/r/learnprogramming/comments/7sdcdl/bash_linux_remove_subdomain_from_tlds_like_comau/
This commit is contained in:
parent
bc14e2ba4a
commit
22e16394b7
@ -16,20 +16,45 @@
|
||||
#
|
||||
######## Public functions #####################
|
||||
|
||||
_root_domain() {
|
||||
d=$1
|
||||
cache='/tmp/dns_suffix.cache'
|
||||
expiry='yesterday'
|
||||
suffix_url='https://publicsuffix.org/list/public_suffix_list.dat'
|
||||
[[ -s "${cache}" ]] || echo -n '' > "${cache}" # (re-)create empty cache
|
||||
[[ $(stat -c '%Y' "${cache}") -lt $(date +%s -d "${expiry}") ]] && echo -n '' > "${cache}" # purge old cache
|
||||
{
|
||||
[[ -s "${cache}" ]] && cat "${cache}" # load from cache
|
||||
[[ -s "${cache}" ]] || { # save to cache
|
||||
curl -so- "${suffix_url}" | # fetch from $suffix_url
|
||||
sed 's/[#\/].*$//' | # strip comments
|
||||
sed 's/[*][.]//' | # strip wildcard suffixes, like '*.nom.br'
|
||||
sed '/^[\t ]*$/d' | # delete blank lines
|
||||
tr 'A-Z' 'a-z' | # everything lowercase
|
||||
awk '{print length, $0}' | # prepend length of each line to each line
|
||||
sort -n -r | # sort longest-line-first
|
||||
sed 's/^[0-9\t ]*//' | # strip line length
|
||||
tee "${cache}" # load into cache, and send to stdout
|
||||
}
|
||||
} |
|
||||
grep -E "${d/*./}$" | # optimisation - only include matching TLDs
|
||||
while read suffix
|
||||
do
|
||||
echo "${d}" | grep -qE '[.]'"${suffix}"'$' || continue # if $domain does not end in .$suffix, get next suffix
|
||||
c=$(echo $d | awk -F'.' '{ print NF }')
|
||||
s=$(echo $suffix | awk -F'.' '{ print NF }')
|
||||
i=$((c-s))
|
||||
echo $(echo $d | cut -d . -f $i-100)
|
||||
break # stop processing
|
||||
done
|
||||
}
|
||||
|
||||
#Usage: dns_acmedns_add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
|
||||
# Used to add txt record
|
||||
dns_acmedns_add() {
|
||||
fulldomain=$1
|
||||
i=1
|
||||
while [ -z "$d" ]; do
|
||||
_d=$(printf "%s" "$fulldomain" | cut -d . -f $i-100)
|
||||
c=$(echo $_d | awk -F'.' '{ print NF }')
|
||||
if [[ $c < 4 && ( $(echo $_d | cut -d . -f 2) = "com" || $(echo $_d | cut -d . -f 3) = "" ) ]]; then
|
||||
d=$_d
|
||||
fi
|
||||
i=$(_math "$i" + 1)
|
||||
done
|
||||
h="${d/./_}"
|
||||
d=$(_root_domain $fulldomain)
|
||||
h="${d//./_}"
|
||||
txtvalue=$2
|
||||
_info "Using acme-dns"
|
||||
_debug "fulldomain $fulldomain"
|
||||
|
Loading…
x
Reference in New Issue
Block a user