Merge branch 'ent-8340-POST-Custom-data-en-vista-de-eventos' into 'develop'
implemented custom data filter in event view See merge request artica/pandorafms!4787
This commit is contained in:
commit
71fef65f35
|
@ -3,6 +3,9 @@ START TRANSACTION;
|
|||
ALTER TABLE `tipam_vlan` ADD COLUMN `custom_id` bigint(20) unsigned DEFAULT NULL;
|
||||
ALTER TABLE `tuser_task_scheduled`ADD COLUMN `enabled` TINYINT UNSIGNED NOT NULL DEFAULT 1;
|
||||
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
|
||||
|
||||
ALTER TABLE tagente MODIFY alias varchar(600) NOT NULL DEFAULT '';
|
||||
ALTER TABLE tagente MODIFY nombre varchar(600) NOT NULL DEFAULT '';
|
||||
|
||||
|
|
|
@ -1543,6 +1543,8 @@ ALTER TABLE `tevent_filter` MODIFY COLUMN `severity` text NOT NULL;
|
|||
ALTER TABLE tevent_filter ADD COLUMN `server_id` int(10) NOT NULL default 0;
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL;
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL;
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tusuario`
|
||||
|
|
|
@ -116,6 +116,7 @@ $fields_available['data'] = __('Data');
|
|||
$fields_available['module_status'] = __('Module Status');
|
||||
$fields_available['mini_severity'] = __('Severity mini');
|
||||
$fields_available['module_custom_id'] = __('Module custom ID');
|
||||
$fields_available['custom_data'] = __('Custom data');
|
||||
|
||||
|
||||
// Remove fields already selected.
|
||||
|
|
|
@ -89,6 +89,8 @@ if ($id) {
|
|||
$tag_without_base64 = base64_encode($tag_without_json_clean);
|
||||
|
||||
$filter_only_alert = $filter['filter_only_alert'];
|
||||
$custom_data = $filter['custom_data'];
|
||||
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
||||
|
||||
if ($id_agent_module != 0) {
|
||||
$text_module = modules_get_agentmodule_name($id_agent_module);
|
||||
|
@ -165,6 +167,8 @@ if ($update || $create) {
|
|||
$tag_without_json = io_safe_input(base64_decode($tag_without_base64));
|
||||
|
||||
$filter_only_alert = get_parameter('filter_only_alert', '');
|
||||
$custom_data = get_parameter('custom_data', '');
|
||||
$custom_data_filter_type = get_parameter('custom_data_filter_type', '');
|
||||
|
||||
$values = [
|
||||
'id_name' => $id_name,
|
||||
|
@ -189,6 +193,8 @@ if ($update || $create) {
|
|||
'id_extra' => $id_extra,
|
||||
'user_comment' => $user_comment,
|
||||
'filter_only_alert' => $filter_only_alert,
|
||||
'custom_data' => $custom_data,
|
||||
'custom_data_filter_type' => $custom_data_filter_type,
|
||||
];
|
||||
|
||||
$severity = explode(',', $severity);
|
||||
|
@ -627,9 +633,26 @@ $table->data[23][1] = html_print_input_text('id_extra', $id_extra, '', 11, 255,
|
|||
$table->data[24][0] = '<b>'.__('Comment').'</b>';
|
||||
$table->data[24][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true);
|
||||
|
||||
$table->data[25][0] = '<b>'.__('Custom data filter type').'</b>';
|
||||
$table->data[25][1] = html_print_select(
|
||||
[
|
||||
'0' => __('Filter custom data by name field'),
|
||||
'1' => __('Filter custom data by value field'),
|
||||
],
|
||||
'custom_data_filter_type',
|
||||
$custom_data_filter_type,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[26][0] = '<b>'.__('Custom data').'</b>';
|
||||
$table->data[26][1] = html_print_input_text('custom_data', $custom_data, '', 35, 255, true);
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$table->data[25][0] = '<b>'.__('Id souce event').'</b>';
|
||||
$table->data[25][1] = html_print_input_text(
|
||||
$table->data[27][0] = '<b>'.__('Id souce event').'</b>';
|
||||
$table->data[27][1] = html_print_input_text(
|
||||
'id_source_event',
|
||||
$id_source_event,
|
||||
'',
|
||||
|
|
|
@ -309,6 +309,8 @@ if ($save_event_filter) {
|
|||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
$values['id_source_event'] = get_parameter('id_source_event');
|
||||
$values['custom_data'] = get_parameter('custom_data');
|
||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$values['server_id'] = get_parameter('server_id');
|
||||
|
@ -363,6 +365,8 @@ if ($update_event_filter) {
|
|||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
$values['id_source_event'] = get_parameter('id_source_event');
|
||||
$values['custom_data'] = get_parameter('custom_data');
|
||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$values['server_id'] = get_parameter('server_id');
|
||||
|
@ -834,7 +838,9 @@ function save_new_filter() {
|
|||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
"id_source_event": $("#text-id_source_event").val(),
|
||||
"server_id": $("#server_id").val()
|
||||
"server_id": $("#server_id").val(),
|
||||
"custom_data": $("#text-custom_data").val(),
|
||||
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
||||
},
|
||||
function (data) {
|
||||
$("#info_box").hide();
|
||||
|
@ -907,7 +913,9 @@ function save_update_filter() {
|
|||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
"id_source_event": $("#text-id_source_event").val(),
|
||||
"server_id": $("#server_id").val()
|
||||
"server_id": $("#server_id").val(),
|
||||
"custom_data": $("#text-custom_data").val(),
|
||||
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
||||
|
||||
},
|
||||
function (data) {
|
||||
|
|
|
@ -210,6 +210,7 @@ function events_get_all_fields()
|
|||
$columns['data'] = __('Data');
|
||||
$columns['module_status'] = __('Module status');
|
||||
$columns['module_custom_id'] = __('Module custom id');
|
||||
$columns['custom_data'] = __('Custom data');
|
||||
|
||||
return $columns;
|
||||
}
|
||||
|
@ -310,6 +311,9 @@ function events_get_column_name($field, $table_alias=false)
|
|||
case 'direccion':
|
||||
return __('Agent IP');
|
||||
|
||||
case 'custom_data':
|
||||
return __('Custom data');
|
||||
|
||||
default:
|
||||
return __($field);
|
||||
}
|
||||
|
@ -1122,6 +1126,23 @@ function events_get_all(
|
|||
);
|
||||
}
|
||||
|
||||
// Custom data.
|
||||
if (empty($filter['custom_data']) === false) {
|
||||
if ($filter['custom_data_filter_type'] === '1') {
|
||||
$sql_filters[] = sprintf(
|
||||
' AND JSON_VALID(custom_data) = 1
|
||||
AND (JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) ',
|
||||
io_safe_output($filter['custom_data'])
|
||||
);
|
||||
} else {
|
||||
$sql_filters[] = sprintf(
|
||||
' AND JSON_VALID(custom_data) = 1
|
||||
AND (JSON_SEARCH(JSON_KEYS(custom_data), "all", lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) IS NOT NULL) ',
|
||||
io_safe_output($filter['custom_data'])
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Validated or in process by.
|
||||
if (empty($filter['id_user_ack']) === false) {
|
||||
$sql_filters[] = sprintf(
|
||||
|
|
|
@ -134,7 +134,7 @@ if ($group_rep == 2) {
|
|||
echo '<div class="nf">'.__('No events').'</div>';
|
||||
}
|
||||
} else {
|
||||
// fields that the user has selected to show
|
||||
// Fields that the user has selected to show.
|
||||
if ($meta) {
|
||||
$show_fields = events_meta_get_custom_fields_user();
|
||||
} else {
|
||||
|
@ -345,6 +345,13 @@ if ($group_rep == 2) {
|
|||
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($fields === 'custom_data') {
|
||||
$table->head[$i] = __('Custom data');
|
||||
$table->align[$i] = 'left';
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array('estado', $show_fields)) {
|
||||
|
|
|
@ -226,6 +226,16 @@ $server_id = get_parameter(
|
|||
$filter['id_server_meta']
|
||||
);
|
||||
|
||||
$custom_data_filter_type = get_parameter(
|
||||
'filter[custom_data_filter_type]',
|
||||
$filter['custom_data_filter_type']
|
||||
);
|
||||
|
||||
$custom_data = get_parameter(
|
||||
'filter[custom_data]',
|
||||
$filter['custom_data']
|
||||
);
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
// Connect to node database.
|
||||
$id_node = $server_id;
|
||||
|
@ -530,6 +540,8 @@ if ($loaded_filter !== false && $from_event_graph != 1 && !isset($fb64)) {
|
|||
$user_comment = $filter['user_comment'];
|
||||
$id_source_event = ($filter['id_source_event'] ?? '');
|
||||
$server_id = $filter['server_id'];
|
||||
$custom_data = $filter['custom_data'];
|
||||
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1451,6 +1463,54 @@ $adv_inputs[] = html_print_div(
|
|||
true
|
||||
);
|
||||
|
||||
// Custom data filter type.
|
||||
$custom_data_filter_type_input = html_print_select(
|
||||
[
|
||||
'0' => __('Filter custom data by field name'),
|
||||
'1' => __('Filter custom data by field value'),
|
||||
],
|
||||
'custom_data_filter_type',
|
||||
$custom_data_filter_type,
|
||||
'',
|
||||
false,
|
||||
-1,
|
||||
true
|
||||
);
|
||||
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s',
|
||||
__('Custom data filter'),
|
||||
$custom_data_filter_type_input
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Custom data.
|
||||
$custom_data_input = html_print_input_text(
|
||||
'custom_data',
|
||||
$custom_data,
|
||||
'',
|
||||
5,
|
||||
255,
|
||||
true
|
||||
);
|
||||
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s',
|
||||
__('Custom data search'),
|
||||
$custom_data_input
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Tags.
|
||||
if (is_metaconsole() === true) {
|
||||
$data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>';
|
||||
|
@ -2259,6 +2319,27 @@ function process_datatables_item(item) {
|
|||
|
||||
/* Module name */
|
||||
item.id_agentmodule = item.module_name;
|
||||
|
||||
if (item.custom_data !== '') {
|
||||
var custom_data_str = '';
|
||||
|
||||
var item_custom_data_obj = (function(json_str) {
|
||||
try {
|
||||
return JSON.parse(json_str);
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
})(item.custom_data);
|
||||
|
||||
if (item_custom_data_obj !== false) {
|
||||
for (const [attr_name, val] of Object.entries(item_custom_data_obj)) {
|
||||
custom_data_str += attr_name + ' = ' + val + '<br>';
|
||||
}
|
||||
item.custom_data = custom_data_str;
|
||||
} else {
|
||||
item.custom_data = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Datatables auxiliary functions ends */
|
||||
|
|
|
@ -127,6 +127,8 @@ if (is_ajax()) {
|
|||
$values['source'] = get_parameter('source');
|
||||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
$values['custom_data'] = get_parameter('custom_data');
|
||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$values['id_source_event'] = get_parameter('id_source_event');
|
||||
|
@ -182,6 +184,8 @@ if (is_ajax()) {
|
|||
$values['source'] = get_parameter('source');
|
||||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
$values['custom_data'] = get_parameter('custom_data');
|
||||
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$values['id_source_event'] = get_parameter('id_source_event');
|
||||
|
@ -1567,8 +1571,9 @@ $(document).ready( function() {
|
|||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
"id_source_event": $("#text-id_source_event").val(),
|
||||
"server_id" : $("#server_id").val()
|
||||
|
||||
"server_id" : $("#server_id").val(),
|
||||
"custom_data" : $("#text-custom_data").val(),
|
||||
"custom_data_filter_type" : $("#custom_data_filter_type").val()
|
||||
},
|
||||
function (data) {
|
||||
$(".info_box").hide();
|
||||
|
@ -1670,7 +1675,9 @@ $(document).ready( function() {
|
|||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
"id_source_event": $("#text-id_source_event").val(),
|
||||
"server_id" : $("#server_id").val()
|
||||
"server_id" : $("#server_id").val(),
|
||||
"custom_data" : $("#text-custom_data").val()
|
||||
"custom_data_filter_type" : $("#custom_data_filter_type").val()
|
||||
},
|
||||
function (data) {
|
||||
$(".info_box").hide();
|
||||
|
|
|
@ -226,7 +226,7 @@ try {
|
|||
if ($custom_data_array !== null) {
|
||||
array_walk(
|
||||
$custom_data_array,
|
||||
function (&$value, $field) {
|
||||
function (&$value, $field) use ($separator) {
|
||||
if (is_array($value) === true) {
|
||||
$value = '['.implode($separator, $value).']';
|
||||
}
|
||||
|
|
|
@ -1251,6 +1251,8 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
|
|||
`server_id` INT NOT NULL DEFAULT 0,
|
||||
`time_from` TIME NULL,
|
||||
`time_to` TIME NULL,
|
||||
`custom_data` VARCHAR(500) DEFAULT '',
|
||||
`custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0,
|
||||
PRIMARY KEY (`id_filter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
|
|
Loading…
Reference in New Issue