diff options
Diffstat (limited to 'config/ipblocklist/convert.pl')
-rwxr-xr-x | config/ipblocklist/convert.pl | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/config/ipblocklist/convert.pl b/config/ipblocklist/convert.pl index 44b4add2..f3e9db12 100755 --- a/config/ipblocklist/convert.pl +++ b/config/ipblocklist/convert.pl @@ -1,67 +1,67 @@ -#!/usr/bin/perl -w
-use strict;
-
-if($#ARGV != 1) {
- print("Usage: $0 <input file> <output file>\n");
- exit(1);
-}
-
-my ($line,$title,$iprange,$cidr);
-my $i = 30000;
-
-open(INFILE,'<',$ARGV[0]) or die("Could not open input file $ARGV[0]");
-open(OUTFILE,'>>',$ARGV[1]) or die("Could not open output file $ARGV[1]");
-
-foreach $line (<INFILE>) {
- chomp($line);
- $line =~ s/:((\d{1,3}[-\.]*){8})//;
- $iprange = $1;
- print OUTFILE "#$line\n";
- foreach $cidr (split(/\n/,range($iprange))) {
- print OUTFILE "$cidr\n";
- #print OUTFILE "ipfw -q add 1000 drop ip from any to $cidr\n"; (version 0.1.4)
- #$i++;
- #print OUTFILE "ipfw -q add 1001 drop ip from $cidr to any\n"; (version 0.1.4)
- #$i++;
- }
-}
-
-close(INFILE);
-close(OUTFILE);
-
-sub ntoa {
- return join ".",unpack("CCCC",pack("N",shift));
-}
-sub aton {
- return unpack 'N', pack 'C4', split/\./, shift;
-}
-sub deaggregate {
- my $thirtytwobits = 4294967295;
- my $start = shift;
- my $end = shift;
- my $base = $start;
- my ($step,$output);
- while ($base <= $end) {
- $step = 0;
- while (($base | (1 << $step)) != $base) {
- if (($base | (((~0) & $thirtytwobits) >> (31-$step))) > $end) {
- last;
- }
- $step++;
- }
- if($step == 0) {
- $output .= ntoa($base);
- }else{
- $output .= ntoa($base)."/" .(32-$step);
- }
- $output .= "\n";
- $base += 1 << $step;
- }
- return $output;
-}
-sub range {
- my ($address,$address2) = split /-/, shift;
- $address = aton($address);
- $address2 = aton($address2);
- return deaggregate($address,$address2);
-}
\ No newline at end of file +#!/usr/bin/perl -w +use strict; + +if($#ARGV != 1) { + print("Usage: $0 <input file> <output file>\n"); + exit(1); +} + +my ($line,$title,$iprange,$cidr); +my $i = 30000; + +open(INFILE,'<',$ARGV[0]) or die("Could not open input file $ARGV[0]"); +open(OUTFILE,'>>',$ARGV[1]) or die("Could not open output file $ARGV[1]"); + +foreach $line (<INFILE>) { + chomp($line); + $line =~ s/:((\d{1,3}[-\.]*){8})//; + $iprange = $1; + print OUTFILE "#$line\n"; + foreach $cidr (split(/\n/,range($iprange))) { + print OUTFILE "$cidr\n"; + #print OUTFILE "ipfw -q add 1000 drop ip from any to $cidr\n"; (version 0.1.4) + #$i++; + #print OUTFILE "ipfw -q add 1001 drop ip from $cidr to any\n"; (version 0.1.4) + #$i++; + } +} + +close(INFILE); +close(OUTFILE); + +sub ntoa { + return join ".",unpack("CCCC",pack("N",shift)); +} +sub aton { + return unpack 'N', pack 'C4', split/\./, shift; +} +sub deaggregate { + my $thirtytwobits = 4294967295; + my $start = shift; + my $end = shift; + my $base = $start; + my ($step,$output); + while ($base <= $end) { + $step = 0; + while (($base | (1 << $step)) != $base) { + if (($base | (((~0) & $thirtytwobits) >> (31-$step))) > $end) { + last; + } + $step++; + } + if($step == 0) { + $output .= ntoa($base); + }else{ + $output .= ntoa($base)."/" .(32-$step); + } + $output .= "\n"; + $base += 1 << $step; + } + return $output; +} +sub range { + my ($address,$address2) = split /-/, shift; + $address = aton($address); + $address2 = aton($address2); + return deaggregate($address,$address2); +} |