Skip to content

Commit d9a2f48

Browse files
dnsapi/dns_opnsense.sh: Refresh for OPNsense v25.7 series
Updates the dns_opnsense.sh Bourne shell script for OPNSense v25.7 series: 1. Fixes historical error in rm_record() [used incorrect response variable] 2. Improves debug messaging in rm_record() 3. Fixes _get_root() for change in OPNsense API * Response is now split into pseudo-rows * We now iterate through pseudo-rows for matching domainname field 4. Fixes _existingchallenge() for change in OPNsense API * Fixes unreliable regex for uuid * Adds domain regex and %domain field 5. Fixes historical error in _existingchallenge() [incorrect variable syntax] Resolves #6467 Signed-off-by: benyamin-codez <115509179+benyamin-codez@users.noreply.github.com>
1 parent c4d228a commit d9a2f48

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

dnsapi/dns_opnsense.sh

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,16 @@ rm_record() {
110110
if _existingchallenge "$_domain" "$_host" "$new_challenge"; then
111111
# Delete
112112
if _opns_rest "POST" "/record/delRecord/${_uuid}" "\{\}"; then
113-
if echo "$_return_str" | _egrep_o "\"result\":\"deleted\"" >/dev/null; then
114-
_opns_rest "POST" "/service/reconfigure" "{}"
113+
if echo "$response" | _egrep_o "\"result\":\"deleted\"" >/dev/null; then
115114
_debug "Record deleted"
115+
_opns_rest "POST" "/service/reconfigure" "{}"
116+
_debug "Service reconfigured"
116117
else
117118
_err "Error deleting record $_host from domain $fulldomain"
118119
return 1
119120
fi
120121
else
121-
_err "Error deleting record $_host from domain $fulldomain"
122+
_err "Error requesting deletion of record $_host from domain $fulldomain"
122123
return 1
123124
fi
124125
else
@@ -150,14 +151,17 @@ _get_root() {
150151
return 1
151152
fi
152153
_debug h "$h"
153-
id=$(echo "$_domain_response" | _egrep_o "\"uuid\":\"[a-z0-9\-]*\",\"enabled\":\"1\",\"type\":\"primary\",\"domainname\":\"${h}\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
154-
if [ -n "$id" ]; then
155-
_debug id "$id"
156-
_host=$(printf "%s" "$domain" | cut -d . -f 1-"$p")
157-
_domain="${h}"
158-
_domainid="${id}"
159-
return 0
160-
fi
154+
lines=$(echo "$_domain_response" | sed 's/{/\n/g')
155+
for line in $lines; do
156+
id=$(echo "$line" | _egrep_o "\"uuid\":\"[a-z0-9\-]*\",\"enabled\":\"1\",\"type\":\"primary\",.*\"domainname\":\"${h}\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
157+
if [ -n "$id" ]; then
158+
_debug id "$id"
159+
_host=$(printf "%s" "$domain" | cut -d . -f 1-"$p")
160+
_domain="${h}"
161+
_domainid="${id}"
162+
return 0
163+
fi
164+
done
161165
p=$i
162166
i=$(_math "$i" + 1)
163167
done
@@ -206,13 +210,13 @@ _existingchallenge() {
206210
return 1
207211
fi
208212
_uuid=""
209-
_uuid=$(echo "$_record_response" | _egrep_o "\"uuid\":\"[^\"]*\",\"enabled\":\"[01]\",\"domain\":\"$1\",\"name\":\"$2\",\"type\":\"TXT\",\"value\":\"$3\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
213+
_uuid=$(echo "$_record_response" | _egrep_o "\"uuid\":\"[a-z0-9\-]*\",\"enabled\":\"[01]\",\"domain\":\"[a-z0-9\-]*\",\"%domain\":\"$1\",\"name\":\"$2\",\"type\":\"TXT\",\"value\":\"$3\"" | cut -d ':' -f 2 | cut -d '"' -f 2)
210214

211215
if [ -n "$_uuid" ]; then
212216
_debug uuid "$_uuid"
213217
return 0
214218
fi
215-
_debug "${2}.$1{1} record not found"
219+
_debug "${2}.${1} record not found"
216220

217221
return 1
218222
}

0 commit comments

Comments
 (0)