diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SsidInventory.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SsidInventory.pm new file mode 100644 index 00000000..c0e71f2f --- /dev/null +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SsidInventory.pm @@ -0,0 +1,39 @@ +package App::Netdisco::Web::Plugin::Report::SsidInventory; + +use Dancer ':syntax'; +use Dancer::Plugin::DBIC; +use Dancer::Plugin::Auth::Extensible; + +use App::Netdisco::Web::Plugin; + +register_report( + { category => 'Wireless', + tag => 'ssidinventory', + label => 'SSID Inventory', + provides_csv => 1, + } +); + +get '/ajax/content/report/ssidinventory' => require_login sub { + my $set = schema('netdisco')->resultset('DevicePortSsid')->search( + {}, + { select => [ 'ssid', 'broadcast', { count => 'ssid' } ], + as => [qw/ ssid broadcast scount /], + group_by => [qw/ ssid broadcast /], + order_by => { -desc => [qw/count/] }, + } + ); + return unless $set->count; + + if ( request->is_ajax ) { + template 'ajax/report/ssidinventory.tt', { results => $set, }, + { layout => undef }; + } + else { + header( 'Content-Type' => 'text/comma-separated-values' ); + template 'ajax/report/ssidinventory_csv.tt', { results => $set, }, + { layout => undef }; + } +}; + +true; diff --git a/Netdisco/share/config.yml b/Netdisco/share/config.yml index bd4bc9a8..90014b48 100644 --- a/Netdisco/share/config.yml +++ b/Netdisco/share/config.yml @@ -38,6 +38,7 @@ web_plugins: - Report::ApRadioChannelPower - Report::HalfDuplex - Report::DuplexMismatch + - Report::SsidInventory - Report::VlanInventory - AdminTask::PseudoDevice - AdminTask::Topology diff --git a/Netdisco/share/views/ajax/report/ssidinventory.tt b/Netdisco/share/views/ajax/report/ssidinventory.tt new file mode 100644 index 00000000..93a008b4 --- /dev/null +++ b/Netdisco/share/views/ajax/report/ssidinventory.tt @@ -0,0 +1,20 @@ +[% USE Number.Format %] + + + + + + + + + + [% WHILE (row = results.next) %] + + + + + + [% END %] + +
SSIDBroadcastCount
[% row.ssid %][% row.broadcast ? 'Yes' : 'No' %][% row.get_column('scount') | format_number %]
+ diff --git a/Netdisco/share/views/ajax/report/ssidinventory_csv.tt b/Netdisco/share/views/ajax/report/ssidinventory_csv.tt new file mode 100644 index 00000000..3ac41029 --- /dev/null +++ b/Netdisco/share/views/ajax/report/ssidinventory_csv.tt @@ -0,0 +1,11 @@ +[% USE CSV -%] +[% CSV.dump([ 'SSID' 'Broadcast' 'Count' ]) %] + +[% WHILE (row = results.next) %] + [% mylist = [] %] + [% mylist.push(row.ssid) %] + [% mylist.push(row.broadcast ? 'Yes' : 'No') %] + [% mylist.push(row.get_column('scount')) %] + [% CSV.dump(mylist) %] + +[% END %]