diff --git a/extras/pandora_gotty/README.md b/extras/pandora_gotty/README.md
index 2e261c2e53..c31e228c46 100644
--- a/extras/pandora_gotty/README.md
+++ b/extras/pandora_gotty/README.md
@@ -1 +1 @@
-To create the .deb and .rpm package need to hace docker installed on main system and execit `build_all_docker.sh`
\ No newline at end of file
+To create the .deb and .rpm package need to hace docker installed on main system and execit `build_all_docker.sh`
diff --git a/pandora_console/extensions/quick_shell.php b/pandora_console/extensions/quick_shell.php
index ac3d1d22c5..b03fe77f58 100644
--- a/pandora_console/extensions/quick_shell.php
+++ b/pandora_console/extensions/quick_shell.php
@@ -192,7 +192,7 @@ function quickShell()
'name' => 'form-sent',
'value' => true,
],
- ]
+ ],
],
],
false,
@@ -292,7 +292,6 @@ function quickShellSettings()
ui_require_css_file('discovery');
// Gotty settings. Internal communication (WS).
-
if (isset($config['gotty_ssh_enabled']) === false) {
config_update_value('gotty_ssh_enabled', 1);
}
diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index 291e0a1f01..e6032de2f6 100755
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -1284,7 +1284,7 @@ $class = 'databox filters';
?>
- ;
+ var group = ;
if (group < 0) {
return;
}
diff --git a/pandora_console/godmode/setup/os.builder.php b/pandora_console/godmode/setup/os.builder.php
index d8a2f47d00..2d0e54a681 100644
--- a/pandora_console/godmode/setup/os.builder.php
+++ b/pandora_console/godmode/setup/os.builder.php
@@ -290,6 +290,7 @@ html_print_action_buttons(
echo '';
+
function get_list_os_icons_dir()
{
global $config;
diff --git a/pandora_console/godmode/setup/os.list.php b/pandora_console/godmode/setup/os.list.php
index 1ce9756cc0..20d1b41561 100644
--- a/pandora_console/godmode/setup/os.list.php
+++ b/pandora_console/godmode/setup/os.list.php
@@ -98,7 +98,10 @@ try {
'ajax_url' => 'include/ajax/os',
'ajax_data' => ['method' => 'drawOSTable'],
'ajax_postprocess' => 'process_datatables_item(item)',
- 'no_sortable_columns' => [-1, 1],
+ 'no_sortable_columns' => [
+ -1,
+ 1,
+ ],
'order' => [
'field' => 'id',
'direction' => 'asc',
diff --git a/pandora_console/godmode/setup/os_version.builder.php b/pandora_console/godmode/setup/os_version.builder.php
index caf968e5be..8c73b4b453 100644
--- a/pandora_console/godmode/setup/os_version.builder.php
+++ b/pandora_console/godmode/setup/os_version.builder.php
@@ -53,7 +53,7 @@ if ($idOS > 0) {
} else {
$product = io_safe_input(strip_tags(io_safe_output((string) get_parameter('product'))));
$version = io_safe_input(strip_tags(io_safe_output((string) get_parameter('version'))));
- $end_of_life_date = get_parameter('end_of_life_date', date("Y/m/d"));
+ $end_of_life_date = get_parameter('end_of_life_date', date('Y/m/d'));
}
$message = '';
diff --git a/pandora_console/godmode/setup/os_version.php b/pandora_console/godmode/setup/os_version.php
index ec5d27beae..8c9816cc7f 100644
--- a/pandora_console/godmode/setup/os_version.php
+++ b/pandora_console/godmode/setup/os_version.php
@@ -220,7 +220,7 @@ switch ($tab) {
break;
default:
- // Default.
+ // Default.
break;
}
@@ -282,4 +282,4 @@ if (empty($id_message) === false) {
}
}
-include_once $config['homedir'].'/godmode/setup/os_version.list.php';
+require_once $config['homedir'].'/godmode/setup/os_version.list.php';
diff --git a/pandora_console/images/module_event_critical.png b/pandora_console/images/module_event_critical.png
new file mode 100644
index 0000000000..d92fd2cf07
Binary files /dev/null and b/pandora_console/images/module_event_critical.png differ
diff --git a/pandora_console/images/module_event_ok.png b/pandora_console/images/module_event_ok.png
new file mode 100644
index 0000000000..d92fd2cf07
Binary files /dev/null and b/pandora_console/images/module_event_ok.png differ
diff --git a/pandora_console/images/module_event_unknown.png b/pandora_console/images/module_event_unknown.png
new file mode 100644
index 0000000000..d92fd2cf07
Binary files /dev/null and b/pandora_console/images/module_event_unknown.png differ
diff --git a/pandora_console/images/module_event_warning.png b/pandora_console/images/module_event_warning.png
new file mode 100644
index 0000000000..d92fd2cf07
Binary files /dev/null and b/pandora_console/images/module_event_warning.png differ
diff --git a/pandora_console/include/ajax/custom_fields.php b/pandora_console/include/ajax/custom_fields.php
index a403f77748..f247c2e51e 100644
--- a/pandora_console/include/ajax/custom_fields.php
+++ b/pandora_console/include/ajax/custom_fields.php
@@ -65,6 +65,7 @@ if (check_login()) {
}
}
+
if ($get_custom_fields_data) {
$name_custom_fields = get_parameter('name_custom_fields', 0);
$array_custom_fields_data = get_custom_fields_data($name_custom_fields);
@@ -110,30 +111,51 @@ if (check_login()) {
// Table temporary for save array in table
// by order and search custom_field data.
- $table_temporary = 'CREATE TEMPORARY TABLE temp_custom_fields (
- id_server int(10),
- id_agent int(10),
- name_custom_fields varchar(2048),
- critical_count int,
- warning_count int,
- unknown_count int,
- notinit_count int,
- normal_count int,
- total_count int,
- `status` int(2),
- KEY `data_index_temp_1` (`id_server`, `id_agent`)
- )';
- db_process_sql($table_temporary);
+ if (is_metaconsole() === true) {
+ $table_temporary = 'CREATE TEMPORARY TABLE temp_custom_fields (
+ id_server int(10),
+ id_agent int(10),
+ name_custom_fields varchar(2048),
+ critical_count int,
+ warning_count int,
+ unknown_count int,
+ notinit_count int,
+ normal_count int,
+ total_count int,
+ `status` int(2),
+ KEY `data_index_temp_1` (`id_server`, `id_agent`)
+ )';
+ } else {
+ $table_temporary = 'CREATE TEMPORARY TABLE temp_custom_fields (
+ id_agent int(10),
+ name_custom_fields varchar(2048),
+ critical_count int,
+ warning_count int,
+ unknown_count int,
+ notinit_count int,
+ normal_count int,
+ total_count int,
+ `status` int(2),
+ KEY `data_index_temp_1` ( `id_agent`)
+ )';
+ }
+
+ $resul_tab_temp = db_process_sql($table_temporary);
// Insert values array in table temporary.
$values_insert = [];
foreach ($indexed_descriptions as $key => $value) {
- $values_insert[] = '('.$value['id_server'].', '.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')';
+ if (is_metaconsole() === true) {
+ $values_insert[] = '('.$value['id_server'].', '.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')';
+ } else {
+ $values_insert[] = '('.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')';
+ }
}
$values_insert_implode = implode(',', $values_insert);
$query_insert = 'INSERT INTO temp_custom_fields VALUES '.$values_insert_implode;
- db_process_sql($query_insert);
+
+ $result_temp = db_process_sql($query_insert);
// Search table for alias, custom field data, server_name, direction.
$search_query = '';
@@ -199,41 +221,17 @@ if (check_login()) {
}
// Query all fields result.
- $query = sprintf(
- 'SELECT
- tma.id_agente,
- tma.id_tagente,
- tma.id_tmetaconsole_setup,
- tma.alias,
- tma.direccion,
- tma.server_name,
- temp.name_custom_fields,
- temp.status
- FROM tmetaconsole_agent tma
- INNER JOIN temp_custom_fields temp
- ON temp.id_agent = tma.id_tagente
- AND temp.id_server = tma.id_tmetaconsole_setup
- WHERE tma.disabled = 0
- %s
- %s
- %s
- %s
- LIMIT %d OFFSET %d
- ',
- $search_query,
- $status_agent_search,
- $status_module_search,
- $order_by,
- $length,
- $start
- );
-
- $result = db_get_all_rows_sql($query);
-
- // Query count.
- $query_count = sprintf(
- 'SELECT
- COUNT(tma.id_agente) AS `count`
+ if (is_metaconsole() === true) {
+ $query = sprintf(
+ 'SELECT
+ tma.id_agente,
+ tma.id_tagente,
+ tma.id_tmetaconsole_setup,
+ tma.alias,
+ tma.direccion,
+ tma.server_name,
+ temp.name_custom_fields,
+ temp.status
FROM tmetaconsole_agent tma
INNER JOIN temp_custom_fields temp
ON temp.id_agent = tma.id_tagente
@@ -242,16 +240,87 @@ if (check_login()) {
%s
%s
%s
+ %s
+ LIMIT %d OFFSET %d
',
- $search_query,
- $status_agent_search,
- $status_module_search
- );
+ $search_query,
+ $status_agent_search,
+ $status_module_search,
+ $order_by,
+ $length,
+ $start
+ );
+ } else {
+ $query = sprintf(
+ 'SELECT
+ tma.id_agente,
+ tma.alias,
+ tma.direccion,
+ tma.server_name,
+ temp.name_custom_fields,
+ temp.status
+ FROM tagente as tma
+ INNER JOIN temp_custom_fields temp
+ ON temp.id_agent = tma.id_agente
+ WHERE tma.disabled = 0
+ %s
+ %s
+ %s
+ %s
+ LIMIT %d OFFSET %d
+ ',
+ $search_query,
+ $status_agent_search,
+ $status_module_search,
+ $order_by,
+ $length,
+ $start
+ );
+ }
+
+ $result = db_get_all_rows_sql($query);
+ // Query count.
+ if (is_metaconsole() === true) {
+ $query_count = sprintf(
+ 'SELECT
+ COUNT(tma.id_agente) AS `count`
+ FROM tmetaconsole_agent tma
+ INNER JOIN temp_custom_fields temp
+ ON temp.id_agent = tma.id_tagente
+ AND temp.id_server = tma.id_tmetaconsole_setup
+ WHERE tma.disabled = 0
+ %s
+ %s
+ %s
+ ',
+ $search_query,
+ $status_agent_search,
+ $status_module_search
+ );
+ } else {
+ $query_count = sprintf(
+ 'SELECT
+ COUNT(tma.id_agente) AS `count`
+ FROM tagente tma
+ INNER JOIN temp_custom_fields temp
+ ON temp.id_agent = tma.id_agente
+ WHERE tma.disabled = 0
+ %s
+ %s
+ %s
+ ',
+ $search_query,
+ $status_agent_search,
+ $status_module_search
+ );
+ }
$count = db_get_sql($query_count);
-
// For link nodes.
- $array_nodes = metaconsole_get_connections();
+ if (is_metaconsole() === true) {
+ $array_nodes = metaconsole_get_connections();
+ }
+
if (isset($array_nodes) && is_array($array_nodes)) {
$hash_array_nodes = [];
foreach ($array_nodes as $key => $server) {
@@ -280,19 +349,24 @@ if (check_login()) {
$data = [];
foreach ($result as $values) {
$image_status = agents_get_image_status($values['status']);
-
// Link nodes.
- $agent_link = '';
+ if (is_metaconsole() === true) {
+ $agent_link = ' ';
+ $agent_alias = ui_print_truncate_text(
+ $values['alias'],
+ 'agent_small',
+ false,
+ true,
+ true,
+ '[…]',
+ 'font-size:7.5pt;'
+ );
+ } else {
+ $agent_link = ' ';
+ $agent_alias = $values['alias'];
+ }
+
- $agent_alias = ui_print_truncate_text(
- $values['alias'],
- 'agent_small',
- false,
- true,
- true,
- '[…]',
- 'font-size:7.5pt;'
- );
if (can_user_access_node()) {
$agent = $agent_link.''.$agent_alias.' ';
@@ -300,6 +374,11 @@ if (check_login()) {
$agent = $agent_alias;
}
+ if (is_metaconsole() === false) {
+ $values['id_tagente'] = $values['id_agente'];
+ $values['id_tmetaconsole_setup'] = 1;
+ }
+
$data[] = [
'ref' => $referencia,
'data_custom_field' => ui_bbcode_to_html($values['name_custom_fields']),
@@ -405,7 +484,7 @@ if (check_login()) {
$table_modules = new stdClass();
$table_modules->width = '100%';
- $table_modules->class = 'databox data';
+ $table_modules->class = 'databox data custom_field_data';
$table_modules->head = [];
$table_modules->head[0] = __('Module name');
@@ -589,7 +668,11 @@ if (check_login()) {
__('Load filter'),
'load_filter',
false,
- 'class="sub upd"',
+ [
+ 'icon' => 'search',
+ 'class' => 'sub upd',
+ 'onclick' => 'load_filter()',
+ ],
true
);
@@ -608,12 +691,14 @@ if (check_login()) {
),
true
);
-
$table = new StdClass;
$table->id = 'save_filter_form';
$table->width = '100%';
$table->class = 'databox';
$table->rowspan = [];
+ $table->style = [];
+ $table->cellstyle[0][0] = 'display: grid';
+ $table->cellstyle[0][1] = 'display: grid';
if ($filters['id'] == 'extended_create_filter') {
echo "
";
@@ -624,7 +709,7 @@ if (check_login()) {
'',
15,
255,
- true
+ true,
);
$table->data[1][0] = __('Group');
@@ -650,11 +735,16 @@ if (check_login()) {
);
$table->rowspan[0][2] = 2;
+
$table->data[0][2] = html_print_submit_button(
__('Create filter'),
'create_filter',
false,
- 'class="sub upd"',
+ [
+ 'icon' => 'search',
+ 'class' => 'sub upd',
+ 'onclick' => 'create_filter()',
+ ],
true
);
} else {
@@ -702,14 +792,23 @@ if (check_login()) {
__('Delete filter'),
'delete_filter',
false,
- 'class="sub upd"',
+ [
+ 'icon' => 'delete',
+ 'class' => 'sub upd',
+ 'onclick' => 'delete_filter()',
+ ],
true
);
+
$table->data[1][2] = html_print_submit_button(
__('Update filter'),
'update_filter',
false,
- 'class="sub upd"',
+ [
+ 'icon' => 'update',
+ 'class' => 'sub upd',
+ 'onclick' => 'update_filter()',
+ ],
true
);
}
diff --git a/pandora_console/include/functions_cron_task.php b/pandora_console/include/functions_cron_task.php
index ffc5958d85..9de0520ccd 100644
--- a/pandora_console/include/functions_cron_task.php
+++ b/pandora_console/include/functions_cron_task.php
@@ -116,6 +116,7 @@ function cron_task_lock()
return cron_lock('cron.lock');
}
+
/**
* Release CRON.task lock
*
@@ -130,6 +131,7 @@ function cron_task_release_lock()
unlink($config['attachment_store'].'/cron.lock');
}
+
/**
* Calculates target schedule time
*
@@ -184,6 +186,7 @@ function cron_get_scheduled_time(
return 0;
}
+
/**
* Run scheduled task.
*
@@ -506,7 +509,7 @@ function cron_task_start_gotty(bool $restart_mode=true)
$startTime = time();
// Workaround to wait until process inputs data in the log.
- while (time() - $startTime < $maxWaitTime) {
+ while ((time() - $startTime) < $maxWaitTime) {
if ($start_proc === true) {
// Read command output.
$log_content = file_get_contents($logFilePath);
diff --git a/pandora_console/include/functions_custom_fields.php b/pandora_console/include/functions_custom_fields.php
index 3632f9511c..9ce92a0c78 100644
--- a/pandora_console/include/functions_custom_fields.php
+++ b/pandora_console/include/functions_custom_fields.php
@@ -613,8 +613,198 @@ function agent_counters_custom_fields($filters)
$final_result['indexed_descriptions'] = $data;
} else {
- // TODO.
- $final_result = false;
+ $result_meta = [];
+ $data = [];
+
+ $query = sprintf(
+ "SELECT tcd.description AS name_data,
+ SUM(IF($agent_state_total, 1, 0)) AS a_agents,
+ SUM(IF($agent_state_critical, 1, 0)) AS a_critical,
+ SUM(IF($agent_state_warning, 1, 0)) AS a_warning,
+ SUM(IF($agent_state_unknown, 1, 0)) AS a_unknown,
+ SUM(IF($agent_state_normal, 1, 0)) AS a_normal,
+ SUM(IF($agent_state_notinit, 1, 0)) AS a_not_init,
+ SUM(tagent_counters.mm_normal) AS m_normal,
+ SUM(tagent_counters.mm_critical) AS m_critical,
+ SUM(tagent_counters.mm_warning) AS m_warning,
+ SUM(tagent_counters.mm_unknown) AS m_unknown,
+ SUM(tagent_counters.mm_not_init) AS m_not_init,
+ SUM(tagent_counters.mm_total) AS m_total
+ FROM tagent_custom_data tcd
+ INNER JOIN tagent_custom_fields tcf
+ ON tcd.id_field = tcf.id_field
+ INNER JOIN (
+ SELECT ta.id_agente,
+ ta.total_count AS c_m_total,
+ SUM( IF(tae.estado = 0, 1, 0) ) AS mm_normal,
+ SUM( IF(tae.estado = 1, 1, 0) ) AS mm_critical,
+ SUM( IF(tae.estado = 2, 1, 0) ) AS mm_warning,
+ SUM( IF(tae.estado = 3, 1, 0) ) AS mm_unknown,
+ SUM( IF(tae.estado = 4 OR tae.estado = 5, 1, 0) ) AS mm_not_init,
+ COUNT(tam.id_agente_modulo) AS mm_total
+ FROM tagente ta
+ LEFT JOIN tagent_secondary_group tasg
+ ON ta.id_agente = tasg.id_agent
+ INNER JOIN tagente_modulo tam
+ ON ta.id_agente = tam.id_agente
+ INNER JOIN tagente_estado tae
+ ON tam.id_agente = tae.id_agente
+ AND tam.id_agente_modulo = tae.id_agente_modulo
+ WHERE ta.disabled = 0
+ AND tam.disabled = 0
+ %s
+ %s
+ %s
+ %s
+ GROUP by ta.id_agente
+ %s
+ ) AS tagent_counters
+ ON tcd.id_agent = tagent_counters.id_agente
+ INNER JOIN tagente ta
+ ON ta.id_agente = tagent_counters.id_agente
+ WHERE tcf.name = '%s'
+ AND tcd.description <> ''
+ %s
+ GROUP BY tcd.description",
+ $groups_and,
+ $and_status,
+ $and_module_search,
+ $and_module_status,
+ $empty_agents_count,
+ $custom_field_name,
+ $custom_data_and
+ );
+
+ $result_meta[] = db_get_all_rows_sql($query);
+
+ $query_data = sprintf(
+ "SELECT
+ tcd.description,
+ ta.id_agente,
+ %d AS id_server,
+ (CASE
+ WHEN ta.critical_count > 0
+ THEN 1
+ WHEN ta.critical_count = 0
+ AND ta.warning_count > 0
+ THEN 2
+ WHEN ta.critical_count = 0
+ AND ta.warning_count = 0
+ AND ta.unknown_count > 0
+ THEN 3
+ WHEN ta.critical_count = 0
+ AND ta.warning_count = 0
+ AND ta.unknown_count = 0
+ AND ta.notinit_count <> ta.total_count
+ THEN 0
+ WHEN ta.total_count = ta.notinit_count
+ THEN 5
+ ELSE 0
+ END) AS `status`,
+ ta.critical_count,
+ ta.warning_count,
+ ta.unknown_count,
+ ta.notinit_count,
+ ta.normal_count,
+ ta.total_count
+ FROM tagente ta
+ LEFT JOIN tagent_secondary_group tasg
+ ON ta.id_agente = tasg.id_agent
+ INNER JOIN tagente_modulo tam
+ ON ta.id_agente = tam.id_agente
+ INNER JOIN tagente_estado tae
+ ON tam.id_agente = tae.id_agente
+ AND tam.id_agente_modulo = tae.id_agente_modulo
+ INNER JOIN tagent_custom_data tcd
+ ON tcd.id_agent = ta.id_agente
+ INNER JOIN tagent_custom_fields tcf
+ ON tcd.id_field = tcf.id_field
+ WHERE ta.disabled = 0
+ AND tcf.name = '%s'
+ AND tcd.description <> ''
+ AND tam.disabled = 0
+ %s
+ %s
+ %s
+ %s
+ %s
+ GROUP BY ta.id_agente
+ ",
+ $server_data['id'],
+ $custom_field_name,
+ $custom_data_and,
+ $groups_and,
+ $and_status,
+ $and_module_search,
+ $and_module_status
+ );
+
+ $node_result = db_get_all_rows_sql($query_data);
+ ;
+ if (empty($node_result)) {
+ $node_result = [];
+ }
+
+ $data = array_merge($data, $node_result);
+ $final_result = [];
+ $array_data = [];
+ if (isset($result_meta) && is_array($result_meta)) {
+ // Initialize counters.
+ $final_result['counters_total'] = [
+ 't_m_normal' => 0,
+ 't_m_critical' => 0,
+ 't_m_warning' => 0,
+ 't_m_unknown' => 0,
+ 't_m_not_init' => 0,
+ 't_m_alerts' => 0,
+ 't_m_total' => 0,
+ 't_a_critical' => 0,
+ 't_a_warning' => 0,
+ 't_a_unknown' => 0,
+ 't_a_normal' => 0,
+ 't_a_not_init' => 0,
+ 't_a_agents' => 0,
+ ];
+ foreach ($result_meta as $k => $nodo) {
+ if (isset($nodo) && is_array($nodo)) {
+ foreach ($nodo as $key => $value) {
+ // Sum counters total.
+ $final_result['counters_total']['t_m_normal'] += $value['m_normal'];
+ $final_result['counters_total']['t_m_critical'] += $value['m_critical'];
+ $final_result['counters_total']['t_m_warning'] += $value['m_warning'];
+ $final_result['counters_total']['t_m_unknown'] += $value['m_unknown'];
+ $final_result['counters_total']['t_m_not_init'] += $value['m_not_init'];
+ $final_result['counters_total']['t_m_alerts'] += $value['m_alerts'];
+ $final_result['counters_total']['t_m_total'] += $value['m_total'];
+ $final_result['counters_total']['t_a_critical'] += $value['a_critical'];
+ $final_result['counters_total']['t_a_warning'] += $value['a_warning'];
+ $final_result['counters_total']['t_a_unknown'] += $value['a_unknown'];
+ $final_result['counters_total']['t_a_normal'] += $value['a_normal'];
+ $final_result['counters_total']['t_a_not_init'] += $value['a_not_init'];
+ $final_result['counters_total']['t_a_agents'] += $value['a_agents'];
+
+ // Sum counters for data.
+ $array_data[$value['name_data']]['m_normal'] += $value['m_normal'];
+ $array_data[$value['name_data']]['m_critical'] += $value['m_critical'];
+ $array_data[$value['name_data']]['m_warning'] += $value['m_warning'];
+ $array_data[$value['name_data']]['m_unknown'] += $value['m_unknown'];
+ $array_data[$value['name_data']]['m_not_init'] += $value['m_not_init'];
+ $array_data[$value['name_data']]['m_alerts'] += $value['m_alerts'];
+ $array_data[$value['name_data']]['m_total'] += $value['m_total'];
+ $array_data[$value['name_data']]['a_critical'] += $value['a_critical'];
+ $array_data[$value['name_data']]['a_warning'] += $value['a_warning'];
+ $array_data[$value['name_data']]['a_unknown'] += $value['a_unknown'];
+ $array_data[$value['name_data']]['a_normal'] += $value['a_normal'];
+ $array_data[$value['name_data']]['a_not_init'] += $value['a_not_init'];
+ $array_data[$value['name_data']]['a_agents'] += $value['a_agents'];
+ }
+ }
+ }
+
+ $final_result['counters_name'] = $array_data;
+ }
+
+ $final_result['indexed_descriptions'] = $data;
}
return $final_result;
diff --git a/pandora_console/include/styles/js/datatables.min.css b/pandora_console/include/styles/js/datatables.min.css
index a9a1d5285c..c5a5598611 100644
--- a/pandora_console/include/styles/js/datatables.min.css
+++ b/pandora_console/include/styles/js/datatables.min.css
@@ -1822,10 +1822,7 @@ table.dataTable td {
.dataTables_wrapper .dataTables_length {
float: left;
}
-.dataTables_wrapper .dataTables_filter {
- float: right;
- text-align: right;
-}
+
.dataTables_wrapper .dataTables_filter input {
margin-left: 0.5em;
}
@@ -1875,8 +1872,8 @@ table.dataTable td {
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
cursor: default;
- color: #666 !important;
- border: 1px solid transparent;
+ color: #fff !important;
+ border: 1px solid #fff !important;
background: transparent;
box-shadow: none;
}
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 45cacafb6b..1e89e83243 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -6781,7 +6781,7 @@ form#modal_form_feedback ul.wizard li > textarea {
/* Generic classes to reuse and facilitate the creation of custom themes */
.pandora_green_text {
- color: #1d7873;
+ color: #82b92e;
}
.pandora_green_bg {
@@ -10323,7 +10323,7 @@ select:focus {
}
.dataTables_length > label {
- font-size: 0px;
+ color: #fff;
}
input[type="button"],
@@ -12436,6 +12436,43 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
width: 350px !important;
}
+form.cfv_status_agent {
+ margin: 0 auto;
+ display: flex;
+ justify-content: space-around;
+}
+
+form.cfv_status_agent label {
+ display: block;
+ line-height: 35px;
+ height: 40px;
+ width: 19%;
+ -webkit-font-smoothing: antialiased;
+ margin-top: 10px;
+ color: #ffffff;
+ text-align: center;
+ cursor: pointer;
+ opacity: 0.3;
+ font-size: 13pt;
+}
+
+form.cfv_status_agent label img {
+ vertical-align: middle;
+ margin-right: 8px;
+}
+
+form.cfv_status_agent input[type="checkbox"] {
+ display: none;
+}
+
+form.cfv_status_agent input:checked + label {
+ opacity: 1;
+}
+
+form.cfv_status_agent input:checked + label:before {
+ content: "✓ ";
+}
+
.notificaion_menu_container {
display: flex;
padding-top: 10px;
@@ -12489,6 +12526,37 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
vertical-align: middle;
}
+/* --- Custom fields view --- */
+.custom_fields_view_layout {
+ margin-top: 15px;
+}
+
+.custom_fields_view {
+ width: 30%;
+ float: left;
+ margin-left: 10px;
+ padding-right: 10px;
+ max-height: 890px;
+ overflow: auto;
+ background-color: #f9f9f9;
+}
+
+.agents_custom_fields {
+ width: 100%;
+
+ margin-bottom: 15px;
+ padding: 25px 5px;
+}
+div.agents_custom_fields #datatables_wrapper div.top,
+div.agents_custom_fields #datatables_wrapper div.bottom {
+ background-color: #414141;
+ color: #ffffff;
+ border: none;
+ padding: 5px;
+ height: 38px;
+ width: 99%;
+}
+
/*Horizontal tree*/
.horizontal_tree-icon {
@@ -12518,6 +12586,36 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
margin-top: 15px;
}
+.custom_fields_view {
+ width: 30%;
+ float: left;
+ margin-left: 10px;
+ padding-right: 10px;
+ max-height: 890px;
+ overflow: auto;
+ background-color: #f9f9f9;
+}
+
+.agents_custom_fields {
+ width: 100%;
+
+ margin-bottom: 15px;
+ padding: 25px 5px;
+}
+div.agents_custom_fields #datatables_wrapper div.top,
+div.agents_custom_fields #datatables_wrapper div.bottom {
+ background-color: #414141;
+ color: #ffffff;
+ border: none;
+ padding: 5px;
+ height: 38px;
+ width: 99%;
+}
+
+.label_agent_service > label {
+ margin-top: 15px;
+}
+
.animation-blink {
-webkit-animation: glowing 1500ms infinite;
-moz-animation: glowing 1500ms infinite;
@@ -12632,6 +12730,38 @@ tr[id^="network_component-plugin-snmp-fields-dynamicMacroRow-"] input {
justify-content: flex-start !important;
}
+.dt-buttons {
+ width: auto;
+ position: absolute;
+ margin-left: 90px;
+}
+
+.title_tactical {
+ padding: 10px 0px 10px 0px;
+ text-align: center;
+ font-size: 12px;
+ line-height: 23px;
+ color: #000;
+ letter-spacing: 0.3pt;
+ font-family: "lato-bolder";
+ font-style: normal;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ font-weight: bold;
+}
+
+td.details-control {
+ background: url("../../images/darrowdown.png") no-repeat center center;
+ cursor: pointer;
+}
+tr.shown td.details-control {
+ background: url("../../images/darrowup.png") no-repeat center center;
+}
+
+.custom_field_data > tbody > tr > td:not(:first-child) {
+ text-align: center;
+}
+
.ui-date-range-in > a {
background-color: #81b92e3b !important;
}
diff --git a/pandora_console/include/styles/tables.css b/pandora_console/include/styles/tables.css
index 7d93624dbb..0e4879220a 100644
--- a/pandora_console/include/styles/tables.css
+++ b/pandora_console/include/styles/tables.css
@@ -364,13 +364,12 @@ a.pandora_pagination.current:hover {
background-size: 22px;
background-position: 48px center;
background-repeat: no-repeat;
- background-color: transparent;
+ background-color: #fff;
color: var(--primary-color);
font-size: 20px;
height: 38px;
- /* height: 32px; */
width: 80px;
- margin-left: 10px;
+ margin-left: 90px;
display: flex;
justify-content: space-between;
@@ -893,3 +892,19 @@ td.w75p#rightcolumn {
#pending_alerts_paginate {
margin-bottom: 15px;
}
+
+.dataTables_filter > label {
+ color: #fff;
+}
+
+.dataTables_wrapper .dataTables_filter {
+ float: left;
+ text-align: right;
+ margin-left: 8%;
+ padding-left: 0px;
+ margin-top: -5px;
+}
+
+.dataTables_wrapper .dataTables_paginate .paginate_button {
+ background: #bcbcbc;
+}
diff --git a/pandora_console/operation/custom_fields/custom_fields_view.php b/pandora_console/operation/custom_fields/custom_fields_view.php
new file mode 100644
index 0000000000..bd95ab26fd
--- /dev/null
+++ b/pandora_console/operation/custom_fields/custom_fields_view.php
@@ -0,0 +1,1271 @@
+ 'index.php?sec=estado&sec2=operation/custom_fields/custom_fields_view',
+ 'label' => __('Monitoring'),
+ ],
+ ]
+);
+
+// =====================================================================
+// Includes
+// =====================================================================
+require_once 'include/functions_custom_fields.php';
+
+// =====================================================================
+// parameters
+// =====================================================================
+$info_user = get_user_info($config['id_user']);
+$group = get_parameter('group', 0);
+$id_custom_fields = get_parameter('id_custom_fields', 0);
+$id_custom_fields_data = get_parameter('id_custom_fields_data', -1);
+$id_status = get_parameter('id_status', AGENT_MODULE_STATUS_NOT_NORMAL);
+$module_search = get_parameter('module_search', '');
+$search = get_parameter('uptbutton', '');
+$id_filter = get_parameter('id_name', 0);
+$recursion = get_parameter('recursion', 0);
+$module_status = get_parameter('module_status', AGENT_MODULE_STATUS_NOT_NORMAL);
+
+// =====================================================================
+// Custom filter search
+// =====================================================================
+if ($search != 'Show') {
+ if ($id_filter || $info_user['default_custom_view']) {
+ if ($id_filter) {
+ $filter_array = array_shift(
+ get_filters_custom_fields_view($id_filter)
+ );
+ } else {
+ if ($info_user['default_custom_view']) {
+ $filter_array = array_shift(
+ get_filters_custom_fields_view(
+ $info_user['default_custom_view']
+ )
+ );
+ }
+ }
+
+ $group = $filter_array['id_group'];
+ $id_custom_fields = io_safe_input($filter_array['id_custom_field']);
+ $id_custom_fields_data = json_decode(
+ $filter_array['id_custom_fields_data']
+ );
+ $id_status = json_decode($filter_array['id_status']);
+ $module_search = $filter_array['module_search'];
+ $recursion = $filter_array['recursion'];
+ $module_status = json_decode($filter_array['module_status']);
+ }
+}
+
+// =====================================================================
+// filters for search
+// =====================================================================
+$filters = [
+ 'group' => $group,
+ 'id_custom_fields' => $id_custom_fields,
+ 'id_custom_fields_data' => $id_custom_fields_data,
+ 'id_status' => $id_status,
+ 'module_search' => $module_search,
+ 'module_status' => $module_status,
+ 'block_size' => $config['block_size'],
+ 'recursion' => $recursion,
+];
+
+// =====================================================================
+// Table filters custom field
+// =====================================================================
+$table = new StdClass();
+$table->width = '100%';
+$table->class = 'databox filters';
+$table->data = [];
+$table->rowspan = [];
+$table->colspan = [];
+
+
+$array_custom_fields = get_custom_fields(false, true, true);
+
+if ($id_custom_fields) {
+ $array_custom_fields_data = get_custom_fields_data($id_custom_fields);
+} else {
+ $array_custom_fields_data = [];
+}
+
+$table->data[0][0] = __('Group');
+$table->data[0][1] = html_print_select_groups(
+ $config['id_user'],
+ 'AR',
+ true,
+ 'group',
+ $group,
+ '',
+ '',
+ '0',
+ true,
+ false,
+ false,
+ '',
+ false,
+ 'width:180px;',
+ false,
+ false,
+ 'id_grupo',
+ false
+);
+
+$table->data[0][2] = ' '.__('Recursion').' ';
+$table->data[0][3] = html_print_checkbox(
+ 'recursion',
+ 1,
+ $recursion,
+ true,
+ false,
+ ''
+);
+
+$array_status = [];
+$array_status[AGENT_MODULE_STATUS_NORMAL] = __('Normal');
+$array_status[AGENT_MODULE_STATUS_WARNING] = __('Warning');
+$array_status[AGENT_MODULE_STATUS_CRITICAL_BAD] = __('Critical');
+$array_status[AGENT_MODULE_STATUS_UNKNOWN] = __('Unknown');
+$array_status[AGENT_MODULE_STATUS_NOT_NORMAL] = __('Not normal');
+// Default.
+$array_status[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init');
+
+$table->data[1][0] = __('Status agents');
+$table->data[1][1] = html_print_select(
+ $array_status,
+ 'id_status[]',
+ $id_status,
+ '',
+ __('All'),
+ -1,
+ true,
+ true,
+ true,
+ '',
+ false,
+ 'min-width:150px'
+);
+
+$table->data[1][2] = __('Status module');
+$table->data[1][3] = html_print_select(
+ $array_status,
+ 'module_status[]',
+ $module_status,
+ '',
+ __('All'),
+ -1,
+ true,
+ true,
+ true,
+ '',
+ false,
+ 'min-width:150px'
+);
+
+$table->data[1][4] = '';
+if ($info_user['is_admin']) {
+ $table->data[1][4] .= '
';
+ $table->data[1][4] .= html_print_image(
+ 'images/disk.png',
+ true,
+ [
+ 'border' => '0',
+ 'title' => __('Save filter'),
+ 'alt' => __('Save filter'),
+ ]
+ );
+ $table->data[1][4] .= ' ';
+}
+
+$table->data[1][4] .= '
';
+$table->data[1][4] .= html_print_image(
+ 'images/load.png',
+ true,
+ [
+ 'border' => '0',
+ 'title' => __('Load filter'),
+ 'alt' => __('Load filter'),
+ ]
+);
+$table->data[1][4] .= ' ';
+
+$table->data[1][4] .= '
';
+
+$table->data[2][0] = __('Custom Fields');
+$table->data[2][1] = html_print_select(
+ $array_custom_fields,
+ 'id_custom_fields',
+ $id_custom_fields,
+ '',
+ __('None'),
+ 0,
+ true,
+ false,
+ true,
+ '',
+ false,
+ 'width:10em'
+);
+
+$table->data[2][2] = __('Custom Fields Data');
+$table->data[2][3] = html_print_select(
+ $array_custom_fields_data,
+ 'id_custom_fields_data[]',
+ io_safe_output($id_custom_fields_data),
+ 'set_custom_fields_data_title()',
+ __('All'),
+ -1,
+ true,
+ true,
+ true,
+ '',
+ false,
+ 'min-width:150px;',
+ false,
+ false,
+ false,
+ '',
+ false,
+ true,
+ false,
+ false,
+ true,
+ true
+);
+
+$table->colspan[3][1] = 3;
+$table->data[3][0] = __('Module search');
+$table->data[3][1] = html_print_input_text(
+ 'module_search',
+ $module_search,
+ '',
+ 20,
+ 40,
+ true
+);
+
+$table->data[2][5] = html_print_submit_button(
+ __('Show'),
+ 'uptbutton',
+ false,
+ 'class="sub search mgn_tp_0"',
+ true
+);
+
+if (check_acl($config['id_user'], 0, 'PM')) {
+ // Pass the parameters to the page that generates the csv file (arrays)
+ $decode_id_status = base64_encode(json_encode($id_status));
+ $decode_module_status = base64_encode(json_encode($module_status));
+ $decode_filters = base64_encode(json_encode($filters));
+
+ $table->data[3][5] = '';
+ /*
+ $table->data[3][5] .= html_print_button(
+ __('Export to CSV'),
+ 'csv_export',
+ false,
+ "blockResubmit($(this)); location.href='monitoring/custom_fields_csv.php?filters=$decode_filters&id_custom_field=$id_custom_fields&id_status=$decode_id_status&module_status=$decode_module_status'",
+ 'class="sub next"',
+ true
+ );*/
+ $table->data[3][5] .= '
';
+}
+
+
+$form = '';
+
+ui_toggle(
+ $form,
+ '',
+ 'filters',
+ false,
+ true,
+ false,
+ '',
+ 'white-box-content',
+ 'box-flat white_table_graph fixed_filter_bar'
+);
+
+// =====================================================================
+// div for show success messages
+// =====================================================================
+echo "
";
+
+
+// Image for gif datatables processing.
+$processing = html_print_image(
+ 'images/spinner.gif',
+ true,
+ [
+ 'title' => __('Processing'),
+ ]
+).''.__('Processing').'... ';
+
+if (isset($id_custom_fields_data) && is_array($id_custom_fields_data)) {
+ $data = agent_counters_custom_fields($filters);
+
+ if (!empty($data['indexed_descriptions'])) {
+ echo "";
+ echo "
";
+
+ if (in_array(-1, $filters['id_custom_fields_data'])) {
+ $id_custom_field_array = get_custom_fields_data($id_custom_fields);
+ } else {
+ $id_custom_field_array = $filters['id_custom_fields_data'];
+ }
+
+ foreach ($id_custom_field_array as $value) {
+ /*
+ $table_agent = html_get_predefined_table();
+ $table_agent->style = [];
+ $table_agent->class = 'tactical_view';*/
+
+ $table_agent = new StdClass();
+ $table_agent->width = '100%';
+ $table_agent->class = 'tactical_view';
+ $table_agent->data = [];
+ $table_agent->rowspan = [];
+ $table_agent->colspan = [];
+
+ $agent_data = [];
+
+ // Critical.
+ $agent_data[0] = html_print_image(
+ 'images/agent_critical.png',
+ true,
+ ['title' => __('Agents critical')]
+ );
+ $agent_data[1] = "
";
+ $agent_data[1] .= "";
+ $agent_data[1] .= format_numeric(
+ $data['counters_name'][$value]['a_critical']
+ );
+ $agent_data[1] .= ' ';
+
+ // Warning.
+ $agent_data[2] = html_print_image(
+ 'images/agent_warning.png',
+ true,
+ ['title' => __('Agents warning')]
+ );
+ $agent_data[3] = "
";
+ $agent_data[3] .= "";
+ $agent_data[3] .= format_numeric(
+ $data['counters_name'][$value]['a_warning']
+ );
+ $agent_data[3] .= ' ';
+
+ // OK.
+ $agent_data[4] = html_print_image(
+ 'images/agent_ok.png',
+ true,
+ ['title' => __('Agents ok')]
+ );
+ $agent_data[5] = "
";
+ $agent_data[5] .= "";
+ $agent_data[5] .= format_numeric(
+ $data['counters_name'][$value]['a_normal']
+ );
+ $agent_data[5] .= ' ';
+
+ // Unknown.
+ $agent_data[6] = html_print_image(
+ 'images/agent_unknown.png',
+ true,
+ ['title' => __('Agents unknown')]
+ );
+ $agent_data[7] = "
";
+ $agent_data[7] .= "";
+ $agent_data[7] .= format_numeric(
+ $data['counters_name'][$value]['a_unknown']
+ );
+ $agent_data[7] .= ' ';
+
+ // Not init.
+ $agent_data[8] = html_print_image(
+ 'images/agent_notinit.png',
+ true,
+ ['title' => __('Agents not init')]
+ );
+ $agent_data[9] = "
";
+ $agent_data[9] .= "";
+ $agent_data[9] .= format_numeric(
+ $data['counters_name'][$value]['a_not_init']
+ );
+ $agent_data[9] .= ' ';
+
+ $table_agent->data[] = $agent_data;
+
+ $m_critical = ($data['counters_name'][$value]['m_critical'] <= 0) ? '0' : $data['counters_name'][$value]['m_critical'];
+ $m_warning = ($data['counters_name'][$value]['m_warning'] <= 0) ? '0' : $data['counters_name'][$value]['m_warning'];
+ $m_normal = ($data['counters_name'][$value]['m_normal'] <= 0) ? '0' : $data['counters_name'][$value]['m_normal'];
+ $m_unknown = ($data['counters_name'][$value]['m_unknown'] <= 0) ? '0' : $data['counters_name'][$value]['m_unknown'];
+ $m_not_init = ($data['counters_name'][$value]['m_not_init'] <= 0) ? '0' : $data['counters_name'][$value]['m_not_init'];
+
+ // Modules by status table.
+ /*
+ $table_mbs = html_get_predefined_table();
+ $table_mbs->class = 'tactical_view';
+ $table_mbs->style = [];*/
+
+ $table_mbs = new StdClass();
+ $table_mbs->width = '100%';
+ $table_mbs->class = 'tactical_view';
+ $table_mbs->data = [];
+ $table_mbs->rowspan = [];
+ $table_mbs->colspan = [];
+
+ $tdata = [];
+ $tdata[0] = html_print_image(
+ 'images/module_critical.png',
+ true,
+ ['title' => __('Monitor critical')],
+ false,
+ false,
+ false,
+ true
+ );
+ $tdata[1] = '
'.$m_critical.' ';
+
+ $tdata[2] = html_print_image(
+ 'images/module_warning.png',
+ true,
+ ['title' => __('Monitor warning')],
+ false,
+ false,
+ false,
+ true
+ );
+ $tdata[3] = '
'.$m_warning.' ';
+
+ $tdata[4] = html_print_image(
+ 'images/module_ok.png',
+ true,
+ ['title' => __('Monitor normal')],
+ false,
+ false,
+ false,
+ true
+ );
+ $tdata[5] = '
'.$m_normal.' ';
+
+ $tdata[6] = html_print_image(
+ 'images/module_unknown.png',
+ true,
+ ['title' => __('Monitor unknown')],
+ false,
+ false,
+ false,
+ true
+ );
+ $tdata[7] = '
'.$m_unknown.' ';
+
+ $tdata[8] = html_print_image(
+ 'images/module_notinit.png',
+ true,
+ ['title' => __('Monitor not init')],
+ false,
+ false,
+ false,
+ true
+ );
+
+ $tdata[9] = '
'.$m_not_init.' ';
+
+ $table_mbs->data[] = $tdata;
+
+ echo "
".ui_bbcode_to_html($value).'
';
+ // Agents data.
+ echo '
';
+ echo "
";
+ echo ''.__('Agents by status').': '.$data['counters_name'][$value]['a_agents'].' ';
+ echo html_print_table($table_agent, true);
+ echo ' ';
+ echo '';
+
+ // Modules data.
+ echo "
";
+ echo "
";
+ echo ''.__('Monitors by status').': '.$data['counters_name'][$value]['m_total'].' ';
+ echo html_print_table($table_mbs, true);
+ echo ' ';
+ echo '';
+ }
+
+ echo '
';
+ // Agent status.
+ $status_agent_array = [
+ 1 => [
+ 'value' => 'AGENT_STATUS_CRITICAL',
+ 'checked' => 1,
+ 'image' => 'images/agent_mc.menu-2.png',
+ 'title' => __('Critical agents'),
+ 'color' => '#e63c52',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_a_critical']
+ ),
+ ],
+ 2 => [
+ 'value' => 'AGENT_STATUS_WARNING',
+ 'checked' => 1,
+ 'image' => 'images/agent_mc.menu-2.png',
+ 'title' => __('Warning agents'),
+ 'color' => '#f3b200',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_a_warning']
+ ),
+ ],
+ 0 => [
+ 'value' => 'AGENT_STATUS_NORMAL',
+ 'checked' => 1,
+ 'image' => 'images/agent_mc.menu-2.png',
+ 'title' => __('Normal agents'),
+ 'color' => '#82b92e',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_a_normal']
+ ),
+ ],
+ 3 => [
+ 'value' => 'AGENT_STATUS_UNKNOWN',
+ 'checked' => 1,
+ 'image' => 'images/agent_mc.menu-2.png',
+ 'title' => __('Unknown agents'),
+ 'color' => '#B2B2B2',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_a_unknown']
+ ),
+ ],
+ 5 => [
+ 'value' => 'AGENT_STATUS_NOT_INIT',
+ 'checked' => 1,
+ 'image' => 'images/agent_mc.menu-2.png',
+ 'title' => __('Not init agents'),
+ 'color' => '#60aae9',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_a_not_init']
+ ),
+ ],
+ ];
+
+ if (isset($filters['id_status']) === true && is_array($filters['id_status']) === true) {
+ if (in_array(-1, $filters['id_status']) === false) {
+ if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $filters['id_status']) === false) {
+ foreach ($status_agent_array as $key => $value) {
+ if (in_array($key, $filters['id_status']) === false) {
+ $status_agent_array[$key]['checked'] = 0;
+ }
+ }
+ } else {
+ // Not normal statuses.
+ $status_agent_array[0]['checked'] = 0;
+ }
+ }
+ }
+
+ // Module status.
+ $status_module_array = [
+ 1 => [
+ 'value' => 'AGENT_STATUS_CRITICAL',
+ 'checked' => 1,
+ 'image' => 'images/module_event_ok.png',
+ 'title' => __('Critical modules'),
+ 'color' => '#e63c52',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_m_critical']
+ ),
+ 'class' => 'line_heigth_0pt',
+ ],
+ 2 => [
+ 'value' => 'AGENT_STATUS_WARNING',
+ 'checked' => 1,
+ 'image' => 'images/module_event_ok.png',
+ 'title' => __('Warning modules'),
+ 'color' => '#f3b200',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_m_warning']
+ ),
+ 'class' => 'line_heigth_0pt',
+ ],
+ 0 => [
+ 'value' => 'AGENT_STATUS_NORMAL',
+ 'checked' => 1,
+ 'image' => 'images/module_event_ok.png',
+ 'title' => __('Normal modules'),
+ 'color' => '#82b92e',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_m_normal']
+ ),
+ 'class' => 'line_heigth_0pt',
+ ],
+ 3 => [
+ 'value' => 'AGENT_STATUS_UNKNOWN',
+ 'checked' => 1,
+ 'image' => 'images/module_event_ok.png',
+ 'title' => __('Unknown modules'),
+ 'color' => '#B2B2B2',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_m_unknown']
+ ),
+ 'class' => 'line_heigth_0pt',
+ ],
+ 5 => [
+ 'value' => 'AGENT_STATUS_NOT_INIT',
+ 'checked' => 1,
+ 'image' => 'images/module_event_ok.png',
+ 'title' => __('Not init modules'),
+ 'color' => '#60aae9',
+ 'counter' => format_numeric(
+ $data['counters_total']['t_m_not_init']
+ ),
+ 'class' => 'line_heigth_0pt',
+ ],
+ ];
+
+ if (isset($filters['module_status']) === true && is_array($filters['module_status']) === true) {
+ if (in_array(-1, $filters['module_status']) === false) {
+ if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $filters['module_status']) === false) {
+ foreach ($status_module_array as $key => $value) {
+ if (in_array($key, $filters['module_status']) === false) {
+ $status_module_array[$key]['checked'] = 0;
+ }
+ }
+ } else {
+ // Not normal statuses.
+ $status_module_array[0]['checked'] = 0;
+ }
+ }
+ }
+
+ // Total status.
+ echo "
";
+ echo "
".__('Total counters').'
';
+
+ echo "
";
+ echo ''.__('Total Agents').' ';
+ echo print_counters_cfv(
+ $status_agent_array,
+ 'form-agent-counters',
+ 'agents'
+ );
+ echo ' ';
+
+ echo "
";
+ echo ''.__('Total Modules').' ';
+ echo print_counters_cfv(
+ $status_module_array,
+ 'form-module-counters',
+ 'modules'
+ );
+ echo ' ';
+
+ echo '
';
+
+ echo "
";
+ echo "
";
+ echo '';
+ echo '';
+ echo ' ';
+ echo ''.$array_custom_fields[$id_custom_fields].' ';
+ echo ''.__('Agent').' ';
+ echo ''.__('I.P').' ';
+ echo ''.__('Server').' ';
+ echo ''.__('Status').' ';
+ echo ' ';
+ echo ' ';
+ echo '';
+ // Content of the dynamically created load.
+ echo ' ';
+ echo '
';
+ echo '
';
+
+ echo '
';
+
+ $indexed_descriptions = $data['indexed_descriptions'];
+ } else {
+ ui_print_info_message(
+ [
+ 'no_close' => true,
+ 'message' => __('No data to show.'),
+ ]
+ );
+ }
+} else {
+ ui_print_info_message(
+ [
+ 'no_close' => true,
+ 'message' => __('There are no custom search defined.'),
+ ]
+ );
+}
+
+// Div modal for display filters.
+echo '
';
+
+ui_require_css_file('datatables.min', 'include/styles/js/');
+ui_require_javascript_file_enterprise('functions_csv');
+ui_require_javascript_file('datatables.min');
+ui_require_javascript_file('buttons.dataTables.min');
+ui_require_javascript_file('dataTables.buttons.min');
+ui_require_javascript_file('buttons.html5.min');
+ui_require_javascript_file('buttons.print.min');
+enterprise_include_once('include/functions_reporting_csv.php');
+?>
+
+
diff --git a/pandora_console/operation/menu.php b/pandora_console/operation/menu.php
index 6b98ffb55b..3794a30ae3 100644
--- a/pandora_console/operation/menu.php
+++ b/pandora_console/operation/menu.php
@@ -205,6 +205,10 @@ if ($access_console_node === true) {
$sub['operation/inventory/inventory']['refr'] = 0;
}
+ $sub['operation/custom_fields/custom_fields_view']['text'] = __('Custom fields view');
+ $sub['operation/custom_fields/custom_fields_view']['id'] = 'Custom fields view';
+ $sub['operation/custom_fields/custom_fields_view']['refr'] = 0;
+
if ($config['activate_netflow'] || $config['activate_sflow']) {
$sub['network_traffic'] = [
'text' => __('Network'),