mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
1c379dcd05
* massive inlines * fix style and wtf * remove rrdtool.inc.php include * fix CommonFunctions namespace issues * looking for missing class space, fix undefined class issues * style fixes
153 lines
4.3 KiB
PHP
153 lines
4.3 KiB
PHP
<?php
|
|
|
|
print_optionbar_start();
|
|
|
|
echo '<form action = "' . \LibreNMS\Util\Url::generate($link_array, ['nfsen' => 'stats']) . '" iOCd = "FlowStats" method = "SUBMIT">';
|
|
|
|
echo 'Top N:
|
|
<select name = "topN" id = "topN" size = 1>
|
|
';
|
|
|
|
$option_default = $vars['topN'] ?? \LibreNMS\Config::get('nfsen_top_default');
|
|
|
|
$option_int = 0;
|
|
foreach (\LibreNMS\Config::get('nfsen_top_N') as $option) {
|
|
if (strcmp($option_default, $option) == 0) {
|
|
echo '<option value = "' . $option . '" selected>' . $option . '</option>';
|
|
} else {
|
|
echo '<option value = "' . $option . '">' . $option . '</option>';
|
|
}
|
|
}
|
|
|
|
echo '
|
|
</select>
|
|
During the last:
|
|
<select name = "lastN" id = "lastN" size = 1>
|
|
';
|
|
|
|
$option_keys = array_keys(\LibreNMS\Config::get('nfsen_lasts'));
|
|
$options = \LibreNMS\Config::get('nfsen_lasts');
|
|
foreach ($option_keys as $option) {
|
|
if (strcmp($option_default, $option) == 0) {
|
|
echo '<option value = "' . $option . '" selected>' . $options[$option] . '</option>';
|
|
} else {
|
|
echo '<option value = "' . $option . '">' . $options[$option] . '</option>';
|
|
}
|
|
}
|
|
|
|
echo '
|
|
</select>
|
|
, Stat Type:
|
|
<select name = "stattype" id = "StatTypeSelector" size = 1>
|
|
';
|
|
|
|
$option_default = $vars['stattype'] ?? \LibreNMS\Config::get('nfsen_stats_default');
|
|
|
|
$stat_types = [
|
|
'record'=>'Flow Records',
|
|
'ip'=>'Any IP Address',
|
|
'srcip'=>'SRC IP Address',
|
|
'dstip'=>'DST IP Address',
|
|
'port'=>'Any Port',
|
|
'srcport'=>'SRC Port',
|
|
'dstport'=>'DST Port',
|
|
'srctos'=>'SRC TOS',
|
|
'dsttos'=>'DST TOS',
|
|
'tos'=>'TOS',
|
|
'as'=>'AS',
|
|
'srcas'=>'SRC AS',
|
|
'dstas'=>'DST AS',
|
|
];
|
|
|
|
// puts together the drop down options
|
|
foreach ($stat_types as $option => $descr) {
|
|
if (strcmp($option_default, $option) == 0) {
|
|
echo '<option value = "' . $option . '" selected>' . $descr . "</option>\n";
|
|
} else {
|
|
echo '<option value = "' . $option . '">' . $descr . "</option>\n";
|
|
}
|
|
}
|
|
|
|
echo '
|
|
</select>
|
|
, Order By:
|
|
<select name = "statorder" id = "statorder" sizeOC = 1>
|
|
';
|
|
|
|
$option_default = \LibreNMS\Config::get('nfsen_order_default');
|
|
if (isset($vars['statorder'])) {
|
|
$option_default = $vars['statorder'];
|
|
}
|
|
|
|
// WARNING: order is relevant as it has to match the
|
|
// check later in the process part of this page.
|
|
$order_types = [
|
|
'flows'=>1,
|
|
'packets'=>1,
|
|
'bytes'=>1,
|
|
'pps'=>1,
|
|
'bps'=>1,
|
|
'bpp'=>1,
|
|
];
|
|
|
|
// puts together the drop down options
|
|
foreach ($order_types as $option => $descr) {
|
|
if (strcmp($option_default, $option) == 0) {
|
|
echo '<option value = "' . $option . '" selected>' . $option . "</option>\n";
|
|
} else {
|
|
echo '<option value = "' . $option . '">' . $option . "</option>\n";
|
|
}
|
|
}
|
|
|
|
echo '
|
|
</select>
|
|
<input type = "submit" name = "process" value = "process" size = "1">
|
|
';
|
|
echo '</form>';
|
|
|
|
print_optionbar_end();
|
|
|
|
// process stuff now if we the button was clicked on
|
|
if (isset($vars['process'])) {
|
|
// Make sure we have a sane value for lastN
|
|
$lastN = 900;
|
|
if (isset($vars['lastN']) &&
|
|
is_numeric($vars['lastN']) &&
|
|
($vars['lastN'] <= \LibreNMS\Config::get('nfsen_last_max'))
|
|
) {
|
|
$lastN = $vars['lastN'];
|
|
}
|
|
|
|
// Make sure we have a sane value for lastN
|
|
$topN = 20; // The default if not set or something invalid is set
|
|
if (isset($vars['topN']) &&
|
|
is_numeric($vars['topN']) &&
|
|
($vars['topN'] <= \LibreNMS\Config::get('nfsen_top_max'))
|
|
) {
|
|
$topN = $vars['topN'];
|
|
}
|
|
|
|
// Handle the stat order.
|
|
$stat_order = 'pps'; // The default if not set or something invalid is set
|
|
if (isset($vars['statorder']) && isset($order_types[$vars['statorder']])) {
|
|
$stat_order = $vars['statorder'];
|
|
}
|
|
|
|
// Handle the stat type.
|
|
$stat_type = 'srcip'; // The default if not set or something invalid is set
|
|
if (isset($vars['stattype']) && isset($stat_types[$vars['stattype']])) {
|
|
$stat_type = $vars['stattype'];
|
|
}
|
|
|
|
$current_time = lowest_time(time() - 300);
|
|
$last_time = lowest_time($current_time - $lastN - 300);
|
|
|
|
$command = \LibreNMS\Config::get('nfdump') . ' -M ' . nfsen_live_dir($device['hostname']) . ' -T -R ' .
|
|
time_to_nfsen_subpath($last_time) . ':' . time_to_nfsen_subpath($current_time) .
|
|
' -n ' . $topN . ' -s ' . $stat_type . '/' . $stat_order;
|
|
|
|
echo '<pre>';
|
|
system($command);
|
|
echo '</pre>';
|
|
}
|