summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdkim/reconfig-dns50
1 files changed, 50 insertions, 0 deletions
diff --git a/dkim/reconfig-dns b/dkim/reconfig-dns
new file mode 100755
index 0000000..6fa0f6d
--- /dev/null
+++ b/dkim/reconfig-dns
@@ -0,0 +1,50 @@
+#!/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 <record 1> <record 2> <selector> [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