source: trunk/cgi-bin/IPDB.pm@ 4

Last change on this file since 4 was 4, checked in by Kris Deugau, 19 years ago

Import "new" IPDB development:

March 2004 through end of August 2004

Changes include:

-> Entirely new method of allocating IP space; which should

hopefully reduce the amount of messiness in allocations.

-> IP address processing provided by NetAddr::IP rather than

homebrew code

-> Change DB to PostgreSQL to eliminate some of the problems

caused by using MySQL, and to gain native RDBMS support for
IP addresses.

-> Using NetAddr::IP and Postgres allows (eventually, with

PG >= 7.4) IPV6 without any code changes. In theory.

-> Logging so that if someone makes a change that turns out

to have been wrong for some reason, Blame Can Be Assigned.

-> General code cleanups (split IPDB.pm from CommonWeb.pm,

for instance)

File size: 1.6 KB
Line 
1# IPDB.pm
2# Contains DB-related functions for IPDB
3# Split from CommonWeb.pm 08/13/2004 kdeugau@vianet
4
5package IPDB;
6
7use strict;
8use warnings;
9use Exporter;
10use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
11
12$VERSION = 1.0;
13@ISA = qw(Exporter);
14@EXPORT_OK = qw(&connectDB &checkDBSanity);
15
16@EXPORT = (); # Export nothing by default.
17%EXPORT_TAGS = ( ALL => [qw( &connectDB &checkDBSanity )]
18 );
19
20# Creates connection to IPDB.
21# Default is a PostgreSQL db; could be any DBMS with the
22# right changes. MySQL in comments. Note that some DBMS's don't
23# support transactions, this is a Bad Thing!
24# Returns a handle to the db.
25sub connectDB {
26 my $dbh;
27 my $DSN = "DBI:Pg:dbname=ipdb";
28 my $user = 'ipdb';
29 my $pw = 'ipdbpwd';
30
31# Note that we want to autocommit by default, and we will turn it off locally as necessary.
32 $dbh = DBI->connect($DSN, $user, $pw, { AutoCommit => 1 } )
33 or return undef if(!$dbh);
34
35 return $dbh;
36} # end connectDB
37
38# Quick check to see if the db is responding. A full integrity
39# check will have to be a separate tool to walk the IP allocation trees.
40sub checkDBSanity {
41 my $dbh = connectDB();
42
43 if (!$dbh) {
44 printError("Cannot connect to the database");
45 } else {
46 # it connects, try a stmt.
47 my $sth = $dbh->prepare('select cidr from masterblocks');
48 my $err = $sth->execute();
49
50 if ($sth->fetchrow()) {
51 # all is well.
52 return 1;
53 } else {
54 printHeader('');
55 printError("Connected to the database, but could not execute test statement sth->errstr()");
56 }
57 }
58 # Clean up after ourselves.
59 $dbh->disconnect;
60} # end checkDBSanity
61
62# Indicates module loaded OK. Required by Perl.
631;
Note: See TracBrowser for help on using the repository browser.