diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 0ee00a8f17..43f8a477da 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-agent-unix
-Version: 7.0NG.731-190214
+Version: 7.0NG.731-190219
Architecture: all
Priority: optional
Section: admin
diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh
index 9ebfc5d3dc..47e51c22e1 100644
--- a/pandora_agents/unix/DEBIAN/make_deb_package.sh
+++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-pandora_version="7.0NG.731-190214"
+pandora_version="7.0NG.731-190219"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 664a9964e3..6d3983758e 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -42,7 +42,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.731';
-use constant AGENT_BUILD => '190214';
+use constant AGENT_BUILD => '190219';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;
diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec
index 5c097c9a07..076a9ef928 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.731
-%define release 190214
+%define release 190219
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 820f5d3ec1..394ac97c05 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.731
-%define release 190214
+%define release 190219
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer
index 8adeac4f7a..c16a74273a 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.731"
-PI_BUILD="190214"
+PI_BUILD="190219"
OS_NAME=`uname -s`
FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 3b606d8ec0..fb99d6c15f 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
-{190214}
+{190219}
ViewReadme
{Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 30fff5f13b..2abbc0a7b3 100644
--- a/pandora_agents/win32/pandora.cc
+++ b/pandora_agents/win32/pandora.cc
@@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
-#define PANDORA_VERSION ("7.0NG.731(Build 190214)")
+#define PANDORA_VERSION ("7.0NG.731(Build 190219)")
string pandora_path;
string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index a34c9905ea..bc770967dd 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
- VALUE "ProductVersion", "(7.0NG.731(Build 190214))"
+ VALUE "ProductVersion", "(7.0NG.731(Build 190219))"
VALUE "FileVersion", "1.0.0.0"
END
END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 285b64c80f..a7a372a3dd 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-console
-Version: 7.0NG.731-190214
+Version: 7.0NG.731-190219
Architecture: all
Priority: optional
Section: admin
diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh
index 02c1b2ed71..fd52973ced 100644
--- a/pandora_console/DEBIAN/make_deb_package.sh
+++ b/pandora_console/DEBIAN/make_deb_package.sh
@@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-pandora_version="7.0NG.731-190214"
+pandora_version="7.0NG.731-190219"
package_pear=0
package_pandora=1
diff --git a/pandora_console/extensions/module_groups.php b/pandora_console/extensions/module_groups.php
index 4a9130a3db..1a505538ed 100644
--- a/pandora_console/extensions/module_groups.php
+++ b/pandora_console/extensions/module_groups.php
@@ -328,4 +328,3 @@ function mainModuleGroups()
extensions_add_operation_menu_option(__('Module groups'), 'estado', 'module_groups/brick.png', 'v1r1', 'view');
extensions_add_main_function('mainModuleGroups');
-
diff --git a/pandora_console/extras/pandora_diag.php b/pandora_console/extras/pandora_diag.php
index 4a0b32de81..519b4b32a5 100644
--- a/pandora_console/extras/pandora_diag.php
+++ b/pandora_console/extras/pandora_diag.php
@@ -137,8 +137,8 @@ function get_logs_size($file)
function get_status_logs($path)
{
$status_server_log = '';
- $size_server_log = get_logs_size($path);
- if ($size_server_log <= 10240) {
+ $size_server_log = number_format(get_logs_size($path));
+ if ($size_server_log <= 1048576) {
$status_server_log = "Normal Status   You have less than 10 MB of logs";
} else {
$status_server_log = "Warning Status   You have more than 10 MB of logs";
@@ -412,11 +412,7 @@ render_info_data(
render_info_data('SELECT COUNT(*) FROM tagente_modulo', 'Total modules');
render_info_data('SELECT COUNT(*) FROM tgrupo', 'Total groups');
render_info_data('SELECT COUNT(*) FROM tagente_datos', 'Total module data records');
- // render_info_data ("SELECT COUNT(*) FROM tagente_datos_string","Total module string data records");
- // render_info_data ("SELECT COUNT(*) FROM tagente_datos_log4x","Total module log4x data records");
render_info_data('SELECT COUNT(*) FROM tagent_access', 'Total agent access record');
- // render_info ("tagente_estado");
- // render_info ("talert_template_modules");
render_info_data('SELECT COUNT(*) FROM tevento', 'Total events');
if ($config['enterprise_installed']) {
@@ -700,7 +696,7 @@ render_info_data(
render_row(status_values($read_rnd_buffer_size_min_rec_value, $read_rnd_buffer_size), 'Read rnd-buffer size ', 'Read rnd-buffer size ');
render_row(status_values($query_cache_min_res_unit_min_rec_value, $query_cache_min_res_unit), 'Query cache min-res-unit ', 'Query cache min-res-unit ');
render_row(status_values($innodb_file_per_table_min_rec_value, $innodb_file_per_table), 'InnoDB file per table ', 'InnoDB file per table ');
- echo "
".__('Tables fragmentation in the PandoraFMS database').' |
';
+ echo "".__('Tables fragmentation in the Pandora FMS database').' |
';
@@ -708,14 +704,14 @@ render_info_data(
render_row(number_format($tables_fragmentation, 2).'%', 'Tables fragmentation (current value)');
render_row(status_fragmentation_tables($tables_fragmentation_max_rec_value, $tables_fragmentation), 'Status fragmentation tables');
- echo "".__(' PandoraFMS logs dates').' |
';
+ echo "".__(' Pandora FMS logs dates').' |
';
- render_row(number_format((get_logs_size($path_server_logs) / 1024), 2).'M', 'Size server logs (current value)');
+ render_row(number_format((get_logs_size($path_server_logs) / 1048576), 3).'M', 'Size server logs (current value)');
render_row(get_status_logs($path_server_logs), 'Status server logs');
- render_row(number_format((get_logs_size($path_console_logs) / 1024), 2).'M', 'Size console logs (current value)');
+ render_row(number_format((get_logs_size($path_console_logs) / 1048576), 3).'M', 'Size console logs (current value)');
render_row(get_status_logs($path_console_logs), 'Status console logs');
- echo "".__(' PandoraFMS Licence Information').' |
';
+ echo "".__(' Pandora FMS Licence Information').' |
';
render_row(html_print_textarea('keys[customer_key]', 10, 255, $settings->customer_key, 'style="height:40px; width:450px;"', true), 'Customer key');
render_row($license['expiry_date'], 'Expires');
diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php
index 004c947af4..f511304d8a 100644
--- a/pandora_console/godmode/agentes/agent_manager.php
+++ b/pandora_console/godmode/agentes/agent_manager.php
@@ -236,7 +236,7 @@ if ($new_agent) {
}
$table->data[2][0] = __('IP Address');
-$table->data[2][1] = html_print_input_text('direccion', $direccion_agente, '', 16, 100, true);
+$table->data[2][1] = html_print_input_text('direccion', $direccion_agente, '', 16, 100, true).html_print_checkbox('unique_ip', 1, $config['unique_ip'], true).__('Unique IP').ui_print_help_tip(__('Set the primary IP address as the unique IP, preventing the same primary IP address from being used in more than one agent'), true);
if ($id_agente) {
$table->data[2][1] .= ' ';
diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php
index dfa28988a8..071f6a8ae0 100644
--- a/pandora_console/godmode/agentes/configurar_agente.php
+++ b/pandora_console/godmode/agentes/configurar_agente.php
@@ -81,6 +81,7 @@ $alias_as_name = 0;
$direccion_agente = get_parameter('direccion', '');
$direccion_agente = trim(io_safe_output($direccion_agente));
$direccion_agente = io_safe_input($direccion_agente);
+$unique_ip = 0;
$intervalo = SECONDS_5MINUTES;
$ff_interval = 0;
$quiet_module = 0;
@@ -161,6 +162,7 @@ if ($create_agent) {
$alias = (string) get_parameter_post('alias', '');
$alias_as_name = (int) get_parameter_post('alias_as_name', 0);
$direccion_agente = (string) get_parameter_post('direccion', '');
+ $unique_ip = (int) get_parameter_post('unique_ip', 0);
// safe_output only validate ip
$direccion_agente = trim(io_safe_output($direccion_agente));
@@ -216,7 +218,12 @@ if ($create_agent) {
$nombre_agente = $alias;
}
- if (!$exists_alias) {
+ if ($unique_ip && $direccion_agente != '') {
+ $sql = 'SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"';
+ $exists_ip = db_get_row_sql($sql);
+ }
+
+ if (!$exists_alias && !$exists_ip) {
$id_agente = db_process_sql_insert(
'tagente',
[
@@ -326,6 +333,8 @@ if ($create_agent) {
$agent_creation_error = __('Could not be created');
if ($exists_alias) {
$agent_creation_error = __('Could not be created, because name already exists');
+ } else if ($exists_ip) {
+ $agent_creation_error = __('Could not be created, because IP already exists');
}
}
}
@@ -758,6 +767,7 @@ if ($update_agent) {
$alias = str_replace('`', '‘', (string) get_parameter_post('alias', ''));
$alias_as_name = (int) get_parameter_post('alias_as_name', 0);
$direccion_agente = (string) get_parameter_post('direccion', '');
+ $unique_ip = (int) get_parameter_post('unique_ip', 0);
// safe_output only validate ip
$direccion_agente = trim(io_safe_output($direccion_agente));
@@ -860,8 +870,15 @@ if ($update_agent) {
// If there is an agent with the same name, but a different ID
}
+ if ($unique_ip && $direccion_agente != '') {
+ $sql = 'SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"';
+ $exists_ip = db_get_row_sql($sql);
+ }
+
if ($grupo <= 0) {
ui_print_error_message(__('The group id %d is incorrect.', $grupo));
+ } else if ($exists_ip) {
+ ui_print_error_message(__('Duplicate main IP address'));
} else {
// If different IP is specified than previous, add the IP
if ($direccion_agente != ''
diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index 38584d6b6a..aef5ac71a2 100755
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -2720,7 +2720,7 @@ function edit_custom_graph() {
}
});
- window.location.href = server_url + "/index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id=" + id_element_graph + hash_data;
+ window.location.href = server_url + "index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id=" + id_element_graph + hash_data;
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index abab21b8fe..fa3e720a00 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -1116,8 +1116,13 @@ switch ($action) {
$name_it = (string) get_parameter('name');
$values['name'] = reporting_label_macro($items_label, $name_it);
- // Added support for projection graphs, prediction date and SLA reports
- // 'top_n_value','top_n' and 'text' fields will be reused for these types of report
+ /*
+ Added support for projection graphs,
+ prediction date and SLA reports
+ 'top_n_value','top_n' and 'text'
+ fields will be reused for these types of report
+ */
+
switch ($values['type']) {
case 'projection_graph':
$values['period'] = get_parameter('period1');
@@ -1127,7 +1132,8 @@ switch ($action) {
break;
case 'event_report_log':
- $agents_to_report = get_parameter('id_agents2');
+
+ $agents_to_report = get_parameter('id_agents3');
$source = get_parameter('source', '');
$search = get_parameter('search', '');
$log_number = get_parameter('log_number', '');
@@ -1525,7 +1531,7 @@ switch ($action) {
break;
case 'event_report_log':
- $agents_to_report = get_parameter('id_agents2');
+ $agents_to_report = get_parameter('id_agents3');
$source = get_parameter('source', '');
$search = get_parameter('search', '');
$log_number = get_parameter('log_number', '');
diff --git a/pandora_console/godmode/setup/performance.php b/pandora_console/godmode/setup/performance.php
index f8d53e722f..9e663e63cc 100644
--- a/pandora_console/godmode/setup/performance.php
+++ b/pandora_console/godmode/setup/performance.php
@@ -1,37 +1,242 @@
width = '100%';
+$table_status->class = 'databox filters';
+$table_status->style[0] = 'font-weight: bold';
+$table_status->size[0] = '10%';
+
+$table_status->data = [];
+
+$sql = "SELECT UNIX_TIMESTAMP(NOW()) - `value` AS updated_at
+ FROM tconfig
+ WHERE token = 'db_maintance'";
+
+$time_pandora_db_active = db_get_sql($sql);
+
+
+if ($time_pandora_db_active < SECONDS_12HOURS) {
+ $table_status->data[0][0] = html_print_image(
+ 'images/dot_green.png',
+ true
+ );
+} else {
+ $table_status->data[0][0] = html_print_image(
+ 'images/dot_red.png',
+ true
+ );
+}
+
+$table_status->data[0][0] .= ' '.__('Pandora_db running in active database.');
+$table_status->data[0][0] .= ' '.__('Executed:').' ';
+$table_status->data[0][0] .= human_time_description_raw(
+ $time_pandora_db_active,
+ true
+);
+
+$table_status->data[0][0] .= ' '.__('ago').'.';
+
+if ($config['history_db_enabled'] == 1) {
+ if (! isset($config['history_db_connection'])
+ || $config['history_db_connection'] === false
+ ) {
+ $config['history_db_connection'] = db_connect(
+ $config['history_db_host'],
+ $config['history_db_name'],
+ $config['history_db_user'],
+ io_output_password($config['history_db_pass']),
+ $config['history_db_port'],
+ false
+ );
+ }
+
+ $history_connect = @mysql_db_process_sql(
+ 'SELECT 1 FROM tconfig',
+ 'affected_rows',
+ $config['history_db_connection'],
+ false
+ );
+
+ $time_pandora_db_history = false;
+ if ($history_connect !== false) {
+ if ($config['history_db_connection'] !== false) {
+ $time_pandora_db_history = mysql_db_process_sql(
+ $sql,
+ 'insert_id',
+ $config['history_db_connection'],
+ false
+ );
+ }
+ }
+
+ if ($time_pandora_db_history !== false
+ && $time_pandora_db_history[0]['updated_at'] < SECONDS_12HOURS
+ ) {
+ $table_status->data[1][0] = html_print_image(
+ 'images/dot_green.png',
+ true
+ );
+ } else {
+ $table_status->data[1][0] = html_print_image(
+ 'images/dot_red.png',
+ true
+ );
+ }
+
+ $table_status->data[1][0] .= ' '.__('Pandora_db running in historical database.');
+ $table_status->data[1][0] .= ' '.__('Executed:').' ';
+ if ($time_pandora_db_history !== false) {
+ $table_status->data[1][0] .= human_time_description_raw(
+ $time_pandora_db_history[0]['updated_at'],
+ true
+ ).' '.__('ago').'.';
+ } else {
+ $table_status->data[1][0] .= __('not executed');
+ }
+}
- Update operation is done in config_process.php
- This is done in that way so the user can see the changes inmediatly.
- If you added a new token, please check config_update_config() in functions_config.php
- to add it there.
-*/
$table = new StdClass();
$table->width = '100%';
@@ -44,42 +249,279 @@ $table->size[1] = '30%';
enterprise_hook('enterprise_warnings_history_days');
-$table->data[1][0] = __('Max. days before delete events').ui_print_help_tip(__('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'), true);
-$table->data[1][1] = html_print_input_text('event_purge', $config['event_purge'], '', 5, 5, true);
+$table->data[1][0] = __('Max. days before delete events');
+$table->data[1][0] .= ui_print_help_tip(
+ __('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'),
+ true
+);
+
+$table->data[1][1] = html_print_input_text(
+ 'event_purge',
+ $config['event_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[2][0] = __('Max. days before delete traps');
-$table->data[2][1] = html_print_input_text('trap_purge', $config['trap_purge'], '', 5, 5, true);
+$table->data[2][1] = html_print_input_text(
+ 'trap_purge',
+ $config['trap_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[3][0] = __('Max. days before delete audit events');
-$table->data[3][1] = html_print_input_text('audit_purge', $config['audit_purge'], '', 5, 5, true);
+$table->data[3][1] = html_print_input_text(
+ 'audit_purge',
+ $config['audit_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[4][0] = __('Max. days before delete string data');
-$table->data[4][1] = html_print_input_text('string_purge', $config['string_purge'], '', 5, 5, true);
+$table->data[4][1] = html_print_input_text(
+ 'string_purge',
+ $config['string_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[5][0] = __('Max. days before delete GIS data');
-$table->data[5][1] = html_print_input_text('gis_purge', $config['gis_purge'], '', 5, 5, true);
+$table->data[5][1] = html_print_input_text(
+ 'gis_purge',
+ $config['gis_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
-$table->data[6][0] = __('Max. days before purge').ui_print_help_tip(__('Configure a purge period more frequent than a compact data period has no sense'), true);
-$table->data[6][1] = html_print_input_text('days_purge', $config['days_purge'], '', 5, 5, true);
+$table->data[6][0] = __('Max. days before purge');
+$table->data[6][0] .= ui_print_help_tip(
+ __('Configure a purge period more frequent than a compact data period has no sense'),
+ true
+);
+$table->data[6][1] = html_print_input_text(
+ 'days_purge',
+ $config['days_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[7][0] = __('Max. days before compact data');
-$table->data[7][1] = html_print_input_text('days_compact', $config['days_compact'], '', 5, 5, true);
+$table->data[7][1] = html_print_input_text(
+ 'days_compact',
+ $config['days_compact'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[8][0] = __('Max. days before delete unknown modules');
-$table->data[8][1] = html_print_input_text('days_delete_unknown', $config['days_delete_unknown'], '', 5, 5, true);
+$table->data[8][1] = html_print_input_text(
+ 'days_delete_unknown',
+ $config['days_delete_unknown'],
+ '',
+ 5,
+ 5,
+ true
+);
$table->data[9][0] = __('Max. days before delete autodisabled agents');
-$table->data[9][1] = html_print_input_text('days_autodisable_deletion', $config['days_autodisable_deletion'], '', 5, 5, true);
+$table->data[9][1] = html_print_input_text(
+ 'days_autodisable_deletion',
+ $config['days_autodisable_deletion'],
+ '',
+ 5,
+ 5,
+ true
+);
-$table->data[10][0] = __('Retention period of past special days').ui_print_help_tip(__('This number is days to keep past special days. 0 means never remove.'), true);
-$table->data[10][1] = html_print_input_text('num_past_special_days', $config['num_past_special_days'], '', 5, 5, true);
+$table->data[10][0] = __('Retention period of past special days');
+$table->data[10][0] .= ui_print_help_tip(
+ __('This number is days to keep past special days. 0 means never remove.'),
+ true
+);
+$table->data[10][1] = html_print_input_text(
+ 'num_past_special_days',
+ $config['num_past_special_days'],
+ '',
+ 5,
+ 5,
+ true
+);
-$table->data[11][0] = __('Max. macro data fields').ui_print_help_tip(__('Number of macro fields in alerts and templates between 1 and 15'), true);
-$table->data[11][1] = html_print_input_text('max_macro_fields', $config['max_macro_fields'], '', 5, 5, true, false, false, 'onChange="change_macro_fields()"');
+$table->data[11][0] = __('Max. macro data fields');
+$table->data[11][0] .= ui_print_help_tip(
+ __('Number of macro fields in alerts and templates between 1 and 15'),
+ true
+);
+$table->data[11][1] = html_print_input_text(
+ 'max_macro_fields',
+ $config['max_macro_fields'],
+ '',
+ 5,
+ 5,
+ true,
+ false,
+ false,
+ 'onChange="change_macro_fields()"'
+);
if (enterprise_installed()) {
$table->data[12][0] = __('Max. days before delete inventory data');
- $table->data[12][1] = html_print_input_text('inventory_purge', $config['inventory_purge'], '', 5, 5, true);
+ $table->data[12][1] = html_print_input_text(
+ 'inventory_purge',
+ $config['inventory_purge'],
+ '',
+ 5,
+ 5,
+ true
+ );
+}
+
+if ($config['history_db_enabled'] == 1) {
+ if (! isset($config['history_db_connection'])
+ || $config['history_db_connection'] === false
+ ) {
+ $config['history_db_connection'] = db_connect(
+ $config['history_db_host'],
+ $config['history_db_name'],
+ $config['history_db_user'],
+ io_output_password($config['history_db_pass']),
+ $config['history_db_port'],
+ false
+ );
+ }
+
+ $history_connect = @mysql_db_process_sql(
+ 'SELECT 1 FROM tconfig',
+ 'affected_rows',
+ $config['history_db_connection'],
+ false
+ );
+
+ $config_history = false;
+ if ($history_connect !== false) {
+ if ($config['history_db_connection'] != false) {
+ $config_history_array = mysql_db_process_sql(
+ 'SELECT * FROM tconfig',
+ 'affected_rows',
+ $config['history_db_connection'],
+ false
+ );
+
+ if (isset($config_history_array) && is_array($config_history_array)) {
+ foreach ($config_history_array as $key => $value) {
+ $config_history[$value['token']] = $value['value'];
+ }
+ }
+ }
+ } else {
+ echo ui_print_error_message(
+ __('The tconfig table does not exist in the historical database')
+ );
+ }
+
+ if ($config_history === false) {
+ $config_history = [];
+ $config_history['days_purge'] = 180;
+ $config_history['days_compact'] = 120;
+ $config_history['step_compact'] = 1;
+ $config_history['event_purge'] = 180;
+ $config_history['string_purge'] = 180;
+ }
+
+ $table_historical = new StdClass();
+ $table_historical->width = '100%';
+ $table_historical->class = 'databox filters';
+ $table_historical->data = [];
+ $table_historical->style[0] = 'font-weight: bold';
+
+ $table_historical->size[0] = '70%';
+ $table_historical->size[1] = '30%';
+
+ enterprise_hook('enterprise_warnings_history_days');
+
+ $table_historical->data[0][0] = __('Max. days before purge');
+ $table_historical->data[0][0] .= ui_print_help_tip(
+ __('Configure a purge period more frequent than a compact data period has no sense'),
+ true
+ );
+ $table_historical->data[0][1] = html_print_input_text(
+ 'historical_days_purge',
+ $config_history['days_purge'],
+ '',
+ 5,
+ 5,
+ true
+ );
+
+ $table_historical->data[1][0] = __('Max. days before compact data');
+ $table_historical->data[1][1] = html_print_input_text(
+ 'historical_days_compact',
+ $config_history['days_compact'],
+ '',
+ 5,
+ 5,
+ true
+ );
+
+ $table_historical->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)');
+ $table_historical->data[2][0] .= ui_print_help_tip(
+ __('Data will be compacted in intervals of the specified length.'),
+ true
+ );
+ $table_historical->data[2][1] = html_print_input_text(
+ 'historical_step_compact',
+ $config_history['step_compact'],
+ '',
+ 5,
+ 5,
+ true
+ );
+
+ $table_historical->data[3][0] = __('Max. days before delete events');
+ $table_historical->data[3][0] .= ui_print_help_tip(
+ __('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'),
+ true
+ );
+
+ $table_historical->data[3][1] = html_print_input_text(
+ 'historical_event_purge',
+ $config_history['event_purge'],
+ '',
+ 5,
+ 5,
+ true
+ );
+
+ $table_historical->data[4][0] = __('Max. days before delete string data');
+ $table_historical->data[4][1] = html_print_input_text(
+ 'historical_string_purge',
+ $config_history['string_purge'],
+ '',
+ 5,
+ 5,
+ true
+ );
+
+ $table_historical->data[4][1] .= html_print_input_hidden(
+ 'historical_history_db_enabled',
+ 0,
+ true
+ );
}
$table_other = new stdClass();
@@ -91,7 +533,11 @@ $table_other->style[0] = 'font-weight: bold';
$table_other->size[0] = '70%';
$table_other->size[1] = '30%';
-$table_other->data[1][0] = __('Item limit for realtime reports').ui_print_help_tip(__('Set a value too high cause a slowdown on console and a performance penalty in the system.'), true);
+$table_other->data[1][0] = __('Item limit for realtime reports');
+$table_other->data[1][0] .= ui_print_help_tip(
+ __('Set a value too high cause a slowdown on console and a performance penalty in the system.'),
+ true
+);
$table_other->data[1][1] = html_print_input_text(
'report_limit',
$config['report_limit'],
@@ -101,7 +547,11 @@ $table_other->data[1][1] = html_print_input_text(
true
);
-$table_other->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)').ui_print_help_tip(__('Data will be compacted in intervals of the specified length.'), true);
+$table_other->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)');
+$table_other->data[2][0] .= ui_print_help_tip(
+ __('Data will be compacted in intervals of the specified length.'),
+ true
+);
$table_other->data[2][1] = html_print_input_text(
'step_compact',
$config['step_compact'],
@@ -122,46 +572,131 @@ $intervals[SECONDS_2WEEK] = __('2 weeks');
$intervals[SECONDS_1MONTH] = __('Last month');
$table_other->data[3][0] = __('Default hours for event view');
-$table_other->data[3][1] = html_print_input_text('event_view_hr', $config['event_view_hr'], '', 5, 5, true);
+$table_other->data[3][1] = html_print_input_text(
+ 'event_view_hr',
+ $config['event_view_hr'],
+ '',
+ 5,
+ 5,
+ true
+);
$table_other->data[5][0] = __('Use realtime statistics');
-$table_other->data[5][1] = html_print_checkbox_toogle_switch('realtimestats', 1, $config['realtimestats'], true);
+$table_other->data[5][1] = html_print_checkbox_toogle_switch(
+ 'realtimestats',
+ 1,
+ $config['realtimestats'],
+ true
+);
-$table_other->data[6][0] = __('Batch statistics period (secs)').ui_print_help_tip(__('If realtime statistics are disabled, statistics interval resfresh will be set here.'), true);
-$table_other->data[6][1] = html_print_input_text('stats_interval', $config['stats_interval'], '', 5, 5, true);
+$table_other->data[6][0] = __('Batch statistics period (secs)');
+$table_other->data[6][0] .= ui_print_help_tip(
+ __('If realtime statistics are disabled, statistics interval resfresh will be set here.'),
+ true
+);
+$table_other->data[6][1] = html_print_input_text(
+ 'stats_interval',
+ $config['stats_interval'],
+ '',
+ 5,
+ 5,
+ true
+);
$table_other->data[7][0] = __('Use agent access graph').ui_print_help_icon('agent_access', true);
$table_other->data[7][1] = html_print_checkbox_toogle_switch('agentaccess', 1, $config['agentaccess'], true);
-$table_other->data[8][0] = __('Max. recommended number of files in attachment directory').ui_print_help_tip(__('This number is the maximum number of files in attachment directory. If this number is reached then a warning message will appear in the header notification space.'), true);
-$table_other->data[8][1] = html_print_input_text('num_files_attachment', $config['num_files_attachment'], '', 5, 5, true);
+$table_other->data[8][0] = __('Max. recommended number of files in attachment directory');
+$table_other->data[8][0] .= ui_print_help_tip(
+ __('This number is the maximum number of files in attachment directory. If this number is reached then a warning message will appear in the header notification space.'),
+ true
+);
+$table_other->data[8][1] = html_print_input_text(
+ 'num_files_attachment',
+ $config['num_files_attachment'],
+ '',
+ 5,
+ 5,
+ true
+);
$table_other->data[9][0] = __('Delete not init modules');
$table_other->data[9][1] = html_print_checkbox_toogle_switch('delete_notinit', 1, $config['delete_notinit'], true);
-$table_other->data[10][0] = __('Big Operation Step to purge old data').ui_print_help_tip(__('The number of blocks that a time interval is split into. A bigger value means bigger blocks, which is faster but heavier on the database. Default is 100.'), true);
-$table_other->data[10][1] = html_print_input_text('big_operation_step_datos_purge', $config['big_operation_step_datos_purge'], '', 5, 5, true);
+$table_other->data[10][0] = __('Big Operation Step to purge old data');
+$table_other->data[10][0] .= ui_print_help_tip(
+ __('The number of blocks that a time interval is split into. A bigger value means bigger blocks, which is faster but heavier on the database. Default is 100.'),
+ true
+);
+$table_other->data[10][1] = html_print_input_text(
+ 'big_operation_step_datos_purge',
+ $config['big_operation_step_datos_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
-$table_other->data[11][0] = __('Small Operation Step to purge old data').ui_print_help_tip(__('The number of rows that are processed in a single query in deletion. Default is 1000. Increase to 3000-5000 in fast systems. Decrease to 500 or 250 on systems with locks.'), true);
-$table_other->data[11][1] = html_print_input_text('small_operation_step_datos_purge', $config['small_operation_step_datos_purge'], '', 5, 5, true);
+$table_other->data[11][0] = __('Small Operation Step to purge old data');
+$table_other->data[11][0] .= ui_print_help_tip(
+ __('The number of rows that are processed in a single query in deletion. Default is 1000. Increase to 3000-5000 in fast systems. Decrease to 500 or 250 on systems with locks.'),
+ true
+);
+$table_other->data[11][1] = html_print_input_text(
+ 'small_operation_step_datos_purge',
+ $config['small_operation_step_datos_purge'],
+ '',
+ 5,
+ 5,
+ true
+);
-$table_other->data[12][0] = __('Graph container - Max. Items').ui_print_help_tip(__('The number of graphs that are viewed in a container. Default is 10 .Increasing this number could lead to performance problems'), true);
-$table_other->data[12][1] = html_print_input_text('max_graph_container', $config['max_graph_container'], '', 5, 5, true);
+$table_other->data[12][0] = __('Graph container - Max. Items');
+$table_other->data[12][0] .= ui_print_help_tip(
+ __('The number of graphs that are viewed in a container. Default is 10 .Increasing this number could lead to performance problems'),
+ true
+);
+$table_other->data[12][1] = html_print_input_text(
+ 'max_graph_container',
+ $config['max_graph_container'],
+ '',
+ 5,
+ 5,
+ true
+);
echo '';
?>
@@ -170,7 +705,6 @@ echo '';
function change_macro_fields() {
var value = $("#text-max_macro_fields").val();
- console.log(value);
if (value <= 0) {
$("#text-max_macro_fields").val(1);
}
diff --git a/pandora_console/godmode/setup/setup.php b/pandora_console/godmode/setup/setup.php
index f5f229ddd5..7f88982a14 100644
--- a/pandora_console/godmode/setup/setup.php
+++ b/pandora_console/godmode/setup/setup.php
@@ -1,17 +1,32 @@
false,
'text' => ''.html_print_image('images/gm_setup.png', true, ['title' => __('General')]).'',
@@ -114,6 +129,7 @@ if (enterprise_installed()) {
switch ($section) {
case 'general':
+ default:
$buttons['general']['active'] = true;
$subpage = ' » '.__('General');
break;
@@ -145,7 +161,7 @@ switch ($section) {
break;
}
-// Header
+// Header.
ui_print_page_header(__('Configuration').$subpage, '', false, $help_header, true, $buttons);
if (isset($config['error_config_update_config'])) {
diff --git a/pandora_console/godmode/setup/setup_general.php b/pandora_console/godmode/setup/setup_general.php
index 8196d98873..82899cde6b 100644
--- a/pandora_console/godmode/setup/setup_general.php
+++ b/pandora_console/godmode/setup/setup_general.php
@@ -269,7 +269,13 @@ $table->data[37][0] = __('Audit log directory').ui_print_help_tip(__('Directory
$table->data[37][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true);
$table->data[38][0] = __('Set alias as name by default in agent creation');
-$table->data[38][1] = html_print_checkbox_toogle_switch('alias_as_name', 1, $config['alias_as_name'], true);
+$table->data[38][1] = __('Yes').' '.html_print_radio_button('alias_as_name', 1, '', $config['alias_as_name'], true).' ';
+$table->data[38][1] .= __('No').' '.html_print_radio_button('alias_as_name', 0, '', $config['alias_as_name'], true);
+
+$table->data[39][0] = __('Unique IP').ui_print_help_tip(__('Set the primary IP address as the unique IP, preventing the same primary IP address from being used in more than one agent'), true);
+$table->data[39][1] = __('Yes').' '.html_print_radio_button('unique_ip', 1, '', $config['unique_ip'], true).' ';
+$table->data[39][1] .= __('No').' '.html_print_radio_button('unique_ip', 0, '', $config['unique_ip'], true);
+
echo '