diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 740ea789c5..2faf21c47a 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-agent-unix
-Version: 7.0NG.735-190624
+Version: 7.0NG.735-190626
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 170c5bcee5..7521094eba 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.735-190624"
+pandora_version="7.0NG.735-190626"
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 8b00991b4a..3cf1d22126 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.735';
-use constant AGENT_BUILD => '190624';
+use constant AGENT_BUILD => '190626';
# 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 fabb18238b..725d5abaa2 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.735
-%define release 190624
+%define release 190626
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 9a8f15d4f6..970291a4c3 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.735
-%define release 190624
+%define release 190626
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 d315e8ea8f..2b9cf3b68c 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.735"
-PI_BUILD="190624"
+PI_BUILD="190626"
OS_NAME=`uname -s`
FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index 0bfbced120..7aecb7cff2 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
-{190624}
+{190626}
ViewReadme
{Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index 44997b04a5..f655faabc6 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.735(Build 190624)")
+#define PANDORA_VERSION ("7.0NG.735(Build 190626)")
string pandora_path;
string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index 3ad4771da2..3d3a2ebf4a 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.735(Build 190624))"
+ VALUE "ProductVersion", "(7.0NG.735(Build 190626))"
VALUE "FileVersion", "1.0.0.0"
END
END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index 532200a913..5fc2731073 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-console
-Version: 7.0NG.735-190624
+Version: 7.0NG.735-190626
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 17b872cf03..44d78e12ac 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.735-190624"
+pandora_version="7.0NG.735-190626"
package_pear=0
package_pandora=1
diff --git a/pandora_console/extras/mr/29.sql b/pandora_console/extras/mr/29.sql
index ca88b34fff..e036c9d2eb 100644
--- a/pandora_console/extras/mr/29.sql
+++ b/pandora_console/extras/mr/29.sql
@@ -1,5 +1,7 @@
START TRANSACTION;
+ALTER TABLE `tmetaconsole_agent` ADD INDEX `id_tagente_idx` (`id_tagente`);
+
DELETE FROM `ttipo_modulo` WHERE `nombre` LIKE 'log4x';
CREATE TABLE IF NOT EXISTS `tcredential_store` (
diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php
index 0e08a3728f..9e7ce18c4e 100644
--- a/pandora_console/godmode/agentes/modificar_agente.php
+++ b/pandora_console/godmode/agentes/modificar_agente.php
@@ -163,7 +163,7 @@ echo '
';
echo __('Group').' ';
$own_info = get_user_info($config['id_user']);
-if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
+if (!$own_info['is_admin'] && check_acl($config['id_user'], 0, 'AW')) {
$return_all_group = false;
} else {
$return_all_group = true;
diff --git a/pandora_console/godmode/alerts/configure_alert_action.php b/pandora_console/godmode/alerts/configure_alert_action.php
index 3b7b5a947d..8ea292445b 100644
--- a/pandora_console/godmode/alerts/configure_alert_action.php
+++ b/pandora_console/godmode/alerts/configure_alert_action.php
@@ -317,9 +317,9 @@ $(document).ready (function () {
jQuery.post (,
values,
function (data, status) {
- original_command = js_html_entity_decode (data["command"]);
+ original_command = data["command"];
render_command_preview (original_command);
- command_description = js_html_entity_decode (data["description"]);
+ command_description = data["description"];
render_command_description(command_description);
var max_fields = parseInt('');
diff --git a/pandora_console/godmode/events/custom_events.php b/pandora_console/godmode/events/custom_events.php
index bfb0e8c64d..cfdf50cf17 100644
--- a/pandora_console/godmode/events/custom_events.php
+++ b/pandora_console/godmode/events/custom_events.php
@@ -113,6 +113,8 @@ $fields_available['instructions'] = __('Instructions');
$fields_available['server_name'] = __('Server Name');
$fields_available['data'] = __('Data');
$fields_available['module_status'] = __('Module Status');
+$fields_available['mini_severity'] = __('Severity mini');
+
// Remove fields already selected.
foreach ($fields_available as $key => $available) {
diff --git a/pandora_console/godmode/events/events.php b/pandora_console/godmode/events/events.php
index c937ad281c..72ae001fe1 100644
--- a/pandora_console/godmode/events/events.php
+++ b/pandora_console/godmode/events/events.php
@@ -50,17 +50,10 @@ if (check_acl($config['id_user'], 0, 'PM')) {
'text' => ''.html_print_image('images/event_responses.png', true, ['title' => __('Event responses')]).'',
];
- if (!is_metaconsole()) {
- $buttons['fields'] = [
- 'active' => false,
- 'text' => ''.html_print_image('images/custom_columns.png', true, ['title' => __('Custom fields')]).'',
- ];
- } else {
- $buttons['fields'] = [
- 'active' => false,
- 'text' => ''.html_print_image('images/custom_columns.png', true, ['title' => __('Custom fields')]).'',
- ];
- }
+ $buttons['fields'] = [
+ 'active' => false,
+ 'text' => ''.html_print_image('images/custom_columns.png', true, ['title' => __('Custom fields')]).'',
+ ];
}
switch ($section) {
diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php
index bd980f5256..14caf1b9cb 100644
--- a/pandora_console/godmode/menu.php
+++ b/pandora_console/godmode/menu.php
@@ -208,7 +208,7 @@ if (!empty($sub)) {
}
-if (check_acl($config['id_user'], 0, 'AW') || check_acl($config['id_user'], 0, 'PM') || check_acl($config['id_user'], 0, 'RR')) {
+if (check_acl($config['id_user'], 0, 'AW') || check_acl($config['id_user'], 0, 'PM')) {
// Servers
$menu_godmode['gservers']['text'] = __('Servers');
$menu_godmode['gservers']['sec2'] = 'godmode/servers/modificar_server';
diff --git a/pandora_console/godmode/servers/plugin.php b/pandora_console/godmode/servers/plugin.php
index 57fa1a1e67..a7fc94bcca 100644
--- a/pandora_console/godmode/servers/plugin.php
+++ b/pandora_console/godmode/servers/plugin.php
@@ -280,7 +280,7 @@ if (($create != '') || ($view != '')) {
} else {
if ($create != '') {
ui_print_page_header(
- __('Plugin creation'),
+ __('Plugin registration'),
'images/gm_servers.png',
false,
'plugin_definition',
diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index ce173898b2..a7d23ca015 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -75,13 +75,73 @@ $graphic_event_group = (bool) get_parameter('graphic_event_group');
$get_table_response_command = (bool) get_parameter('get_table_response_command');
$save_filter_modal = get_parameter('save_filter_modal', 0);
$load_filter_modal = get_parameter('load_filter_modal', 0);
-$save_filter = get_parameter('save_filter', 0);
$get_filter_values = get_parameter('get_filter_values', 0);
$update_event_filter = get_parameter('update_event_filter', 0);
$save_event_filter = get_parameter('save_event_filter', 0);
$in_process_event = get_parameter('in_process_event', 0);
$validate_event = get_parameter('validate_event', 0);
$delete_event = get_parameter('delete_event', 0);
+$get_event_filters = get_parameter('get_event_filters', 0);
+$get_comments = get_parameter('get_comments', 0);
+
+if ($get_comments) {
+ $event = get_parameter('event', false);
+ $filter = get_parameter('filter', false);
+
+ if ($event === false) {
+ return __('Failed to retrieve comments');
+ }
+
+ if ($filter['group_rep'] == 1) {
+ $events = events_get_all(
+ ['te.*'],
+ // Filter.
+ $filter,
+ // Offset.
+ null,
+ // Limit.
+ null,
+ // Order.
+ null,
+ // Sort_field.
+ null,
+ // History.
+ $filter['history'],
+ // Return_sql.
+ false,
+ // Having.
+ sprintf(
+ ' HAVING max_id_evento = %d',
+ $event['id_evento']
+ )
+ );
+ if ($events !== false) {
+ $event = $events[0];
+ }
+ } else {
+ $events = events_get_event(
+ $event['id_evento'],
+ false,
+ $meta,
+ $history
+ );
+
+ if ($events !== false) {
+ $event = $events[0];
+ }
+ }
+
+ echo events_page_comments($event, true);
+
+ return;
+}
+
+if ($get_event_filters) {
+ $event_filter = events_get_event_filter_select();
+
+ echo io_json_mb_encode($event_filter);
+ return;
+}
// Delete event (filtered or not).
if ($delete_event) {
@@ -267,6 +327,17 @@ if ($get_filter_values) {
$event_filter = events_get_event_filter($id_filter);
+ if ($event_filter === false) {
+ $event_filter = [
+ 'status' => EVENT_NO_VALIDATED,
+ 'event_view_hr' => $config['event_view_hr'],
+ 'group_rep' => 1,
+ 'tag_with' => [],
+ 'tag_without' => [],
+ 'history' => false,
+ ];
+ }
+
$event_filter['search'] = io_safe_output($event_filter['search']);
$event_filter['id_name'] = io_safe_output($event_filter['id_name']);
$event_filter['tag_with'] = base64_encode(
@@ -590,7 +661,7 @@ function save_new_filter() {
jQuery.post ("",
{
- "page" : "operation/events/events_list",
+ "page" : "include/ajax/events",
"save_event_filter" : 1,
"id_name" : $("#text-id_name").val(),
"id_group" : $("select#id_group").val(),
@@ -659,7 +730,7 @@ function save_update_filter() {
var name_filter_update = $("#overwrite_filter option[value='"+id_filter_update+"']").text();
jQuery.post ("",
- {"page" : "operation/events/events_list",
+ {"page" : "include/ajax/events",
"update_event_filter" : 1,
"id" : $("#overwrite_filter").val(),
"id_group" : $("select#id_group").val(),
@@ -712,7 +783,7 @@ function save_update_filter() {
$('#filter_id').append ($('').html ( ).attr ("value", 0));
// Reload filters select
jQuery.post ("",
- {"page" : "operation/events/events_list",
+ {"page" : "include/ajax/events",
"get_event_filters" : 1
},
function (data) {
@@ -1040,6 +1111,7 @@ if ($get_extended_event) {
global $config;
$event = get_parameter('event', false);
+ $filter = get_parameter('filter', false);
if ($event === false) {
return;
@@ -1079,29 +1151,37 @@ if ($get_extended_event) {
}
// Check ACLs.
+ $access = false;
if (is_user_admin($config['id_user'])) {
// Do nothing if you're admin, you get full access.
- $__ignored_line = 0;
+ $access = true;
} else if ($config['id_user'] == $event['owner_user']) {
// Do nothing if you're the owner user, you get access.
- $__ignored_line = 0;
+ $access = true;
} else if ($event['id_grupo'] == 0) {
// If the event has access to all groups, you get access.
- $__ignored_line = 0;
+ $access = true;
} else {
// Get your groups.
$groups = users_get_groups($config['id_user'], 'ER');
if (in_array($event['id_grupo'], array_keys($groups))) {
// If event group is among the groups of the user, you get access.
- $__ignored_line = 0;
- } else {
- // If all the access types fail, abort.
- echo 'Access denied';
- return false;
+ $access = true;
+ } else if ($event['id_agente']
+ && agents_check_access_agent($event['id_agente'], 'ER')
+ ) {
+ // Secondary group, indirect access.
+ $access = true;
}
}
+ if (!$access) {
+ // If all the access types fail, abort.
+ echo 'Access denied';
+ return false;
+ }
+
// Print group_rep in a hidden field to recover it from javascript.
html_print_input_hidden('group_rep', (int) $group_rep);
@@ -1227,7 +1307,7 @@ if ($get_extended_event) {
$general = events_page_general($event);
- $comments = events_page_comments($event);
+ $comments = '';
$notifications = '';
$notifications .= '';
@@ -1238,6 +1318,18 @@ if ($get_extended_event) {
$loading = ' '.html_print_image('images/spinner.gif', true).' ';
+ $i = 0;
+ $tab['general'] = $i++;
+ $tab['details'] = $i++;
+ if (!empty($related)) {
+ $tab['related'] = $i++;
+ }
+
+ $tab['custom_fields'] = $i++;
+ $tab['comments'] = $i++;
+ $tab['responses'] = $i++;
+ $tab['custom_data'] = $i++;
+
$out = ''.$tabs.$notifications.$loading.$general.$details.$related.$custom_fields.$comments.$responses.$custom_data.html_print_input_hidden('id_event', $event['id_evento']).' ';
$js = ' |