summaryrefslogtreecommitdiff
path: root/frontends/scripts
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-03-18 00:39:51 +0200
committerPaul Buetow <paul@buetow.org>2024-03-18 00:39:51 +0200
commitf60d5a3ef03b2bb9526c1d27d57e60e673cd95d8 (patch)
tree3a265d69b933b8ceb341c3dda0a9cadfcb349953 /frontends/scripts
parenta77f2bf70f1bcc3ec4d08867d280d43504a79673 (diff)
initial dns failover script
Diffstat (limited to 'frontends/scripts')
-rw-r--r--frontends/scripts/dnsfailover.sh.tpl40
1 files changed, 40 insertions, 0 deletions
diff --git a/frontends/scripts/dnsfailover.sh.tpl b/frontends/scripts/dnsfailover.sh.tpl
new file mode 100644
index 0000000..86fa4e8
--- /dev/null
+++ b/frontends/scripts/dnsfailover.sh.tpl
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+ZONES_DIR=/var/nsd/zones/master/
+MASTER_A=master_a
+MASTER_AAAA=master_aaaa
+STANDBY_A=standby_a
+STANDBY_AAAA=standby_aaaa
+
+process_zone () {
+ sed -E '
+ /IN A .*; Enable failover/ {
+ /^mirror/! {
+ s/^(.*) 300 IN A (.*) ; (.*)/\1 300 IN A '$MASTER_A' ; \3/;
+ }
+ /^mirror/ {
+ s/^(.*) 300 IN A (.*) ; (.*)/\1 300 IN A '$STANDBY_A' ; \3/;
+ }
+ }
+ /IN AAAA .*; Enable failover/ {
+ /^mirror/! {
+ s/^(.*) 300 IN AAAA (.*) ; (.*)/\1 300 IN AAAA '$MASTER_AAAA' ; \3/;
+ }
+ /^mirror/ {
+ s/^(.*) 300 IN AAAA (.*) ; (.*)/\1 300 IN AAAA '$STANDBY_AAAA' ; \3/;
+ }
+ }
+ / ; serial/ {
+ s/^( +) ([0-9]+) .*; (.*)/\1 '`date +%s`' ; \3/;
+ }
+ '
+}
+
+failover_zone () {
+ zone=$1
+ cat $zone | process_zone
+}
+
+for zone in $ZONES_DIR/snonux.foo.zone; do
+ failover_zone $zone
+done