mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* search improvement for PortNac * rename func * style * DB migration for timestamps * style * rules * fix manually db_schema * remove vlan only search for now * add a bool column to ident historical nac entries * add columns to the table * queryByOui renamed everywhere * age value instead of delete * style * style * use Illuminate\Support\Facades\DB; * tests fix * module_tables.yaml * dump model instead of tests/module_tables.yaml * tests * testVrp * daily * config * display historical NAC entries in global view * same for NAC device page * nac tab on device/port view * and display the tab link if necessary * filter by port as well * historical data in port tab * formatters
157 lines
8.7 KiB
PHP
157 lines
8.7 KiB
PHP
@extends('layouts.librenmsv1')
|
|
|
|
@section('title', __('NAC'))
|
|
|
|
@section('content')
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
|
|
<x-panel title="{{ __('NAC') }}" id="nac-panel">
|
|
<div class="table-responsive">
|
|
<table id="nac-grid" data-toggle="bootgrid" class="table table-hover table-condensed table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th data-column-id="device_id" data-order="asc" data-width="140px">{{ __('Devices') }}</th>
|
|
<th data-column-id="port_id" data-width="100px">{{ __('Ports') }}</th>
|
|
<th data-column-id="mac_address" data-formatter="tooltip" data-width="170px">{{ __('Mac Address') }}</th>
|
|
<th data-column-id="mac_oui" data-formatter="tooltip" data-sortable="false" data-width="130px">{{ __('Vendor') }}</th>
|
|
<th data-column-id="ip_address" data-formatter="tooltip" data-width="140px">{{ __('IP Address') }}</th>
|
|
<th data-column-id="vlan" data-formatter="tooltip" data-width="60px">{{ __('Vlan') }}</th>
|
|
<th data-column-id="domain" data-formatter="nac_domain" data-formatter="tooltip">{{ __('Domain') }}</th>
|
|
<th data-column-id="host_mode" data-formatter="nac_mode">{{ __('Host Mode') }}</th>
|
|
<th data-column-id="username" data-formatter="tooltip" data-width="250px">{{ __('Username') }}</th>
|
|
<th data-column-id="authz_by" data-formatter="tooltip">{{ __('Auth By') }}</th>
|
|
<th data-column-id="timeout" data-formatter="time_interval">{{ __('Timeout') }}</th>
|
|
<th data-column-id="time_elapsed" data-formatter="time_interval" >{{ __('Time Elapsed') }}</th>
|
|
<th data-column-id="time_left" data-formatter="time_interval" data-visible="false">{{ __('Time Left') }}</th>
|
|
<th data-column-id="authc_status" data-formatter="nac_authc" data-formatter="tooltip">{{ __('NAC Authc') }}</th>
|
|
<th data-column-id="authz_status" data-formatter="nac_authz">{{ __('NAC Authz') }}</th>
|
|
<th data-column-id="method" data-formatter="nac_method">{{ __('NAC Method') }}</th>
|
|
<th data-column-id="created_at" data-formatter="tooltip">{{ __('First seen') }}</th>
|
|
<th data-column-id="updated_at" data-formatter="tooltip">{{ __('Last seen') }}</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</x-panel>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('css')
|
|
<style>
|
|
</style>
|
|
@endsection
|
|
|
|
@push('scripts')
|
|
<script>
|
|
$(document).ready(function () {
|
|
nac_grid = $("#nac-grid").bootgrid({
|
|
ajax: true,
|
|
rowCount: [25, 50, 100, -1],
|
|
url: "{{ route('table.port-nac') }}",
|
|
post: function () {
|
|
var check_showHistorical = document.getElementById('check_showHistorical');
|
|
if (check_showHistorical) {
|
|
var showHistorical = check_showHistorical.checked;
|
|
} else {
|
|
var showHistorical = false;
|
|
}
|
|
|
|
return {
|
|
showHistorical: showHistorical,
|
|
};
|
|
},
|
|
formatters: {
|
|
"time_interval": function (column, row) {
|
|
var value = row[column.id];
|
|
var res = humanize_duration(value);
|
|
var res_light = res.split(' ').slice(0, 2).join(' ');
|
|
return "<span title=\'" + res.trim() + "\' data-toggle=\'tooltip\'>" + res_light + "</span>";
|
|
},
|
|
"tooltip": function (column, row) {
|
|
var value = row[column.id];
|
|
var vendor = '';
|
|
if (column.id == 'mac_address' && ((vendor = row['mac_oui']) != '' )) {
|
|
return "<span title=\'" + value + " (" + vendor + ")\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
}
|
|
return "<span title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
},
|
|
"nac_authz": function (column, row) {
|
|
var value = row[column.id];
|
|
if (value === 'authorizationSuccess' || value === 'sussess') {
|
|
//typo in huawei MIB so we must keep sussess
|
|
return "<i class=\"fa fa-check-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:green;\"></i>";
|
|
} else if (value === 'authorizationFailed') {
|
|
return "<i class=\"fa fa-times-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:red;\"></i>";
|
|
} else {
|
|
return "<span class=\'label label-default\' title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
}
|
|
},
|
|
"nac_domain": function (column, row) {
|
|
var value = row[column.id];
|
|
if (value === 'voice') {
|
|
return "<i class=\"fa fa-phone fa-lg icon-theme\" aria-hidden=\"true\"></i>";
|
|
} else if (value === 'data') {
|
|
return "<i class=\"fa fa-desktop fa-lg icon-theme\" aria-hidden=\"true\"></i>";
|
|
} else if (value === 'Disabled') {
|
|
return "<i class=\"fa fa-desktop fa-lg icon-theme\" aria-hidden=\"true\"></i>";
|
|
} else {
|
|
return "<span class=\'label label-default\' title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
}
|
|
},
|
|
"nac_authc": function (column, row) {
|
|
var value = row[column.id];
|
|
if (value === 'notRun') {
|
|
return "<span class=\"label label-primary\">notRun</span>";
|
|
} else if (value === 'running') {
|
|
return "<span class=\"label label-primary\">running</span>";
|
|
} else if (value === 'failedOver') {
|
|
return "<i class=\"fa fa-times-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:red;\"></i>";
|
|
} else if (value === 'authcSuccess') {
|
|
return "<i class=\"fa fa-check-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:green;\">";
|
|
} else if (value === 'authcFailed') {
|
|
return "<i class=\"fa fa-times-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:red;\"></i>";
|
|
} else if (value === '6') {
|
|
return "<i class=\"fa fa-times-circle fa-lg icon-theme\" aria-hidden=\"true\" style=\"color:red;\"></i>";
|
|
} else {
|
|
return "<span class=\'label label-default\' title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
}
|
|
},
|
|
"nac_method": function (column, row) {
|
|
var value = row[column.id];
|
|
if (value === 'dot1x') {
|
|
return "<span class=\"label label-success\">802.1x</span>";
|
|
} else if (value === 'macAuthBypass') {
|
|
return "<span class=\"label label-primary\">MAB</span>";
|
|
} else if (value === 'other') {
|
|
return "<span class=\"label label-danger\">Disabled</span>";
|
|
} else {
|
|
return "<span class=\'label label-default\' title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
|
|
}
|
|
}
|
|
}
|
|
});
|
|
var add = $(".actionBar").append(
|
|
'<div class="search form-group pull-left" style="width:auto">' +
|
|
'<?php echo csrf_field() ?>' +
|
|
'<input type="checkbox" name="check_showHistorical" data-size="small" id="check_showHistorical">' +
|
|
' Include historical NAC entries' +
|
|
'</div>');
|
|
|
|
$("#check_showHistorical").bootstrapSwitch({
|
|
'onSwitchChange': function(event, state){
|
|
updateTable();
|
|
}
|
|
});
|
|
|
|
function updateTable() {
|
|
$('#nac-grid').bootgrid('reload');
|
|
};
|
|
});
|
|
</script>
|
|
@endpush
|