1#!/usr/bin/perl 2 3# usage: curl --silent https://www.spamhaus.org/drop/drop.txt | $0 > /path/to/spamhaus-drop.rpz.local 4# 5# unbound.conf: 6# rpz: 7# name: "drop.spamhaus.org.rpz.local." 8# zonefile: "/path/tp/spamhaus-drop.rpz.local" 9# rpz-log: yes 10# rpz-log-name: "spamhaus-drop" 11# 12 13use strict; 14use vars qw{$o1 $o2 $o3 $o4 $m}; 15 16# trailing dots required 17my $origin = 'drop.spamhaus.org.rpz.local.'; 18my $mname = 'localhost.'; 19my $rname = 'root.localhost.'; 20my $ns = $mname; 21 22my $rpz_action = '.'; # return NXDOMAIN 23#my $rpz_action = '*.'; # return NODATA 24#my $rpz_action = 'rpz-drop.'; # drop the query 25 26print "$origin SOA $mname $rname 1 43200 7200 2419200 3600\n"; 27print "$origin NS $ns\n"; 28while(<>) { 29 if(($o1, $o2, $o3, $o4, $m) = m{(\d+)\.(\d+)\.(\d+)\.(\d+)/(\d+)}) { 30 print "$m.$o4.$o3.$o2.$o1.rpz-ip.$origin CNAME $rpz_action\n"; 31 } else { 32 print "$_"; 33 } 34} 35 36# add a testpoint: ask for "dns.google" 37# print "32.8.8.8.8.rpz-ip.$origin CNAME $rpz_action\n"; 38 39exit; 40