%PDF- %PDF-
| Direktori : /backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Diagnostics/ |
| Current File : //backups/router/usr/local/opnsense/mvc/app/views/OPNsense/Diagnostics/netflow.volt |
{#
# Copyright (c) 2016 Deciso B.V.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or withoutmodification,
# are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#}
<script>
$( document ).ready(function() {
var data_get_map = {'frm_CaptureSettings':"/api/diagnostics/netflow/getconfig"};
mapDataToFormUI(data_get_map).done(function(data){
// place actions to run after load, for example update form styles.
formatTokenizersUI();
$('.selectpicker').selectpicker('refresh');
});
// link save button to API set action
$("#btn_save_capture").click(function () {
$("#frm_CaptureSettings_progress").addClass("fa fa-spinner fa-pulse");
saveFormToEndpoint("/api/diagnostics/netflow/setconfig", 'frm_CaptureSettings', function () {
ajaxCall("/api/diagnostics/netflow/reconfigure", {}, function (data, status) {
$("#frm_CaptureSettings_progress").removeClass("fa fa-spinner fa-pulse");
});
}, true, function () {
$("#frm_CaptureSettings_progress").removeClass("fa fa-spinner fa-pulse");
});
});
$("#act_refresh_cache_stats").click(function(){
ajaxGet('/api/diagnostics/netflow/cacheStats', {}, function(data, status) {
var html = [];
// convert to plain Array
var data_arr = $.makeArray(data)[0];
// sort by flow
Object.keys(data_arr).sort().forEach(function (index) {
let value = data_arr[index];
var fields = ["if", "DstIPaddresses", "SrcIPaddresses", "Pkts"];
let tr_str = '<tr>';
tr_str += '<td>'+index+'</td>';
for (var i = 0; i < fields.length; i++) {
if (value[fields[i]] != null) {
tr_str += '<td>' + value[fields[i]] + '</td>';
} else {
tr_str += '<td></td>';
}
}
tr_str += '</tr>';
html.push(tr_str);
});
$("#cache_stats > tbody").html(html.join(''));
});
});
// refresh cache stats on tab open
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
if (e.target.id == 'cache_tab'){
$("#act_refresh_cache_stats").click();
}
});
});
</script>
<ul class="nav nav-tabs" data-tabs="tabs" id="maintabs">
<li class="active"><a data-toggle="tab" id="capture_tab" href="#capture">{{ lang._('Capture') }}</a></li>
<li><a data-toggle="tab" id="cache_tab" href="#cache">{{ lang._('Cache') }}</a></li>
</ul>
<div class="tab-content content-box">
<div id="capture" class="tab-pane fade in active">
<!-- tab page capture -->
{{ partial("layout_partials/base_form",['fields':captureForm,'id':'frm_CaptureSettings', 'apply_btn_id':'btn_save_capture'])}}
</div>
<div id="cache" class="tab-pane fade in">
<!-- tab page netflow cache -->
<table class="table table-striped" id="cache_stats">
<thead>
<tr>
<th>{{ lang._('Flow') }}</th>
<th>{{ lang._('Interface') }}</th>
<th>{{ lang._('Destinations') }}</th>
<th>{{ lang._('Sources') }}</th>
<th>{{ lang._('Pkts') }}</th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<td colspan="5">
<button id="act_refresh_cache_stats" type="button" class="btn btn-default">
<span>{{ lang._('Refresh') }}</span>
<span class="fa fa-refresh"></span>
</button>
</td>
</tr>
</tfoot>
</table>
</div>
</div>