diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index bf1751f2f0..bb54c56b4c 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-agent-unix
-Version: 7.0NG.750-201027
+Version: 7.0NG.750-201029
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 1eb901b32f..7e6e85035c 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.750-201027"
+pandora_version="7.0NG.750-201029"
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 033036621b..d55e379f01 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -55,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.750';
-use constant AGENT_BUILD => '201027';
+use constant AGENT_BUILD => '201029';
# 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 17369dc230..698b2439d2 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.750
-%define release 201027
+%define release 201029
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 034ff949f0..8d18a817fe 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.750
-%define release 201027
+%define release 201029
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 7e135b5982..81a292285e 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.750"
-PI_BUILD="201027"
+PI_BUILD="201029"
OS_NAME=`uname -s`
FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index b38d7499f4..f6493723fd 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
-{201027}
+{201029}
ViewReadme
{Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index d6bfb1e406..bac75d8cd5 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.750(Build 201027)")
+#define PANDORA_VERSION ("7.0NG.750(Build 201029)")
string pandora_path;
string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 4fd1263251..070d4c6fbd 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.750(Build 201027))"
+ VALUE "ProductVersion", "(7.0NG.750(Build 201029))"
VALUE "FileVersion", "1.0.0.0"
END
END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index c7a3a3c9e6..304b66c7a6 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-console
-Version: 7.0NG.750-201027
+Version: 7.0NG.750-201029
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 23add77b43..a7ca73a213 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.750-201027"
+pandora_version="7.0NG.750-201029"
package_pear=0
package_pandora=1
diff --git a/pandora_console/extensions/agents_modules.php b/pandora_console/extensions/agents_modules.php
index 8aa032c9a8..0a3cc2a382 100644
--- a/pandora_console/extensions/agents_modules.php
+++ b/pandora_console/extensions/agents_modules.php
@@ -668,7 +668,7 @@ function mainAgentsModules()
if ($recursion) {
$filter_groups['id_grupo'] = array_merge(
$group_id,
- groups_get_id_recursive($group_id, true)
+ groups_get_children_ids($group_id, true)
);
} else {
$filter_groups['id_grupo'] = $group_id;
diff --git a/pandora_console/extensions/module_groups.php b/pandora_console/extensions/module_groups.php
index 76225c0751..50a0de4d78 100644
--- a/pandora_console/extensions/module_groups.php
+++ b/pandora_console/extensions/module_groups.php
@@ -86,7 +86,6 @@ function mainModuleGroups()
);
$info = $tree_group->getArray();
$info = groupview_plain_groups($info);
- $counter = count($info);
$offset = get_parameter('offset', 0);
$agent_group_search = get_parameter('agent_group_search', '');
$module_group_search = get_parameter('module_group_search', '');
@@ -134,6 +133,8 @@ function mainModuleGroups()
$ids_group = -1;
}
+ $counter = count($info);
+
$condition_critical = modules_get_state_condition(AGENT_MODULE_STATUS_CRITICAL_ALERT);
$condition_warning = modules_get_state_condition(AGENT_MODULE_STATUS_WARNING_ALERT);
$condition_unknown = modules_get_state_condition(AGENT_MODULE_STATUS_UNKNOWN);
diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php
index d4036bd68c..8238d1636b 100644
--- a/pandora_console/godmode/agentes/modificar_agente.php
+++ b/pandora_console/godmode/agentes/modificar_agente.php
@@ -408,7 +408,7 @@ if ($ag_group > 0) {
$ag_groups = [];
$ag_groups = (array) $ag_group;
if ($recursion) {
- $ag_groups = groups_get_id_recursive($ag_group, true);
+ $ag_groups = groups_get_children_ids($ag_group, true);
}
$user_groups_to_sql = implode(',', $ag_groups);
diff --git a/pandora_console/godmode/agentes/planned_downtime.editor.php b/pandora_console/godmode/agentes/planned_downtime.editor.php
index b3e7029dbd..4aceac701e 100644
--- a/pandora_console/godmode/agentes/planned_downtime.editor.php
+++ b/pandora_console/godmode/agentes/planned_downtime.editor.php
@@ -877,7 +877,7 @@ if ($id_downtime > 0) {
$filter_cond = '';
if ($filter_group > 0) {
if ($recursion) {
- $rg = groups_get_id_recursive($filter_group, true);
+ $rg = groups_get_children_ids($filter_group, true);
$filter_cond .= ' AND id_grupo IN (';
$i = 0;
diff --git a/pandora_console/godmode/alerts/alert_list.builder.php b/pandora_console/godmode/alerts/alert_list.builder.php
index 4e9772b6d6..bcb1db0e08 100644
--- a/pandora_console/godmode/alerts/alert_list.builder.php
+++ b/pandora_console/godmode/alerts/alert_list.builder.php
@@ -131,7 +131,7 @@ if (check_acl($config['id_user'], 0, 'LM')) {
$table->data[2][0] = __('Template');
$own_info = get_user_info($config['id_user']);
-if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
+if ($own_info['is_admin']) {
$templates = alerts_get_alert_templates(false, ['id', 'name']);
} else {
$usr_groups = users_get_groups($config['id_user'], 'LW', true);
diff --git a/pandora_console/godmode/groups/configure_group.php b/pandora_console/godmode/groups/configure_group.php
index 72fe425fca..7d74fe56d0 100644
--- a/pandora_console/godmode/groups/configure_group.php
+++ b/pandora_console/godmode/groups/configure_group.php
@@ -168,7 +168,15 @@ if ($id_group) {
}
} else {
$table->data[2][1] = '
';
- $table->data[2][1] .= html_print_select_groups(false, 'AR', true, 'id_parent', $id_parent, '', '', '', true);
+ $table->data[2][1] .= html_print_input(
+ [
+ 'type' => 'select_groups',
+ 'name' => 'id_parent',
+ 'selected' => $id_parent,
+ 'return' => true,
+ 'returnAllGroup' => true,
+ ]
+ );
$table->data[2][1] .= '
';
}
diff --git a/pandora_console/godmode/massive/massive_delete_alerts.php b/pandora_console/godmode/massive/massive_delete_alerts.php
index c9bcda46ba..c5407ed365 100755
--- a/pandora_console/godmode/massive/massive_delete_alerts.php
+++ b/pandora_console/godmode/massive/massive_delete_alerts.php
@@ -40,7 +40,7 @@ if (is_ajax()) {
$keys_prefix = (string) get_parameter('keys_prefix', '');
if ($recursion) {
- $groups = groups_get_id_recursive($id_group, true);
+ $groups = groups_get_children_ids($id_group, true);
} else {
$groups = [$id_group];
}
diff --git a/pandora_console/godmode/modules/manage_network_components.php b/pandora_console/godmode/modules/manage_network_components.php
index fb8a845284..5ff2132d12 100644
--- a/pandora_console/godmode/modules/manage_network_components.php
+++ b/pandora_console/godmode/modules/manage_network_components.php
@@ -258,7 +258,7 @@ if ($id_modulo === COMPONENT_TYPE_WIZARD) {
if ($execution_type === EXECUTION_TYPE_PLUGIN || $module_protocol === 'wmi') {
// Search all parameters received with extra_fields.
foreach ($_REQUEST as $parameter => $thisValue) {
- // Extra fields (OIDs Macros or WMI Extra fields)
+ // Extra fields (OIDs Macros or WMI Extra fields).
if (preg_match('/extra_field_'.$module_protocol.'_/', $parameter) !== 0) {
$tmpParameter = explode('_', $parameter);
$extra_fields['extra_field_'.$tmpParameter[3]] = get_parameter($parameter);
@@ -330,7 +330,7 @@ if ($create_component) {
if ($name && !$name_check) {
$id = network_components_create_network_component(
- strip_tags(io_safe_input($name), '
'),
+ $name,
$type,
$id_group,
[
@@ -431,7 +431,7 @@ if ($update_component) {
$id,
[
'type' => $type,
- 'name' => strip_tags(io_safe_input($name, '
')),
+ 'name' => $name,
'id_group' => $id_group,
'description' => $description,
'module_interval' => $module_interval,
diff --git a/pandora_console/godmode/reporting/map_builder.php b/pandora_console/godmode/reporting/map_builder.php
index 9f8b8f0162..482b995f8f 100644
--- a/pandora_console/godmode/reporting/map_builder.php
+++ b/pandora_console/godmode/reporting/map_builder.php
@@ -278,7 +278,7 @@ if ($ag_group > 0) {
$ag_groups = [];
$ag_groups = (array) $ag_group;
if ($recursion) {
- $ag_groups = groups_get_id_recursive($ag_group, true);
+ $ag_groups = groups_get_children_ids($ag_group, true);
}
}
diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index db1303d907..7762f7b752 100755
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -223,8 +223,9 @@ switch ($action) {
$server_name = $item['server_name'];
// Metaconsole db connection.
- if ($meta && !empty($server_name)) {
+ if ($meta && empty($server_name) === false) {
$connection = metaconsole_get_connection($server_name);
+ $server_id = $connection['id'];
if (metaconsole_load_external_db($connection) != NOERR) {
continue;
}
@@ -1383,8 +1384,7 @@ $class = 'databox filters';
html_print_input_hidden('id_agent', $idAgent);
html_print_input_hidden('server_name', $server_name);
- html_print_input_hidden('server_id', $server_name);
- html_print_input_hidden('id_server', '');
+ html_print_input_hidden('server_id', $server_id);
$params = [];
$params['show_helptip'] = false;
@@ -3744,6 +3744,16 @@ $(document).ready (function () {
$("#combo_group").change (
function () {
+
+ // Alert report group must show all matches when selecting All group
+ // ignoring 'recursion' option. #6497.
+ if ($("#combo_group").val() == 0) {
+ $('#checkbox-recursion').attr('disabled',true)
+ $('#checkbox-recursion').attr('checked','checked')
+ } else {
+ $('#checkbox-recursion').removeAttr('disabled')
+ }
+
$("#id_agents").html('');
$("#id_agents2").html('');
$("#module").html('');
@@ -3772,6 +3782,7 @@ $(document).ready (function () {
);
}
);
+ $("#combo_group").change();
$("#checkbox-recursion").change (
function () {
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index 8ac3a11e37..6857a2cd39 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -1380,11 +1380,12 @@ switch ($action) {
switch ($action) {
case 'update':
$values = [];
- $server_name = get_parameter('server_id');
- if (is_metaconsole() && $server_name != '') {
- $id_meta = metaconsole_get_id_server($server_name);
+ $server_id = get_parameter('server_id', 0);
+ if (is_metaconsole() === true
+ && empty($server_id) === false
+ ) {
$connection = metaconsole_get_connection_by_id(
- $id_meta
+ $server_id
);
metaconsole_connect($connection);
$values['server_name'] = $connection['server_name'];
@@ -1811,7 +1812,6 @@ switch ($action) {
'combo_modulegroup'
);
$values['id_group'] = get_parameter('combo_group');
- $values['server_name'] = get_parameter('server_name');
if ($values['server_name'] == '') {
$values['server_name'] = get_parameter(
@@ -1867,9 +1867,7 @@ switch ($action) {
);
// If metaconsole is activated.
- if ($config['metaconsole'] == 1
- && defined('METACONSOLE')
- ) {
+ if (is_metaconsole() === true) {
if (($values['type'] == 'custom_graph')
|| ($values['type'] == 'automatic_custom_graph')
) {
diff --git a/pandora_console/godmode/reporting/visual_console_favorite.php b/pandora_console/godmode/reporting/visual_console_favorite.php
index b9f4fe28d7..253218431f 100644
--- a/pandora_console/godmode/reporting/visual_console_favorite.php
+++ b/pandora_console/godmode/reporting/visual_console_favorite.php
@@ -143,7 +143,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
$ag_groups = [];
$ag_groups = (array) $ag_group;
if ($recursion) {
- $ag_groups = groups_get_id_recursive($ag_group, true);
+ $ag_groups = groups_get_children_ids($ag_group, true);
}
} else if ($own_info['is_admin']) {
$returnAllGroups = 1;
diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php
index b98d35e003..3e9a38dede 100644
--- a/pandora_console/godmode/users/configure_user.php
+++ b/pandora_console/godmode/users/configure_user.php
@@ -1313,6 +1313,7 @@ $(document).ready (function () {
var img_delete = '';
var id_user = '';
+ var is_metaconsole = '';
var data = [];
$('input:image[name="add"]').click(function (e) {
@@ -1357,7 +1358,7 @@ $(document).ready (function () {
$('input:image[name="del"]').click(function (e) {
e.preventDefault();
var rows = $("#table_profiles tr").length;
- if (rows <= 3) {
+ if ((is_metaconsole === '1' && rows <= 4) || (is_metaconsole === '' && rows <= 3)) {
if (!confirm('' + '. ' + '')) {
return;
}
@@ -1379,7 +1380,7 @@ $(document).ready (function () {
success: function (data) {
row.remove();
var rows = $("#table_profiles tr").length;
- if (rows <= 2) {
+ if ((is_metaconsole === '1' && rows <= 3) || (is_metaconsole === '' && rows <= 2)) {
window.location.replace("");
}
}
@@ -1389,7 +1390,7 @@ $(document).ready (function () {
$('#submit-crtbutton').click(function (e) {
e.preventDefault();
var rows = $("#table_profiles tr").length;
- if (rows <= 2) {
+ if ((is_metaconsole === '1' && rows <= 3) || (is_metaconsole === '' && rows <= 2)) {
alert('');
} else {
this.form.submit();
diff --git a/pandora_console/godmode/wizards/HostDevices.class.php b/pandora_console/godmode/wizards/HostDevices.class.php
index 2a15affd94..cb90d927b8 100755
--- a/pandora_console/godmode/wizards/HostDevices.class.php
+++ b/pandora_console/godmode/wizards/HostDevices.class.php
@@ -1170,6 +1170,380 @@ class HostDevices extends Wizard
];
}
+ // Input: SNMP enabled.
+ $form['inputs'][] = [
+ 'label' => __('SNMP enabled'),
+ 'arguments' => [
+ 'name' => 'snmp_enabled',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['snmp_enabled'])) ? $this->task['snmp_enabled'] : 1,
+ 'onclick' => 'extraSNMP();',
+
+ ],
+ ];
+
+ // SNMP CONFIGURATION.
+ $form['inputs'][] = [
+ 'hidden' => 1,
+ 'block_id' => 'snmp_extra',
+ 'class' => 'indented',
+ 'block_content' => [
+ [
+ 'label' => __('SNMP version'),
+ 'arguments' => [
+ 'name' => 'snmp_version',
+ 'fields' => [
+ '1' => 'v. 1',
+ '2c' => 'v. 2c',
+ '3' => 'v. 3',
+ ],
+ 'type' => 'select',
+ 'script' => 'SNMPExtraShow(this.value)',
+ 'selected' => $this->task['snmp_version'],
+ 'return' => true,
+ ],
+ ],
+ ],
+ ];
+
+ // SNMP Options pack v1.
+ $form['inputs'][] = [
+ 'hidden' => 1,
+ 'block_id' => 'snmp_options_basic',
+ 'class' => 'indented',
+ 'block_content' => [
+ [
+ 'label' => __('SNMP communities to try with').ui_print_help_tip(
+ __(
+ 'You can specify several values, separated by commas, for example: public,mysecret,1234'
+ ),
+ true
+ ),
+ 'arguments' => [
+ 'name' => 'community',
+ 'type' => 'text',
+ 'value' => $this->task['snmp_community'],
+ 'size' => 25,
+ 'return' => true,
+
+ ],
+ ],
+ ],
+ ];
+
+ // SNMP Options pack v3.
+ $form['inputs'][] = [
+ 'hidden' => 1,
+ 'block_id' => 'snmp_options_v3',
+ 'class' => 'indented',
+ 'block_content' => [
+ [
+ 'label' => ''.__('Context').'',
+ 'arguments' => [
+ 'name' => 'snmp_context',
+ 'type' => 'text',
+ 'value' => $this->task['snmp_community'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Auth user').'',
+ 'arguments' => [
+ 'name' => 'snmp_auth_user',
+ 'type' => 'text',
+ 'value' => $this->task['snmp_auth_user'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Auth password').''.ui_print_help_tip(
+ __(
+ 'The pass length must be eight character minimum.'
+ ),
+ true
+ ),
+ 'arguments' => [
+ 'name' => 'snmp_auth_pass',
+ 'type' => 'password',
+ 'value' => $this->task['snmp_auth_pass'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Privacy method').'',
+ 'arguments' => [
+ 'name' => 'snmp_privacy_method',
+ 'type' => 'select',
+ 'fields' => [
+ 'DES' => __('DES'),
+ 'AES' => __('AES'),
+ ],
+ 'selected' => $this->task['snmp_privacy_method'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Privacy pass').''.ui_print_help_tip(
+ __(
+ 'The pass length must be eight character minimum.'
+ ),
+ true
+ ),
+ 'arguments' => [
+ 'name' => 'snmp_privacy_pass',
+ 'type' => 'password',
+ 'value' => $this->task['snmp_privacy_pass'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Auth method').'',
+ 'arguments' => [
+ 'name' => 'snmp_auth_method',
+ 'type' => 'select',
+ 'fields' => [
+ 'MD5' => __('MD5'),
+ 'SHA' => __('SHA'),
+ ],
+ 'selected' => $this->task['snmp_auth_method'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+ [
+ 'label' => ''.__('Security level').'',
+ 'arguments' => [
+ 'name' => 'snmp_security_level',
+ 'type' => 'select',
+ 'fields' => [
+ 'noAuthNoPriv' => __('Not auth and not privacy method'),
+ 'authNoPriv' => __('Auth and not privacy method'),
+ 'authPriv' => __('Auth and privacy method'),
+ ],
+ 'selected' => $this->task['snmp_security_level'],
+ 'size' => 15,
+ 'return' => true,
+
+ ],
+ ],
+
+ ],
+ ];
+
+ // Input: Enforce os detection.
+ $form['inputs'][] = [
+ 'label' => __('OS detection'),
+ 'arguments' => [
+ 'name' => 'os_detect',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['os_detect'])) ? $this->task['os_detect'] : 1,
+
+ ],
+ ];
+
+ // Input: Name resolution.
+ $form['inputs'][] = [
+ 'label' => __('Name resolution'),
+ 'arguments' => [
+ 'name' => 'resolve_names',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['resolve_names'])) ? $this->task['resolve_names'] : 1,
+ ],
+ ];
+
+ // Input: Parent detection.
+ $form['inputs'][] = [
+ 'label' => __('Parent detection'),
+ 'arguments' => [
+ 'name' => 'parent_detection',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['parent_detection'])) ? $this->task['parent_detection'] : 1,
+ ],
+ ];
+
+ // Input: Parent recursion.
+ $form['inputs'][] = [
+ 'label' => __('Parent recursion'),
+ 'arguments' => [
+ 'name' => 'parent_recursion',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['parent_recursion'])) ? $this->task['parent_recursion'] : 1,
+ ],
+ ];
+
+ // Input: VLAN enabled.
+ $form['inputs'][] = [
+ 'label' => __('VLAN enabled'),
+ 'arguments' => [
+ 'name' => 'vlan_enabled',
+ 'type' => 'switch',
+ 'return' => true,
+ 'value' => (isset($this->task['vlan_enabled'])) ? $this->task['vlan_enabled'] : 1,
+ ],
+ ];
+
+ // Input: WMI enabled.
+ $form['inputs'][] = [
+ 'label' => __('WMI enabled'),
+ 'arguments' => [
+ 'name' => 'wmi_enabled',
+ 'type' => 'switch',
+ 'value' => (isset($this->task['wmi_enabled'])) ? $this->task['wmi_enabled'] : 0,
+ 'return' => true,
+ 'onclick' => 'toggleAuth();',
+
+ ],
+ ];
+
+ // AUTH CONFIGURATION.
+ $show_auth = false;
+ if ((isset($this->task['wmi_enabled']) && $this->task['wmi_enabled'] > 0)
+ || (isset($this->task['rcmd_enabled']) && $this->task['rcmd_enabled'] > 0)
+ ) {
+ $show_auth = true;
+ }
+
+ include_once $config['homedir'].'/include/class/CredentialStore.class.php';
+ $available_keys = CredentialStore::getKeys('CUSTOM');
+ if (check_acl($config['id_user'], 0, 'PM')) {
+ $link_to_cs = '';
+ $link_to_cs .= __('No credentials available').', ';
+ $link_to_cs .= strtolower(__('Manage credentials')).'';
+ } else {
+ $link_to_cs = __('No credentials available');
+ }
+
+ if (count($available_keys) > 0) {
+ $form['inputs'][] = [
+ 'block_id' => 'auth_block',
+ 'class' => 'indented',
+ 'hidden' => !$show_auth,
+ 'block_content' => [
+ [
+ 'label' => __('Credentials to try with'),
+ 'arguments' => [
+ 'type' => 'select',
+ 'name' => 'auth_strings[]',
+ 'fields' => CredentialStore::getKeys('CUSTOM'),
+ 'selected' => explode(
+ ',',
+ $this->task['auth_strings']
+ ),
+
+ 'multiple' => true,
+ 'class' => 'select_multiple',
+ ],
+ ],
+ ],
+ ];
+ } else {
+ $form['inputs'][] = [
+ 'block_id' => 'auth_block',
+ 'class' => 'indented',
+ 'hidden' => !$show_auth,
+ 'block_content' => [
+ [
+ 'label' => __('Credentials'),
+ 'extra' => $link_to_cs,
+ ],
+ ],
+ ];
+ }
+
+ ui_require_jquery_file('tag-editor.min');
+ ui_require_jquery_file('caret.min');
+ ui_require_css_file('jquery.tag-editor');
+
+ $form['js'] = '
+ $(\'#text-community\').tagEditor({
+ forceLowercase: false
+ });
+
+ function SNMPExtraShow(target) {
+ $("#snmp_options_basic").hide();
+ $("#snmp_options_v3").hide();
+ if (document.getElementsByName("snmp_enabled")[0].checked) {
+ $("#snmp_extra").show();
+ if (target == 3) {
+ $("#snmp_options_v3").show();
+ } else {
+ $("#snmp_options_basic").show();
+ }
+ }
+ }
+
+ function extraSNMP() {
+ if (document.getElementsByName("snmp_enabled")[0].checked) {
+ SNMPExtraShow($("#snmp_version").val());
+ $("#snmp_extra").show();
+
+ // Enable snmp dependant checks
+ if (!document.getElementsByName("parent_recursion")[0].checked)
+ $("input[name=parent_recursion]").click();
+
+ if (!document.getElementsByName("parent_detection")[0].checked)
+ $("input[name=parent_detection]").click();
+
+ if (!document.getElementsByName("resolve_names")[0].checked)
+ $("input[name=resolve_names]").click();
+
+ if (!document.getElementsByName("vlan_enabled")[0].checked)
+ $("input[name=vlan_enabled]").click();
+ } else {
+ // Hide unusable sections
+ $("#snmp_extra").hide();
+ $("#snmp_options_basic").hide();
+ $("#snmp_options_v3").hide();
+
+ // Disable snmp dependant checks
+ if (document.getElementsByName("parent_recursion")[0].checked)
+ $("input[name=parent_recursion]").click();
+
+ if (document.getElementsByName("parent_detection")[0].checked)
+ $("input[name=parent_detection]").click();
+
+ if (document.getElementsByName("resolve_names")[0].checked)
+ $("input[name=resolve_names]").click();
+
+ if (document.getElementsByName("vlan_enabled")[0].checked)
+ $("input[name=vlan_enabled]").click();
+ }
+ }
+
+ function toggleAuth() {
+ if (document.getElementsByName("wmi_enabled")[0].checked
+ || (typeof document.getElementsByName("rcmd_enabled")[0] != "undefined"
+ && document.getElementsByName("rcmd_enabled")[0].checked)
+ ) {
+ $("#auth_block").show();
+ } else {
+ $("#auth_block").hide();
+ }
+ }
+
+ $(function() {
+ SNMPExtraShow($("#snmp_version").val());
+ });
+ ';
+
if (enterprise_installed()) {
// Feature configuration.
$extra = enterprise_hook('hd_showextrainputs', [$this]);
@@ -1178,7 +1552,7 @@ class HostDevices extends Wizard
$form['inputs'],
$extra['inputs']
);
- $form['js'] = $extra['js'];
+ $form['js'] .= $extra['js'];
}
}
diff --git a/pandora_console/include/ajax/agent.php b/pandora_console/include/ajax/agent.php
index 698ab7df9b..4db3fbbbd9 100644
--- a/pandora_console/include/ajax/agent.php
+++ b/pandora_console/include/ajax/agent.php
@@ -216,7 +216,7 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
} else if ($search_agents && is_metaconsole()) {
$id_agent = (int) get_parameter('id_agent');
$string = (string) get_parameter('q');
- // q is what autocomplete plugin gives
+ // Q is what autocomplete plugin gives.
$id_group = (int) get_parameter('id_group', -1);
$addedItems = html_entity_decode((string) get_parameter('add'));
$addedItems = json_decode($addedItems);
@@ -236,6 +236,7 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
'alias',
'direccion',
'id_tmetaconsole_setup AS id_server',
+ 'server_name',
];
$filter = [];
@@ -254,36 +255,33 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
case 'enabled':
$filter['disabled'] = 0;
break;
+
+ default:
+ // Not possible.
+ break;
}
- if (!empty($id_agent)) {
+ if (empty($id_agent) === false) {
$filter['id_agente'] = $id_agent;
}
- if (!empty($string)) {
+ if (empty($string) === false) {
// Get agents for only the alias.
$filter_alias = $filter;
- switch ($config['dbtype']) {
- case 'mysql':
- $filter_alias[] = '(alias COLLATE utf8_general_ci LIKE "%'.$string.'%")';
- break;
+ $filter_alias[] = '(alias COLLATE utf8_general_ci LIKE "%'.$string.'%")';
- case 'postgresql':
- $filter_alias[] = '(alias LIKE \'%'.$string.'%\')';
- break;
+ $agents = db_get_all_rows_filter(
+ 'tmetaconsole_agent',
+ $filter_alias,
+ $fields
+ );
- case 'oracle':
- $filter_alias[] = '(UPPER(alias) LIKE UPPER(\'%'.$string.'%\'))';
- break;
- }
-
- $agents = db_get_all_rows_filter('tmetaconsole_agent', $filter_alias, $fields);
if ($agents !== false) {
foreach ($agents as $agent) {
$data[] = [
'id' => $agent['id_agente'],
'name' => io_safe_output($agent['nombre']),
- 'alias' => io_safe_output($agent['alias']),
+ 'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
'ip' => io_safe_output($agent['direccion']),
'id_server' => $agent['id_server'],
'filter' => 'alias',
@@ -293,27 +291,20 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
// Get agents for only the name.
$filter_agents = $filter;
- switch ($config['dbtype']) {
- case 'mysql':
- $filter_agents[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci LIKE "%'.$string.'%")';
- break;
+ $filter_agents[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci LIKE "%'.$string.'%")';
- case 'postgresql':
- $filter_agents[] = '(alias NOT LIKE \'%'.$string.'%\' AND nombre LIKE \'%'.$string.'%\')';
- break;
+ $agents = db_get_all_rows_filter(
+ 'tmetaconsole_agent',
+ $filter_agents,
+ $fields
+ );
- case 'oracle':
- $filter_agents[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) LIKE UPPER(\'%'.$string.'%\'))';
- break;
- }
-
- $agents = db_get_all_rows_filter('tmetaconsole_agent', $filter_agents, $fields);
if ($agents !== false) {
foreach ($agents as $agent) {
$data[] = [
'id' => $agent['id_agente'],
'name' => io_safe_output($agent['nombre']),
- 'alias' => io_safe_output($agent['alias']),
+ 'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
'ip' => io_safe_output($agent['direccion']),
'id_server' => $agent['id_server'],
'filter' => 'agent',
@@ -321,29 +312,22 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
}
}
- // Get agents for only the address
+ // Get agents for only the address.
$filter_address = $filter;
- switch ($config['dbtype']) {
- case 'mysql':
- $filter_address[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
- break;
+ $filter_address[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
- case 'postgresql':
- $filter_address[] = '(alias NOT LIKE \'%'.$string.'%\' AND nombre NOT LIKE \'%'.$string.'%\' AND direccion LIKE \'%'.$string.'%\')';
- break;
+ $agents = db_get_all_rows_filter(
+ 'tmetaconsole_agent',
+ $filter_address,
+ $fields
+ );
- case 'oracle':
- $filter_address[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) LIKE UPPER(\'%'.$string.'%\'))';
- break;
- }
-
- $agents = db_get_all_rows_filter('tmetaconsole_agent', $filter_address, $fields);
if ($agents !== false) {
foreach ($agents as $agent) {
$data[] = [
'id' => $agent['id_agente'],
'name' => io_safe_output($agent['nombre']),
- 'alias' => io_safe_output($agent['alias']),
+ 'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
'ip' => io_safe_output($agent['direccion']),
'id_server' => $agent['id_server'],
'filter' => 'address',
@@ -351,29 +335,22 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
}
}
- // Get agents for only the description
+ // Get agents for only the description.
$filter_description = $filter;
- switch ($config['dbtype']) {
- case 'mysql':
- $filter_description[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
- break;
+ $filter_description[] = '(alias COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
- case 'postgresql':
- $filter_description[] = '(alias NOT LIKE \'%'.$string.'%\' AND nombre NOT LIKE \'%'.$string.'%\' AND direccion NOT LIKE \'%'.$string.'%\' AND comentarios LIKE \'%'.$string.'%\')';
- break;
+ $agents = db_get_all_rows_filter(
+ 'tmetaconsole_agent',
+ $filter_description,
+ $fields
+ );
- case 'oracle':
- $filter_description[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(comentarios) LIKE UPPER(\'%'.$string.'%\'))';
- break;
- }
-
- $agents = db_get_all_rows_filter('tmetaconsole_agent', $filter_description, $fields);
if ($agents !== false) {
foreach ($agents as $agent) {
$data[] = [
'id' => $agent['id_agente'],
'name' => io_safe_output($agent['nombre']),
- 'alias' => io_safe_output($agent['alias']),
+ 'alias' => io_safe_output($agent['alias']).' ('.io_safe_output($agent['server_name']).')',
'ip' => io_safe_output($agent['direccion']),
'id_server' => $agent['id_server'],
'filter' => 'description',
diff --git a/pandora_console/include/class/AgentWizard.class.php b/pandora_console/include/class/AgentWizard.class.php
index 9efc2a872a..7f23e84894 100644
--- a/pandora_console/include/class/AgentWizard.class.php
+++ b/pandora_console/include/class/AgentWizard.class.php
@@ -3002,7 +3002,7 @@ class AgentWizard extends HTML
$newModule = $module;
// Split the values got to obtain the name.
$tmpFirst = explode('.', $value);
- $tmpSecond = explode(' ', $tmpFirst[1]);
+ $tmpSecond = explode(' ', $tmpFirst[(count($tmpFirst) - 1)]);
// Position 0 is the index, Position 3 is the MIB name.
$snmpwalkNames[$tmpSecond[0]] = $tmpSecond[3];
// Perform the operations for get the values.
@@ -3011,6 +3011,11 @@ class AgentWizard extends HTML
$currentOid = $oid.'.'.$tmpSecond[0];
$macros['macros'][$oidName] = $currentOid;
$currentOidValue = $this->snmpgetValue($currentOid);
+ // If for any reason the value comes empty, add 1.
+ if ($currentOidValue == '') {
+ $currentOidValue = 1;
+ }
+
$thisOperation = preg_replace(
'/'.$oidName.'/',
$currentOidValue,
@@ -4566,7 +4571,7 @@ class AgentWizard extends HTML
// Definition object.
$definition = [];
- // ifHCInOctets.
+ // IfHCInOctets.
$moduleName = $name.'ifHCInOctets';
$definition['ifHCInOctets'] = [
'module_name' => $moduleName,
@@ -4592,7 +4597,7 @@ class AgentWizard extends HTML
],
];
- // ifHCOutOctets.
+ // IfHCOutOctets.
$moduleName = $name.'ifHCOutOctets';
$definition['ifHCOutOctets'] = [
'module_name' => $moduleName,
@@ -4618,7 +4623,7 @@ class AgentWizard extends HTML
],
];
- // ifHCInUcastPkts.
+ // IfHCInUcastPkts.
$moduleName = $name.'ifHCInUcastPkts';
$definition['ifHCInUcastPkts'] = [
'module_name' => $moduleName,
@@ -4644,7 +4649,7 @@ class AgentWizard extends HTML
],
];
- // ifHCOutUcastPkts.
+ // IfHCOutUcastPkts.
$moduleName = $name.'ifHCOutUcastPkts';
$definition['ifHCOutUcastPkts'] = [
'module_name' => $moduleName,
@@ -4669,7 +4674,7 @@ class AgentWizard extends HTML
'inv_critical' => false,
],
];
- // ifHCInNUcastPkts.
+ // IfHCInNUcastPkts.
$moduleName = $name.'ifHCInNUcastPkts';
$definition['ifHCInNUcastPkts'] = [
'module_name' => $moduleName,
@@ -4733,17 +4738,18 @@ class AgentWizard extends HTML
* @param integer|null $type Module type.
*
* @return string
+ * @throws Exception Handle of unwanted operations.
*/
private function evalOperation(
string $operation,
string $unit='',
?int $type=0
) {
- // Avoid non-numeric or arithmetic chars for security reasons.
- if (preg_match('/(([^0-9\s\+\-\*\/\(\).,])+)/', $operation) === 1) {
- $output = 'ERROR';
- } else {
- try {
+ try {
+ // Avoid non-numeric or arithmetic chars for security reasons.
+ if (preg_match('/(([^0-9\s\+\-\*\/\(\).,])+)/', $operation) === 1) {
+ throw new Exception(sprintf(__("The operation '%s' is not permitted. Review for remote components."), $operation));
+ } else {
// Get the result of the operation and set it.
$output = '';
eval('$output = '.$operation.';');
@@ -4753,9 +4759,11 @@ class AgentWizard extends HTML
$unit,
$type
);
- } catch (Exception $e) {
- $output = 'ERROR';
}
+ } catch (Exception $e) {
+ $this->message['type'][] = 'error';
+ $this->message['message'][] = $e->getMessage();
+ $this->showMessage();
}
return $output;
@@ -5034,15 +5042,13 @@ class AgentWizard extends HTML
var imageInfoModules = $("#image-info-modules-" + blockNumber);
var totalCount = 0;
var markedCount = 0;
- var hidden_input = document.getElementById("hidden-module-active-"+switchName[2]+"_"+switchName[3]);
- var id_input = hidden_input.id.split("_");
if (type == 'block') {
selectedBlock
.parent()
.removeClass("alpha50");
if (selectedBlock.prop("checked")) {
// Set to active the values of fields.
- $("[id*='"+id_input[0]+"']")
+ $("[id*=hidden-module-active-"+blockNumber+"]")
.each(function(){
$(this).val('1');
});
@@ -5054,7 +5060,7 @@ class AgentWizard extends HTML
imageInfoModules.removeClass('hidden');
} else {
// Set to inactive the values of fields.
- $("[id*='"+id_input[0]+"']")
+ $("[id*=hidden-module-active-"+blockNumber+"]")
.each(function(){
$(this).val('0');
});
diff --git a/pandora_console/include/class/CredentialStore.class.php b/pandora_console/include/class/CredentialStore.class.php
index 073f0831a3..d14314a6b4 100644
--- a/pandora_console/include/class/CredentialStore.class.php
+++ b/pandora_console/include/class/CredentialStore.class.php
@@ -248,7 +248,7 @@ class CredentialStore extends Wizard
);
} else {
$groups = [ $filter['filter_id_group'] ];
- $childrens = groups_get_childrens($id_group, null, true);
+ $childrens = groups_get_children($id_group, null, true);
if (!empty($childrens)) {
foreach ($childrens as $child) {
$groups[] = (int) $child['id_grupo'];
diff --git a/pandora_console/include/class/NetworkMap.class.php b/pandora_console/include/class/NetworkMap.class.php
index a14e2b80c4..0eaea52134 100644
--- a/pandora_console/include/class/NetworkMap.class.php
+++ b/pandora_console/include/class/NetworkMap.class.php
@@ -810,7 +810,7 @@ class NetworkMap
$filter['id_grupo'] = $this->idGroup;
} else {
// Show current group and children.
- $childrens = groups_get_childrens($this->idGroup, null, true);
+ $childrens = groups_get_children($this->idGroup, null, true);
if (!empty($childrens)) {
$childrens = array_keys($childrens);
diff --git a/pandora_console/include/class/TreeService.class.php b/pandora_console/include/class/TreeService.class.php
index b9721b3eb0..0afa46af73 100644
--- a/pandora_console/include/class/TreeService.class.php
+++ b/pandora_console/include/class/TreeService.class.php
@@ -264,6 +264,7 @@ class TreeService extends Tree
ts.id_agent_module,
ts.name,
ts.name as `alias`,
+ ts.description as `description`,
ts.id as `rootID`,
"services" as `rootType`,
"services" as `type`,
@@ -311,6 +312,7 @@ class TreeService extends Tree
];
$services[$service['id']]['name'] = $service['name'];
$services[$service['id']]['id'] = $service['id'];
+ $services[$service['id']]['description'] = $service['description'];
$services[$service['id']]['serviceDetail'] = 'index.php?sec=network&sec2=enterprise/operation/services/services&tab=service_map&id_service='.(int) $service['id'];
}
@@ -512,6 +514,8 @@ class TreeService extends Tree
$tmp['id'] = (int) $item->service()->id();
$tmp['name'] = $item->service()->name();
$tmp['alias'] = $item->service()->name();
+ $tmp['description'] = $item->service()->description();
+ $tmp['elementDescription'] = $item->description();
if ($this->connectedToNode === false
&& is_metaconsole() === true
@@ -643,6 +647,8 @@ class TreeService extends Tree
ts.id_agent_module,
ts.name,
ts.name as `alias`,
+ ts.description as `description`,
+ tse.description as `elementDescription`,
tse.id_service as `rootID`,
"services" as `rootType`,
"services" as `type`,
diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php
index 1aeee036b6..e490b8d671 100644
--- a/pandora_console/include/config_process.php
+++ b/pandora_console/include/config_process.php
@@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
-$build_version = 'PC201027';
+$build_version = 'PC201029';
$pandora_version = 'v7.0NG.750';
// Do not overwrite default timezone set if defined.
diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php
index 0147168ebf..a67379b07d 100644
--- a/pandora_console/include/functions.php
+++ b/pandora_console/include/functions.php
@@ -1342,6 +1342,73 @@ function get_priority_name($priority)
}
+/**
+ * Translates status into string.
+ *
+ * @param integer $status Agent status.
+ *
+ * @return string Translation.
+ */
+function get_agent_status_string($status)
+{
+ switch ($status) {
+ case AGENT_STATUS_CRITICAL:
+ return __('CRITICAL');
+
+ case AGENT_STATUS_WARNING:
+ return __('WARNING');
+
+ case AGENT_STATUS_ALERT_FIRED:
+ return __('ALERT FIRED');
+
+ case AGENT_STATUS_NOT_INIT:
+ return __('NO DATA');
+
+ case AGENT_STATUS_NORMAL:
+ return __('NORMAL');
+
+ case AGENT_STATUS_UNKNOWN:
+ default:
+ return __('UNKNOWN');
+ }
+}
+
+
+/**
+ * Translates status into string.
+ *
+ * @param integer $status Module status.
+ *
+ * @return string Translation.
+ */
+function get_module_status_string($status)
+{
+ switch ($status) {
+ case AGENT_MODULE_STATUS_CRITICAL_BAD:
+ return __('CRITICAL');
+
+ case AGENT_MODULE_STATUS_WARNING_ALERT:
+ case AGENT_MODULE_STATUS_CRITICAL_ALERT:
+ return __('ALERT FIRED');
+
+ case AGENT_MODULE_STATUS_WARNING:
+ return __('WARNING');
+
+ case AGENT_MODULE_STATUS_UNKNOWN:
+ return __('UNKNOWN');
+
+ case AGENT_MODULE_STATUS_NO_DATA:
+ case AGENT_MODULE_STATUS_NOT_INIT:
+ return __('NO DATA');
+
+ case AGENT_MODULE_STATUS_NORMAL_ALERT:
+ case AGENT_MODULE_STATUS_NORMAL:
+ default:
+ return __('NORMAL');
+ }
+}
+
+
/**
* Get priority class (CSS class) from priority value.
*
@@ -3753,7 +3820,16 @@ function series_type_graph_array($data, $show_elements_graph)
$name_legend .= __('Unit ').' ';
$name_legend .= $show_elements_graph['unit'].': ';
} else {
- $name_legend = $show_elements_graph['labels'][$value['agent_module_id']].': ';
+ if (isset($show_elements_graph['from_interface']) === true
+ && (bool) $show_elements_graph['from_interface'] === true
+ ) {
+ $label_interfaces = array_flip($show_elements_graph['modules_series']);
+ $name_legend = $show_elements_graph['labels'][$value['agent_module_id']][$label_interfaces[$value['agent_module_id']]].': ';
+ } else if (is_array($show_elements_graph['labels'][$value['agent_module_id']]) === true) {
+ $name_legend = 'Avg: ';
+ } else {
+ $name_legend = $show_elements_graph['labels'][$value['agent_module_id']].': ';
+ }
}
} else {
if (strpos($key, 'baseline') !== false) {
diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php
index beff278dc1..45ba5387ba 100644
--- a/pandora_console/include/functions_agents.php
+++ b/pandora_console/include/functions_agents.php
@@ -19,17 +19,18 @@
require_once $config['homedir'].'/include/functions.php';
require_once $config['homedir'].'/include/functions_modules.php';
-require_once $config['homedir'].'/include/functions_users.php';/**
- * Return the agent if exists in the DB.
- *
- * @param integer $id_agent The agent id.
- * @param boolean $show_disabled Show the agent found althought it is disabled. By default false.
- * @param boolean $force_meta
- *
- * @return boolean The result to check if the agent is in the DB.
- */
+require_once $config['homedir'].'/include/functions_users.php';
+/**
+ * Return the agent if exists in the DB.
+ *
+ * @param integer $id_agent The agent id.
+ * @param boolean $show_disabled Show the agent found althought it is disabled. By default false.
+ * @param boolean $force_meta
+ *
+ * @return boolean The result to check if the agent is in the DB.
+ */
function agents_get_agent($id_agent, $show_disabled=true, $force_meta=false)
{
$agent = db_get_row_filter(
@@ -335,6 +336,11 @@ function agents_get_alerts_simple($id_agent=false, $filter='', $options=false, $
// Filter by agents id.
$id_agents_list = implode(',', $id_agent);
+
+ if ($id_agents_list === '') {
+ $id_agents_list = '0';
+ }
+
$subQuery .= ' AND id_agente in ('.$id_agents_list.')';
} else if ($id_agent === false || empty($id_agent)) {
if ($allModules) {
@@ -1108,11 +1114,14 @@ function agents_get_group_agents(
foreach ($id_group as $parent) {
$id_group = array_merge(
$id_group,
- groups_get_id_recursive($parent, false)
+ groups_get_children_ids($parent, $noACL)
);
}
} else {
- $id_group = groups_get_id_recursive($id_group, false);
+ $id_group = array_merge(
+ [$id_group],
+ groups_get_children_ids($id_group, $noACL)
+ );
}
// Check available groups for target user only if asking for 'All' group.
diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index 6401910faa..a7f6ef8c81 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -1973,7 +1973,7 @@ function api_get_all_agents($thrash1, $thrash2, $other, $returnType)
$ag_groups = $other['data'][1];
// Recursion.
if ($other['data'][6] === '1') {
- $ag_groups = groups_get_id_recursive($ag_groups, true);
+ $ag_groups = groups_get_children_ids($ag_groups, true);
}
$ag_groups = implode(',', (array) $ag_groups);
@@ -12513,7 +12513,13 @@ function api_set_create_event($id, $trash1, $other, $returnType)
if ($other['data'][18] != '') {
$values['id_extra'] = $other['data'][18];
- $sql_validation = 'SELECT id_evento FROM tevento where estado IN (0,2) and id_extra ="'.$other['data'][18].'";';
+ if (is_metaconsole()) {
+ $table_event = 'tmetaconsole_event';
+ } else {
+ $table_event = 'tevento';
+ }
+
+ $sql_validation = 'SELECT id_evento FROM '.$table_event.' where estado IN (0,2) and id_extra ="'.$other['data'][18].'";';
$validation = db_get_all_rows_sql($sql_validation);
if ($validation) {
foreach ($validation as $val) {
diff --git a/pandora_console/include/functions_custom_fields.php b/pandora_console/include/functions_custom_fields.php
index d1f661e874..c15b0cae95 100644
--- a/pandora_console/include/functions_custom_fields.php
+++ b/pandora_console/include/functions_custom_fields.php
@@ -367,7 +367,7 @@ function agent_counters_custom_fields($filters)
if ($filters['group']) {
// Recursion check acl.
if ($filters['recursion']) {
- $recursion_groups = groups_get_id_recursive($filters['group'], true);
+ $recursion_groups = groups_get_children_ids($filters['group'], true);
if (!users_can_manage_group_all('AR')) {
if (isset($user_groups) && is_array($user_groups)) {
$groups_intersect = array_intersect($user_groups, $recursion_groups);
diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php
index 7a337fbdab..7b598f7ab2 100644
--- a/pandora_console/include/functions_events.php
+++ b/pandora_console/include/functions_events.php
@@ -871,37 +871,23 @@ function events_get_all(
}
$groups = $filter['id_group_filter'];
- if (isset($groups) && $groups > 0) {
- $propagate = db_get_value(
- 'propagate',
- 'tgrupo',
- 'id_grupo',
- $groups
- );
+ if (isset($groups) === true && $groups > 0) {
+ $children = groups_get_children($groups);
- if (!$propagate && isset($groups)) {
- $sql_filters[] = sprintf(
- ' AND (te.id_grupo = %d OR tasg.id_group = %d)',
- $groups,
- $groups
- );
- } else {
- $children = groups_get_children($groups);
- $_groups = [ $groups ];
- if (!empty($children)) {
- foreach ($children as $child) {
- $_groups[] = (int) $child['id_grupo'];
- }
+ $_groups = [ $groups ];
+ if (empty($children) === false) {
+ foreach ($children as $child) {
+ $_groups[] = (int) $child['id_grupo'];
}
-
- $groups = $_groups;
-
- $sql_filters[] = sprintf(
- ' AND (te.id_grupo IN (%s) OR tasg.id_group IN (%s))',
- join(',', $groups),
- join(',', $groups)
- );
}
+
+ $groups = $_groups;
+
+ $sql_filters[] = sprintf(
+ ' AND (te.id_grupo IN (%s) OR tasg.id_group IN (%s))',
+ join(',', $groups),
+ join(',', $groups)
+ );
}
// Skip system messages if user is not PM.
@@ -1258,7 +1244,11 @@ function events_get_all(
// Order.
$order_by = '';
if (isset($order, $sort_field)) {
- $order_by = events_get_sql_order($sort_field, $order);
+ if (isset($filter['group_rep']) && $filter['group_rep'] == 1) {
+ $order_by = events_get_sql_order('MAX('.$sort_field.')', $order);
+ } else {
+ $order_by = events_get_sql_order($sort_field, $order);
+ }
}
// Pagination.
diff --git a/pandora_console/include/functions_groups.php b/pandora_console/include/functions_groups.php
index b6c1a5e6c9..3248eadb31 100644
--- a/pandora_console/include/functions_groups.php
+++ b/pandora_console/include/functions_groups.php
@@ -266,48 +266,25 @@ function groups_check_used($idGroup)
/**
- * Return a array of id_group of childrens (to branches down)
- *
- * @param integer $parent The id_group parent to search the childrens.
- * @param array $groups The groups, its for optimize the querys to DB.
- */
-function groups_get_childrens_ids($parent, $groups=null)
-{
- if (empty($groups)) {
- $groups = db_get_all_rows_in_table('tgrupo');
- }
-
- $return = '';
-
- foreach ($groups as $key => $group) {
- if ($group['id_grupo'] == 0) {
- continue;
- }
-
- if ($group['parent'] == $parent) {
- $return .= $group['id_grupo'].',';
- $propagate = db_get_value('propagate', 'tgrupo', 'id_grupo', $group['id_grupo']);
- if ($propagate) {
- $return .= groups_get_childrens_ids($group['id_grupo']);
- }
- }
- }
-
- return $return;
-}
-
-
-/**
- * Return a array of id_group of children of given parent.
+ * Return a array of id_group of children of given parent INCLUDING PARENT!!.
*
* @param integer $parent The id_grupo parent to search its children.
* @param array $ignorePropagate Ignore propagate.
+ * @param string $privilege Default privilege.
+ * @param boolean $selfInclude Include group "id_parent" in return.
+ *
+ * @return array Of Groups, children of $parent.
*/
-function groups_get_children($parent, $ignorePropagate=false)
-{
+function groups_get_children(
+ $parent,
+ $ignorePropagate=false,
+ $privilege='AR',
+ $selfInclude=true
+) {
static $groups;
+ static $user_groups;
- if (empty($groups)) {
+ if (empty($groups) === true) {
$aux_groups = [];
$groups = db_get_all_rows_in_table('tgrupo');
foreach ($groups as $key => $value) {
@@ -317,19 +294,45 @@ function groups_get_children($parent, $ignorePropagate=false)
$groups = $aux_groups;
}
+ if (empty($user_groups) === true) {
+ $user_groups = users_get_groups(false, $privilege, true);
+ }
+
+ // Admin see always all groups.
+ $ignorePropagate = users_is_admin() || $ignorePropagate;
+
+ // Prepare array.
$return = [];
+
+ if ($selfInclude === true) {
+ if (array_key_exists($parent, $user_groups) === true) {
+ $return[$parent] = $groups[$parent];
+ }
+ }
+
foreach ($groups as $key => $g) {
if ($g['id_grupo'] == 0) {
continue;
}
- if ($ignorePropagate || $parent == 0 || $groups[$parent]['propagate']) {
+ // IgnorePropagate will be true if user can access child.
+ $allowed = $ignorePropagate || array_key_exists(
+ $g['id_grupo'],
+ $user_groups
+ );
+
+ if ($allowed === true
+ || (int) $parent === 0
+ || (bool) $groups[$parent]['propagate'] === true
+ ) {
if ($g['parent'] == $parent) {
$return += [$g['id_grupo'] => $g];
if ($g['propagate'] || $ignorePropagate) {
$return += groups_get_children(
$g['id_grupo'],
- $ignorePropagate
+ $ignorePropagate,
+ $privilege,
+ $selfInclude
);
}
}
@@ -340,38 +343,6 @@ function groups_get_children($parent, $ignorePropagate=false)
}
-/**
- * @deprecated This is not working. Expects 'propagate' on CHILD not on PARENT!!!
- *
- * Return a array of id_group of childrens (to branches down)
- *
- * @param integer $parent The id_group parent to search the childrens.
- * @param array $groups The groups, its for optimize the querys to DB.
- */
-function groups_get_childrens($parent, $groups=null, $onlyPropagate=false)
-{
- if (empty($groups)) {
- $groups = db_get_all_rows_in_table('tgrupo');
- }
-
- $return = [];
-
- foreach ($groups as $key => $group) {
- if ($group['id_grupo'] == 0) {
- continue;
- }
-
- if ($group['propagate'] || $onlyPropagate) {
- if ($group['parent'] == $parent) {
- $return = ($return + [$group['id_grupo'] => $group] + groups_get_childrens($group['id_grupo'], $groups, $onlyPropagate));
- }
- }
- }
-
- return $return;
-}
-
-
/**
* Return a array of id_group of parents (to roots up).
*
@@ -534,42 +505,30 @@ function groups_get_all($groupWithAgents=false)
/**
- * Get all groups recursive from an initial group.
+ * Get all groups recursive from an initial group INCLUDING PARENT!!.
*
- * @param int Id of the parent group
- * @param bool Whether to force recursive search ignoring propagation (true) or not (false)
+ * @param integer $id_parent Id of the parent group.
+ * @param boolean $ignorePropagate Whether to force recursive search ignoring
+ * propagation (true) or not (false).
+ * @param boolean $selfInclude Include group "id_parent" in return.
+ * @param string $privilege Privilege flag to search for default 'AR'.
*
- * @return array with all result groups
+ * @return array With all result groups.
*/
-function groups_get_id_recursive($id_parent, $all=false)
-{
- $return = [];
+function groups_get_children_ids(
+ $id_parent,
+ $ignorePropagate=false,
+ $selfInclude=true,
+ $privilege='AR'
+) {
+ $return = groups_get_children(
+ $id_parent,
+ $ignorePropagate,
+ $privilege,
+ $selfInclude
+ );
- $return = array_merge($return, [$id_parent]);
-
- // Check propagate
- $propagate = db_get_value_filter('propagate', 'tgrupo', ['id_grupo' => $id_parent]);
-
- if (($propagate == 1) || $all) {
- $children = db_get_all_rows_filter('tgrupo', ['parent' => $id_parent, 'disabled' => 0], ['id_grupo']);
-
- if ($children === false) {
- $children = [];
- } else {
- $temp = [];
- foreach ($children as $id_children) {
- $temp = array_merge($temp, [$id_children['id_grupo']]);
- }
-
- $children = $temp;
- }
-
- foreach ($children as $id_children) {
- $return = array_merge($return, groups_get_id_recursive($id_children, $all));
- }
- }
-
- return $return;
+ return array_keys($return);
}
diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index 092044765c..c61d62d686 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -428,7 +428,7 @@ function html_print_select_style($fields, $name, $selected='', $style='', $scrip
* @param boolean $disabled Disabled or enabled.
* @param boolean $style CSS inline style.
* @param string $option_style CSS inline style in array format.
- * @param array $id_group Groups to be manually added.
+ * @param integer $id_group Exclude group branch from id_group.
* @param string $keys_field Field to be used as array key, (id).
* @param boolean $strict_user Strict.
* @param array $delete_groups Remove groups from select.
@@ -500,6 +500,15 @@ function html_print_select_groups(
$name = 'group_select'.$idcounter[$name];
}
+ if ($id_group !== false) {
+ $children = groups_get_children($id_group);
+ foreach ($children as $child) {
+ $delete_groups[] = $child['id_grupo'];
+ }
+
+ $delete_groups[] = $id_group;
+ }
+
$fields = [];
// Preload selector.
if (is_array($selected) === false) {
@@ -510,7 +519,15 @@ function html_print_select_groups(
}
} else {
foreach ($selected as $k) {
- $fields[$k] = groups_get_name($k);
+ if ($k === null || $k === '') {
+ continue;
+ }
+
+ $fields[$k] = groups_get_name($k, $returnAllGroup);
+ }
+
+ if (empty($fields) === true && $returnAllGroup) {
+ $fields[0] = groups_get_name(null, true);
}
}
diff --git a/pandora_console/include/functions_networkmap.php b/pandora_console/include/functions_networkmap.php
index 56172331c6..bd5152576d 100644
--- a/pandora_console/include/functions_networkmap.php
+++ b/pandora_console/include/functions_networkmap.php
@@ -319,7 +319,7 @@ function networkmap_generate_dot(
if ($dont_show_subgroups) {
$filter['id_grupo'] = $group;
} else {
- $childrens = groups_get_childrens($group, null, true);
+ $childrens = groups_get_children($group, null, true);
if (!empty($childrens)) {
$childrens = array_keys($childrens);
diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php
index 0bfe96e864..96099e6f9c 100755
--- a/pandora_console/include/functions_reporting.php
+++ b/pandora_console/include/functions_reporting.php
@@ -3912,7 +3912,7 @@ function reporting_alert_report_group($report, $content)
$agent_modules = alerts_get_agent_modules(
$content['id_group'],
- $content['recursion']
+ (((string) $content['id_group'] === '0') ? true : $content['recursion'])
);
if (empty($alerts)) {
@@ -4979,6 +4979,16 @@ function reporting_agent_configuration($report, $content)
}
+/**
+ * Report Min, Max and Avg.
+ *
+ * @param array $report Info report.
+ * @param array $content Content report.
+ * @param string $type Type report.
+ * @param boolean $pdf Is pdf.
+ *
+ * @return array Data draw report.
+ */
function reporting_value($report, $content, $type, $pdf=false)
{
global $config;
@@ -4993,16 +5003,17 @@ function reporting_value($report, $content, $type, $pdf=false)
$return['type'] = 'min_value';
break;
- case 'avg':
- $return['type'] = 'avg_value';
- break;
-
case 'sum':
$return['type'] = 'sumatory';
break;
+
+ case 'avg':
+ default:
+ $return['type'] = 'avg_value';
+ break;
}
- if (empty($content['name'])) {
+ if (empty($content['name']) === true) {
switch ($type) {
case 'max':
$content['name'] = __('Max. Value');
@@ -5012,17 +5023,18 @@ function reporting_value($report, $content, $type, $pdf=false)
$content['name'] = __('Min. Value');
break;
- case 'avg':
- $content['name'] = __('AVG. Value');
- break;
-
case 'sum':
$content['name'] = __('Summatory');
break;
+
+ case 'avg':
+ default:
+ $content['name'] = __('AVG. Value');
+ break;
}
}
- if ($config['metaconsole']) {
+ if (is_metaconsole() === true) {
$id_meta = metaconsole_get_id_server($content['server_name']);
$server = metaconsole_get_connection_by_id($id_meta);
@@ -5060,14 +5072,15 @@ function reporting_value($report, $content, $type, $pdf=false)
$return['agent_name'] = $agent_name;
$return['module_name'] = $module_name;
+ $only_image = false;
if ($pdf) {
- $only_image = 1;
+ $only_image = true;
}
$params = [
'agent_module_id' => $content['id_agent_module'],
'period' => $content['period'],
- 'width' => '600px',
+ 'width' => '90%',
'pure' => false,
'date' => $report['datetime'],
'only_image' => $only_image,
@@ -5086,6 +5099,7 @@ function reporting_value($report, $content, $type, $pdf=false)
case 'max':
case 'min':
case 'avg':
+ default:
$divisor = get_data_multiplier($unit);
if ($content['lapse_calc'] == 0) {
@@ -5107,6 +5121,7 @@ function reporting_value($report, $content, $type, $pdf=false)
break;
case 'avg':
+ default:
$value = reporting_get_agentmodule_data_average(
$content['id_agent_module'],
$content['period'],
@@ -5118,7 +5133,14 @@ function reporting_value($report, $content, $type, $pdf=false)
if (!$config['simple_module_value']) {
$formated_value = $value;
} else {
- $formated_value = format_for_graph($value, $config['graph_precision'], '.', ',', $divisor, $unit);
+ $formated_value = format_for_graph(
+ $value,
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
}
} else {
$return['visual_format'] = $content['visual_format'];
@@ -5126,17 +5148,51 @@ function reporting_value($report, $content, $type, $pdf=false)
switch ($type) {
case 'max':
$params['force_interval'] = 'max_only';
- $value = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
+ $value = format_for_graph(
+ reporting_get_agentmodule_data_max(
+ $content['id_agent_module'],
+ $content['period'],
+ $report['datetime']
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
case 'min':
$params['force_interval'] = 'min_only';
- $value = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
+ $value = format_for_graph(
+ reporting_get_agentmodule_data_min(
+ $content['id_agent_module'],
+ $content['period'],
+ $report['datetime']
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
case 'avg':
+ default:
$params['force_interval'] = 'avg_only';
- $value = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
+ $value = format_for_graph(
+ reporting_get_agentmodule_data_average(
+ $content['id_agent_module'],
+ $content['period'],
+ $report['datetime']
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
}
@@ -5166,15 +5222,49 @@ function reporting_value($report, $content, $type, $pdf=false)
if ($i > $time_begin['utimestamp']) {
switch ($type) {
case 'max':
- $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
+ $row[__('Maximun')] = format_for_graph(
+ reporting_get_agentmodule_data_max(
+ $content['id_agent_module'],
+ $content['lapse'],
+ ($i + $content['lapse'])
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
case 'min':
- $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
+ $row[__('Maximun')] = format_for_graph(
+ reporting_get_agentmodule_data_min(
+ $content['id_agent_module'],
+ $content['lapse'],
+ ($i + $content['lapse'])
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
case 'avg':
- $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
+ default:
+ $row[__('Maximun')] = format_for_graph(
+ reporting_get_agentmodule_data_average(
+ $content['id_agent_module'],
+ $content['lapse'],
+ ($i + $content['lapse'])
+ ),
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
break;
}
} else {
@@ -5185,7 +5275,7 @@ function reporting_value($report, $content, $type, $pdf=false)
}
}
- if ($config['metaconsole']) {
+ if (is_metaconsole() === true) {
metaconsole_restore_db();
}
@@ -5205,7 +5295,14 @@ function reporting_value($report, $content, $type, $pdf=false)
} else {
$divisor = get_data_multiplier($unit);
- $formated_value = format_for_graph($value, $config['graph_precision'], '.', ',', $divisor, $unit);
+ $formated_value = format_for_graph(
+ $value,
+ $config['graph_precision'],
+ '.',
+ ',',
+ $divisor,
+ $unit
+ );
}
break;
}
@@ -5215,7 +5312,7 @@ function reporting_value($report, $content, $type, $pdf=false)
'formated_value' => $formated_value,
];
- if ($config['metaconsole']) {
+ if (is_metaconsole() === true) {
metaconsole_restore_db();
}
@@ -9072,7 +9169,7 @@ function reporting_get_group_stats($id_group=0, $access='AR')
$covered_groups = [];
$group_array = [];
foreach ($id_group as $group) {
- $children = groups_get_childrens($group);
+ $children = groups_get_children($group);
// Show empty groups only if they have children with agents
// $group_array = array();
diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php
index 0de6b542bd..207d2037ed 100644
--- a/pandora_console/include/functions_reporting_html.php
+++ b/pandora_console/include/functions_reporting_html.php
@@ -501,6 +501,8 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$table1->head[5] = __('Status');
$table1->headstyle = [];
+ $table1->headstyle[0] = 'text-align: left';
+ $table1->headstyle[1] = 'text-align: left';
$table1->headstyle[2] = 'text-align: right';
$table1->headstyle[3] = 'text-align: right';
$table1->headstyle[4] = 'text-align: right';
@@ -536,6 +538,8 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$table2->head[6] = __('Downtime');
$table2->headstyle = [];
+ $table2->headstyle[0] = 'text-align: left';
+ $table2->headstyle[1] = 'text-align: left';
$table2->headstyle[2] = 'text-align: right';
$table2->headstyle[3] = 'text-align: right';
$table2->headstyle[4] = 'text-align: right';
@@ -548,7 +552,7 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$table3->align = [];
$table3->align[0] = 'left';
- $table3->align[1] = 'left';
+ $table3->align[1] = 'right';
$table3->align[2] = 'right';
$table3->align[3] = 'right';
$table3->align[4] = 'right';
@@ -565,6 +569,8 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$table3->head[4] = __('Checks Unknown');
$table3->headstyle = [];
+ $table3->headstyle[0] = 'text-align: left';
+ $table3->headstyle[1] = 'text-align: right';
$table3->headstyle[2] = 'text-align: right';
$table3->headstyle[3] = 'text-align: right';
$table3->headstyle[4] = 'text-align: right';
@@ -721,23 +727,23 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
true
);
} else {
- $table1->title = $item['title'];
- $table1->titleclass = 'title_table_pdf';
- $table1->titlestyle = 'text-align:left;';
+ // $table1->title = $item['title'];
+ // $table1->titleclass = 'title_table_pdf';
+ // $table1->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table(
$table1,
true
);
- $table2->title = $item['title'];
- $table2->titleclass = 'title_table_pdf';
- $table2->titlestyle = 'text-align:left;';
+ // $table2->title = $item['title'];
+ // $table2->titleclass = 'title_table_pdf';
+ // $table2->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table(
$table2,
true
);
- $table3->title = $item['title'];
- $table3->titleclass = 'title_table_pdf';
- $table3->titlestyle = 'text-align:left;';
+ // $table3->title = $item['title'];
+ // $table3->titleclass = 'title_table_pdf';
+ // $table3->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table(
$table3,
true
@@ -782,9 +788,9 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
true
);
} else {
- $table1->title = $item['title'];
- $table1->titleclass = 'title_table_pdf';
- $table1->titlestyle = 'text-align:left;';
+ // $table1->title = $item['title'];
+ // $table1->titleclass = 'title_table_pdf';
+ // $table1->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table(
$table1,
true
@@ -2965,8 +2971,26 @@ function reporting_html_min_value(&$table, $item, $mini)
}
-function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_empty=false)
-{
+/**
+ * Htlm report AVg, min, Max, Only.
+ *
+ * @param array $table Table.
+ * @param array $item Data.
+ * @param boolean $mini Is mini.
+ * @param boolean $only_value Only value.
+ * @param boolean $check_empty Empty.
+ * @param integer $pdf PDF Mode.
+ *
+ * @return string Html output.
+ */
+function reporting_html_value(
+ $table,
+ $item,
+ $mini,
+ $only_value=false,
+ $check_empty=false,
+ $pdf=0
+) {
global $config;
if ($mini) {
@@ -2975,8 +2999,12 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
$font_size = $config['font_size_item_report'].'em';
}
- if (isset($item['visual_format']) && $item['visual_format'] != 0
- && ($item['type'] == 'max_value' || $item['type'] == 'min_value' || $item['type'] == 'avg_value')
+ $return_pdf = '';
+
+ if (isset($item['visual_format']) === true && $item['visual_format'] != 0
+ && ($item['type'] == 'max_value'
+ || $item['type'] == 'min_value'
+ || $item['type'] == 'avg_value')
) {
$table2 = new stdClass();
$table2->width = '100%';
@@ -2998,6 +3026,7 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
break;
case 'avg_value':
+ default:
$table2->head = [
__('Agent'),
__('Module'),
@@ -3025,15 +3054,28 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
$table->colspan[2][0] = 3;
$table->colspan[3][0] = 3;
- array_push($table->data, html_print_table($table2, true));
+ if ($pdf === 0) {
+ array_push($table->data, html_print_table($table2, true));
+ } else {
+ $return_pdf .= html_print_table($table2, true);
+ }
+
unset($item['data'][0]);
if ($item['visual_format'] != 1) {
$value = $item['data'][1]['value'];
- array_push($table->data, $value);
- unset($item['data'][1]);
+ if ($pdf === 0) {
+ array_push($table->data, $value);
+ } else {
+ $style_div_pdf = 'text-align:center;margin-bottom:20px;';
+ $return_pdf .= '';
+ $return_pdf .= $value;
+ $return_pdf .= '
';
+ }
}
+ unset($item['data'][1]);
+
if ($item['visual_format'] != 2) {
$table1 = new stdClass();
$table1->width = '100%';
@@ -3053,6 +3095,7 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
break;
case 'avg_value':
+ default:
$table1->head = [
__('Lapse'),
__('Average'),
@@ -3061,8 +3104,9 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
}
$table1->data = [];
+ $row = [];
foreach ($item['data'] as $data) {
- if (!is_numeric($data[__('Maximun')])) {
+ if (is_numeric($data[__('Maximun')]) === false) {
$row = [
$data[__('Lapse')],
$data[__('Maximun')],
@@ -3070,7 +3114,12 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
} else {
$row = [
$data[__('Lapse')],
- remove_right_zeros(number_format($data[__('Maximun')], $config['graph_precision'])),
+ remove_right_zeros(
+ number_format(
+ $data[__('Maximun')],
+ $config['graph_precision']
+ )
+ ),
];
}
@@ -3080,10 +3129,22 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
$table1->title = $item['title'];
$table1->titleclass = 'title_table_pdf';
$table1->titlestyle = 'text-align:left;';
+ if ($pdf === 0) {
+ array_push($table->data, html_print_table($table1, true));
+ } else {
+ $return_pdf .= html_print_table($table1, true);
+ }
+ }
- array_push($table->data, html_print_table($table1, true));
+ if ($pdf !== 0) {
+ return $return_pdf;
}
} else {
+ if ($pdf !== 0) {
+ $table = new stdClass();
+ $table->width = '100%';
+ }
+
$table->colspan['data']['cell'] = 3;
$table->cellstyle['data']['cell'] = 'text-align: left;';
@@ -3098,6 +3159,10 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
}
$table->data['data']['cell'] .= '';
+
+ if ($pdf !== 0) {
+ return html_print_table($table, true);
+ }
}
}
@@ -3617,9 +3682,9 @@ function reporting_html_availability($table, $item, $pdf=0)
$data[0] = html_print_table($table1, true);
array_push($table->data, $data);
} else {
- $table1->title = $item['title'];
- $table1->titleclass = 'title_table_pdf';
- $table1->titlestyle = 'text-align:left;';
+ // $table1->title = $item['title'];
+ // $table1->titleclass = 'title_table_pdf';
+ // $table1->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table($table1, true);
}
@@ -3629,9 +3694,9 @@ function reporting_html_availability($table, $item, $pdf=0)
$data2[0] = html_print_table($table2, true);
array_push($table->data, $data2);
} else {
- $table2->title = $item['title'];
- $table2->titleclass = 'title_table_pdf';
- $table2->titlestyle = 'text-align:left;';
+ // $table2->title = $item['title'];
+ // $table2->titleclass = 'title_table_pdf';
+ // $table2->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table($table2, true);
}
}
@@ -3699,9 +3764,9 @@ function reporting_html_availability($table, $item, $pdf=0)
);
array_push($table->data, $data);
} else {
- $table1->title = $item['title'];
- $table1->titleclass = 'title_table_pdf';
- $table1->titlestyle = 'text-align:left;';
+ // $table1->title = $item['title'];
+ // $table1->titleclass = 'title_table_pdf';
+ // $table1->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table(
$table1,
true
diff --git a/pandora_console/include/functions_tags.php b/pandora_console/include/functions_tags.php
index 5aace86006..fe36bc34fa 100644
--- a/pandora_console/include/functions_tags.php
+++ b/pandora_console/include/functions_tags.php
@@ -941,7 +941,7 @@ function tags_get_acl_tags_event_condition(
}
// Group condition (The module belongs to an agent of the group X)
- // $group_condition = sprintf('id_grupo IN (%s)', implode(',', array_values(groups_get_id_recursive($group_id, true))));.
+ // $group_condition = sprintf('id_grupo IN (%s)', implode(',', array_values(groups_get_children_ids($group_id, true))));.
$group_condition = '('.$id_grupo_table_pretag.'id_grupo = '.$group_id.' OR '.$alt_id_grupo_table_pretag.'id_group = '.$group_id.')';
// Tags condition (The module has at least one of the restricted tags).
@@ -1350,7 +1350,7 @@ function tags_checks_event_acl($id_user, $id_group, $access, $tags=[], $children
foreach ($user_tags as $user_tag) {
$tags_user = $user_tag['tags'];
$id_group_user = $user_tag['id_grupo'];
- $childrens = groups_get_childrens($id_group_user, null, true);
+ $childrens = groups_get_children($id_group_user, null, true);
if (empty($childrens)) {
$group_ids = $id_group_user;
@@ -1421,7 +1421,7 @@ function tags_get_agents_counter($id_tag, $groups_and_tags=[], $agent_filter=[],
$tags_arr = explode(',', $tags);
foreach ($tags_arr as $tag) {
if ($tag == $id_tag) {
- $hierarchy_groups = groups_get_id_recursive($group_id);
+ $hierarchy_groups = groups_get_children_ids($group_id);
$groups_id = array_merge($groups_id, $hierarchy_groups);
}
}
@@ -1923,7 +1923,7 @@ function tags_get_monitors_counter($id_tag, $groups_and_tags=[], $agent_filter=[
$tags_arr = explode(',', $tags);
foreach ($tags_arr as $tag) {
if ($tag == $id_tag) {
- $hierarchy_groups = groups_get_id_recursive($group_id);
+ $hierarchy_groups = groups_get_children_ids($group_id);
$groups_id = array_merge($groups_id, $hierarchy_groups);
}
}
@@ -2219,7 +2219,7 @@ function tags_monitors_fired_alerts($id_tag, $groups_and_tags=[], $id_agente=fal
$tags_arr = explode(',', $tags);
foreach ($tags_arr as $tag) {
if ($tag == $id_tag) {
- $hierarchy_groups = groups_get_id_recursive($group_id);
+ $hierarchy_groups = groups_get_children_ids($group_id);
$groups_id = array_merge($groups_id, $hierarchy_groups);
}
}
@@ -2283,7 +2283,7 @@ function tags_get_monitors_alerts($id_tag, $groups_and_tags=[], $id_agente=false
$tags_arr = explode(',', $tags);
foreach ($tags_arr as $tag) {
if ($tag == $id_tag) {
- $hierarchy_groups = groups_get_id_recursive($group_id);
+ $hierarchy_groups = groups_get_children_ids($group_id);
$groups_id = array_merge($groups_id, $hierarchy_groups);
}
}
diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js
index 15c2f9fcf4..f99ae01c79 100644
--- a/pandora_console/include/javascript/pandora.js
+++ b/pandora_console/include/javascript/pandora.js
@@ -2024,7 +2024,7 @@ function getServerUrl() {
server_url = get_php_value("homeurl");
} catch (SyntaxError) {
console.warn("Pandora homeurl cannot be found.");
- server_url = window.location.origin + "/pandora_console";
+ server_url = $("#hidden-homeurl").val();
}
return server_url;
}
diff --git a/pandora_console/include/javascript/tree/TreeController.js b/pandora_console/include/javascript/tree/TreeController.js
index f3e6ecec52..497e18c266 100644
--- a/pandora_console/include/javascript/tree/TreeController.js
+++ b/pandora_console/include/javascript/tree/TreeController.js
@@ -637,7 +637,20 @@ var TreeController = {
.css("cursor", "pointer");
$content.append($serviceDetailImage);
- $content.append(" " + element.name);
+ if (
+ typeof element.elementDescription !== "undefined" &&
+ element.elementDescription != ""
+ ) {
+ $content.append(" " + element.elementDescription);
+ } else if (
+ typeof element.description !== "undefined" &&
+ element.description != ""
+ ) {
+ $content.append(" " + element.description);
+ } else {
+ $content.append(" " + element.name);
+ }
+ // $content.append(" " + element.name);
} else {
$content.remove($node);
}
diff --git a/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_group.php b/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_group.php
index 2acd7f32fa..bd7d7d5886 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_group.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_group.php
@@ -278,6 +278,11 @@ class TopNEventByGroupWidget extends Widget
];
// Groups.
+ $selected_groups = [];
+ if ($values['groupId']) {
+ $selected_groups = explode(',', $values['groupId'][0]);
+ }
+
$inputs[] = [
'label' => __('Groups'),
'arguments' => [
@@ -285,7 +290,7 @@ class TopNEventByGroupWidget extends Widget
'name' => 'groupId[]',
'returnAllGroup' => true,
'privilege' => 'AR',
- 'selected' => explode(',', $values['groupId'][0]),
+ 'selected' => $selected_groups,
'return' => true,
'multiple' => true,
],
diff --git a/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_module.php b/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_module.php
index 4bbaee22a8..148ace6aac 100644
--- a/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_module.php
+++ b/pandora_console/include/lib/Dashboard/Widgets/top_n_events_by_module.php
@@ -277,6 +277,11 @@ class TopNEventByModuleWidget extends Widget
],
];
+ $selected_groups = [];
+ if ($values['groupId']) {
+ $selected_groups = explode(',', $values['groupId'][0]);
+ }
+
// Groups.
$inputs[] = [
'label' => __('Groups'),
@@ -285,7 +290,7 @@ class TopNEventByModuleWidget extends Widget
'name' => 'groupId[]',
'returnAllGroup' => true,
'privilege' => 'AR',
- 'selected' => explode(',', $values['groupId'][0]),
+ 'selected' => $selected_groups,
'return' => true,
'multiple' => true,
],
diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css
index 6b48ab13ae..5f0f9024c7 100644
--- a/pandora_console/include/styles/pandora.css
+++ b/pandora_console/include/styles/pandora.css
@@ -1480,6 +1480,7 @@ table.databox {
padding: 9px 7px;
font-weight: normal;
color: #fff;
+ text-align: justify;
}
.databox > th * {
diff --git a/pandora_console/include/styles/wizard.css b/pandora_console/include/styles/wizard.css
index a183e2368f..0ef0df5ee6 100644
--- a/pandora_console/include/styles/wizard.css
+++ b/pandora_console/include/styles/wizard.css
@@ -11,6 +11,10 @@ ul.wizard {
ul.wizard li {
padding-bottom: 10px;
padding-top: 10px;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-start;
}
ul.wizard li > label:not(.p-switch) {
diff --git a/pandora_console/install.php b/pandora_console/install.php
index 10594bda78..f706f1dff4 100644
--- a/pandora_console/install.php
+++ b/pandora_console/install.php
@@ -129,7 +129,7 @@
0) {
$groups = [$group_id];
if ($recursion) {
- $groups = groups_get_id_recursive($group_id, true);
+ $groups = groups_get_children_ids($group_id, true);
}
} else {
$groups = [];
@@ -576,7 +576,7 @@ if ($strict_user) {
if ($group_id > 0) {
$groups = [$group_id];
if ($recursion) {
- $groups = groups_get_id_recursive($group_id, true);
+ $groups = groups_get_children_ids($group_id, true);
}
$filter['id_group'] = implode(',', $groups);
diff --git a/pandora_console/operation/agentes/ver_agente.php b/pandora_console/operation/agentes/ver_agente.php
index e86960938a..df5146711c 100644
--- a/pandora_console/operation/agentes/ver_agente.php
+++ b/pandora_console/operation/agentes/ver_agente.php
@@ -88,7 +88,7 @@ if (is_ajax()) {
if ($get_agents_group_json) {
$id_group = (int) get_parameter('id_group');
- $recursion = (bool) get_parameter('recursion');
+ $recursion = (get_parameter_switch('recursion', 'false') === 'true');
$id_os = get_parameter('id_os', '');
$agent_name = get_parameter('name', '');
@@ -146,14 +146,24 @@ if (is_ajax()) {
// Perform search.
$agents = agents_get_group_agents(
+ // Id_group.
$id_group,
+ // Search.
$filter,
+ // Case.
'lower',
- false,
+ // NoACL.
+ true,
+ // ChildGroups.
$recursion,
+ // Serialized.
false,
+ // Separator.
'|',
- $cluster_mode
+ // Add_alert_bulk_op.
+ $cluster_mode,
+ // Force_serialized.
+ false
);
if (empty($agents)) {
diff --git a/pandora_console/operation/events/events.build_query.php b/pandora_console/operation/events/events.build_query.php
index b1b4051e7f..0f68cbfb5f 100755
--- a/pandora_console/operation/events/events.build_query.php
+++ b/pandora_console/operation/events/events.build_query.php
@@ -28,7 +28,7 @@ if ($id_group > 0) {
if ($propagate) {
$childrens_ids = [$id_group];
- $childrens = groups_get_childrens($id_group, null, true);
+ $childrens = groups_get_children($id_group, null, true);
if (!empty($childrens)) {
foreach ($childrens as $child) {
diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php
index 3ca4123b4f..05f244d727 100644
--- a/pandora_console/operation/events/events.php
+++ b/pandora_console/operation/events/events.php
@@ -358,6 +358,21 @@ if (is_ajax()) {
$tmp->comments = ui_print_comments($tmp->comments);
}
+ // Show last event.
+ if (isset($tmp->max_id_evento) && $tmp->max_id_evento !== $tmp->id_evento) {
+ $max_event = db_get_row_sql(
+ sprintf(
+ 'SELECT criticity, timestamp FROM %s
+ WHERE id_evento = %s',
+ ($tmp->meta) ? 'tmetaconsole_event' : 'tevento',
+ $tmp->max_id_evento
+ )
+ );
+
+ $tmp->timestamp = $max_event['timestamp'];
+ $tmp->criticity = $max_event['criticity'];
+ }
+
$tmp->agent_name = io_safe_output($tmp->agent_name);
$tmp->ack_utimestamp = ui_print_timestamp(
$tmp->ack_utimestamp,
diff --git a/pandora_console/operation/visual_console/legacy_public_view.php b/pandora_console/operation/visual_console/legacy_public_view.php
index 797a12846f..4df0a6db28 100644
--- a/pandora_console/operation/visual_console/legacy_public_view.php
+++ b/pandora_console/operation/visual_console/legacy_public_view.php
@@ -43,6 +43,8 @@ enterprise_include('index.php');
$url_css = ui_get_full_url('include/styles/visual_maps.css', false, false, false);
echo '';
+html_print_input_hidden('homeurl', $config['homeurl']);
+
$url_css_modal = ui_get_full_url('include/styles/register.css', false, false, false);
echo '';
// Connection lost alert.
diff --git a/pandora_console/operation/visual_console/public_view.php b/pandora_console/operation/visual_console/public_view.php
index 1127614eed..301ec3ca9c 100644
--- a/pandora_console/operation/visual_console/public_view.php
+++ b/pandora_console/operation/visual_console/public_view.php
@@ -31,6 +31,8 @@ require_once $config['homedir'].'/vendor/autoload.php';
ui_require_css_file('visual_maps');
ui_require_css_file('register');
+html_print_input_hidden('homeurl', $config['homeurl']);
+
// Connection lost alert.
$conn_title = __('Connection with server has been lost');
$conn_text = __('Connection to the server has been lost. Please check your internet connection or contact with administrator.');
diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec
index 4e8ef4101c..37fa8092c2 100644
--- a/pandora_console/pandora_console.redhat.spec
+++ b/pandora_console/pandora_console.redhat.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.750
-%define release 201027
+%define release 201029
# User and Group under which Apache is running
%define httpd_name httpd
diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec
index 8864566ed3..162aeaef50 100644
--- a/pandora_console/pandora_console.rhel7.spec
+++ b/pandora_console/pandora_console.rhel7.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.750
-%define release 201027
+%define release 201029
# User and Group under which Apache is running
%define httpd_name httpd
diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec
index 5a1b1e5ad7..de5a3f753c 100644
--- a/pandora_console/pandora_console.spec
+++ b/pandora_console/pandora_console.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.750
-%define release 201027
+%define release 201029
%define httpd_name httpd
# User and Group under which Apache is running
%define httpd_name apache2
diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control
index 233a5a7b65..1afd3bd5bb 100644
--- a/pandora_server/DEBIAN/control
+++ b/pandora_server/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-server
-Version: 7.0NG.750-201027
+Version: 7.0NG.750-201029
Architecture: all
Priority: optional
Section: admin
diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh
index f682b8d2f1..2aff52280a 100644
--- a/pandora_server/DEBIAN/make_deb_package.sh
+++ b/pandora_server/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.750-201027"
+pandora_version="7.0NG.750-201029"
package_cpan=0
package_pandora=1
diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm
index d694b7163d..03f3c1e109 100644
--- a/pandora_server/lib/PandoraFMS/Config.pm
+++ b/pandora_server/lib/PandoraFMS/Config.pm
@@ -45,7 +45,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.750";
-my $pandora_build = "201027";
+my $pandora_build = "201029";
our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash
diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm
index 68dea259dd..17a8779e7f 100644
--- a/pandora_server/lib/PandoraFMS/PluginTools.pm
+++ b/pandora_server/lib/PandoraFMS/PluginTools.pm
@@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.750";
-my $pandora_build = "201027";
+my $pandora_build = "201029";
our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec
index 7d5dda6118..258f820820 100644
--- a/pandora_server/pandora_server.redhat.spec
+++ b/pandora_server/pandora_server.redhat.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.750
-%define release 201027
+%define release 201029
Summary: Pandora FMS Server
Name: %{name}
diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec
index cbcf2bf722..7b05aea60c 100644
--- a/pandora_server/pandora_server.spec
+++ b/pandora_server/pandora_server.spec
@@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.750
-%define release 201027
+%define release 201029
Summary: Pandora FMS Server
Name: %{name}
diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer
index 992bf170fb..2712d24fd2 100755
--- a/pandora_server/pandora_server_installer
+++ b/pandora_server/pandora_server_installer
@@ -9,7 +9,7 @@
# **********************************************************************
PI_VERSION="7.0NG.750"
-PI_BUILD="201027"
+PI_BUILD="201029"
MODE=$1
if [ $# -gt 1 ]; then
diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl
index 3abb1560ca..e7a1e7ec12 100755
--- a/pandora_server/util/pandora_db.pl
+++ b/pandora_server/util/pandora_db.pl
@@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
-my $version = "7.0NG.750 PS201027";
+my $version = "7.0NG.750 PS201029";
# Pandora server configuration
my %conf;
diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl
index 482f817e6e..80771fd543 100755
--- a/pandora_server/util/pandora_manage.pl
+++ b/pandora_server/util/pandora_manage.pl
@@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv;
# version: define current version
-my $version = "7.0NG.750 PS201027";
+my $version = "7.0NG.750 PS201029";
# save program name for logging
my $progname = basename($0);