1 | #!/usr/bin/perl
|
---|
2 | # Import data from old IPDB to new DB
|
---|
3 | # Started 06/29/04 kdeugau@vianet
|
---|
4 |
|
---|
5 | #use warnings;
|
---|
6 | #use CGI::Carp qw/fatalsToBrowser/;
|
---|
7 | use DBI;
|
---|
8 | #use DBD::Pg;
|
---|
9 | #use CommonWeb qw/:ALL/;
|
---|
10 | #use POSIX qw/ceil/;
|
---|
11 | use NetAddr::IP;
|
---|
12 |
|
---|
13 | #use strict;
|
---|
14 |
|
---|
15 | $null = new NetAddr::IP "255.255.255.255/32";
|
---|
16 |
|
---|
17 | # Hardcode the masters because it's too messy and slow to
|
---|
18 | # snag them programmatically *EVERY TIME*
|
---|
19 | @masters = ((new NetAddr::IP "66.186.64.0/19"),
|
---|
20 | (new NetAddr::IP "204.138.172.0/24"),
|
---|
21 | (new NetAddr::IP "204.187.88.0/23"),
|
---|
22 | (new NetAddr::IP "205.207.184.0/23"),
|
---|
23 | (new NetAddr::IP "206.130.64.0/24"),
|
---|
24 | (new NetAddr::IP "209.91.128.0/18"),
|
---|
25 | (new NetAddr::IP "10.0.0.0/8"),
|
---|
26 | (new NetAddr::IP "192.168.0.0/16"),
|
---|
27 | );
|
---|
28 |
|
---|
29 | # First step: Slurp up data to find "master" blocks
|
---|
30 | my $DSN = "DBI:mysql:ipdb";
|
---|
31 | my $user = 'root';
|
---|
32 | my $pw = '';
|
---|
33 | $dbh = DBI->connect($DSN, $user, $pw) || return undef if(!$dbh);
|
---|
34 |
|
---|
35 | $newdbh = DBI->connect("DBI:Pg:dbname=ipdb", "ipdb", "");
|
---|
36 |
|
---|
37 | $i=0;
|
---|
38 | $sth = $dbh->prepare("select * from blocks where netmask !='/32' and netmask !='/31'");
|
---|
39 | $sth->execute;
|
---|
40 | CIDR: while (@data = $sth->fetchrow_array) {
|
---|
41 | # data contains ipclass,netmask,subnet,city,custid,name,swip,description,notes
|
---|
42 | $cidr = new NetAddr::IP "$data[0].$data[2]$data[1]";
|
---|
43 | $sth2 = $newdbh->prepare("select count(*) from allocations where cidr='$cidr'");
|
---|
44 | $sth2->execute;
|
---|
45 | if ($sth2->err) { print "err on $cidr ($data[4], $data[5]): ".$sth2->errstr."\n"; }
|
---|
46 | @data = $sth2->fetchrow_array;
|
---|
47 | if ($data[0] ne '1') {
|
---|
48 | print "$cidr not found in allocations";
|
---|
49 | $sth2 = $newdbh->prepare("select count(*) from freeblocks where cidr='$cidr'");
|
---|
50 | $sth2->execute;
|
---|
51 | @data = $sth2->fetchrow_array;
|
---|
52 | if ($data[0] eq '1') {
|
---|
53 | print "\t...but found in freeblocks.\n";
|
---|
54 | } else {
|
---|
55 | print "\t...and not found in freeblocks.\n";
|
---|
56 | }
|
---|
57 | }
|
---|
58 | $i++;
|
---|
59 | }
|
---|