'ui-icon-menu-group ui-widget-icon-floatbeginning ui-icon-menu-square',
];
- if ((bool) $system->getConfig('legacy_vc', false) === false) {
- // Show Visual consoles only if new system is enabled.
- $items['visualmaps'] = [
- 'name' => __('Visual consoles'),
- 'filename' => 'visualmaps.php',
- 'menu_item' => true,
- 'icon' => 'ui-icon-menu-visual_console ui-widget-icon-floatbeginning ui-icon-menu-square',
- ];
- }
+ // Show Visual consoles only if new system is enabled.
+ $items['visualmaps'] = [
+ 'name' => __('Visual consoles'),
+ 'filename' => 'visualmaps.php',
+ 'menu_item' => true,
+ 'icon' => 'ui-icon-menu-visual_console ui-widget-icon-floatbeginning ui-icon-menu-square',
+ ];
$items['alerts'] = [
'name' => __('Alerts'),
diff --git a/pandora_console/operation/agentes/alerts_status.php b/pandora_console/operation/agentes/alerts_status.php
index 4db865990f..07974af99e 100755
--- a/pandora_console/operation/agentes/alerts_status.php
+++ b/pandora_console/operation/agentes/alerts_status.php
@@ -258,7 +258,8 @@ if ((bool) check_acl($config['id_user'], $id_group, 'LW') === true || (bool) che
);
}
- if ($print_agent === true) {
+ /*
+ if ($print_agent === true) {
array_push(
$column_names,
['text' => 'Agent']
@@ -268,11 +269,12 @@ if ((bool) check_acl($config['id_user'], $id_group, 'LW') === true || (bool) che
$columns,
['agent_name']
);
- }
+ }*/
}
array_push(
$column_names,
+ ['text' => 'Agent'],
['text' => 'Module'],
['text' => 'Template'],
[
@@ -286,6 +288,7 @@ array_push(
$columns = array_merge(
$columns,
+ ['agent_name'],
['agent_module_name'],
['template_name'],
['action'],
@@ -359,7 +362,7 @@ if ($agent_view_page === true) {
[
'id' => 'alerts_status_datatable',
'class' => 'info_table',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $column_names,
'no_sortable_columns' => $no_sortable_columns,
diff --git a/pandora_console/operation/agentes/graphs.php b/pandora_console/operation/agentes/graphs.php
index 3ba04acf7e..14b13c6893 100644
--- a/pandora_console/operation/agentes/graphs.php
+++ b/pandora_console/operation/agentes/graphs.php
@@ -45,7 +45,7 @@ if ((bool) check_acl($config['id_user'], $id_grupo, 'AR') === false && (bool) ch
require_once $config['homedir'].'/include/functions_graph.php';
$draw_alerts = get_parameter('draw_alerts', 0);
-$period = get_parameter('period', SECONDS_1HOUR);
+$period = (string) get_parameter('period', SECONDS_2HOUR);
$width = get_parameter('width', 555);
$height = get_parameter('height', 245);
$label = get_parameter('label', '');
@@ -53,8 +53,8 @@ $start_date = get_parameter('start_date', date('Y-m-d'));
$draw_events = get_parameter('draw_events', 0);
$modules = get_parameter('modules', []);
$filter = get_parameter('filter', 0);
-$combined = get_parameter('combined', 1);
-$option_type = get_parameter('option_type', 0);
+$combined = get_parameter('combined', 0);
+$option_type = get_parameter('option_type', 2);
// ----------------------------------------------------------------------
// Get modules of agent sorted as:
@@ -176,11 +176,12 @@ foreach ($modules_boolean as $i => $m) {
$list_modules = ($modules_networkmap_no_proc + $modules_others + $modules_boolean);
+asort($list_modules);
// ----------------------------------------------------------------------
if (empty($modules)) {
// Selected the first 6 modules.
$module_ids = array_keys($list_modules);
- $module_ids = array_slice($module_ids, 0, 6);
+ $module_ids = array_slice($module_ids, 0, 12);
$modules = $module_ids;
}
@@ -301,7 +302,7 @@ $htmlForm .= html_print_div(
$htmlForm .= '';
-ui_toggle($htmlForm, __('Filter graphs'), __('Toggle filter(s)'), '', false);
+ui_toggle($htmlForm, __('Filter graphs'), __('Toggle filter(s)'), '', true);
$utime = get_system_time();
$current = date('Y-m-d', $utime);
@@ -316,13 +317,17 @@ if ($combined) {
// Pass the $modules before the ajax call.
echo '
";
diff --git a/pandora_console/operation/agentes/pandora_networkmap.editor.php b/pandora_console/operation/agentes/pandora_networkmap.editor.php
index ac73c474aa..3dea327116 100644
--- a/pandora_console/operation/agentes/pandora_networkmap.editor.php
+++ b/pandora_console/operation/agentes/pandora_networkmap.editor.php
@@ -205,9 +205,15 @@ if ($edit_networkmap) {
$button = [];
if ($edit_networkmap === true) {
+ if (empty($method) === false && $method === 'radial_dinamic') {
+ $url = 'index.php?sec=network&sec2=operation/agentes/networkmap.dinamic&activeTab=radial_dynamic&id_networkmap='.$id;
+ } else {
+ $url = 'index.php?sec=network&sec2=operation/agentes/pandora_networkmap&tab=view&id_networkmap='.$id;
+ }
+
$button['map'] = [
'active' => false,
- 'text' => '
'.html_print_image(
'images/network@svg.svg',
true,
[
diff --git a/pandora_console/operation/agentes/pandora_networkmap.php b/pandora_console/operation/agentes/pandora_networkmap.php
index 540cd8c173..52c376b4f7 100644
--- a/pandora_console/operation/agentes/pandora_networkmap.php
+++ b/pandora_console/operation/agentes/pandora_networkmap.php
@@ -256,152 +256,164 @@ if ($new_networkmap || $save_networkmap) {
$name = (string) get_parameter('name');
- // Default size values.
- $width = $config['networkmap_max_width'];
- $height = $config['networkmap_max_width'];
-
- $method = (string) get_parameter('method', 'fdp');
-
- $recon_task_id = (int) get_parameter(
- 'recon_task_id',
- 0
+ $exist = db_get_row_filter(
+ 'tmap',
+ [
+ 'name' => $name,
+ 'id_group_map' => $id_group_map,
+ ],
);
- $ip_mask = get_parameter(
- 'ip_mask',
- ''
- );
- $source = (string) get_parameter('source', 'group');
- $dont_show_subgroups = (int) get_parameter_checkbox(
- 'dont_show_subgroups',
- 0
- );
- $node_radius = (int) get_parameter('node_radius', 40);
- $description = get_parameter('description', '');
- $offset_x = get_parameter('pos_x', 0);
- $offset_y = get_parameter('pos_y', 0);
- $scale_z = get_parameter('scale_z', 0.5);
+ if ($exist !== false) {
+ $result_txt = ui_print_error_message(__('Another network map already exists with this name and group.'));
+ } else {
+ // Default size values.
+ $width = $config['networkmap_max_width'];
+ $height = $config['networkmap_max_width'];
- $node_sep = get_parameter('node_sep', '0.25');
- $rank_sep = get_parameter('rank_sep', ($method === 'twopi') ? '1.0' : '0.5');
+ $method = (string) get_parameter('method', 'fdp');
- $mindist = get_parameter('mindist', '1.0');
- $kval = get_parameter('kval', '0.3');
-
- $refresh_time = get_parameter('refresh_time', '300');
-
- $values = [];
- $values['name'] = $name;
- $values['id_group'] = implode(',', $id_group);
- $values['source_period'] = 60;
- $values['width'] = $width;
- $values['height'] = $height;
- $values['id_user'] = $config['id_user'];
- $values['description'] = $description;
- $values['id_group_map'] = $id_group_map;
- $values['refresh_time'] = $refresh_time;
-
- switch ($method) {
- case 'twopi':
- $values['generation_method'] = LAYOUT_RADIAL;
- break;
-
- case 'dot':
- $values['generation_method'] = LAYOUT_FLAT;
- break;
-
- case 'circo':
- $values['generation_method'] = LAYOUT_CIRCULAR;
- break;
-
- case 'neato':
- $values['generation_method'] = LAYOUT_SPRING1;
- break;
-
- case 'fdp':
- $values['generation_method'] = LAYOUT_SPRING2;
- break;
-
- case 'radial_dinamic':
- $values['generation_method'] = LAYOUT_RADIAL_DYNAMIC;
- break;
-
- default:
- $values['generation_method'] = LAYOUT_RADIAL;
- break;
- }
-
- if ($source == 'group') {
- $values['source'] = 0;
- $values['source_data'] = implode(',', $id_group);
- } else if ($source == 'recon_task') {
- $values['source'] = 1;
- $values['source_data'] = $recon_task_id;
- } else if ($source == 'ip_mask') {
- $values['source'] = 2;
- $values['source_data'] = $ip_mask;
- }
-
- if ($networkmap_write === false && $networkmap_manage === false) {
- db_pandora_audit(
- AUDIT_LOG_ACL_VIOLATION,
- 'Trying to access networkmap'
+ $recon_task_id = (int) get_parameter(
+ 'recon_task_id',
+ 0
);
- include 'general/noaccess.php';
- return;
- }
-
- $filter = [];
- $filter['dont_show_subgroups'] = $dont_show_subgroups;
- $filter['node_radius'] = $node_radius;
- $filter['x_offs'] = $offset_x;
- $filter['y_offs'] = $offset_y;
- $filter['z_dash'] = $scale_z;
- $filter['node_sep'] = $node_sep;
- $filter['rank_sep'] = $rank_sep;
- $filter['mindist'] = $mindist;
- $filter['kval'] = $kval;
-
- $values['filter'] = json_encode($filter);
-
- $result = false;
- if (!empty($name)) {
- $result = db_process_sql_insert(
- 'tmap',
- $values
+ $ip_mask = get_parameter(
+ 'ip_mask',
+ ''
);
- }
+ $source = (string) get_parameter('source', 'group');
+ $dont_show_subgroups = (int) get_parameter_checkbox(
+ 'dont_show_subgroups',
+ 0
+ );
+ $node_radius = (int) get_parameter('node_radius', 40);
+ $description = get_parameter('description', '');
- $result_txt = ui_print_result_message(
- $result,
- __('Succesfully created'),
- __('Could not be created'),
- '',
- true
- );
+ $offset_x = get_parameter('pos_x', 0);
+ $offset_y = get_parameter('pos_y', 0);
+ $scale_z = get_parameter('scale_z', 0.5);
- $id = $result;
- define('_id_', $id);
+ $node_sep = get_parameter('node_sep', '0.25');
+ $rank_sep = get_parameter('rank_sep', ($method === 'twopi') ? '1.0' : '0.5');
- if ($result !== false) {
- $tab = 'view';
- if ($values['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
- $tab = 'r_dinamic';
- define('_activeTab_', 'radial_dynamic');
- $url = 'index.php?sec=network&sec2=operation/agentes/networkmap.dinamic&activeTab=radial_dynamic';
- header(
- 'Location: '.ui_get_full_url(
- $url.'&id_networkmap='.$id
- )
+ $mindist = get_parameter('mindist', '1.0');
+ $kval = get_parameter('kval', '0.3');
+
+ $refresh_time = get_parameter('refresh_time', '300');
+
+ $values = [];
+ $values['name'] = $name;
+ $values['id_group'] = implode(',', $id_group);
+ $values['source_period'] = 60;
+ $values['width'] = $width;
+ $values['height'] = $height;
+ $values['id_user'] = $config['id_user'];
+ $values['description'] = $description;
+ $values['id_group_map'] = $id_group_map;
+ $values['refresh_time'] = $refresh_time;
+
+ switch ($method) {
+ case 'twopi':
+ $values['generation_method'] = LAYOUT_RADIAL;
+ break;
+
+ case 'dot':
+ $values['generation_method'] = LAYOUT_FLAT;
+ break;
+
+ case 'circo':
+ $values['generation_method'] = LAYOUT_CIRCULAR;
+ break;
+
+ case 'neato':
+ $values['generation_method'] = LAYOUT_SPRING1;
+ break;
+
+ case 'fdp':
+ $values['generation_method'] = LAYOUT_SPRING2;
+ break;
+
+ case 'radial_dinamic':
+ $values['generation_method'] = LAYOUT_RADIAL_DYNAMIC;
+ break;
+
+ default:
+ $values['generation_method'] = LAYOUT_RADIAL;
+ break;
+ }
+
+ if ($source == 'group') {
+ $values['source'] = 0;
+ $values['source_data'] = implode(',', $id_group);
+ } else if ($source == 'recon_task') {
+ $values['source'] = 1;
+ $values['source_data'] = $recon_task_id;
+ } else if ($source == 'ip_mask') {
+ $values['source'] = 2;
+ $values['source_data'] = $ip_mask;
+ }
+
+ if ($networkmap_write === false && $networkmap_manage === false) {
+ db_pandora_audit(
+ AUDIT_LOG_ACL_VIOLATION,
+ 'Trying to access networkmap'
);
- } else {
- $url = 'index.php?sec=network&sec2=operation/agentes/pandora_networkmap';
- header(
- 'Location: '.ui_get_full_url(
- $url.'&tab='.$tab.'&id_networkmap='.$id
- )
+ include 'general/noaccess.php';
+ return;
+ }
+
+ $filter = [];
+ $filter['dont_show_subgroups'] = $dont_show_subgroups;
+ $filter['node_radius'] = $node_radius;
+ $filter['x_offs'] = $offset_x;
+ $filter['y_offs'] = $offset_y;
+ $filter['z_dash'] = $scale_z;
+ $filter['node_sep'] = $node_sep;
+ $filter['rank_sep'] = $rank_sep;
+ $filter['mindist'] = $mindist;
+ $filter['kval'] = $kval;
+
+ $values['filter'] = json_encode($filter);
+
+ $result = false;
+ if (!empty($name)) {
+ $result = db_process_sql_insert(
+ 'tmap',
+ $values
);
}
+
+ $result_txt = ui_print_result_message(
+ $result,
+ __('Succesfully created'),
+ __('Could not be created'),
+ '',
+ true
+ );
+
+ $id = $result;
+ define('_id_', $id);
+
+ if ($result !== false) {
+ $tab = 'view';
+ if ($values['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
+ $tab = 'r_dinamic';
+ define('_activeTab_', 'radial_dynamic');
+ $url = 'index.php?sec=network&sec2=operation/agentes/networkmap.dinamic&activeTab=radial_dynamic';
+ header(
+ 'Location: '.ui_get_full_url(
+ $url.'&id_networkmap='.$id
+ )
+ );
+ } else {
+ $url = 'index.php?sec=network&sec2=operation/agentes/pandora_networkmap';
+ header(
+ 'Location: '.ui_get_full_url(
+ $url.'&tab='.$tab.'&id_networkmap='.$id
+ )
+ );
+ }
+ }
}
}
}
@@ -464,70 +476,81 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
}
$name = (string) get_parameter('name', '');
-
- $recon_task_id = (int) get_parameter(
- 'recon_task_id',
- 0
+ $exist = db_get_row_filter(
+ 'tmap',
+ [
+ 'name' => $name,
+ 'id_group_map' => $id_group_map,
+ ],
);
- $source = (string) get_parameter('source', 'group');
-
- $offset_x = get_parameter('pos_x', 0);
- $offset_y = get_parameter('pos_y', 0);
- $scale_z = get_parameter('scale_z', 0.5);
-
- $refresh_time = get_parameter('refresh_time', '300');
-
- $values = [];
- $values['name'] = $name;
- $values['id_group'] = implode(',', $id_group);
- $values['id_group_map'] = $id_group_map;
-
- $description = get_parameter('description', '');
- $values['description'] = $description;
-
- $values['refresh_time'] = $refresh_time;
-
- $dont_show_subgroups = (int) get_parameter('dont_show_subgroups', 0);
- $node_radius = (int) get_parameter('node_radius', 40);
- $row = db_get_row('tmap', 'id', $id);
- $filter = json_decode($row['filter'], true);
- $filter['dont_show_subgroups'] = $dont_show_subgroups;
- $filter['node_radius'] = $node_radius;
- $filter['x_offs'] = $offset_x;
- $filter['y_offs'] = $offset_y;
- $filter['z_dash'] = $scale_z;
-
- $values['filter'] = json_encode($filter);
-
- $result = false;
- if (empty($name) === false) {
- $result = db_process_sql_update(
- 'tmap',
- $values,
- ['id' => $id]
+ if ($exist !== false) {
+ $result_txt = ui_print_error_message(__('Another network map already exists with this name and group.'));
+ } else {
+ $recon_task_id = (int) get_parameter(
+ 'recon_task_id',
+ 0
);
- ui_update_name_fav_element($id, 'Network_map', $name);
- }
- $result_txt = ui_print_result_message(
- $result,
- __('Succesfully updated'),
- __('Could not be updated'),
- '',
- true
- );
+ $source = (string) get_parameter('source', 'group');
- if ($result) {
- // If change the group, the map must be regenerated
- if ($id_group != $id_group_old) {
- networkmap_delete_nodes($id);
- // Delete relations.
- networkmap_delete_relations($id);
+ $offset_x = get_parameter('pos_x', 0);
+ $offset_y = get_parameter('pos_y', 0);
+ $scale_z = get_parameter('scale_z', 0.5);
+
+ $refresh_time = get_parameter('refresh_time', '300');
+
+ $values = [];
+ $values['name'] = $name;
+ $values['id_group'] = implode(',', $id_group);
+ $values['id_group_map'] = $id_group_map;
+
+ $description = get_parameter('description', '');
+ $values['description'] = $description;
+
+ $values['refresh_time'] = $refresh_time;
+
+ $dont_show_subgroups = (int) get_parameter('dont_show_subgroups', 0);
+ $node_radius = (int) get_parameter('node_radius', 40);
+ $row = db_get_row('tmap', 'id', $id);
+ $filter = json_decode($row['filter'], true);
+ $filter['dont_show_subgroups'] = $dont_show_subgroups;
+ $filter['node_radius'] = $node_radius;
+ $filter['x_offs'] = $offset_x;
+ $filter['y_offs'] = $offset_y;
+ $filter['z_dash'] = $scale_z;
+
+ $values['filter'] = json_encode($filter);
+
+ $result = false;
+ if (empty($name) === false) {
+ $result = db_process_sql_update(
+ 'tmap',
+ $values,
+ ['id' => $id]
+ );
+ ui_update_name_fav_element($id, 'Network_map', $name);
}
- $networkmap_write = $networkmap_write_new;
- $networkmap_manage = $networkmap_manage_new;
+ $result_txt = ui_print_result_message(
+ $result,
+ __('Succesfully updated'),
+ __('Could not be updated'),
+ '',
+ true
+ );
+
+ if ($result) {
+ // If change the group, the map must be regenerated
+ if ($id_group != $id_group_old) {
+ networkmap_delete_nodes($id);
+ // Delete relations.
+ networkmap_delete_relations($id);
+ }
+
+ $networkmap_write = $networkmap_write_new;
+ $networkmap_manage = $networkmap_manage_new;
+ }
}
}
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 92f1875513..e469b9dc38 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -493,23 +493,52 @@ if (is_ajax() === true) {
}
}
+ if (strlen($tmp->server_name) >= 10) {
+ $tmp->server_name = ui_print_truncate_text(
+ $tmp->server_name,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
+
$tmp->evento = str_replace('"', '', io_safe_output($tmp->evento));
- if (strlen($tmp->evento) >= 255) {
+ $event_text = $tmp->evento;
+ if (strlen($tmp->evento) >= 40) {
$tmp->evento = ui_print_truncate_text(
$tmp->evento,
- 255,
- $tmp->evento,
+ 40,
+ false,
+ true,
+ false,
+ '…',
+ true,
true,
- false
);
}
if (empty($tmp->module_name) === false) {
$tmp->module_name = io_safe_output($tmp->module_name);
+ if (strlen($tmp->module_name) >= 20) {
+ $tmp->module_name = ui_print_truncate_text(
+ $tmp->module_name,
+ 20,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
}
if (empty($tmp->comments) === false) {
- $tmp->comments = ui_print_comments($tmp->comments);
+ $tmp->comments = ui_print_comments($tmp->comments, 20);
}
// Show last event.
@@ -535,6 +564,32 @@ if (is_ajax() === true) {
}
$tmp->agent_name = io_safe_output($tmp->agent_name);
+ if (strlen($tmp->agent_name) >= 10) {
+ $tmp->agent_name = ui_print_truncate_text(
+ $tmp->agent_name,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
+
+ $tmp->id_extra = io_safe_output($tmp->id_extra);
+ if (strlen($tmp->id_extra) >= 10) {
+ $tmp->id_extra = ui_print_truncate_text(
+ $tmp->id_extra,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
$tmp->ack_utimestamp_raw = $tmp->ack_utimestamp;
@@ -557,7 +612,7 @@ if (is_ajax() === true) {
$total_sec = strtotime($tmp->timestamp);
$total_sec += $dif;
- $last_contact = date($config['date_format'], $total_sec);
+ $last_contact = date($confb64ig['date_format'], $total_sec);
$last_contact_value = ui_print_timestamp($last_contact, true);
} else {
$title = date($config['date_format'], strtotime($tmp->timestamp));
@@ -583,9 +638,23 @@ if (is_ajax() === true) {
}
$tmp->instructions = events_get_instructions($item);
+ if (strlen($tmp->instructions) >= 20) {
+ $tmp->instructions = ui_print_truncate_text(
+ $tmp->instructions,
+ 20,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
+ $aux_event = $tmp->evento;
+ $tmp->evento = $event_text;
$tmp->b64 = base64_encode(json_encode($tmp));
-
+ $tmp->evento = $aux_event;
// Show comments events.
if (empty($tmp->comments) === false) {
$tmp->user_comment = $tmp->comments;
@@ -844,6 +913,19 @@ if (is_ajax() === true) {
$tmp->owner_user = get_user_fullname($tmp->owner_user).' ('.$tmp->owner_user.')';
}
+ if (strlen($tmp->owner_user) >= 10) {
+ $tmp->owner_user = ui_print_truncate_text(
+ $tmp->owner_user,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
+
// Group name.
if (empty($tmp->id_grupo) === true) {
$tmp->id_grupo = __('All');
@@ -851,8 +933,33 @@ if (is_ajax() === true) {
$tmp->id_grupo = $tmp->group_name;
}
+ if (strlen($tmp->id_grupo) >= 10) {
+ $tmp->id_grupo = ui_print_truncate_text(
+ $tmp->id_grupo,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
+
// Module name.
$tmp->id_agentmodule = $tmp->module_name;
+ if (strlen($tmp->id_agentmodule) >= 10) {
+ $tmp->id_agentmodule = ui_print_truncate_text(
+ $tmp->id_agentmodule,
+ 10,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
// Options.
// Show more.
@@ -1083,6 +1190,18 @@ if (is_ajax() === true) {
}
$tmp->custom_data = $custom_data_str;
+ if (strlen($tmp->custom_data) >= 20) {
+ $tmp->custom_data = ui_print_truncate_text(
+ $tmp->custom_data,
+ 20,
+ false,
+ true,
+ false,
+ '…',
+ true,
+ true,
+ );
+ }
}
$carry[] = $tmp;
@@ -2417,7 +2536,7 @@ try {
if (in_array('instructions', $fields) > 0) {
$fields[array_search('instructions', $fields)] = [
'text' => 'instructions',
- 'class' => 'column-instructions',
+ 'class' => 'column-instructions mw60px',
];
}
@@ -2429,14 +2548,24 @@ try {
];
}
- $comment_id = array_search('user_comment', $fields);
- if ($comment_id !== false) {
- $fields[$comment_id] = [
+ $user_comment = array_search('user_comment', $fields);
+ if ($user_comment !== false) {
+ $fields[$user_comment] = [
'text' => 'user_comment',
- 'class' => 'nowrap_max180px',
+ 'class' => 'mw100px',
];
}
+
+ foreach ($fields as $key => $field) {
+ if (is_array($field) === false) {
+ $fields[$key] = [
+ 'text' => $field,
+ 'class' => 'mw100px',
+ ];
+ }
+ }
+
// Always add options column.
$fields = array_merge(
$fields,
@@ -2462,6 +2591,7 @@ try {
}
}
+ // mw60px
// Open current filter quick reference.
$active_filters_div = '';
@@ -2560,7 +2690,7 @@ try {
[
'id' => $table_id,
'class' => 'info_table events',
- 'style' => 'width: 99%;',
+ 'style' => 'width: 100%;',
'ajax_url' => 'operation/events/events',
'ajax_data' => [
'get_events' => 1,
diff --git a/pandora_console/operation/inventory/inventory.php b/pandora_console/operation/inventory/inventory.php
index 63b302062c..536f470fe6 100755
--- a/pandora_console/operation/inventory/inventory.php
+++ b/pandora_console/operation/inventory/inventory.php
@@ -804,7 +804,7 @@ if ($inventory_module !== 'basic') {
[
'id' => $id_table,
'class' => 'info_table w100p',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
@@ -919,7 +919,7 @@ if ($inventory_module !== 'basic') {
[
'id' => $id_table,
'class' => 'info_table w100p',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
@@ -1083,7 +1083,7 @@ if ($inventory_module !== 'basic') {
[
'id' => $id_table,
'class' => 'info_table w100p',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
@@ -1173,7 +1173,7 @@ if ($inventory_module !== 'basic') {
[
'id' => $id_table,
'class' => 'info_table w100p',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
@@ -1188,6 +1188,8 @@ if ($inventory_module !== 'basic') {
'emptyTable' => __('No inventory found'),
'return' => true,
'no_sortable_columns' => [],
+ 'mini_search' => true,
+ 'mini_pagination' => true,
]
);
@@ -1204,7 +1206,7 @@ if ($inventory_module !== 'basic') {
[
'id' => $id_table,
'class' => 'info_table w100p',
- 'style' => 'width: 99%',
+ 'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $columns,
'no_sortable_columns' => [],
@@ -1233,7 +1235,7 @@ if ($inventory_module !== 'basic') {
$agentes = [];
$data = [];
$class = 'info_table';
- $style = 'width: 99%';
+ $style = 'width: 100%';
$ordering = true;
$searching = false;
diff --git a/pandora_console/operation/network/network_report.php b/pandora_console/operation/network/network_report.php
index 15716e653c..5d402a5793 100644
--- a/pandora_console/operation/network/network_report.php
+++ b/pandora_console/operation/network/network_report.php
@@ -39,10 +39,26 @@ if (! check_acl($config['id_user'], 0, 'AR')) {
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.
ui_include_time_picker();
// Query params and other initializations.
+$filter_id = (int) get_parameter('filter_id', 0);
$time_greater = get_parameter('time_greater', date(TIME_FORMAT));
$date_greater = get_parameter('date_greater', date(DATE_FORMAT));
$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', '');
if (is_numeric($main_value) && !in_array($action, ['udp', 'tcp'])) {
$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');
@@ -66,30 +89,143 @@ if (!in_array($order_by, ['bytes', 'pkts', 'flows'])) {
$order_by = 'bytes';
}
-$style_end = ($is_period) ? 'display: none;' : '';
-$style_period = ($is_period) ? '' : 'display: none;';
+$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_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.
-$table = new stdClass();
-$table->class = 'filter-table-adv';
-$table->width = '100%';
-$table->data = [];
+$filterTable = new stdClass();
+$filterTable->id = '';
+$filterTable->class = 'filter-table-adv';
+$filterTable->size = [];
+$filterTable->size[0] = '33%';
+$filterTable->size[1] = '33%';
+$filterTable->size[2] = '33%';
+$filterTable->data = [];
-$table->data[0][] = html_print_label_input_block(
- __('Data to show'),
- html_print_select(
- network_get_report_actions(false),
- 'action',
- $action,
+$filterTable->data[0][0] = html_print_label_input_block(
+ __('Interval'),
+ html_print_extended_select_for_time(
+ 'period',
+ $period,
'',
'',
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
)
);
-$table->data[0][] = html_print_label_input_block(
- __('Number of result to show'),
+$filterTable->data[0][2] = html_print_label_input_block(
+ __('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(
[
'5' => 5,
@@ -110,95 +246,62 @@ $table->data[0][] = html_print_label_input_block(
)
);
-$table->data[1][] = html_print_label_input_block(
- __('Start date'),
- html_print_div(
- [
- 'id' => 'end_date_container',
- 'content' => html_print_input_text(
- '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,
- false,
- true
- ),
- ),
- ],
+$filterTable->data[1][] = html_print_label_input_block(
+ __('Data to show'),
+ html_print_select(
+ network_get_report_actions(),
+ 'action',
+ $action,
+ '',
+ '',
+ 0,
true
)
);
-$table->data[1][] = html_print_label_input_block(
- __('End date'),
- html_print_div(
- [
- 'id' => '',
- 'class' => '',
- 'content' => html_print_input_text(
- 'date_greater',
- $date_greater,
- '',
- 10,
- 10,
- true
- ).html_print_input_text(
- 'time_greater',
- $time_greater,
- '',
- 7,
- 8,
- true
- ),
- ],
- true
- )
+$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;
+// Add all groups.
+$sql = 'SELECT * FROM tnetwork_explorer_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%;')
);
-
-$table->data[2][] = html_print_label_input_block(
- __('Defined period'),
- html_print_checkbox_switch(
- 'is_period',
- 1,
- ($is_period === true) ? 1 : 0,
+$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,
- false,
- 'network_report_click_period(event)'
+ true,
+ '',
+ 'white-box-content',
+ 'box-flat white_table_graph'
)
);
-echo '';
ui_toggle(
- $outputTable,
- '',
- __('Filters'),
- '',
+ $filterInputTable,
+ '',
+ __('Filter'),
+ 'search',
true,
false,
'',
- 'white-box-content',
+ 'white-box-content no_border',
'box-flat white_table_graph fixed_filter_bar'
);
html_print_action_buttons(
@@ -246,7 +378,7 @@ $data = netflow_get_top_summary(
$action,
$utimestamp_lower,
$utimestamp_greater,
- $main_value,
+ $filter,
$order_by
);
@@ -450,6 +582,26 @@ if (empty($data)) {
?>
diff --git a/pandora_console/operation/network/network_usage_map.php b/pandora_console/operation/network/network_usage_map.php
index e3919e90b9..ff2c99869d 100644
--- a/pandora_console/operation/network/network_usage_map.php
+++ b/pandora_console/operation/network/network_usage_map.php
@@ -34,6 +34,21 @@ global $config;
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.
ui_print_standard_header(
__('Network usage map'),
@@ -76,6 +91,7 @@ $is_period = (bool) get_parameter('is_period', false);
$period = (int) get_parameter('period', SECONDS_1HOUR);
$time_lower = get_parameter('time_lower', date(TIME_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);
if (!$is_period) {
$period = ($utimestamp_greater - $utimestamp_lower);
@@ -88,6 +104,44 @@ if (in_array($order_by, ['bytes', 'pkts', 'flows']) === false) {
$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) {
$netflow_button = html_print_submit_button(
__('Show netflow map'),
@@ -95,6 +149,27 @@ if ((bool) $config['activate_netflow'] === true) {
false,
['icon' => 'update'],
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 {
$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 = '