mirror of
https://github.com/plantroon/acme.sh.git
synced 2024-11-14 02:11:45 +00:00
fix dns_loopia wildcard certificate
Checks if a subdomain already exists before creating one. The loopia API clears all records for a subdomain when adding it again. Adding TXT-records instead of updating the existing record when using the add method. Wildcard certificates require multiple TXT-records for the same subdomain. Now you can create wildcard certificates using: `acme.sh --issue -d example.com -d '*.example.com' --dns dns_loopia` Double quoting variables
This commit is contained in:
parent
c9baca7910
commit
40f0238bb7
@ -38,8 +38,8 @@ dns_loopia_add() {
|
|||||||
|
|
||||||
_info "Adding record"
|
_info "Adding record"
|
||||||
|
|
||||||
_loopia_add_record "$_domain" "$_sub_domain"
|
_loopia_add_sub_domain "$_domain" "$_sub_domain"
|
||||||
_loopia_update_record "$_domain" "$_sub_domain" "$txtvalue"
|
_loopia_add_record "$_domain" "$_sub_domain" "$txtvalue"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +96,37 @@ dns_loopia_rm() {
|
|||||||
|
|
||||||
#################### Private functions below ##################################
|
#################### Private functions below ##################################
|
||||||
|
|
||||||
|
_loopia_get_records() {
|
||||||
|
domain=$1
|
||||||
|
sub_domain=$2
|
||||||
|
|
||||||
|
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<methodCall>
|
||||||
|
<methodName>getZoneRecords</methodName>
|
||||||
|
<params>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
</params>
|
||||||
|
</methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain")
|
||||||
|
|
||||||
|
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
|
||||||
|
if ! _contains "$response" "<array>"; then
|
||||||
|
_err "Error"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
_get_root() {
|
_get_root() {
|
||||||
domain=$1
|
domain=$1
|
||||||
_debug "get root"
|
_debug "get root"
|
||||||
@ -137,14 +168,14 @@ _get_root() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_loopia_update_record() {
|
_loopia_add_record() {
|
||||||
domain=$1
|
domain=$1
|
||||||
sub_domain=$2
|
sub_domain=$2
|
||||||
txtval=$3
|
txtval=$3
|
||||||
|
|
||||||
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<methodCall>
|
<methodCall>
|
||||||
<methodName>updateZoneRecord</methodName>
|
<methodName>addZoneRecord</methodName>
|
||||||
<params>
|
<params>
|
||||||
<param>
|
<param>
|
||||||
<value><string>%s</string></value>
|
<value><string>%s</string></value>
|
||||||
@ -176,10 +207,6 @@ _loopia_update_record() {
|
|||||||
<name>rdata</name>
|
<name>rdata</name>
|
||||||
<value><string>%s</string></value>
|
<value><string>%s</string></value>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
|
||||||
<name>record_id</name>
|
|
||||||
<value><int>0</int></value>
|
|
||||||
</member>
|
|
||||||
</struct>
|
</struct>
|
||||||
</param>
|
</param>
|
||||||
</params>
|
</params>
|
||||||
@ -194,10 +221,42 @@ _loopia_update_record() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
_loopia_add_record() {
|
_sub_domain_exists() {
|
||||||
domain=$1
|
domain=$1
|
||||||
sub_domain=$2
|
sub_domain=$2
|
||||||
|
|
||||||
|
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<methodCall>
|
||||||
|
<methodName>getSubdomains</methodName>
|
||||||
|
<params>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>%s</string></value>
|
||||||
|
</param>
|
||||||
|
</params>
|
||||||
|
</methodCall>' $LOOPIA_User $LOOPIA_Password "$domain")
|
||||||
|
|
||||||
|
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
|
||||||
|
|
||||||
|
if _contains "$response" "$sub_domain"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
_loopia_add_sub_domain() {
|
||||||
|
domain=$1
|
||||||
|
sub_domain=$2
|
||||||
|
|
||||||
|
if _sub_domain_exists "$domain" "$sub_domain"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
xml_content=$(printf '<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<methodCall>
|
<methodCall>
|
||||||
<methodName>addSubdomain</methodName>
|
<methodName>addSubdomain</methodName>
|
||||||
|
Loading…
Reference in New Issue
Block a user