$id]); if (empty($advanced_filter)) { $type = 0; } else { $type = 1; } echo $type; } // Get values of the current netflow filter. if ($get_filter_values) { $id = get_parameter('id'); $filter_values = db_get_row_filter('tnetflow_filter', ['id_sg' => $id]); // Decode HTML entities. $filter_values['advanced_filter'] = io_safe_output($filter_values['advanced_filter']); echo json_encode($filter_values); } return; } // Read filter configuration. $filter_id = (int) get_parameter('filter_id', 0); $filter['id_name'] = get_parameter('name', ''); $filter['id_group'] = (int) get_parameter('assign_group', 0); $filter['aggregate'] = get_parameter('aggregate', ''); $filter['ip_dst'] = get_parameter('ip_dst', ''); $filter['ip_src'] = get_parameter('ip_src', ''); $filter['dst_port'] = get_parameter('dst_port', ''); $filter['src_port'] = get_parameter('src_port', ''); $filter['advanced_filter'] = get_parameter('advanced_filter', ''); $filter['router_ip'] = get_parameter('router_ip'); // Read chart configuration. $chart_type = get_parameter('chart_type', 'netflow_area'); $max_aggregates = (int) get_parameter('max_aggregates', 10); $update_date = (int) get_parameter('update_date', 0); $connection_name = get_parameter('connection_name', ''); $interval_length = get_parameter('interval_length', NETFLOW_RES_MEDD); $address_resolution = (int) get_parameter('address_resolution', $config['netflow_get_ip_hostname']); $filter_selected = (int) get_parameter('filter_selected', 0); // Read time values. $date = get_parameter_post('date', date(DATE_FORMAT, get_system_time())); $time = get_parameter_post('time', date(TIME_FORMAT, get_system_time())); $end_date = strtotime($date.' '.$time); $is_period = (bool) get_parameter('is_period', false); $period = (int) get_parameter('period', SECONDS_1DAY); $time_lower = get_parameter('time_lower', date(TIME_FORMAT, ($end_date - $period))); $date_lower = get_parameter('date_lower', date(DATE_FORMAT, ($end_date - $period))); $start_date = ($is_period) ? ($end_date - $period) : strtotime($date_lower.' '.$time_lower); if (!$is_period) { $period = ($end_date - $start_date); } else { $time_lower = date(TIME_FORMAT, $start_date); $date_lower = date(DATE_FORMAT, $start_date); } // Read buttons. $draw = get_parameter('draw_button', ''); $save = get_parameter('save_button', ''); $update = get_parameter('update_button', ''); if (!is_metaconsole()) { // Header. ui_print_page_header( __('Netflow live view'), 'images/op_netflow.png', false, '', false, [] ); $is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'; if ($is_windows) { ui_print_error_message(__('Not supported in Windows systems')); } else { netflow_print_check_version_error(); } } else { $nav_bar = [ [ 'link' => 'index.php?sec=main', 'text' => __('Main'), ], [ 'link' => 'index.php?sec=netf&sec2=operation/netflow/nf_live_view', 'text' => __('Netflow live view'), ], ]; ui_meta_print_page_header($nav_bar); ui_meta_print_header(__('Netflow live view')); } // Save user defined filter. if ($save != '' && check_acl($config['id_user'], 0, 'AW')) { // Save filter args. $filter['filter_args'] = netflow_get_filter_arguments($filter, true); $filter_id = db_process_sql_insert('tnetflow_filter', $filter); 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. $filter_copy = $filter; unset($filter_copy['id_name']); unset($filter_copy['id_group']); // Save filter args. $filter_copy['filter_args'] = netflow_get_filter_arguments($filter_copy, true); $result = db_process_sql_update( 'tnetflow_filter', $filter_copy, ['id_sg' => $filter_id] ); ui_print_result_message( $result, __('Filter updated successfully'), __('Error updating filter') ); } // The filter name will not be needed anymore. $filter['id_name'] = ''; $netflow_disable_custom_lvfilters = false; if (isset($config['netflow_disable_custom_lvfilters'])) { $netflow_disable_custom_lvfilters = $config['netflow_disable_custom_lvfilters']; } enterprise_hook('open_meta_frame'); $class = 'databox filters'; echo '
'; echo ""; if (is_metaconsole()) { echo ''; $list_servers = []; $servers = db_get_all_rows_sql( 'SELECT * FROM tmetaconsole_setup' ); if ($servers === false) { $servers = []; } foreach ($servers as $server) { // If connection was good then retrieve all data server. if (metaconsole_load_external_db($server)) { $connection = true; } else { $connection = false; } $row = db_get_row('tconfig', 'token', 'activate_netflow'); if ($row['value']) { $list_servers[$server['server_name']] = $server['server_name']; } metaconsole_restore_db(); } echo ''; echo ''; echo ''; echo ''; } echo ''; $class_not_period = ($is_period) ? 'nf_hidden' : 'nf_display'; $class_period = ($is_period) ? 'nf_display' : 'nf_hidden'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $max_values = [ '2' => '2', '5' => '5', '10' => '10', '15' => '15', '20' => '20', '25' => '25', '50' => '50', $max_aggregates => $max_aggregates, ]; echo ''; echo ''; $aggregate_list = []; $aggregate_list = [ 'srcip' => __('Src Ip Address'), 'dstip' => __('Dst Ip Address'), 'srcport' => __('Src Port'), 'dstport' => __('Dst Port'), ]; echo ''; echo ''; // Read filter type. if ($filter['advanced_filter'] != '') { $filter_type = 1; } else { $filter_type = 0; } echo ""; echo "'; echo ''; echo ""; echo ''; echo "'; $own_info = get_user_info($config['id_user']); echo ''; echo "'; echo ''; $advanced_toggle = '
'.__('Draw live filter').'
'.__('Connection').''.html_print_select( $list_servers, 'connection_name', $connection_name, '', '', 0, true, false, false ).'
'; echo ''.__('Interval').''; echo ''.__('Start date').''; echo ''; echo html_print_extended_select_for_time('period', $period, '', '', 0, false, true, false, true, $class_period); echo html_print_input_text('date_lower', $date_lower, false, 13, 10, true, false, false, '', $class_not_period); echo html_print_image( 'images/calendar_view_day.png', true, [ 'alt' => 'calendar', 'class' => $class_not_period, ] ).html_print_input_text('time_lower', $time_lower, false, 10, 8, true, false, false, '', $class_not_period); echo html_print_checkbox( 'is_period', 1, ($is_period === true) ? 1 : 0, true, false, 'nf_view_click_period(event)' ); echo ui_print_help_tip(__('Select this checkbox to write interval instead a date.'), true); echo ''.__('End date').''.html_print_input_text('date', $date, false, 13, 10, true).html_print_image( 'images/calendar_view_day.png', true, ['alt' => 'calendar'] ).html_print_input_text('time', $time, false, 10, 8, true); echo ''.__('Resolution').ui_print_help_tip(__('The interval will be divided in chunks the length of the resolution.'), true).''.html_print_select( netflow_resolution_select_params(), 'interval_length', $interval_length, '', '', 0, true, false, false ).'
'.__('Type').''.html_print_select( netflow_get_chart_types(), 'chart_type', $chart_type, '', '', 0, true ).''.__('Max. values').''.html_print_select($max_values, 'max_aggregates', $max_aggregates, '', '', 0, true).''.html_print_image('images/pencil.png', true, ['id' => 'pencil']).''; echo ''.__('Aggregate by').''.html_print_select($aggregate_list, 'aggregate', $filter['aggregate'], '', '', 0, true, false, true, '', false).'
'; $advanced_toggle .= ''; if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= ''; $advanced_toggle .= ''; } $advanced_toggle .= ''; $user_groups = users_get_groups($config['id_user'], 'AR', $own_info['is_admin'], true); $user_groups[0] = 0; // Add all groups. $sql = 'SELECT * FROM tnetflow_filter WHERE id_group IN ('.implode(',', array_keys($user_groups)).')'; $advanced_toggle .= "'; $advanced_toggle .= ''; $advanced_toggle .= ""; if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= "'; $advanced_toggle .= ''; } if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= "'; $advanced_toggle .= ''; } $advanced_toggle .= ''; $advanced_toggle .= ""; if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= "'; $advanced_toggle .= ''; } if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= "'; $advanced_toggle .= ''; } $advanced_toggle .= ''; $advanced_toggle .= ""; if ($netflow_disable_custom_lvfilters) { $advanced_toggle .= ''; $advanced_toggle .= ''; } else { $advanced_toggle .= ''; $advanced_toggle .= "'; } $advanced_toggle .= ''; $advanced_toggle .= ''; $onclick = "if (!confirm('".__('Warning').'. '.__('IP address resolution can take a lot of time')."')) return false;"; $radio_buttons = __('Yes').'  '.html_print_radio_button_extended( 'address_resolution', 1, '', $address_resolution, false, $onclick, '', true ).'   '; $radio_buttons .= __('No').'  '.html_print_radio_button( 'address_resolution', 0, '', $address_resolution, true ); $advanced_toggle .= ''; $advanced_toggle .= ''; $advanced_toggle .= ''; $advanced_toggle .= ''; $advanced_toggle .= ''; $advanced_toggle .= '
'.__('Filter').''.__('Normal').' '.html_print_radio_button_extended('filter_type', 0, '', $filter_type, false, 'displayNormalFilter();', 'style="margin-right: 40px;"', true).__('Custom').' '.html_print_radio_button_extended('filter_type', 1, '', $filter_type, false, 'displayAdvancedFilter();', 'style="margin-right: 40px;"', true).''.__('Load filter').'".html_print_select_from_sql($sql, 'filter_id', $filter_id, '', __('Select a filter'), 0, true); $advanced_toggle .= html_print_input_hidden('filter_selected', $filter_selected, false); $advanced_toggle .= '
".__('Dst Ip').ui_print_help_tip(__('Destination IP. A comma separated list of destination ip. If we leave the field blank, will show all ip. Example filter by ip:
25.46.157.214,160.253.135.249'), true).'
'.html_print_input_text('ip_dst', $filter['ip_dst'], false, 40, 80, true).'".__('Src Ip').ui_print_help_tip(__('Source IP. A comma separated list of source ip. If we leave the field blank, will show all ip. Example filter by ip:
25.46.157.214,160.253.135.249'), true).'
'.html_print_input_text('ip_src', $filter['ip_src'], false, 40, 80, true).'
".__('Dst Port').ui_print_help_tip(__('Destination port. A comma separated list of destination ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:
80,22'), true).'
'.html_print_input_text('dst_port', $filter['dst_port'], false, 40, 80, true).'".__('Src Port').ui_print_help_tip(__('Source port. A comma separated list of source ports. If we leave the field blank, will show all ports. Example filter by ports 80 and 22:
80,22'), true).'
'.html_print_input_text('src_port', $filter['src_port'], false, 40, 80, true).'
'.__('IP address resolution').''.ui_print_help_tip(__('Resolve the IP addresses to get their hostnames.'), true).''.$radio_buttons.''.__('Source ip').''.html_print_input_text('router_ip', $filter['router_ip'], false, 40, 80, true).'
'; echo ''; echo ui_toggle( $advanced_toggle, __('Advanced'), '', '', true, true, 'white_box white_box_opened', 'no-border flex-row' ); echo ''; echo ''; echo "
"; echo html_print_submit_button(__('Draw'), 'draw_button', false, 'class="sub upd"', true); if (!$netflow_disable_custom_lvfilters) { if (check_acl($config['id_user'], 0, 'AW')) { html_print_submit_button(__('Save as new filter'), 'save_button', false, 'style="margin-left: 5px;" class="sub upd" onClick="return defineFilterName();"'); html_print_submit_button(__('Update current filter'), 'update_button', false, 'style="margin-left: 5px;" class="sub upd"'); } } echo '
'; echo '
'; if ($draw != '') { // Draw. echo '
'; // No filter selected. if ($netflow_disable_custom_lvfilters && $filter_selected == 0) { ui_print_error_message(__('No filter selected')); } else { // Draw the netflow chart. echo netflow_draw_item( $start_date, $end_date, $interval_length, $chart_type, $filter, $max_aggregates, $connection_name, 'HTML', $address_resolution ); } } enterprise_hook('close_meta_frame'); ui_include_time_picker(); ?>