Merge branch 'develop' into ent-9771-discovery-2-0-sistema-de-extensiones-disco-para-el-discovery
This commit is contained in:
commit
092e1dfd62
|
@ -44,6 +44,23 @@ ALTER TABLE `trecon_task`
|
||||||
ADD COLUMN `executions_timeout` int unsigned NOT NULL DEFAULT 60,
|
ADD COLUMN `executions_timeout` int unsigned NOT NULL DEFAULT 60,
|
||||||
ADD FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE;
|
ADD FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `tnetwork_explorer_filter` (
|
||||||
|
`id` INT NOT NULL,
|
||||||
|
`filter_name` VARCHAR(45) NULL,
|
||||||
|
`top` VARCHAR(45) NULL,
|
||||||
|
`action` VARCHAR(45) NULL,
|
||||||
|
`advanced_filter` TEXT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `tnetwork_usage_filter` (
|
||||||
|
`id` INT NOT NULL auto_increment,
|
||||||
|
`filter_name` VARCHAR(45) NULL,
|
||||||
|
`top` VARCHAR(45) NULL,
|
||||||
|
`action` VARCHAR(45) NULL,
|
||||||
|
`advanced_filter` TEXT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
ALTER TABLE `tlayout`
|
ALTER TABLE `tlayout`
|
||||||
ADD COLUMN `grid_color` VARCHAR(45) NOT NULL DEFAULT '#cccccc' AFTER `maintenance_mode`,
|
ADD COLUMN `grid_color` VARCHAR(45) NOT NULL DEFAULT '#cccccc' AFTER `maintenance_mode`,
|
||||||
|
|
|
@ -1734,7 +1734,12 @@ function netflow_get_top_summary(
|
||||||
switch ($top_action) {
|
switch ($top_action) {
|
||||||
case 'listeners':
|
case 'listeners':
|
||||||
if (empty(!$filter)) {
|
if (empty(!$filter)) {
|
||||||
|
if (!is_array($filter)) {
|
||||||
$netflow_filter['ip_src'] = $filter;
|
$netflow_filter['ip_src'] = $filter;
|
||||||
|
} else {
|
||||||
|
$netflow_filter['ip_src'] = $filter['ip'];
|
||||||
|
$netflow_filter['advanced_filter'] = $filter['advanced_filter'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sort = 'dstip';
|
$sort = 'dstip';
|
||||||
|
@ -1742,7 +1747,12 @@ function netflow_get_top_summary(
|
||||||
|
|
||||||
case 'talkers':
|
case 'talkers':
|
||||||
if (empty(!$filter)) {
|
if (empty(!$filter)) {
|
||||||
|
if (!is_array($filter)) {
|
||||||
$netflow_filter['ip_dst'] = $filter;
|
$netflow_filter['ip_dst'] = $filter;
|
||||||
|
} else {
|
||||||
|
$netflow_filter['ip_dst'] = $filter['ip'];
|
||||||
|
$netflow_filter['advanced_filter'] = $filter['advanced_filter'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sort = 'srcip';
|
$sort = 'srcip';
|
||||||
|
@ -2069,7 +2079,7 @@ function netflow_aggregate_is_ip($aggregate)
|
||||||
*
|
*
|
||||||
* @return array With map structure.
|
* @return array With map structure.
|
||||||
*/
|
*/
|
||||||
function netflow_build_map_data($start_date, $end_date, $top, $aggregate)
|
function netflow_build_map_data($start_date, $end_date, $top, $aggregate, $advanced_filter='')
|
||||||
{
|
{
|
||||||
// Pass an empty filter data structure.
|
// Pass an empty filter data structure.
|
||||||
$data = netflow_get_relationships_raw_data(
|
$data = netflow_get_relationships_raw_data(
|
||||||
|
@ -2083,7 +2093,7 @@ function netflow_build_map_data($start_date, $end_date, $top, $aggregate)
|
||||||
'ip_src' => '',
|
'ip_src' => '',
|
||||||
'dst_port' => '',
|
'dst_port' => '',
|
||||||
'src_port' => '',
|
'src_port' => '',
|
||||||
'advanced_filter' => '',
|
'advanced_filter' => $advanced_filter,
|
||||||
'router_ip' => '',
|
'router_ip' => '',
|
||||||
],
|
],
|
||||||
$top,
|
$top,
|
||||||
|
|
|
@ -39,10 +39,26 @@ if (! check_acl($config['id_user'], 0, 'AR')) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ajax callbacks.
|
||||||
|
if (is_ajax() === true) {
|
||||||
|
$get_filter_values = get_parameter('get_filter_values', 0);
|
||||||
|
// Get values of the current network filter.
|
||||||
|
if ($get_filter_values) {
|
||||||
|
$id = get_parameter('id');
|
||||||
|
$filter_values = db_get_row_filter('tnetwork_explorer_filter', ['id' => $id]);
|
||||||
|
// Decode HTML entities.
|
||||||
|
$filter_values['advanced_filter'] = io_safe_output($filter_values['advanced_filter']);
|
||||||
|
echo json_encode($filter_values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Include JS timepicker.
|
// Include JS timepicker.
|
||||||
ui_include_time_picker();
|
ui_include_time_picker();
|
||||||
|
|
||||||
// Query params and other initializations.
|
// Query params and other initializations.
|
||||||
|
$filter_id = (int) get_parameter('filter_id', 0);
|
||||||
$time_greater = get_parameter('time_greater', date(TIME_FORMAT));
|
$time_greater = get_parameter('time_greater', date(TIME_FORMAT));
|
||||||
$date_greater = get_parameter('date_greater', date(DATE_FORMAT));
|
$date_greater = get_parameter('date_greater', date(DATE_FORMAT));
|
||||||
$utimestamp_greater = strtotime($date_greater.' '.$time_greater);
|
$utimestamp_greater = strtotime($date_greater.' '.$time_greater);
|
||||||
|
@ -59,6 +75,13 @@ $top = (int) get_parameter('top', 10);
|
||||||
$main_value = ((bool) get_parameter('remove_filter', 0)) ? '' : get_parameter('main_value', '');
|
$main_value = ((bool) get_parameter('remove_filter', 0)) ? '' : get_parameter('main_value', '');
|
||||||
if (is_numeric($main_value) && !in_array($action, ['udp', 'tcp'])) {
|
if (is_numeric($main_value) && !in_array($action, ['udp', 'tcp'])) {
|
||||||
$main_value = '';
|
$main_value = '';
|
||||||
|
} else {
|
||||||
|
$filter['ip'] = $main_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$advanced_filter = get_parameter('advanced_filter', '');
|
||||||
|
if ($advanced_filter !== '') {
|
||||||
|
$filter['advanced_filter'] = $advanced_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
$order_by = get_parameter('order_by', 'bytes');
|
$order_by = get_parameter('order_by', 'bytes');
|
||||||
|
@ -66,30 +89,143 @@ if (!in_array($order_by, ['bytes', 'pkts', 'flows'])) {
|
||||||
$order_by = 'bytes';
|
$order_by = 'bytes';
|
||||||
}
|
}
|
||||||
|
|
||||||
$style_end = ($is_period) ? 'display: none;' : '';
|
$save = get_parameter('save_button', '');
|
||||||
$style_period = ($is_period) ? '' : 'display: none;';
|
$update = get_parameter('update_button', '');
|
||||||
|
|
||||||
|
// Save user defined filter.
|
||||||
|
if ($save != '' && check_acl($config['id_user'], 0, 'AW')) {
|
||||||
|
// Save filter args.
|
||||||
|
$data['filter_name'] = get_parameter('filter_name');
|
||||||
|
$data['top'] = $top;
|
||||||
|
$data['action'] = $action;
|
||||||
|
$data['advanced_filter'] = $advanced_filter;
|
||||||
|
|
||||||
|
|
||||||
|
$filter_id = db_process_sql_insert('tnetwork_explorer_filter', $data);
|
||||||
|
if ($filter_id === false) {
|
||||||
|
$filter_id = 0;
|
||||||
|
ui_print_error_message(__('Error creating filter'));
|
||||||
|
} else {
|
||||||
|
ui_print_success_message(__('Filter created successfully'));
|
||||||
|
}
|
||||||
|
} else if ($update != '' && check_acl($config['id_user'], 0, 'AW')) {
|
||||||
|
// Update current filter.
|
||||||
|
// Do not update the filter name and group.
|
||||||
|
$data['top'] = $top;
|
||||||
|
$data['action'] = $action;
|
||||||
|
$data['advanced_filter'] = $advanced_filter;
|
||||||
|
|
||||||
|
$result = db_process_sql_update(
|
||||||
|
'tnetwork_explorer_filter',
|
||||||
|
$data,
|
||||||
|
['id' => $filter_id]
|
||||||
|
);
|
||||||
|
ui_print_result_message(
|
||||||
|
$result,
|
||||||
|
__('Filter updated successfully'),
|
||||||
|
__('Error updating filter')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Build the table.
|
// Build the table.
|
||||||
$table = new stdClass();
|
$filterTable = new stdClass();
|
||||||
$table->class = 'filter-table-adv';
|
$filterTable->id = '';
|
||||||
$table->width = '100%';
|
$filterTable->class = 'filter-table-adv';
|
||||||
$table->data = [];
|
$filterTable->size = [];
|
||||||
|
$filterTable->size[0] = '33%';
|
||||||
|
$filterTable->size[1] = '33%';
|
||||||
|
$filterTable->size[2] = '33%';
|
||||||
|
$filterTable->data = [];
|
||||||
|
|
||||||
$table->data[0][] = html_print_label_input_block(
|
$filterTable->data[0][0] = html_print_label_input_block(
|
||||||
__('Data to show'),
|
__('Interval'),
|
||||||
html_print_select(
|
html_print_extended_select_for_time(
|
||||||
network_get_report_actions(false),
|
'period',
|
||||||
'action',
|
$period,
|
||||||
$action,
|
|
||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
0,
|
0,
|
||||||
|
false,
|
||||||
|
true
|
||||||
|
),
|
||||||
|
[ 'div_id' => 'period_container' ]
|
||||||
|
);
|
||||||
|
|
||||||
|
$filterTable->data[0][0] .= html_print_label_input_block(
|
||||||
|
__('Start date'),
|
||||||
|
html_print_div(
|
||||||
|
[
|
||||||
|
'class' => '',
|
||||||
|
'content' => html_print_input_text(
|
||||||
|
'date_lower',
|
||||||
|
$date_lower,
|
||||||
|
false,
|
||||||
|
13,
|
||||||
|
10,
|
||||||
|
true
|
||||||
|
).html_print_image(
|
||||||
|
'images/calendar_view_day.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'alt' => 'calendar',
|
||||||
|
'class' => 'main_menu_icon invert_filter',
|
||||||
|
]
|
||||||
|
).html_print_input_text(
|
||||||
|
'time_lower',
|
||||||
|
$time_lower,
|
||||||
|
false,
|
||||||
|
10,
|
||||||
|
8,
|
||||||
|
true
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
),
|
||||||
|
[ 'div_id' => 'end_date_container' ]
|
||||||
|
);
|
||||||
|
|
||||||
|
$filterTable->data[0][1] = html_print_label_input_block(
|
||||||
|
__('End date'),
|
||||||
|
html_print_div(
|
||||||
|
[
|
||||||
|
'content' => html_print_input_text(
|
||||||
|
'date',
|
||||||
|
$date_greater,
|
||||||
|
false,
|
||||||
|
13,
|
||||||
|
10,
|
||||||
|
true
|
||||||
|
).html_print_image(
|
||||||
|
'images/calendar_view_day.png',
|
||||||
|
true,
|
||||||
|
['alt' => 'calendar']
|
||||||
|
).html_print_input_text(
|
||||||
|
'time',
|
||||||
|
$time_greater,
|
||||||
|
false,
|
||||||
|
10,
|
||||||
|
8,
|
||||||
|
true
|
||||||
|
),
|
||||||
|
],
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$table->data[0][] = html_print_label_input_block(
|
$filterTable->data[0][2] = html_print_label_input_block(
|
||||||
__('Number of result to show'),
|
__('Defined period'),
|
||||||
|
html_print_checkbox_switch(
|
||||||
|
'is_period',
|
||||||
|
1,
|
||||||
|
($is_period === true) ? 1 : 0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'nf_view_click_period()'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$filterTable->data[1][] = html_print_label_input_block(
|
||||||
|
__('Results to show'),
|
||||||
html_print_select(
|
html_print_select(
|
||||||
[
|
[
|
||||||
'5' => 5,
|
'5' => 5,
|
||||||
|
@ -110,95 +246,62 @@ $table->data[0][] = html_print_label_input_block(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$table->data[1][] = html_print_label_input_block(
|
$filterTable->data[1][] = html_print_label_input_block(
|
||||||
__('Start date'),
|
__('Data to show'),
|
||||||
html_print_div(
|
html_print_select(
|
||||||
[
|
network_get_report_actions(),
|
||||||
'id' => 'end_date_container',
|
'action',
|
||||||
'content' => html_print_input_text(
|
$action,
|
||||||
'date_lower',
|
|
||||||
$date_lower,
|
|
||||||
'',
|
|
||||||
10,
|
|
||||||
10,
|
|
||||||
true
|
|
||||||
).html_print_input_text(
|
|
||||||
'time_lower',
|
|
||||||
$time_lower,
|
|
||||||
'',
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
true
|
|
||||||
),
|
|
||||||
],
|
|
||||||
true
|
|
||||||
).html_print_div(
|
|
||||||
[
|
|
||||||
'id' => 'period_container',
|
|
||||||
'style' => 'display: none;',
|
|
||||||
'content' => html_print_label_input_block(
|
|
||||||
'',
|
|
||||||
html_print_extended_select_for_time(
|
|
||||||
'period',
|
|
||||||
$period,
|
|
||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
0,
|
0,
|
||||||
false,
|
|
||||||
true
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$table->data[1][] = html_print_label_input_block(
|
$advanced_toggle = new stdClass();
|
||||||
__('End date'),
|
$advanced_toggle->class = 'filter-table-adv';
|
||||||
html_print_div(
|
$advanced_toggle->size = [];
|
||||||
[
|
$advanced_toggle->size[0] = '50%';
|
||||||
'id' => '',
|
$advanced_toggle->size[1] = '50%';
|
||||||
'class' => '',
|
$advanced_toggle->width = '100%';
|
||||||
'content' => html_print_input_text(
|
$user_groups = users_get_groups($config['id_user'], 'AR', $own_info['is_admin'], true);
|
||||||
'date_greater',
|
$user_groups[0] = 0;
|
||||||
$date_greater,
|
// Add all groups.
|
||||||
'',
|
$sql = 'SELECT * FROM tnetwork_explorer_filter';
|
||||||
10,
|
$advanced_toggle->data[0][0] = html_print_label_input_block(
|
||||||
10,
|
__('Load Filter'),
|
||||||
true
|
html_print_select_from_sql($sql, 'filter_id', $filter_id, '', __('Select a filter'), 0, true, false, true, false, 'width:100%;')
|
||||||
).html_print_input_text(
|
|
||||||
'time_greater',
|
|
||||||
$time_greater,
|
|
||||||
'',
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
true
|
|
||||||
),
|
|
||||||
],
|
|
||||||
true
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
$advanced_toggle->data[0][1] = html_print_label_input_block(
|
||||||
$table->data[2][] = html_print_label_input_block(
|
__('Filter name'),
|
||||||
__('Defined period'),
|
html_print_input_text('filter_name', '', false, 40, 45, true, false, false, '', 'w100p')
|
||||||
html_print_checkbox_switch(
|
);
|
||||||
'is_period',
|
$advanced_toggle->colspan[1][0] = 2;
|
||||||
1,
|
$advanced_toggle->data[1][0] = html_print_label_input_block(
|
||||||
($is_period === true) ? 1 : 0,
|
__('Filter').ui_print_help_icon('pcap_filter', true),
|
||||||
|
html_print_textarea('advanced_filter', 4, 10, $advanced_filter, 'style="width:100%"', true)
|
||||||
|
);
|
||||||
|
$filterTable->colspan[2][0] = 3;
|
||||||
|
$filterTable->data[2][0] = html_print_label_input_block(
|
||||||
|
'',
|
||||||
|
ui_toggle(
|
||||||
|
html_print_table($advanced_toggle, true),
|
||||||
|
__('Advanced'),
|
||||||
|
'',
|
||||||
|
'',
|
||||||
true,
|
true,
|
||||||
false,
|
true,
|
||||||
'network_report_click_period(event)'
|
'',
|
||||||
|
'white-box-content',
|
||||||
|
'box-flat white_table_graph'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
echo '<form method="post">';
|
$filterInputTable = '<form method="POST">';
|
||||||
html_print_input_hidden('order_by', $order_by);
|
$filterInputTable .= html_print_input_hidden('order_by', $order_by);
|
||||||
if (empty($main_value) === false) {
|
$filterInputTable .= html_print_table($filterTable, true);
|
||||||
html_print_input_hidden('main_value', $main_value);
|
$filterInputTable .= html_print_div(
|
||||||
}
|
|
||||||
|
|
||||||
$outputTable = html_print_table($table, true);
|
|
||||||
$outputTable .= html_print_div(
|
|
||||||
[
|
[
|
||||||
'class' => 'action-buttons-right-forced',
|
'class' => 'action-buttons-right-forced',
|
||||||
'content' => html_print_submit_button(
|
'content' => html_print_submit_button(
|
||||||
|
@ -210,19 +313,48 @@ $outputTable .= html_print_div(
|
||||||
'mode' => 'mini',
|
'mode' => 'mini',
|
||||||
],
|
],
|
||||||
true
|
true
|
||||||
|
).html_print_submit_button(
|
||||||
|
__('Save as new filter'),
|
||||||
|
'save_button',
|
||||||
|
false,
|
||||||
|
[
|
||||||
|
'icon' => 'load',
|
||||||
|
'onClick' => 'return defineFilterName();',
|
||||||
|
'mode' => 'mini secondary',
|
||||||
|
'class' => 'mrgn_right_10px',
|
||||||
|
],
|
||||||
|
true
|
||||||
|
).html_print_submit_button(
|
||||||
|
__('Update current filter'),
|
||||||
|
'update_button',
|
||||||
|
false,
|
||||||
|
[
|
||||||
|
'icon' => 'load',
|
||||||
|
'mode' => 'mini secondary',
|
||||||
|
'class' => 'mrgn_right_10px',
|
||||||
|
],
|
||||||
|
true
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
$filterInputTable .= html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'action-buttons',
|
||||||
|
'content' => $netflow_button,
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$filterInputTable .= '</form>';
|
||||||
ui_toggle(
|
ui_toggle(
|
||||||
$outputTable,
|
$filterInputTable,
|
||||||
'<span class="subsection_header_title">'.__('Filters').'</span>',
|
'<span class="subsection_header_title">'.__('Filter').'</span>',
|
||||||
__('Filters'),
|
__('Filter'),
|
||||||
'',
|
'search',
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
'',
|
'',
|
||||||
'white-box-content',
|
'white-box-content no_border',
|
||||||
'box-flat white_table_graph fixed_filter_bar'
|
'box-flat white_table_graph fixed_filter_bar'
|
||||||
);
|
);
|
||||||
html_print_action_buttons(
|
html_print_action_buttons(
|
||||||
|
@ -246,7 +378,7 @@ $data = netflow_get_top_summary(
|
||||||
$action,
|
$action,
|
||||||
$utimestamp_lower,
|
$utimestamp_lower,
|
||||||
$utimestamp_greater,
|
$utimestamp_greater,
|
||||||
$main_value,
|
$filter,
|
||||||
$order_by
|
$order_by
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -450,6 +582,26 @@ if (empty($data)) {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<script>
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
nf_view_click_period();
|
||||||
|
|
||||||
|
$('#filter_id').change(function(){
|
||||||
|
jQuery.post (
|
||||||
|
"ajax.php",
|
||||||
|
{
|
||||||
|
"page" : "operation/network/network_report",
|
||||||
|
"get_filter_values" : 1,
|
||||||
|
"id": $(this).val(),
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
$('#action').val(data.action).trigger('change');
|
||||||
|
$('#top').val(data.top).trigger('change');
|
||||||
|
$('#textarea_advanced_filter').val(data.advanced_filter);
|
||||||
|
$('select#filter_id').select2('close');
|
||||||
|
}, 'json');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Configure jQuery timepickers.
|
// Configure jQuery timepickers.
|
||||||
$("#text-time_lower, #text-time_greater").timepicker({
|
$("#text-time_lower, #text-time_greater").timepicker({
|
||||||
showSecond: true,
|
showSecond: true,
|
||||||
|
@ -472,4 +624,11 @@ function network_report_click_period(event) {
|
||||||
document.getElementById('period_container').style.display = !is_period ? 'none' : 'block';
|
document.getElementById('period_container').style.display = !is_period ? 'none' : 'block';
|
||||||
document.getElementById('end_date_container').style.display = is_period ? 'none' : 'block';
|
document.getElementById('end_date_container').style.display = is_period ? 'none' : 'block';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function nf_view_click_period() {
|
||||||
|
var is_period = document.getElementById('checkbox-is_period').checked;
|
||||||
|
|
||||||
|
document.getElementById('period_container').style.display = !is_period ? 'none' : 'flex';
|
||||||
|
document.getElementById('end_date_container').style.display = is_period ? 'none' : 'flex';
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -34,6 +34,21 @@ global $config;
|
||||||
|
|
||||||
check_login();
|
check_login();
|
||||||
|
|
||||||
|
// Ajax callbacks.
|
||||||
|
if (is_ajax() === true) {
|
||||||
|
$get_filter_values = get_parameter('get_filter_values', 0);
|
||||||
|
// Get values of the current network filter.
|
||||||
|
if ($get_filter_values) {
|
||||||
|
$id = get_parameter('id');
|
||||||
|
$filter_values = db_get_row_filter('tnetwork_usage_filter', ['id' => $id]);
|
||||||
|
// Decode HTML entities.
|
||||||
|
$filter_values['advanced_filter'] = io_safe_output($filter_values['advanced_filter']);
|
||||||
|
echo json_encode($filter_values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Header.
|
// Header.
|
||||||
ui_print_standard_header(
|
ui_print_standard_header(
|
||||||
__('Network usage map'),
|
__('Network usage map'),
|
||||||
|
@ -76,6 +91,7 @@ $is_period = (bool) get_parameter('is_period', false);
|
||||||
$period = (int) get_parameter('period', SECONDS_1HOUR);
|
$period = (int) get_parameter('period', SECONDS_1HOUR);
|
||||||
$time_lower = get_parameter('time_lower', date(TIME_FORMAT, ($utimestamp_greater - $period)));
|
$time_lower = get_parameter('time_lower', date(TIME_FORMAT, ($utimestamp_greater - $period)));
|
||||||
$date_lower = get_parameter('date_lower', date(DATE_FORMAT, ($utimestamp_greater - $period)));
|
$date_lower = get_parameter('date_lower', date(DATE_FORMAT, ($utimestamp_greater - $period)));
|
||||||
|
$advanced_filter = get_parameter('advanced_filter', '');
|
||||||
$utimestamp_lower = ($is_period) ? ($utimestamp_greater - $period) : strtotime($date_lower.' '.$time_lower);
|
$utimestamp_lower = ($is_period) ? ($utimestamp_greater - $period) : strtotime($date_lower.' '.$time_lower);
|
||||||
if (!$is_period) {
|
if (!$is_period) {
|
||||||
$period = ($utimestamp_greater - $utimestamp_lower);
|
$period = ($utimestamp_greater - $utimestamp_lower);
|
||||||
|
@ -88,6 +104,44 @@ if (in_array($order_by, ['bytes', 'pkts', 'flows']) === false) {
|
||||||
$order_by = 'bytes';
|
$order_by = 'bytes';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$save = get_parameter('save_button', '');
|
||||||
|
$update = get_parameter('update_button', '');
|
||||||
|
|
||||||
|
// Save user defined filter.
|
||||||
|
if ($save != '' && check_acl($config['id_user'], 0, 'AW')) {
|
||||||
|
// Save filter args.
|
||||||
|
$data['filter_name'] = get_parameter('filter_name');
|
||||||
|
$data['top'] = $top;
|
||||||
|
$data['action'] = $action;
|
||||||
|
$data['advanced_filter'] = $advanced_filter;
|
||||||
|
|
||||||
|
|
||||||
|
$filter_id = db_process_sql_insert('tnetwork_usage_filter', $data);
|
||||||
|
if ($filter_id === false) {
|
||||||
|
$filter_id = 0;
|
||||||
|
ui_print_error_message(__('Error creating filter'));
|
||||||
|
} else {
|
||||||
|
ui_print_success_message(__('Filter created successfully'));
|
||||||
|
}
|
||||||
|
} else if ($update != '' && check_acl($config['id_user'], 0, 'AW')) {
|
||||||
|
// Update current filter.
|
||||||
|
// Do not update the filter name and group.
|
||||||
|
$data['top'] = $top;
|
||||||
|
$data['action'] = $action;
|
||||||
|
$data['advanced_filter'] = $advanced_filter;
|
||||||
|
|
||||||
|
$result = db_process_sql_update(
|
||||||
|
'tnetwork_usage_filter',
|
||||||
|
$data,
|
||||||
|
['id' => $filter_id]
|
||||||
|
);
|
||||||
|
ui_print_result_message(
|
||||||
|
$result,
|
||||||
|
__('Filter updated successfully'),
|
||||||
|
__('Error updating filter')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if ((bool) $config['activate_netflow'] === true) {
|
if ((bool) $config['activate_netflow'] === true) {
|
||||||
$netflow_button = html_print_submit_button(
|
$netflow_button = html_print_submit_button(
|
||||||
__('Show netflow map'),
|
__('Show netflow map'),
|
||||||
|
@ -95,6 +149,27 @@ if ((bool) $config['activate_netflow'] === true) {
|
||||||
false,
|
false,
|
||||||
['icon' => 'update'],
|
['icon' => 'update'],
|
||||||
true
|
true
|
||||||
|
).html_print_submit_button(
|
||||||
|
__('Save as new filter'),
|
||||||
|
'save_button',
|
||||||
|
false,
|
||||||
|
[
|
||||||
|
'icon' => 'load',
|
||||||
|
'onClick' => 'return defineFilterName();',
|
||||||
|
'mode' => 'mini secondary',
|
||||||
|
'class' => 'mrgn_right_10px',
|
||||||
|
],
|
||||||
|
true
|
||||||
|
).html_print_submit_button(
|
||||||
|
__('Update current filter'),
|
||||||
|
'update_button',
|
||||||
|
false,
|
||||||
|
[
|
||||||
|
'icon' => 'load',
|
||||||
|
'mode' => 'mini secondary',
|
||||||
|
'class' => 'mrgn_right_10px',
|
||||||
|
],
|
||||||
|
true
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$netflow_button = '';
|
$netflow_button = '';
|
||||||
|
@ -232,6 +307,44 @@ $filterTable->data[1][] = html_print_label_input_block(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$advanced_toggle = new stdClass();
|
||||||
|
$advanced_toggle->class = 'filter-table-adv';
|
||||||
|
$advanced_toggle->size = [];
|
||||||
|
$advanced_toggle->size[0] = '50%';
|
||||||
|
$advanced_toggle->size[1] = '50%';
|
||||||
|
$advanced_toggle->width = '100%';
|
||||||
|
$user_groups = users_get_groups($config['id_user'], 'AR', $own_info['is_admin'], true);
|
||||||
|
$user_groups[0] = 0;
|
||||||
|
$sql = 'SELECT * FROM tnetwork_usage_filter';
|
||||||
|
$advanced_toggle->data[0][0] = html_print_label_input_block(
|
||||||
|
__('Load Filter'),
|
||||||
|
html_print_select_from_sql($sql, 'filter_id', $filter_id, '', __('Select a filter'), 0, true, false, true, false, 'width:100%;')
|
||||||
|
);
|
||||||
|
$advanced_toggle->data[0][1] = html_print_label_input_block(
|
||||||
|
__('Filter name'),
|
||||||
|
html_print_input_text('filter_name', '', false, 40, 45, true, false, false, '', 'w100p')
|
||||||
|
);
|
||||||
|
$advanced_toggle->colspan[1][0] = 2;
|
||||||
|
$advanced_toggle->data[1][0] = html_print_label_input_block(
|
||||||
|
__('Filter').ui_print_help_icon('pcap_filter', true),
|
||||||
|
html_print_textarea('advanced_filter', 4, 10, $advanced_filter, 'style="width:100%"', true)
|
||||||
|
);
|
||||||
|
$filterTable->colspan[2][0] = 3;
|
||||||
|
$filterTable->data[2][0] = html_print_label_input_block(
|
||||||
|
'',
|
||||||
|
ui_toggle(
|
||||||
|
html_print_table($advanced_toggle, true),
|
||||||
|
__('Advanced'),
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
'white-box-content',
|
||||||
|
'box-flat white_table_graph'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
$filterInputTable = '<form method="POST">';
|
$filterInputTable = '<form method="POST">';
|
||||||
$filterInputTable .= html_print_input_hidden('order_by', $order_by);
|
$filterInputTable .= html_print_input_hidden('order_by', $order_by);
|
||||||
$filterInputTable .= html_print_table($filterTable, true);
|
$filterInputTable .= html_print_table($filterTable, true);
|
||||||
|
@ -263,7 +376,8 @@ if ((bool) get_parameter('update_netflow') === true) {
|
||||||
$utimestamp_lower,
|
$utimestamp_lower,
|
||||||
$utimestamp_greater,
|
$utimestamp_greater,
|
||||||
$top,
|
$top,
|
||||||
($action === 'talkers') ? 'srcip' : 'dstip'
|
($action === 'talkers') ? 'srcip' : 'dstip',
|
||||||
|
$advanced_filter
|
||||||
);
|
);
|
||||||
$has_data = !empty($map_data['nodes']);
|
$has_data = !empty($map_data['nodes']);
|
||||||
}
|
}
|
||||||
|
@ -285,8 +399,24 @@ if ($has_data === true) {
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
nf_view_click_period();
|
nf_view_click_period();
|
||||||
}
|
|
||||||
);
|
$('#filter_id').change(function(){
|
||||||
|
jQuery.post (
|
||||||
|
"ajax.php",
|
||||||
|
{
|
||||||
|
"page" : "operation/network/network_usage_map",
|
||||||
|
"get_filter_values" : 1,
|
||||||
|
"id": $(this).val(),
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
$('#action').val(data.action).trigger('change');
|
||||||
|
$('#top').val(data.top).trigger('change');
|
||||||
|
$('#textarea_advanced_filter').val(data.advanced_filter);
|
||||||
|
$('select#filter_id').select2('close');
|
||||||
|
}, 'json');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Configure jQuery timepickers.
|
// Configure jQuery timepickers.
|
||||||
$("#text-time_lower, #text-time_greater").timepicker({
|
$("#text-time_lower, #text-time_greater").timepicker({
|
||||||
showSecond: true,
|
showSecond: true,
|
||||||
|
|
|
@ -4345,6 +4345,10 @@ CREATE TABLE IF NOT EXISTS `tsesion_filter_log_viewer` (
|
||||||
PRIMARY KEY (`id_filter`)
|
PRIMARY KEY (`id_filter`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Table `tdiscovery_apps_scripts`
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_scripts` (
|
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_scripts` (
|
||||||
`id_app` int(10),
|
`id_app` int(10),
|
||||||
`macro` varchar(250) NOT NULL DEFAULT '',
|
`macro` varchar(250) NOT NULL DEFAULT '',
|
||||||
|
@ -4353,6 +4357,10 @@ CREATE TABLE IF NOT EXISTS `tdiscovery_apps_scripts` (
|
||||||
FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Table `tdiscovery_apps_executions`
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_executions` (
|
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_executions` (
|
||||||
`id` int(10) unsigned NOT NULL auto_increment,
|
`id` int(10) unsigned NOT NULL auto_increment,
|
||||||
`id_app` int(10),
|
`id_app` int(10),
|
||||||
|
@ -4361,6 +4369,10 @@ CREATE TABLE IF NOT EXISTS `tdiscovery_apps_executions` (
|
||||||
FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (`id_app`) REFERENCES tdiscovery_apps(`id_app`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Table `tdiscovery_apps_tasks_macros`
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_tasks_macros` (
|
CREATE TABLE IF NOT EXISTS `tdiscovery_apps_tasks_macros` (
|
||||||
`id_task` int(10) unsigned NOT NULL,
|
`id_task` int(10) unsigned NOT NULL,
|
||||||
`macro` varchar(250) NOT NULL DEFAULT '',
|
`macro` varchar(250) NOT NULL DEFAULT '',
|
||||||
|
@ -4370,3 +4382,27 @@ CREATE TABLE IF NOT EXISTS `tdiscovery_apps_tasks_macros` (
|
||||||
PRIMARY KEY (`id_task`, `macro`),
|
PRIMARY KEY (`id_task`, `macro`),
|
||||||
FOREIGN KEY (`id_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (`id_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Table `tnetwork_explorer_filter`
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS `tnetwork_explorer_filter` (
|
||||||
|
`id` INT NOT NULL,
|
||||||
|
`filter_name` VARCHAR(45) NULL,
|
||||||
|
`top` VARCHAR(45) NULL,
|
||||||
|
`action` VARCHAR(45) NULL,
|
||||||
|
`advanced_filter` TEXT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Table `tnetwork_usage_filter`
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS `tnetwork_usage_filter` (
|
||||||
|
`id` INT NOT NULL auto_increment,
|
||||||
|
`filter_name` VARCHAR(45) NULL,
|
||||||
|
`top` VARCHAR(45) NULL,
|
||||||
|
`action` VARCHAR(45) NULL,
|
||||||
|
`advanced_filter` TEXT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
Loading…
Reference in New Issue