### -*-makefile-*- BASE = distorted.org.uk ZONE = dnserr.$(BASE) KEYGEN = dnssec-keygen -aRSASHA256 -b1024 -r/dev/urandom -Kkey/ SIGNZONE = dnssec-signzone -S -Kkey/ -dds/ SIGVALID = -s20000101000000 -e20300101000000 SIGOLD = -s20000101000000 -e20010101000000 all: DUMMY = refused wrong-ds DUMMYZONES = $(addsuffix .zone,$(DUMMY)) TARGETS += $(DUMMYZONES) $(DUMMYZONES): %.zone: utils.m4 dummy.in m4 -P -DBASE=$(BASE) >$@.new utils.m4 dummy.in mv $@.new $@ TARGETS += dnserr.zone dnserr.zone: utils.m4 config.m4 dnserr.in m4 -P -DBASE=$(BASE) >$@.new utils.m4 dnserr.in mv $@.new $@ KEYSTAMP = $(patsubst %,key/%.stamp, \ $(ZONE) \ $(addsuffix .$(ZONE),$(DUMMY))) $(KEYSTAMP): key/%.stamp: mkdir -p key $(KEYGEN) -fKSK $* $(KEYGEN) $* touch $@ all: $(KEYSTAMP) realclean::; rm -rf key/ DUMMYSIG = $(addsuffix .zone.sig,$(DUMMY)) TARGETS += $(DUMMYSIG) $(DUMMYSIG): %.zone.sig: %.zone wrong-ds.zone.sig: wrong-ds.zone key/wrong-ds.$(ZONE).stamp mkdir -p ds/ $(SIGNZONE) $(SIGVALID) -owrong-ds.$(ZONE) -f$@ $< clean::; rm -rf ds/ TARGETS += dnserr.zone.signew dnserr.zone.signew: dnserr.zone key/$(ZONE).stamp $(SIGNZONE) $(SIGVALID) -o$(ZONE) -f$@.bind $< ldns-read-zone $@.bind >$@.new rm $@.bind mv $@.new $@ TARGETS += dnserr.zone.sigold dnserr.zone.sigold: dnserr.zone key/$(ZONE).stamp $(SIGNZONE) $(SIGOLD) -P -o$(ZONE) -f$@.bind $< ldns-read-zone $@.bind >$@.new rm $@.bind mv $@.new $@ TARGETS += dnserr.zone.sig OLDSIGMATCH = $$1 == "expired-rrsig.$(ZONE)." && \ $$4 == "RRSIG" && ($$5 == "A" || $$5 == "AAAA") BADSIGMATCH = $$1 == "invalid-rrsig.$(ZONE)." && \ $$4 == "RRSIG" && ($$5 == "A" || $$5 == "AAAA") CLEAN += t.oldsig dnserr.zone.sig: dnserr.zone.sigold dnserr.zone.signew awk '$(OLDSIGMATCH) { print; }' \ dnserr.zone.sigold >t.oldsig awk '$(OLDSIGMATCH) { \ if (!doneoldsig) { system("cat t.oldsig"); doneoldsig = 1; } \ next; \ } \ $(BADSIGMATCH) { \ s = $$13; \ for (i = length(s)/2; i >= 0; i--) { \ c = substr(s, i, 1); \ if (c != tolower(c)) { c = tolower(c); break; } \ else if (c != toupper(c)) { c = toupper(c); break; } \ } \ $$13 = substr(s, 0, i) c substr(s, i + 1); \ } \ { print; }' \ dnserr.zone.signew >$@.new rm t.oldsig mv $@.new $@ CLEAN += $(TARGETS) all: $(TARGETS) .PHONY: all clean::; rm -f $(CLEAN) realclean:: clean; rm -f $(REALCLEAN) .PHONY: clean realclean