_info "Adding record"
- _loopia_add_sub_domain "$_domain" "$_sub_domain"
- _loopia_add_record "$_domain" "$_sub_domain" "$txtvalue"
+ if ! _loopia_add_sub_domain "$_domain" "$_sub_domain"; then
+ return 1
+ fi
+ if ! _loopia_add_record "$_domain" "$_sub_domain" "$txtvalue"; then
+ return 1
+ fi
}
<value><string>%s</string></value>
</param>
</params>
- </methodCall>' "$LOOPIA_User" "$LOOPIA_Password" "$_domain" "$_sub_domain")
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password" "$_domain" "$_sub_domain")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
if ! _contains "$response" "OK"; then
- _err "Error could not get txt records"
+ err_response=$(echo "$response" | sed 's/.*<string>\(.*\)<\/string>.*/\1/')
+ _err "Error could not get txt records: $err_response"
return 1
fi
}
return 1
fi
+ if _contains "$LOOPIA_Password" "'" || _contains "$LOOPIA_Password" '"'; then
+ _err "Password contains a quotation mark or double quotation marks and this is not supported by dns_loopia.sh"
+ return 1
+ fi
+
+ Encoded_Password=$(_xml_encode "$LOOPIA_Password")
return 0
}
<value><string>%s</string></value>
</param>
</params>
- </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain")
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password" "$domain" "$sub_domain")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
if ! _contains "$response" "<array>"; then
- _err "Error"
+ err_response=$(echo "$response" | sed 's/.*<string>\(.*\)<\/string>.*/\1/')
+ _err "Error: $err_response"
return 1
fi
return 0
<value><string>%s</string></value>
</param>
</params>
- </methodCall>' $LOOPIA_User $LOOPIA_Password)
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
while true; do
<value><string>%s</string></value>
</param>
<param>
- <struct>
- <member>
- <name>type</name>
- <value><string>TXT</string></value>
- </member>
- <member>
- <name>priority</name>
- <value><int>0</int></value>
- </member>
- <member>
- <name>ttl</name>
- <value><int>60</int></value>
- </member>
- <member>
- <name>rdata</name>
- <value><string>%s</string></value>
- </member>
- </struct>
+ <value>
+ <struct>
+ <member>
+ <name>type</name>
+ <value><string>TXT</string></value>
+ </member>
+ <member>
+ <name>priority</name>
+ <value><int>0</int></value>
+ </member>
+ <member>
+ <name>ttl</name>
+ <value><int>300</int></value>
+ </member>
+ <member>
+ <name>rdata</name>
+ <value><string>%s</string></value>
+ </member>
+ </struct>
+ </value>
</param>
</params>
- </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain" "$txtval")
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password" "$domain" "$sub_domain" "$txtval")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
if ! _contains "$response" "OK"; then
- _err "Error"
+ err_response=$(echo "$response" | sed 's/.*<string>\(.*\)<\/string>.*/\1/')
+ _err "Error: $err_response"
return 1
fi
return 0
<value><string>%s</string></value>
</param>
</params>
- </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain")
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password" "$domain")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
<value><string>%s</string></value>
</param>
</params>
- </methodCall>' $LOOPIA_User $LOOPIA_Password "$domain" "$sub_domain")
+ </methodCall>' "$LOOPIA_User" "$Encoded_Password" "$domain" "$sub_domain")
response="$(_post "$xml_content" "$LOOPIA_Api" "" "POST")"
if ! _contains "$response" "OK"; then
- _err "Error"
+ err_response=$(echo "$response" | sed 's/.*<string>\(.*\)<\/string>.*/\1/')
+ _err "Error: $err_response"
return 1
fi
return 0
}
+
+_xml_encode() {
+ encoded_string=$1
+ encoded_string=$(echo "$encoded_string" | sed 's/&/\&/')
+ encoded_string=$(echo "$encoded_string" | sed 's/</\</')
+ encoded_string=$(echo "$encoded_string" | sed 's/>/\>/')
+ printf "%s" "$encoded_string"
+}