@@ -254,18 +254,53 @@ clean_rrset() {
254
254
echo ' {"name":"' " ${name} " ' ","type":"TXT","changetype":"DELETE"}'
255
255
}
256
256
257
- main () {
258
- # Main setup
259
- load_config
260
- load_zones
261
- setup
262
- declare -A requests
257
+ soa_edit () {
258
+ # Show help
259
+ if [[ $# -eq 0 ]]; then
260
+ echo " Usage: pdns_api.sh soa_edit <zone> [SOA-EDIT] [SOA-EDIT-API]"
261
+ exit 1
262
+ fi
263
+
264
+ # Get current values for zone
265
+ request " GET" " ${url} /$1 " " "
266
+
267
+ # Set variables
268
+ if [[ $# -le 1 ]]; then
269
+ soa_edit=$( <<< " ${res}" get_json_string_value soa_edit)
270
+ soa_edit_api=$( <<< " ${res}" get_json_string_value soa_edit_api)
271
+
272
+ echo " Current values:"
273
+ else
274
+ soa_edit=" $2 "
275
+ if [[ $# -eq 3 ]]; then
276
+ soa_edit_api=" $3 "
277
+ else
278
+ soa_edit_api=" $2 "
279
+ fi
280
+
281
+ echo " Setting:"
282
+ fi
283
+
284
+ # Display values
285
+ echo " SOA-EDIT: ${soa_edit} "
286
+ echo " SOA-EDIT-API: ${soa_edit_api} "
287
+
288
+ # Update values
289
+ if [[ $# -eq 2 ]]; then
290
+ request " PUT" " ${url} /${1} " ' {
291
+ "soa_edit":"' " ${soa_edit} " ' ",
292
+ "soa_edit_api":"' " ${soa_edit_api} " ' ",
293
+ "kind":"' " $( <<< " ${res}" get_json_string_value kind) " ' "
294
+ }'
295
+ fi
296
+ }
263
297
298
+ main () {
264
299
# Set hook
265
300
hook=" $1 "
266
301
267
302
# Debug output
268
- debug " Hook: ${hook} "
303
+ debug " Hook: ${hook} "
269
304
270
305
# Deployment of a certificate
271
306
if [[ " ${hook} " = " deploy_cert" ]]; then
@@ -277,6 +312,19 @@ main() {
277
312
exit 0
278
313
fi
279
314
315
+ # Main setup
316
+ load_config
317
+ load_zones
318
+ setup
319
+ declare -A requests
320
+
321
+ # Interface for SOA-EDIT
322
+ if [[ " ${hook} " = " soa_edit" ]]; then
323
+ shift
324
+ soa_edit $@
325
+ exit 0
326
+ fi
327
+
280
328
# Loop through arguments per 3
281
329
for (( i= 2 ; i<= $# ; i= i+ 3 )) ; do
282
330
# Setup for this domain
0 commit comments