2012-12-07 Ramon Novoa <rnovoa@artica.es>
* include/functions_graph.php, include/functions_reporting.php, include/functions_netflow.php, operation/netflow/nf_live_view.php: Aesthetic fixes. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7237 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
0a816a4376
commit
6e8de73ca5
|
@ -1,3 +1,10 @@
|
||||||
|
2012-12-07 Ramon Novoa <rnovoa@artica.es>
|
||||||
|
|
||||||
|
* include/functions_graph.php,
|
||||||
|
include/functions_reporting.php,
|
||||||
|
include/functions_netflow.php,
|
||||||
|
operation/netflow/nf_live_view.php: Aesthetic fixes.
|
||||||
|
|
||||||
2012-12-07 Junichi Satoh <junichi@rworks.jp>
|
2012-12-07 Junichi Satoh <junichi@rworks.jp>
|
||||||
|
|
||||||
* index.php: Fixed undefined function error in case of login
|
* index.php: Fixed undefined function error in case of login
|
||||||
|
|
|
@ -2794,7 +2794,7 @@ function graph_netflow_total_area ($data, $period, $width, $height, $unit = '',
|
||||||
$water_mark = array('file' => $config['homedir'] . "/images/logo_vertical_water.png",
|
$water_mark = array('file' => $config['homedir'] . "/images/logo_vertical_water.png",
|
||||||
'url' => ui_get_full_url("/images/logo_vertical_water.png"));
|
'url' => ui_get_full_url("/images/logo_vertical_water.png"));
|
||||||
|
|
||||||
return area_graph($flash_chart, $chart, $width, $height, array (), array (),
|
return area_graph($flash_chart, $chart, $width, $height, array (), false,
|
||||||
array (), ui_get_full_url("images/image_problem.opaque.png"), "", "", $homeurl,
|
array (), ui_get_full_url("images/image_problem.opaque.png"), "", "", $homeurl,
|
||||||
$water_mark,
|
$water_mark,
|
||||||
$config['fontpath'], $config['font_size'], $unit, $ttl);
|
$config['fontpath'], $config['font_size'], $unit, $ttl);
|
||||||
|
|
|
@ -209,8 +209,6 @@ function netflow_stat_table ($data, $start_date, $end_date, $aggregate, $unit){
|
||||||
$end_date = date ($nfdump_date_format, $end_date);
|
$end_date = date ($nfdump_date_format, $end_date);
|
||||||
$values = array();
|
$values = array();
|
||||||
$table->width = '50%';
|
$table->width = '50%';
|
||||||
$table->border = 1;
|
|
||||||
$table->cellpadding = 0;
|
|
||||||
$table->cellspacing = 0;
|
$table->cellspacing = 0;
|
||||||
$table->class = 'databox';
|
$table->class = 'databox';
|
||||||
$table->data = array();
|
$table->data = array();
|
||||||
|
@ -218,20 +216,22 @@ function netflow_stat_table ($data, $start_date, $end_date, $aggregate, $unit){
|
||||||
$x = 0;
|
$x = 0;
|
||||||
|
|
||||||
$table->head = array ();
|
$table->head = array ();
|
||||||
$table->head[0] = '<b>' . __($aggregate) . '</b>';
|
$table->head[0] = '<b>' . netflow_format_aggregate ($aggregate) . '</b>';
|
||||||
$table->head[1] = '<b>' . __($unit) . '</b>';
|
$table->head[1] = '<b>' . netflow_format_unit ($unit) . '</b>';
|
||||||
|
$table->style[0] = 'border: 1px solid black; padding: 4px';
|
||||||
|
$table->style[1] = 'border: 1px solid black; padding: 4px';
|
||||||
|
|
||||||
while (isset ($data[$j])) {
|
while (isset ($data[$j])) {
|
||||||
$agg = $data[$j]['agg'];
|
$agg = $data[$j]['agg'];
|
||||||
if (!isset($values[$agg])){
|
if (!isset($values[$agg])){
|
||||||
$values[$agg] = $data[$j]['data'];
|
$values[$agg] = $data[$j]['data'];
|
||||||
$table->data[$x][0] = $agg;
|
$table->data[$x][0] = $agg;
|
||||||
$table->data[$x][1] = format_numeric ($data[$j]['data']);
|
$table->data[$x][1] = format_numeric ($data[$j]['data']) . ' ' . netflow_format_unit ($unit);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$values[$agg] += $data[$j]['data'];
|
$values[$agg] += $data[$j]['data'];
|
||||||
$table->data[$x][0] = $agg;
|
$table->data[$x][0] = $agg;
|
||||||
$table->data[$x][1] = format_numeric ($data[$j]['data']);
|
$table->data[$x][1] = format_numeric ($data[$j]['data']) . ' ' . netflow_format_unit ($unit);
|
||||||
}
|
}
|
||||||
$j++;
|
$j++;
|
||||||
$x++;
|
$x++;
|
||||||
|
@ -250,7 +250,7 @@ function netflow_stat_table ($data, $start_date, $end_date, $aggregate, $unit){
|
||||||
*
|
*
|
||||||
* @return The statistics table.
|
* @return The statistics table.
|
||||||
*/
|
*/
|
||||||
function netflow_data_table ($data, $start_date, $end_date, $aggregate) {
|
function netflow_data_table ($data, $start_date, $end_date, $aggregate, $unit) {
|
||||||
global $nfdump_date_format;
|
global $nfdump_date_format;
|
||||||
|
|
||||||
$period = $end_date - $start_date;
|
$period = $end_date - $start_date;
|
||||||
|
@ -277,24 +277,29 @@ function netflow_data_table ($data, $start_date, $end_date, $aggregate) {
|
||||||
$values = array();
|
$values = array();
|
||||||
$table->size = array ('50%');
|
$table->size = array ('50%');
|
||||||
$table->class = 'databox';
|
$table->class = 'databox';
|
||||||
$table->border = 1;
|
|
||||||
$table->cellpadding = 0;
|
|
||||||
$table->cellspacing = 0;
|
$table->cellspacing = 0;
|
||||||
$table->data = array();
|
$table->data = array();
|
||||||
|
|
||||||
$table->head = array();
|
$table->head = array();
|
||||||
$table->head[0] = '<b>'.__('Timestamp').'</b>';
|
$table->head[0] = '<b>'.__('Timestamp').'</b>';
|
||||||
|
$table->style[0] = 'border: 1px solid black;padding: 4px';
|
||||||
|
|
||||||
$j = 0;
|
$j = 0;
|
||||||
$source_index = array ();
|
$source_index = array ();
|
||||||
$source_count = 0;
|
$source_count = 0;
|
||||||
|
|
||||||
|
if (isset ($data['sources'])) {
|
||||||
foreach ($data['sources'] as $source => $null) {
|
foreach ($data['sources'] as $source => $null) {
|
||||||
|
$table->style[$j+1] = 'border: 1px solid black;padding: 4px';
|
||||||
$table->align[$j+1] = "right";
|
$table->align[$j+1] = "right";
|
||||||
$table->head[$j+1] = $source;
|
$table->head[$j+1] = $source;
|
||||||
$source_index[$j] = $source;
|
$source_index[$j] = $source;
|
||||||
$source_count++;
|
$source_count++;
|
||||||
$j++;
|
$j++;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$table->style[1] = 'border: 1px solid black;padding: 4px';
|
||||||
|
}
|
||||||
|
|
||||||
// No aggregates
|
// No aggregates
|
||||||
if ($source_count == 0) {
|
if ($source_count == 0) {
|
||||||
|
@ -303,7 +308,7 @@ function netflow_data_table ($data, $start_date, $end_date, $aggregate) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($data as $timestamp => $value) {
|
foreach ($data as $timestamp => $value) {
|
||||||
$table->data[$i][0] = date ($time_format, $timestamp);
|
$table->data[$i][0] = date ($time_format, $timestamp);
|
||||||
$table->data[$i][1] = format_numeric ($value['data']);
|
$table->data[$i][1] = format_numeric ($value['data']) . ' ' . netflow_format_unit ($unit);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -314,10 +319,10 @@ function netflow_data_table ($data, $start_date, $end_date, $aggregate) {
|
||||||
$table->data[$i][0] = date ($time_format, $timestamp);
|
$table->data[$i][0] = date ($time_format, $timestamp);
|
||||||
for ($j = 0; $j < $source_count; $j++) {
|
for ($j = 0; $j < $source_count; $j++) {
|
||||||
if (isset ($values[$source_index[$j]])) {
|
if (isset ($values[$source_index[$j]])) {
|
||||||
$table->data[$i][$j+1] = format_numeric ($values[$source_index[$j]]);
|
$table->data[$i][$j+1] = format_numeric ($values[$source_index[$j]]) . ' ' . netflow_format_unit ($unit);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$table->data[$i][$j+1] = 0;
|
$table->data[$i][$j+1] = 0 . ' ' . netflow_format_unit ($unit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
|
@ -339,12 +344,12 @@ function netflow_summary_table ($data) {
|
||||||
|
|
||||||
$values = array();
|
$values = array();
|
||||||
$table->size = array ('50%');
|
$table->size = array ('50%');
|
||||||
$table->border = 1;
|
|
||||||
$table->cellpadding = 0;
|
|
||||||
$table->cellspacing = 0;
|
$table->cellspacing = 0;
|
||||||
$table->class = 'databox';
|
$table->class = 'databox';
|
||||||
$table->data = array();
|
$table->data = array();
|
||||||
|
|
||||||
|
$table->style[0] = 'border: 1px solid black;padding: 4px';
|
||||||
|
$table->style[1] = 'border: 1px solid black;padding: 4px';
|
||||||
$table->data[0][0] = '<b>'.__('Total flows').'</b>';
|
$table->data[0][0] = '<b>'.__('Total flows').'</b>';
|
||||||
$table->data[0][1] = format_numeric ($data['totalflows']);
|
$table->data[0][1] = format_numeric ($data['totalflows']);
|
||||||
$table->data[1][0] = '<b>'.__('Total megabytes').'</b>';
|
$table->data[1][0] = '<b>'.__('Total megabytes').'</b>';
|
||||||
|
@ -358,7 +363,6 @@ function netflow_summary_table ($data) {
|
||||||
$table->data[5][0] = '<b>'.__('Average bytes per packet').'</b>';
|
$table->data[5][0] = '<b>'.__('Average bytes per packet').'</b>';
|
||||||
$table->data[5][1] = format_numeric ($data['avgbpp']);
|
$table->data[5][1] = format_numeric ($data['avgbpp']);
|
||||||
|
|
||||||
|
|
||||||
return html_print_table ($table, true);
|
return html_print_table ($table, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,14 +440,19 @@ function netflow_get_data ($start_date, $end_date, $interval_length, $filter, $u
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load cache
|
// Load cache
|
||||||
|
if ($unique_id != '') {
|
||||||
$cache_file = $config['attachment_store'] . '/netflow_' . $unique_id . '.cache';
|
$cache_file = $config['attachment_store'] . '/netflow_' . $unique_id . '.cache';
|
||||||
$last_timestamp = netflow_load_cache ($values, $cache_file, $start_date, $end_date, $interval_length, $aggregate);
|
$last_timestamp = netflow_load_cache ($values, $cache_file, $start_date, $end_date, $interval_length, $aggregate);
|
||||||
|
} else {
|
||||||
|
$last_timestamp = $start_date;
|
||||||
|
}
|
||||||
|
|
||||||
if ($last_timestamp < $end_date) {
|
if ($last_timestamp < $end_date) {
|
||||||
|
|
||||||
$last_timestamp++;
|
$last_timestamp++;
|
||||||
|
|
||||||
// Execute nfdump and save its output in a temporary file
|
// Execute nfdump and save its output in a temporary file
|
||||||
$temp_file = $config['attachment_store'] . '/netflow_' . $unique_id . '.tmp';
|
$temp_file = tempnam($config['attachment_store'], 'netflow_tmp_');
|
||||||
$command .= ' -t '.date($nfdump_date_format, $last_timestamp).'-'.date($nfdump_date_format, $end_date);
|
$command .= ' -t '.date($nfdump_date_format, $last_timestamp).'-'.date($nfdump_date_format, $end_date);
|
||||||
exec("$command > $temp_file");
|
exec("$command > $temp_file");
|
||||||
|
|
||||||
|
@ -455,7 +464,7 @@ function netflow_get_data ($start_date, $end_date, $interval_length, $filter, $u
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save cache
|
// Save cache
|
||||||
if ($aggregate == 'none') {
|
if ($unique_id != '') {
|
||||||
netflow_save_cache ($values, $cache_file);
|
netflow_save_cache ($values, $cache_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1189,7 +1198,7 @@ function netflow_draw_item ($start_date, $end_date, $interval_length, $type, $fi
|
||||||
if ($interval_length != 0) {
|
if ($interval_length != 0) {
|
||||||
$html .= " <b>" . _('Resolution') . ":</b> $interval_length " . __('seconds');
|
$html .= " <b>" . _('Resolution') . ":</b> $interval_length " . __('seconds');
|
||||||
}
|
}
|
||||||
$html .= netflow_data_table ($data, $start_date, $end_date, $aggregate);
|
$html .= netflow_data_table ($data, $start_date, $end_date, $aggregate, $unit);
|
||||||
return $html;
|
return $html;
|
||||||
} else if ($output == 'XML') {
|
} else if ($output == 'XML') {
|
||||||
$xml = "<unit>$unit</unit>\n";
|
$xml = "<unit>$unit</unit>\n";
|
||||||
|
@ -1207,13 +1216,15 @@ function netflow_draw_item ($start_date, $end_date, $interval_length, $type, $fi
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($output == 'HTML' || $output == 'PDF') {
|
if ($output == 'HTML' || $output == 'PDF') {
|
||||||
return netflow_stat_table ($data, $start_date, $end_date, $aggregate, $unit);
|
$html = netflow_stat_table ($data, $start_date, $end_date, $aggregate, $unit);
|
||||||
|
return $html;
|
||||||
} else if ($output == 'XML') {
|
} else if ($output == 'XML') {
|
||||||
return netflow_stat_xml ($data);
|
return netflow_stat_xml ($data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
case 'netflow_summary':
|
case 'netflow_summary':
|
||||||
|
|
||||||
$data = netflow_get_summary ($start_date, $end_date, $filter, $unique_id, $connection_name);
|
$data = netflow_get_summary ($start_date, $end_date, $filter, $unique_id, $connection_name);
|
||||||
if (empty ($data)) {
|
if (empty ($data)) {
|
||||||
break;
|
break;
|
||||||
|
@ -1293,7 +1304,7 @@ function netflow_xml_report ($id, $start_date, $end_date, $interval_length = 0)
|
||||||
echo " </filter>\n";
|
echo " </filter>\n";
|
||||||
|
|
||||||
// Build a unique id for the cache
|
// Build a unique id for the cache
|
||||||
$unique_id = $report['id_report'] . '_' . $content['id_rc'] . '_' . ($end_date - $start_date);
|
$unique_id = netflow_generate_unique_id ($content["type"], $filter, $start_date);
|
||||||
|
|
||||||
echo netflow_draw_item ($start_date, $end_date, $interval_length, $content['show_graph'], $filter, $content['max'], $unique_id, $report['server_name'], 'XML');
|
echo netflow_draw_item ($start_date, $end_date, $interval_length, $content['show_graph'], $filter, $content['max'], $unique_id, $report['server_name'], 'XML');
|
||||||
|
|
||||||
|
@ -1421,4 +1432,79 @@ function netflow_summary_xml ($data) {
|
||||||
return $xml;
|
return $xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a unique id for the netflow cache.
|
||||||
|
*
|
||||||
|
* @param string Chart type.
|
||||||
|
* @param string Netflow filter.
|
||||||
|
* @param string Chart start date.
|
||||||
|
*/
|
||||||
|
function netflow_generate_unique_id ($type, $filter, $start_date) {
|
||||||
|
|
||||||
|
switch ($type) {
|
||||||
|
case '0':
|
||||||
|
case 'netflow_area':
|
||||||
|
case '2':
|
||||||
|
case 'netflow_data':
|
||||||
|
$source = 'data';
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
case 'netflow_pie':
|
||||||
|
case '3':
|
||||||
|
case 'netflow_statistics':
|
||||||
|
$source = 'stats';
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
case 'netflow_summary':
|
||||||
|
$source = 'summary';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $source . '_' . $filter['id_sg'] . '_' . $start_date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a string describing the given unit.
|
||||||
|
*
|
||||||
|
* @param string Netflow unit.
|
||||||
|
*/
|
||||||
|
function netflow_format_unit ($unit) {
|
||||||
|
switch ($unit){
|
||||||
|
case 'megabytes':
|
||||||
|
return __('MBytes');
|
||||||
|
case 'megabytespersecond':
|
||||||
|
return __('MBytes/s');
|
||||||
|
case 'kilobytes':
|
||||||
|
return __('kBytes');
|
||||||
|
case 'kilobytespersecond':
|
||||||
|
return __('kBytes/s');
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a string describing the given aggregate.
|
||||||
|
*
|
||||||
|
* @param string Netflow aggregate.
|
||||||
|
*/
|
||||||
|
function netflow_format_aggregate ($aggregate) {
|
||||||
|
switch ($aggregate){
|
||||||
|
case 'dstport':
|
||||||
|
return __('Dst port');
|
||||||
|
case 'dstip':
|
||||||
|
return __('Dst IP');
|
||||||
|
case 'proto':
|
||||||
|
return __('Protocol');
|
||||||
|
case 'srcip':
|
||||||
|
return __('Src IP');
|
||||||
|
case 'srcport':
|
||||||
|
return __('Src port');
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -4922,8 +4922,8 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f
|
||||||
$description = $filter['id_name'];
|
$description = $filter['id_name'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build a unique id for the cache
|
// Generate a unique id for the cache
|
||||||
$unique_id = $report_id . '_' . $content_id . '_' . ($end_date - $start_date);
|
$unique_id = netflow_generate_unique_id ($content["type"], $filter, $start_date);
|
||||||
|
|
||||||
$table->colspan[0][0] = 4;
|
$table->colspan[0][0] = 4;
|
||||||
$table->data[0][0] = '<h4>' . $description . '</h4>';
|
$table->data[0][0] = '<h4>' . $description . '</h4>';
|
||||||
|
|
|
@ -85,7 +85,7 @@ $update_date = (int) get_parameter('update_date', 0);
|
||||||
$date = get_parameter_post ('date', date ("Y/m/d", get_system_time ()));
|
$date = get_parameter_post ('date', date ("Y/m/d", get_system_time ()));
|
||||||
$time = get_parameter_post ('time', date ("H:i:s", get_system_time ()));
|
$time = get_parameter_post ('time', date ("H:i:s", get_system_time ()));
|
||||||
$connection_name = get_parameter('connection_name', '');
|
$connection_name = get_parameter('connection_name', '');
|
||||||
$interval_length = (int) get_parameter('interval_length', 0);
|
$interval_length = (int) get_parameter('interval_length', 300);
|
||||||
|
|
||||||
// Read buttons
|
// Read buttons
|
||||||
$draw = get_parameter('draw_button', '');
|
$draw = get_parameter('draw_button', '');
|
||||||
|
@ -159,7 +159,7 @@ echo '<form method="post" action="' . $config['homeurl'] . 'index.php?sec=netf&s
|
||||||
|
|
||||||
$table->data[0][2] = '<b>'.__('Interval').'</b>';
|
$table->data[0][2] = '<b>'.__('Interval').'</b>';
|
||||||
$table->data[0][3] = html_print_select (netflow_get_valid_intervals (), 'period', $period, '', '', 0, true, false, false);
|
$table->data[0][3] = html_print_select (netflow_get_valid_intervals (), 'period', $period, '', '', 0, true, false, false);
|
||||||
$table->data[0][4] = '<b>'.__('Subinterval') . ui_print_help_tip (__("The interval will be divided in chunks the length of the subinterval"), true) . '</b>';
|
$table->data[0][4] = '<b>'.__('Resolution') . ui_print_help_tip (__("The interval will be divided in chunks the length of the resolution."), true) . '</b>';
|
||||||
$table->data[0][5] = html_print_select (netflow_get_valid_subintervals (), 'interval_length', $interval_length, '', '', 0, true, false, false);
|
$table->data[0][5] = html_print_select (netflow_get_valid_subintervals (), 'interval_length', $interval_length, '', '', 0, true, false, false);
|
||||||
$table->data[0][6] = '<b>'.__('Type').'</b>';
|
$table->data[0][6] = '<b>'.__('Type').'</b>';
|
||||||
$table->data[0][7] = html_print_select (netflow_get_chart_types (), 'chart_type', $chart_type,'','',0,true);
|
$table->data[0][7] = html_print_select (netflow_get_chart_types (), 'chart_type', $chart_type,'','',0,true);
|
||||||
|
@ -253,10 +253,11 @@ if ($draw != '') {
|
||||||
// Get the command to call nfdump
|
// Get the command to call nfdump
|
||||||
$command = netflow_get_command ($filter);
|
$command = netflow_get_command ($filter);
|
||||||
|
|
||||||
// Build a unique id for the cache
|
// Disable the netflow cache
|
||||||
$unique_id = 'live_view__' . ($end_date - $start_date);
|
$unique_id = '';
|
||||||
|
|
||||||
// Draw
|
// Draw
|
||||||
|
echo "<br/>";
|
||||||
echo netflow_draw_item ($start_date, $end_date, $interval_length, $chart_type, $filter, $max_aggregates, $unique_id, $connection_name);
|
echo netflow_draw_item ($start_date, $end_date, $interval_length, $chart_type, $filter, $max_aggregates, $unique_id, $connection_name);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue