#!/usr/bin/perl -w
# quick and dirty importer for the IEEE oui.txt file
# Hessel Schut, hessel@sigint.cc, 2010-08-07

use strict;
use LWP;

use DBI;
use DBD::SQLite;

use constant dbpath => "/var/lib/sqlite/db/oui.sqlite";
my ($dbh, $query);

$dbh = DBI->connect("dbi:SQLite:dbname=".dbpath,"","");
die "Can't connect to database: $!\n" unless defined $dbh;

my $ua = LWP::UserAgent->new;
$ua->agent('OUI::Update/0.1b; isquared.nl ');
my $ieee_req = HTTP::Request->new(GET => 'http://standards.ieee.org/regauth/oui/oui.txt');
my $ieee_ouitxt = $ua->request($ieee_req);

if ( ! $ieee_ouitxt->is_success ) {
	die $ieee_ouitxt->status_line;
};

my ($oui, $mfg);
for (split /^/, $ieee_ouitxt->content) {
	chomp;
	if (	m/
			([[:xdigit:]]{2})-
			([[:xdigit:]]{2})-
			([[:xdigit:]]{2})
			\s+\(hex\)\s+(.+)
		/x
	) {
		$oui = "$1:$2:$3";
		$mfg = $4;

		print "OUI: $oui \n";
		print "MFG: $mfg \n";

                $query = $dbh->prepare( q{
			INSERT OR REPLACE INTO mfg (oui, mfgname)
				VALUES (?,?);
                } );
                $query->execute($oui, $mfg);
	};
}

$dbh->disconnect;

