relocate repo files so ND2 is the only code
This commit is contained in:
88
lib/App/Netdisco/Web/PortControl.pm
Normal file
88
lib/App/Netdisco/Web/PortControl.pm
Normal file
@@ -0,0 +1,88 @@
|
||||
package App::Netdisco::Web::PortControl;
|
||||
|
||||
use Dancer ':syntax';
|
||||
use Dancer::Plugin::Ajax;
|
||||
use Dancer::Plugin::DBIC;
|
||||
use Dancer::Plugin::Auth::Extensible;
|
||||
|
||||
use App::Netdisco::JobQueue qw/jq_insert jq_userlog/;
|
||||
|
||||
ajax '/ajax/portcontrol' => require_role port_control => sub {
|
||||
send_error('No device/port/field', 400)
|
||||
unless param('device') and (param('port') or param('field'));
|
||||
|
||||
my $log = sprintf 'd:[%s] p:[%s] f:[%s]. a:[%s] v[%s]',
|
||||
param('device'), (param('port') || ''), param('field'),
|
||||
(param('action') || ''), (param('value') || '');
|
||||
|
||||
my %action_map = (
|
||||
'location' => 'location',
|
||||
'contact' => 'contact',
|
||||
'c_port' => 'portcontrol',
|
||||
'c_name' => 'portname',
|
||||
'c_pvid' => 'vlan',
|
||||
'c_power' => 'power',
|
||||
);
|
||||
|
||||
my $action = $action_map{ param('field') };
|
||||
my $subaction = ($action =~ m/^(?:power|portcontrol)/
|
||||
? (param('action') ."-other")
|
||||
: param('value'));
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
if (param('port')) {
|
||||
my $a = "$action $subaction";
|
||||
$a =~ s/-other$//;
|
||||
$a =~ s/^portcontrol/port/;
|
||||
|
||||
schema('netdisco')->resultset('DevicePortLog')->create({
|
||||
ip => param('device'),
|
||||
port => param('port'),
|
||||
action => $a,
|
||||
username => session('logged_in_user'),
|
||||
userip => request->remote_address,
|
||||
reason => (param('reason') || 'other'),
|
||||
log => param('log'),
|
||||
});
|
||||
}
|
||||
|
||||
jq_insert({
|
||||
device => param('device'),
|
||||
port => param('port'),
|
||||
action => $action,
|
||||
subaction => $subaction,
|
||||
username => session('logged_in_user'),
|
||||
userip => request->remote_address,
|
||||
log => $log,
|
||||
});
|
||||
});
|
||||
|
||||
content_type('application/json');
|
||||
to_json({});
|
||||
};
|
||||
|
||||
ajax '/ajax/userlog' => require_login sub {
|
||||
my @jobs = jq_userlog( session('logged_in_user') );
|
||||
|
||||
my %status = (
|
||||
'done' => [
|
||||
map {s/\[\]/<empty>/; $_}
|
||||
map { $_->log }
|
||||
grep { $_->status eq 'done' }
|
||||
grep { defined }
|
||||
@jobs
|
||||
],
|
||||
'error' => [
|
||||
map {s/\[\]/<empty>/; $_}
|
||||
map { $_->log }
|
||||
grep { $_->status eq 'error' }
|
||||
grep { defined }
|
||||
@jobs
|
||||
],
|
||||
);
|
||||
|
||||
content_type('application/json');
|
||||
to_json(\%status);
|
||||
};
|
||||
|
||||
true;
|
||||
Reference in New Issue
Block a user