diff --git a/Netdisco/Changes b/Netdisco/Changes index 22573345..94f55686 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -1,5 +1,9 @@ 2.027005 - 2014-05-15 + [ENHANCEMENTS] + + * Support offline update of oui.txt and MIBs bundle + [BUG FIXES] * Improve VLAN Inventory performance and show all VLANs (C. Stromsoe) diff --git a/Netdisco/Makefile.PL b/Netdisco/Makefile.PL index b51175a8..4e2e7d6c 100644 --- a/Netdisco/Makefile.PL +++ b/Netdisco/Makefile.PL @@ -20,6 +20,7 @@ requires 'Dancer::Plugin::DBIC' => 0.2001; requires 'Dancer::Plugin::Auth::Extensible' => 0.30; requires 'Dancer::Plugin::Passphrase' => '2.0.1'; requires 'File::ShareDir' => 1.03; +requires 'File::Slurp' => 9999.19; requires 'Guard' => 1.022; requires 'HTML::Parser' => 3.70; requires 'HTTP::Tiny' => 0.029; diff --git a/Netdisco/bin/netdisco-deploy b/Netdisco/bin/netdisco-deploy index 7a6b57c0..bb0f5a7c 100755 --- a/Netdisco/bin/netdisco-deploy +++ b/Netdisco/bin/netdisco-deploy @@ -50,6 +50,7 @@ use Term::ANSIColor; use Archive::Extract; $Archive::Extract::PREFER_BIN = 1; +use File::Slurp (); use HTTP::Tiny; use Digest::MD5; use Try::Tiny; @@ -182,13 +183,20 @@ sub deploy_db { sub deploy_oui { my $schema = schema('netdisco'); $schema->storage->disconnect; - - my $url = 'http://standards.ieee.org/develop/regauth/oui/oui.txt'; - my $resp = HTTP::Tiny->new->get($url); + my @lines = (); my %data = (); - if ($resp->{success}) { - foreach my $line (split /\n/, $resp->{content}) { + if (@ARGV) { + @lines = File::Slurp::read_file($ARGV[0], err_mode => 'quiet'); + } + else { + my $url = 'http://standards.ieee.org/develop/regauth/oui/oui.txt'; + my $resp = HTTP::Tiny->new->get($url); + @lines = split /\n/, $resp->{content}; + } + + if (scalar @lines) { + foreach my $line (@lines) { if ($line =~ m/^\s*(.{2}-.{2}-.{2})\s+\(hex\)\s+(.*)\s*$/i) { my ($oui, $company) = ($1, $2); $oui =~ s/-/:/g; @@ -211,10 +219,15 @@ sub deploy_oui { ]); }); } + + print color 'bold blue'; + say 'OUI update complete.'; + } + else { + print color 'bold red'; + say 'OUI update failed.'; } - print color 'bold blue'; - say 'OUI update complete.'; print color 'reset'; } diff --git a/Netdisco/lib/App/Netdisco.pm b/Netdisco/lib/App/Netdisco.pm index b6d28d9b..e24ff071 100644 --- a/Netdisco/lib/App/Netdisco.pm +++ b/Netdisco/lib/App/Netdisco.pm @@ -212,7 +212,9 @@ take care of all this for you: ~/bin/netdisco-deploy -If this is a new installation of Netdisco 2, answer yes to all questions. +If this is a new installation of Netdisco 2, answer yes to all questions. If +you wish to deploy without Internet access, see the +L documentation. =head1 Startup diff --git a/Netdisco/lib/App/Netdisco/Manual/Deployment.pod b/Netdisco/lib/App/Netdisco/Manual/Deployment.pod index a340ea63..162c39e7 100644 --- a/Netdisco/lib/App/Netdisco/Manual/Deployment.pod +++ b/Netdisco/lib/App/Netdisco/Manual/Deployment.pod @@ -28,6 +28,32 @@ the database service): # TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 md5 +=head1 Deploy without Internet access + +The C script asks for Internet access but it is possible to +install off-line. You should download the following two files: + +=over 4 + +=item * + +http://standards.ieee.org/develop/regauth/oui/oui.txt + +=item * + +http://downloads.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz + +=back + +Run the C script but pass the OUI file name as a parameter on +the command line: + + ~/bin/netdisco-deploy ./oui.txt + +Then answer yes to questions, even though you're not connected to the +Internet. For the MIBs you can simply extract the downloaded archive to the +home directory of Netdisco. + =head1 Relocating the Installation The installation process installs Netdisco self-contained to your home