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: "spamhaus-drop.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