| 1 | ### -*-makefile-*- |
| 2 | |
| 3 | BASE = distorted.org.uk |
| 4 | ZONE = dnserr.$(BASE) |
| 5 | |
| 6 | KEYGEN = dnssec-keygen -aRSASHA256 -b1024 -r/dev/urandom -Kkey/ |
| 7 | SIGNZONE = dnssec-signzone -S -Kkey/ -dds/ |
| 8 | SIGVALID = -s20000101000000 -e20300101000000 |
| 9 | SIGOLD = -s20000101000000 -e20010101000000 |
| 10 | |
| 11 | all: |
| 12 | |
| 13 | DUMMY = refused wrong-ds |
| 14 | DUMMYZONES = $(addsuffix .zone,$(DUMMY)) |
| 15 | TARGETS += $(DUMMYZONES) |
| 16 | $(DUMMYZONES): %.zone: utils.m4 dummy.in |
| 17 | m4 -P -DBASE=$(BASE) >$@.new utils.m4 dummy.in |
| 18 | mv $@.new $@ |
| 19 | |
| 20 | TARGETS += dnserr.zone |
| 21 | dnserr.zone: utils.m4 config.m4 dnserr.in |
| 22 | m4 -P -DBASE=$(BASE) >$@.new utils.m4 dnserr.in |
| 23 | mv $@.new $@ |
| 24 | |
| 25 | KEYSTAMP = $(patsubst %,key/%.stamp, \ |
| 26 | $(ZONE) \ |
| 27 | $(addsuffix .$(ZONE),$(DUMMY))) |
| 28 | $(KEYSTAMP): key/%.stamp: |
| 29 | mkdir -p key |
| 30 | $(KEYGEN) -fKSK $* |
| 31 | $(KEYGEN) $* |
| 32 | touch $@ |
| 33 | all: $(KEYSTAMP) |
| 34 | realclean::; rm -rf key/ |
| 35 | |
| 36 | DUMMYSIG = $(addsuffix .zone.sig,$(DUMMY)) |
| 37 | TARGETS += $(DUMMYSIG) |
| 38 | $(DUMMYSIG): %.zone.sig: %.zone |
| 39 | wrong-ds.zone.sig: wrong-ds.zone key/wrong-ds.$(ZONE).stamp |
| 40 | mkdir -p ds/ |
| 41 | $(SIGNZONE) $(SIGVALID) -owrong-ds.$(ZONE) -f$@ $< |
| 42 | clean::; rm -rf ds/ |
| 43 | |
| 44 | TARGETS += dnserr.zone.signew |
| 45 | dnserr.zone.signew: dnserr.zone key/$(ZONE).stamp |
| 46 | $(SIGNZONE) $(SIGVALID) -o$(ZONE) -f$@.bind $< |
| 47 | ldns-read-zone $@.bind >$@.new |
| 48 | rm $@.bind |
| 49 | mv $@.new $@ |
| 50 | |
| 51 | TARGETS += dnserr.zone.sigold |
| 52 | dnserr.zone.sigold: dnserr.zone key/$(ZONE).stamp |
| 53 | $(SIGNZONE) $(SIGOLD) -P -o$(ZONE) -f$@.bind $< |
| 54 | ldns-read-zone $@.bind >$@.new |
| 55 | rm $@.bind |
| 56 | mv $@.new $@ |
| 57 | |
| 58 | TARGETS += dnserr.zone.sig |
| 59 | OLDSIGMATCH = $$1 == "expired-rrsig.$(ZONE)." && \ |
| 60 | $$4 == "RRSIG" && $$5 == "A" |
| 61 | BADSIGMATCH = $$1 == "invalid-rrsig.$(ZONE)." && \ |
| 62 | $$4 == "RRSIG" && $$5 == "A" |
| 63 | CLEAN += t.oldsig |
| 64 | dnserr.zone.sig: dnserr.zone.sigold dnserr.zone.signew |
| 65 | awk '$(OLDSIGMATCH) { print; }' \ |
| 66 | dnserr.zone.sigold >t.oldsig |
| 67 | awk '$(OLDSIGMATCH) { system("cat t.oldsig"); next; } \ |
| 68 | { gsub(/invalid-rrsigx/, "invalid-rrsig"); print; }' \ |
| 69 | dnserr.zone.signew >$@.new |
| 70 | rm t.oldsig |
| 71 | mv $@.new $@ |
| 72 | |
| 73 | CLEAN += $(TARGETS) |
| 74 | all: $(TARGETS) |
| 75 | .PHONY: all |
| 76 | |
| 77 | clean::; rm -f $(CLEAN) |
| 78 | realclean:: clean; rm -f $(REALCLEAN) |
| 79 | .PHONY: clean realclean |