#!/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 { } 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 printf '%s._domainkey\tIN TXT "%s" %s\n' \ $selector `$nl{cat $rsatxt} $telltale record $edtxt printf '%s._domainkey\tIN TXT "%s" %s\n' \ ed$selector `$nl{cat $edtxt} $telltale } | 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