diff --git a/dnsapi/dns_namecheap.sh b/dnsapi/dns_namecheap.sh
index 73ed8650..0bf49e5f 100755
--- a/dnsapi/dns_namecheap.sh
+++ b/dnsapi/dns_namecheap.sh
@@ -129,7 +129,7 @@ _namecheap_set_publicip() {
_publicip="$ip"
elif [ -n "$addr" ]; then
_publicip=$(_get "$addr")
- else
+ else
_err "No Source IP specified for Namecheap API."
_err "Use your public ip address or an url to retrieve it (e.g. https://ipconfig.co/ip) and export it as NAMECHEAP_SOURCEIP"
return 1
@@ -162,12 +162,12 @@ _namecheap_parse_host() {
_host=$1
_debug _host "$_host"
- _hostid=$(echo "$_host" | _egrep_o 'HostId=".*"' | cut -d '"' -f 2)
- _hostname=$(echo "$_host" | _egrep_o 'Name=".*"' | cut -d '"' -f 2)
- _hosttype=$(echo "$_host" | _egrep_o 'Type=".*"' | cut -d '"' -f 2)
- _hostaddress=$(echo "$_host" | _egrep_o 'Address=".*"' | cut -d '"' -f 2)
- _hostmxpref=$(echo "$_host" | _egrep_o 'MXPref=".*"' | cut -d '"' -f 2)
- _hostttl=$(echo "$_host" | _egrep_o 'TTL=".*"' | cut -d '"' -f 2)
+ _hostid=$(echo "$_host" | _egrep_o '\sHostId="[^"]*' | cut -d '"' -f 2)
+ _hostname=$(echo "$_host" | _egrep_o '\sName="[^"]*' | cut -d '"' -f 2)
+ _hosttype=$(echo "$_host" | _egrep_o '\sType="[^"]*' | cut -d '"' -f 2)
+ _hostaddress=$(echo "$_host" | _egrep_o '\sAddress="[^"]*' | cut -d '"' -f 2)
+ _hostmxpref=$(echo "$_host" | _egrep_o '\sMXPref="[^"]*' | cut -d '"' -f 2)
+ _hostttl=$(echo "$_host" | _egrep_o '\sTTL="[^"]*' | cut -d '"' -f 2)
_debug hostid "$_hostid"
_debug hostname "$_hostname"
@@ -210,7 +210,7 @@ _set_namecheap_TXT() {
return 1
fi
- hosts=$(echo "$response" | _egrep_o '')
+ hosts=$(echo "$response" | _egrep_o ']*')
_debug hosts "$hosts"
if [ -z "$hosts" ]; then
@@ -219,29 +219,72 @@ _set_namecheap_TXT() {
fi
_namecheap_reset_hostList
- found=0
while read -r host; do
-
if _contains "$host" "]*')
+ _debug hosts "$hosts"
+
+ if [ -z "$hosts" ]; then
+ _error "Hosts not found"
+ return 1
+ fi
+
+ _namecheap_reset_hostList
+
+ found=0
- if [ "$_hosttype" = "TXT" ] && [ "$_hostname" = "$subdomain" ]; then
- _namecheap_add_host "$_hostname" "$_hosttype" "$txt" "$_hostmxpref" "$_hostttl"
- found=1
+ while read -r host; do
+ if _contains "$host" "