1package App::Netdisco::Web::Plugin::Report::DeviceDnsMismatch;
2
3use Dancer ':syntax';
4use Dancer::Plugin::DBIC;
5use Dancer::Plugin::Auth::Extensible;
6
7use App::Netdisco::Web::Plugin;
8
9register_report(
10    {   category     => 'Device',
11        tag          => 'devicednsmismatch',
12        label        => 'Device Name / DNS Mismatches',
13        provides_csv => 1,
14        api_endpoint => 1,
15    }
16);
17
18get '/ajax/content/report/devicednsmismatch' => require_login sub {
19
20    (my $suffix = '***:'. setting('domain_suffix')) =~ s|\Q(?^\Eu?|(?|g;
21
22    my @results
23        = schema('netdisco')->resultset('Virtual::DeviceDnsMismatch')
24        ->search( undef, { bind => [ $suffix, $suffix ] } )
25        ->columns( [qw/ ip dns name location contact /] )->hri->all;
26
27    return unless scalar @results;
28
29    if ( request->is_ajax ) {
30        my $json = to_json( \@results );
31        template 'ajax/report/devicednsmismatch.tt', { results => $json };
32    }
33    else {
34        header( 'Content-Type' => 'text/comma-separated-values' );
35        template 'ajax/report/devicednsmismatch_csv.tt',
36            { results => \@results };
37    }
38};
39
401;
41