Merge branch 'master' into og-pluggable-daemon
This commit is contained in:
@@ -1,3 +1,14 @@
|
|||||||
|
2.027005 - 2014-05-15
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* Support offline update of oui.txt and MIBs bundle
|
||||||
|
* Support Dancer::Debug at runtime with DANCER_DEBUG=1 env var
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* Improve VLAN Inventory performance and show all VLANs (C. Stromsoe)
|
||||||
|
|
||||||
2.027004 - 2014-05-15
|
2.027004 - 2014-05-15
|
||||||
|
|
||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ requires 'Dancer::Plugin::DBIC' => 0.2001;
|
|||||||
requires 'Dancer::Plugin::Auth::Extensible' => 0.30;
|
requires 'Dancer::Plugin::Auth::Extensible' => 0.30;
|
||||||
requires 'Dancer::Plugin::Passphrase' => '2.0.1';
|
requires 'Dancer::Plugin::Passphrase' => '2.0.1';
|
||||||
requires 'File::ShareDir' => 1.03;
|
requires 'File::ShareDir' => 1.03;
|
||||||
|
requires 'File::Slurp' => 9999.19;
|
||||||
requires 'Guard' => 1.022;
|
requires 'Guard' => 1.022;
|
||||||
requires 'HTML::Parser' => 3.70;
|
requires 'HTML::Parser' => 3.70;
|
||||||
requires 'HTTP::Tiny' => 0.029;
|
requires 'HTTP::Tiny' => 0.029;
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ use Term::ANSIColor;
|
|||||||
|
|
||||||
use Archive::Extract;
|
use Archive::Extract;
|
||||||
$Archive::Extract::PREFER_BIN = 1;
|
$Archive::Extract::PREFER_BIN = 1;
|
||||||
|
use File::Slurp ();
|
||||||
use HTTP::Tiny;
|
use HTTP::Tiny;
|
||||||
use Digest::MD5;
|
use Digest::MD5;
|
||||||
use Try::Tiny;
|
use Try::Tiny;
|
||||||
@@ -182,13 +183,20 @@ sub deploy_db {
|
|||||||
sub deploy_oui {
|
sub deploy_oui {
|
||||||
my $schema = schema('netdisco');
|
my $schema = schema('netdisco');
|
||||||
$schema->storage->disconnect;
|
$schema->storage->disconnect;
|
||||||
|
my @lines = ();
|
||||||
my $url = 'http://standards.ieee.org/develop/regauth/oui/oui.txt';
|
|
||||||
my $resp = HTTP::Tiny->new->get($url);
|
|
||||||
my %data = ();
|
my %data = ();
|
||||||
|
|
||||||
if ($resp->{success}) {
|
if (@ARGV) {
|
||||||
foreach my $line (split /\n/, $resp->{content}) {
|
@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) {
|
if ($line =~ m/^\s*(.{2}-.{2}-.{2})\s+\(hex\)\s+(.*)\s*$/i) {
|
||||||
my ($oui, $company) = ($1, $2);
|
my ($oui, $company) = ($1, $2);
|
||||||
$oui =~ s/-/:/g;
|
$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';
|
print color 'reset';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,13 @@ set plack_middlewares => [
|
|||||||
pass_through => 1,
|
pass_through => 1,
|
||||||
)],
|
)],
|
||||||
# install Dancer::Debug for this...
|
# install Dancer::Debug for this...
|
||||||
#[ Debug => (
|
(
|
||||||
# panels => [qw/Dancer::Settings Parameters Dancer::Version DBITrace/],
|
$ENV{DANCER_DEBUG} ?
|
||||||
#)],
|
[ Debug => (
|
||||||
|
panels => [qw/Dancer::Settings Parameters Dancer::Version DBITrace/],
|
||||||
|
)]
|
||||||
|
: ()
|
||||||
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
use App::Netdisco::Web;
|
use App::Netdisco::Web;
|
||||||
|
|||||||
@@ -165,7 +165,9 @@ take care of all this for you:
|
|||||||
|
|
||||||
~/bin/netdisco-deploy
|
~/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<Deployment|App::Netdisco::Manual::Deployment> documentation.
|
||||||
|
|
||||||
=head1 Startup
|
=head1 Startup
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,32 @@ the database service):
|
|||||||
# TYPE DATABASE USER ADDRESS METHOD
|
# TYPE DATABASE USER ADDRESS METHOD
|
||||||
host all all 127.0.0.1/32 md5
|
host all all 127.0.0.1/32 md5
|
||||||
|
|
||||||
|
=head1 Deploy without Internet access
|
||||||
|
|
||||||
|
The C<netdisco-deploy> 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<netdisco-deploy> 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
|
=head1 Relocating the Installation
|
||||||
|
|
||||||
The installation process installs Netdisco self-contained to your home
|
The installation process installs Netdisco self-contained to your home
|
||||||
@@ -110,6 +136,18 @@ You are instead recommended to run C<netdisco-web> behind a reverse proxy as
|
|||||||
described elsewhere in this document. Apache can easily act as an SSL reverse
|
described elsewhere in this document. Apache can easily act as an SSL reverse
|
||||||
proxy.
|
proxy.
|
||||||
|
|
||||||
|
=head1 Debug Tricks
|
||||||
|
|
||||||
|
You can see what HTTP Headers are received by Netdisco, and other information
|
||||||
|
such as how it's parsing the config file, by enabling the Dancer debug plugin.
|
||||||
|
First download the plugin:
|
||||||
|
|
||||||
|
~/bin/localenv cpanm --notest Dancer::Debug
|
||||||
|
|
||||||
|
Then run the web daemon with the environment variable to enable the feature:
|
||||||
|
|
||||||
|
DANCER_DEBUG=1 ~/bin/netdisco-web restart
|
||||||
|
|
||||||
=head1 Further Reading...
|
=head1 Further Reading...
|
||||||
|
|
||||||
Other ways to run and host the web application can be found in the
|
Other ways to run and host the web application can be found in the
|
||||||
|
|||||||
@@ -16,19 +16,19 @@ register_report(
|
|||||||
|
|
||||||
get '/ajax/content/report/vlaninventory' => require_login sub {
|
get '/ajax/content/report/vlaninventory' => require_login sub {
|
||||||
my $set = schema('netdisco')->resultset('DeviceVlan')->search(
|
my $set = schema('netdisco')->resultset('DeviceVlan')->search(
|
||||||
{ 'vlan.description' => { '!=', 'NULL' } },
|
{ 'me.description' => { '!=', 'NULL' } },
|
||||||
{ join => { 'ports' => 'vlan' },
|
{ join => { 'ports' => 'vlan' },
|
||||||
select => [
|
select => [
|
||||||
'vlan.vlan',
|
'me.vlan',
|
||||||
'vlan.description',
|
'me.description',
|
||||||
{ count => { distinct => 'ports.ip' } },
|
{ count => { distinct => 'ports.ip' } },
|
||||||
{ count => 'ports.vlan' }
|
{ count => 'ports.vlan' }
|
||||||
],
|
],
|
||||||
as => [qw/ vlan description dcount pcount /],
|
as => [qw/ vlan description dcount pcount /],
|
||||||
group_by => [qw/ vlan.vlan vlan.description /],
|
group_by => [qw/ me.vlan me.description /],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return unless $set->count;
|
return unless $set->has_rows;
|
||||||
|
|
||||||
if ( request->is_ajax ) {
|
if ( request->is_ajax ) {
|
||||||
template 'ajax/report/vlaninventory.tt', { results => $set, },
|
template 'ajax/report/vlaninventory.tt', { results => $set, },
|
||||||
|
|||||||
Reference in New Issue
Block a user