API implementation (#712)
* initial v0 creator * working json api for generic reports * add require login * move report swagger into plugin, and set new default layout of noop * require proper role and also use new util func * start to tidy authn * some work on cleaning up web authn * clean up the authN checks * fix bug * fix the auth for api * fixes to json handling * set swagger sort order * enable most reports for api endpoints * fix doc * add paramters to reports * add missed report * allow api_parameters in reports config * reorganise api * add vlan search * add port search * make sure to enable layout processing * add device search * add v1 to api paths * add Node Search * support api_responses * add device object search; fix spurious ports field in device result class * handle some plugins just returning undef if search fails * errors from api seamlessley * fix error in date range default * more sensible default for prefix * change order of endpoints in swagger-ui * all db row classes can now TO_JSON * add device_port api endpoint * add device ports endpoint * do not expand docs * add swagger ui json tree formatter * add all relations from Device table * add port relations * add nodes retrieve on device or vlan * rename to GetAPIKey * update config for previous commit
This commit is contained in:
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Admin;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("admin");
|
||||
__PACKAGE__->add_columns(
|
||||
"job",
|
||||
|
||||
@@ -4,7 +4,7 @@ package App::Netdisco::DB::Result::Community;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("community");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
use utf8;
|
||||
package App::Netdisco::DB::Result::Device;
|
||||
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
@@ -10,7 +9,7 @@ use App::Netdisco::Util::DNS 'hostname_from_ip';
|
||||
|
||||
use overload '""' => sub { shift->ip }, fallback => 1;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
@@ -36,8 +35,6 @@ __PACKAGE__->add_columns(
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"layers",
|
||||
{ data_type => "varchar", is_nullable => 1, size => 8 },
|
||||
"ports",
|
||||
{ data_type => "integer", is_nullable => 1 },
|
||||
"mac",
|
||||
{ data_type => "macaddr", is_nullable => 1 },
|
||||
"serial",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DeviceIp;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_ip");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DeviceModule;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_module");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -9,7 +9,7 @@ use NetAddr::MAC;
|
||||
|
||||
use MIME::Base64 'encode_base64url';
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePortLog;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_log");
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePortPower;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_power");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -4,7 +4,7 @@ package App::Netdisco::DB::Result::DevicePortProperties;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_properties");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePortSsid;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_ssid");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePortVlan;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_vlan");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePortWireless;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_port_wireless");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DevicePower;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_power");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -6,7 +6,7 @@ use warnings;
|
||||
|
||||
use List::MoreUtils ();
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_skip");
|
||||
__PACKAGE__->add_columns(
|
||||
"backend",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::DeviceVlan;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("device_vlan");
|
||||
__PACKAGE__->add_columns(
|
||||
"ip",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Log;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("log");
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
|
||||
@@ -4,7 +4,7 @@ package App::Netdisco::DB::Result::NetmapPositions;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("netmap_positions");
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
|
||||
@@ -7,7 +7,7 @@ use warnings;
|
||||
|
||||
use NetAddr::MAC;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("node");
|
||||
__PACKAGE__->add_columns(
|
||||
"mac",
|
||||
@@ -19,7 +19,7 @@ __PACKAGE__->add_columns(
|
||||
"active",
|
||||
{ data_type => "boolean", is_nullable => 1 },
|
||||
"oui",
|
||||
{ data_type => "varchar", is_nullable => 1, size => 8 },
|
||||
{ data_type => "varchar", is_nullable => 1, is_serializable => 0, size => 8 },
|
||||
"time_first",
|
||||
{
|
||||
data_type => "timestamp",
|
||||
|
||||
@@ -7,7 +7,7 @@ use warnings;
|
||||
|
||||
use NetAddr::MAC;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("node_ip");
|
||||
__PACKAGE__->add_columns(
|
||||
"mac",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::NodeMonitor;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("node_monitor");
|
||||
__PACKAGE__->add_columns(
|
||||
"mac",
|
||||
|
||||
@@ -7,7 +7,7 @@ use warnings;
|
||||
|
||||
use NetAddr::MAC;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("node_nbt");
|
||||
__PACKAGE__->add_columns(
|
||||
"mac",
|
||||
|
||||
@@ -7,7 +7,7 @@ use warnings;
|
||||
|
||||
use NetAddr::MAC;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("node_wireless");
|
||||
__PACKAGE__->add_columns(
|
||||
"mac",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Oui;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("oui");
|
||||
__PACKAGE__->add_columns(
|
||||
"oui",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Process;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("process");
|
||||
__PACKAGE__->add_columns(
|
||||
"controller",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Session;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("sessions");
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
|
||||
@@ -4,7 +4,7 @@ package App::Netdisco::DB::Result::Statistics;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("statistics");
|
||||
__PACKAGE__->add_columns(
|
||||
"day",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::Subnet;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("subnets");
|
||||
__PACKAGE__->add_columns(
|
||||
"net",
|
||||
|
||||
@@ -4,7 +4,7 @@ package App::Netdisco::DB::Result::Topology;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
|
||||
__PACKAGE__->table("topology");
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::User;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("users");
|
||||
__PACKAGE__->add_columns(
|
||||
"username",
|
||||
|
||||
@@ -5,7 +5,7 @@ package App::Netdisco::DB::Result::UserLog;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
use base 'App::Netdisco::DB::Result';
|
||||
__PACKAGE__->table("user_log");
|
||||
__PACKAGE__->add_columns(
|
||||
"entry",
|
||||
|
||||
@@ -28,6 +28,7 @@ __PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
||||
UNION
|
||||
SELECT username, 'api' AS role FROM users
|
||||
WHERE token IS NOT NULL AND token_from IS NOT NULL
|
||||
AND token_from > (EXTRACT(EPOCH FROM now()) - ?)
|
||||
ENDSQL
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user