register_report({
tag
=>
'portlog'
,
label
=>
'Port Control Log'
,
category
=>
'Port'
,
hidden
=> true,
});
sub
_sanity_ok {
return
0
unless
param(
'ip'
) =~ m/^[[:
print
:]]+$/
and param(
'port'
) =~ m/^[[:
print
:]]+$/
and param(
'log'
) =~ m/^[[:
print
:]]+$/;
return
1;
}
ajax
'/ajax/control/report/portlog/add'
=> require_login
sub
{
send_error(
'Bad Request'
, 400)
unless
_sanity_ok();
schema(vars->{
'tenant'
})->txn_do(
sub
{
my
$user
= schema(vars->{
'tenant'
})->resultset(
'DevicePortLog'
)
->create({
ip
=> param(
'ip'
),
port
=> param(
'port'
),
reason
=>
'other'
,
log
=> param(
'log'
),
username
=> session(
'logged_in_user'
),
userip
=> request->remote_address,
action
=>
'comment'
,
});
});
};
ajax
'/ajax/content/report/portlog'
=> require_login
sub
{
my
$device
= param(
'q'
);
my
$port
= param(
'f'
);
send_error(
'Bad Request'
, 400)
unless
$device
and
$port
;
$device
= schema(vars->{
'tenant'
})->resultset(
'Device'
)
->search_for_device(
$device
);
return
unless
$device
;
my
$set
= schema(vars->{
'tenant'
})->resultset(
'DevicePortLog'
)->search({
ip
=>
$device
->ip,
port
=>
$port
,
}, {
order_by
=> {
-desc
=> [
qw/creation/
] },
rows
=> 200,
})->with_times;
content_type(
'text/html'
);
template
'ajax/report/portlog.tt'
, {
results
=>
$set
,
}, {
layout
=>
'noop'
};
};
true;