diff --git a/Netdisco/lib/App/Netdisco/Web/Device.pm b/Netdisco/lib/App/Netdisco/Web/Device.pm index dd84dcab..3af1247c 100644 --- a/Netdisco/lib/App/Netdisco/Web/Device.pm +++ b/Netdisco/lib/App/Netdisco/Web/Device.pm @@ -87,20 +87,21 @@ hook 'before_template' => sub { }; get '/device' => sub { - my $ip = NetAddr::IP::Lite->new(param('q')); - if (! $ip) { - redirect uri_for('/', {nosuchdevice => 1}); - return; - } + my $q = param('q'); + my $dev = schema('netdisco')->resultset('Device')->single({ + -or => [ + ip => $q, + dns => $q, + ], + }); - my $device = schema('netdisco')->resultset('Device')->find($ip->addr); - if (! $device) { + if (! $dev) { redirect uri_for('/', {nosuchdevice => 1}); return; } params->{'tab'} ||= 'details'; - template 'device', { d => $device }; + template 'device', { d => $dev }; }; true; diff --git a/Netdisco/lib/App/Netdisco/Web/Search.pm b/Netdisco/lib/App/Netdisco/Web/Search.pm index 2ec3dea9..ce179835 100644 --- a/Netdisco/lib/App/Netdisco/Web/Search.pm +++ b/Netdisco/lib/App/Netdisco/Web/Search.pm @@ -66,7 +66,7 @@ get '/search' => sub { my $s = schema('netdisco'); if (not param('tab')) { - if (not $q) { redirect uri_for('/') } + if (not $q) { return redirect uri_for('/') } # pick most likely tab for initial results if ($q =~ m/^\d+$/) { @@ -78,7 +78,7 @@ get '/search' => sub { if ($nd and $nd->count) { if ($nd->count == 1) { # redirect to device details for the one device - redirect uri_for('/device', + return redirect uri_for('/device', {tab => 'details', q => $q, f => ''}); }