From f148f22d79a3ed11c502b329a1ab12a5d9969179 Mon Sep 17 00:00:00 2001 From: Sush Date: Wed, 6 Jan 2021 16:20:11 +0100 Subject: [PATCH] Update dns_duckdns.sh _duckdns_get_domain: Adjusted sed-command to accept wildcard-domains and sub-sub-domains. Now - *.DOMAIN.duckdns.org - *.sub1.sub2.DOMAIN.duckdns.org - sub1.sub2.DOMAIN.duckdns.org will yield DOMAIN. this includes the versions preceeded by "_acme-challenge." Tested for quite some examples to an extend that I'm quite confident, that this should work under most circumstances. But you never know... --- dnsapi/dns_duckdns.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dnsapi/dns_duckdns.sh b/dnsapi/dns_duckdns.sh index f0af2741..5c40ba03 100755 --- a/dnsapi/dns_duckdns.sh +++ b/dnsapi/dns_duckdns.sh @@ -91,12 +91,13 @@ dns_duckdns_rm() { #################### Private functions below ################################## -# fulldomain may be 'domain.duckdns.org' (if using --domain-alias) or '_acme-challenge.domain.duckdns.org' +# fulldomain may be 'subdomain.domain.duckdns.org' (if using --domain-alias) or '_acme-challenge.subdomain.domain.duckdns.org', +# also excepts wildcard-domains. # either way, return 'domain'. (duckdns does not allow further subdomains and restricts domains to [a-z0-9-].) _duckdns_get_domain() { # We'll extract the domain/username from full domain - _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/')" + _duckdns_domain="$(printf "%s" "$fulldomain" | _lower_case | _egrep_o '^(_acme-challenge\.)?(*.)?([a-z0-9-]+\.)*[a-z0-9-]+\.duckdns\.org$' | sed 's/^\(_acme-challenge\.\)\?\(*\.\)\?\([a-z0-9-]\+\.\)*\([a-z0-9-]\+\)\.duckdns\.org$/\4/')" if [ -z "$_duckdns_domain" ]; then _err "Error extracting the domain."