summaryrefslogtreecommitdiffstats
path: root/gen_canned.sh
diff options
context:
space:
mode:
Diffstat (limited to 'gen_canned.sh')
-rwxr-xr-xgen_canned.sh122
1 files changed, 122 insertions, 0 deletions
diff --git a/gen_canned.sh b/gen_canned.sh
new file mode 100755
index 0000000..2d30518
--- /dev/null
+++ b/gen_canned.sh
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# testzone
+DOMAIN=ede.dn5.dk.
+SERIAL=2025041804
+
+gen_ede_zone(){
+ local seq="$1"
+ local tmpl="templates/$2"
+ local zonefmt="$3"
+ local zoneparam="$4"
+ local ede_code="$5"
+ local extra_text="$6"
+ local zone="$(printf "$zonefmt" "$zoneparam")"
+ local out="canned/${seq}_${zone}toml"
+ cat "$tmpl" |
+ sed -e "s/{qname}/$zone/g" |
+ sed -e "s/{ede_code}/$ede_code/g" |
+ sed -e "s/{ede_extra}/$extra_text/g" \
+ > "$out"
+}
+
+gen_ede_zones(){
+ local offset="$1"
+ local tmpl="$2"
+ local zonefmt="$3"
+
+ gen_ede(){
+ local ede_code="$1"
+ local long_name="$2"
+ local extra_text="$3"
+
+ gen_ede_zone "$(( offset + ede_code ))" \
+ "$tmpl" "$zonefmt" "$ede_code" \
+ "$ede_code" "$extra_text"
+ gen_ede_zone "$(( offset + 500 + ede_code ))" \
+ "$tmpl" "$zonefmt" "$long_name" \
+ "$ede_code" "$extra_text"
+ }
+
+ gen_ede 0 other-error 'Other Error aka. user error'
+ gen_ede 1 unsupp-dnskey-algo 'Try a simpler algorithm'
+ gen_ede 2 unsupp-ds-digest-type 'Try using another one'
+ gen_ede 3 stale 'Zombie reply 🧟'
+ gen_ede 4 forged 'Cloned reply'
+ gen_ede 5 dnssec-indeterminate 'maybe secure'
+ gen_ede 6 dnssec-bogus 'probably not secure'
+ gen_ede 7 sig-expired 'signature expired 🥀'
+ gen_ede 8 sig-in-future \
+ '1st rule of time machines: Sharing is caring'
+ gen_ede 9 dnskey-missing 'DNSKEY missing'
+ gen_ede 10 rrsig-missing 'RRSIG missing'
+ gen_ede 11 no-zone-key-bit 'Where did the zone key bit go?'
+ gen_ede 12 nsec-missing 'No NSEC?'
+ gen_ede 13 cached-error 'AFAIR 🤞'
+ gen_ede 14 not-ready '💤'
+ gen_ede 15 blocked '🚧 Blocked 🚧'
+ gen_ede 16 censored '⛔ Censored ⛔'
+ gen_ede 17 filtered '☂ Filtered ☂'
+ gen_ede 18 prohibited \
+ '🚫 You have requested a prohibited domain! 🚫'
+ gen_ede 19 stale-nxdomain 'AFAIR 🤞'
+ gen_ede 20 not-auth 'Not authoritative for this domain'
+ gen_ede 21 not-supp 'Unsupported ✋'
+ gen_ede 22 auth-ns-out-for-lunch 'TODO ✋'
+ gen_ede 23 network-error '🔥🔥🔥'
+ gen_ede 24 invalid-data 'Invalid data'
+ gen_ede 25 sig-reversed-time \
+ 'Please reverse the flow of time before use.'
+ gen_ede 26 too-early "Let's do a 🤝 first"
+ gen_ede 27 unsupp-nsec3-iter 'Try using another iterator'
+ gen_ede 28 bad-proxy-policy \
+ "🛑 This service hasn't been vetted! 🛑"
+ gen_ede 29 synthesized 'This query is a part of the conspiracy'
+ gen_ede 30 invalid-query-type "You can't query this kind of RRs"
+}
+
+copy_can(){
+ local file="$1"
+ cp "static/$file" "canned/$file"
+}
+
+find_all_zones(){
+ grep -h '^QName' canned/*.toml | cut -d'"' -f2 | sort | uniq
+}
+
+gen_nodata(){
+ local all_zones="$(find_all_zones)"
+ local i=9000
+ for zone in $all_zones; do
+ cat templates/nodata.toml |
+ sed -e "s/{qname}/$zone/g" \
+ > canned/${i}_nodata.toml
+ i=$((i + 1))
+ done
+}
+
+canned_replace(){
+ local needle="$1"
+ local replacement="$2"
+
+ grep -l -R -F "$needle" canned/ |
+ xargs -r -- sed -i -e "s/$needle/$replacement/g"
+}
+
+generate_files(){
+ rm -rf canned/
+ mkdir canned/
+ cp static/* canned/
+ gen_ede_zones 1000 ede-nx.toml "%s.nx.$DOMAIN"
+ gen_ede_zones 2000 ede-cname.toml "%s.cname.$DOMAIN"
+ gen_ede_zones 3000 ede-addr-a.toml "%s.addr.$DOMAIN"
+ gen_ede_zones 4000 ede-addr-aaaa.toml "%s.addr.$DOMAIN"
+ gen_nodata
+ canned_replace '{serial}' "$SERIAL"
+}
+
+main(){
+ generate_files
+}
+
+main "$@"