#!/bin/rc -e user = _nsd rsatxt = $1 edtxt = $2 selector = $3 domain = $4 zonefile = $5 telltale = '; generated by dkim reconfig-dns' fn err { echo $* >[1=2] } fn as { doas -u $user $* } fn record { printf '%s._domainkey\tIN TXT "%s" %s\n' \ $selector `$nl{cat $1} $telltale } if (test $#* -gt 5 || test $#* -lt 3) { err 'usage: reconfig-dns [domain] [zonefile]' exit 2 } if (~ $domain ()) { domain = `hostname } if (~ $zonefile ()) { zonefile = /var/nsd/zones/master/ ^ $domain } as sed -ibkp '/' ^ $telltale ^ '/d' $zonefile { cat $zonefile record $rsatxt record $edtxt } | as tee $zonefile >/dev/null if (!nsd-checkzone $domain $zonefile) { err zone invalid, please manually check $zonefile exit 3 } doas nsd-control reload hhvn.uk