diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control
index 878d9c62c3..a589e1a0c0 100644
--- a/pandora_agents/unix/DEBIAN/control
+++ b/pandora_agents/unix/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-agent-unix
-Version: 7.0NG.773.3-230915
+Version: 7.0NG.773.3-230920
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 fe35c853f6..eba86c9733 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.773.3-230915"
+pandora_version="7.0NG.773.3-230920"
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 b1aa799d15..7ec3052669 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -1031,7 +1031,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.773.3';
-use constant AGENT_BUILD => '230915';
+use constant AGENT_BUILD => '230920';
# 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 16db25b35c..72745dabf3 100644
--- a/pandora_agents/unix/pandora_agent.redhat.spec
+++ b/pandora_agents/unix/pandora_agent.redhat.spec
@@ -4,7 +4,7 @@
%global __os_install_post %{nil}
%define name pandorafms_agent_linux
%define version 7.0NG.773.3
-%define release 230915
+%define release 230920
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec
index 8242c8f2bf..62149a1d3c 100644
--- a/pandora_agents/unix/pandora_agent.redhat_bin.spec
+++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec
@@ -5,7 +5,7 @@
%define name pandorafms_agent_linux_bin
%define source_name pandorafms_agent_linux
%define version 7.0NG.773.3
-%define release 230915
+%define release 230920
Summary: Pandora FMS Linux agent, binary version
Name: %{name}
diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec
index 2a631829e6..aea35e8db1 100644
--- a/pandora_agents/unix/pandora_agent.spec
+++ b/pandora_agents/unix/pandora_agent.spec
@@ -4,7 +4,7 @@
%global __os_install_post %{nil}
%define name pandorafms_agent_linux
%define version 7.0NG.773.3
-%define release 230915
+%define release 230920
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 f21eb9e11f..dd201308ba 100755
--- a/pandora_agents/unix/pandora_agent_installer
+++ b/pandora_agents/unix/pandora_agent_installer
@@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.773.3"
-PI_BUILD="230915"
+PI_BUILD="230920"
OS_NAME=`uname -s`
FORCE=0
diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi
index b04bc0ad08..33f0eec4a9 100644
--- a/pandora_agents/win32/installer/pandora.mpi
+++ b/pandora_agents/win32/installer/pandora.mpi
@@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
-{230915}
+{230920}
ViewReadme
{Yes}
diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc
index d2d54e337a..f9299a70fc 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.773.3 Build 230915")
+#define PANDORA_VERSION ("7.0NG.773.3 Build 230920")
string pandora_path;
string pandora_dir;
diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc
index abddd843f8..0f575db3e1 100644
--- a/pandora_agents/win32/versioninfo.rc
+++ b/pandora_agents/win32/versioninfo.rc
@@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Pandora FMS"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
- VALUE "ProductVersion", "(7.0NG.773.3(Build 230915))"
+ VALUE "ProductVersion", "(7.0NG.773.3(Build 230920))"
VALUE "FileVersion", "1.0.0.0"
END
END
diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control
index a956cfd8a1..f3fb008266 100644
--- a/pandora_console/DEBIAN/control
+++ b/pandora_console/DEBIAN/control
@@ -1,5 +1,5 @@
package: pandorafms-console
-Version: 7.0NG.773.3-230915
+Version: 7.0NG.773.3-230920
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 e38a9e2b88..68bfb73c96 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.773.3-230915"
+pandora_version="7.0NG.773.3-230920"
package_pear=0
package_pandora=1
diff --git a/pandora_console/extras/mr/66.sql b/pandora_console/extras/mr/66.sql
index 173aedd395..92f26375ff 100644
--- a/pandora_console/extras/mr/66.sql
+++ b/pandora_console/extras/mr/66.sql
@@ -1,5 +1,6 @@
START TRANSACTION;
+ALTER TABLE tevent_filter ADD private_filter_user text NULL;
ALTER TABLE `ttrap` ADD COLUMN `utimestamp` INT UNSIGNED NOT NULL DEFAULT 0;
UPDATE ttrap SET utimestamp=UNIX_TIMESTAMP(timestamp);
@@ -56,4 +57,25 @@ INSERT INTO `tconfig_os_version` (`id_os_version`, `product`, `version`, `end_of
INSERT INTO `tconfig_os_version` (`id_os_version`, `product`, `version`, `end_of_support`) VALUES (2,'Cisco.*','IOS 3.4.3','2017/05/12');
INSERT INTO `tconfig_os_version` (`id_os_version`, `product`, `version`, `end_of_support`) VALUES (3,'Linux.*','Centos 7.*','2022/01/01');
+UPDATE `tdiscovery_apps` SET `version` = '1.1' WHERE `short_name` = 'pandorafms.vmware';
+
+-- Insert new Proxmox APP
+SET @short_name = 'pandorafms.proxmox';
+SET @name = 'Proxmox';
+SET @section = 'app';
+SET @description = 'Monitor Proxmox VMs, LXC, backups and nodes from a specific host';
+SET @version = '1.0';
+INSERT IGNORE INTO `tdiscovery_apps` (`id_app`, `short_name`, `name`, `section`, `description`, `version`) VALUES ('', @short_name, @name, @section, @description, @version);
+SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;
+
+-- Insert into tdiscovery_apps_scripts
+INSERT IGNORE INTO `tdiscovery_apps_scripts` (`id_app`, `macro`, `value`) VALUES (@id_app, '_exec1_', 'bin/pandora_proxmox');
+
+-- Insert into tdiscovery_apps_executions
+INSERT IGNORE INTO `tdiscovery_apps_executions` (`id`, `id_app`, `execution`) VALUES (1, @id_app, ''_exec1_' -g '__taskGroup__' --host '_host_' --port '_port_' --user '_user_' --password '_password_' --vm '_scanVM_' --lxc '_scanLXC_' --backups '_scanBackups_' --nodes '_scanNodes_' --transfer_mode tentacle --tentacle_address '_tentacleIP_' --tentacle_port '_tentaclePort_' --as_discovery_plugin 1');
+
+ALTER TABLE `treport_content` ADD COLUMN `cat_security_hardening` INT NOT NULL DEFAULT 0;
+ALTER TABLE `treport_content` ADD COLUMN `ignore_skipped` INT NOT NULL DEFAULT 0;
+ALTER TABLE `treport_content` ADD COLUMN `status_of_check` TINYTEXT;
+
COMMIT;
diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php
index 53209ddd95..318100b7db 100644
--- a/pandora_console/godmode/agentes/configurar_agente.php
+++ b/pandora_console/godmode/agentes/configurar_agente.php
@@ -439,7 +439,7 @@ if ($id_agente) {
[
'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente,
'content' => html_print_image(
- 'images/alert@svg.svg',
+ 'images/add-alert.svg',
true,
[
'title' => __('Alerts'),
diff --git a/pandora_console/godmode/events/event_edit_filter.php b/pandora_console/godmode/events/event_edit_filter.php
index e230055f1e..113c156df3 100644
--- a/pandora_console/godmode/events/event_edit_filter.php
+++ b/pandora_console/godmode/events/event_edit_filter.php
@@ -61,6 +61,9 @@ if ($id) {
$filter = events_get_event_filter($id);
$id_group_filter = $filter['id_group_filter'];
$id_group = $filter['id_group'];
+ // Get owner user private filter.
+ $private_filter = ($filter['private_filter_user'] === null || $filter['private_filter_user'] === '') ? 0 : 1;
+ $private_filter_user = $filter['private_filter_user'];
$id_name = $filter['id_name'];
$event_type = $filter['event_type'];
$severity = explode(',', $filter['severity']);
@@ -113,6 +116,7 @@ if ($id) {
$server_id = ($filter['server_id'] ?? '');
} else {
$id_group = '';
+ $private_filter = 0;
$id_group_filter = '';
$id_name = '';
$event_type = '';
@@ -167,8 +171,8 @@ if ($update || $create) {
$id_user_ack = get_parameter('id_user_ack', '');
$owner_user = get_parameter('owner_user', '');
$group_rep = get_parameter('group_rep', '');
- $date_from = get_parameter('date_from', '');
- $date_to = get_parameter('date_to', '');
+ $date_from = get_parameter('date_from', '0000-00-00');
+ $date_to = get_parameter('date_to', '0000-00-00');
$source = get_parameter('source');
$id_extra = get_parameter('id_extra');
$user_comment = get_parameter('user_comment');
@@ -192,6 +196,16 @@ if ($update || $create) {
$server_id = implode(',', $servers_array);
}
+ // Get private filter from user.
+ $private_filter = get_parameter_switch('private_filter_event', 0);
+ if ((int) $private_filter === 1 && $create) {
+ $private_filter_user = $_SESSION['id_usuario'];
+ } else if ((int) $private_filter === 1 && $update) {
+ $private_filter_user = ($private_filter_user === $_SESSION['id_usuario']) ? $private_filter_user : $_SESSION['id_usuario'];
+ } else if ((int) $private_filter === 0) {
+ $private_filter_user = null;
+ }
+
$values = [
'id_name' => $id_name,
'id_group_filter' => $id_group_filter,
@@ -222,6 +236,7 @@ if ($update || $create) {
'custom_data' => $custom_data,
'custom_data_filter_type' => $custom_data_filter_type,
'server_id' => $server_id,
+ 'private_filter_user' => $private_filter_user,
];
$severity = explode(',', $severity);
@@ -293,6 +308,17 @@ $table->data[0][0] = html_print_label_input_block(
false,
'',
'w100p'
+ ).html_print_label_input_block(
+ __('Private'),
+ html_print_checkbox_switch(
+ 'private_filter_event',
+ $private_filter,
+ $private_filter,
+ true,
+ false,
+ 'checked_slide_events(this);',
+ true
+ )
)
);
diff --git a/pandora_console/godmode/events/event_filter.php b/pandora_console/godmode/events/event_filter.php
index 533bfe1190..c4f1860e6f 100644
--- a/pandora_console/godmode/events/event_filter.php
+++ b/pandora_console/godmode/events/event_filter.php
@@ -133,6 +133,18 @@ $filters = db_get_all_rows_sql($sql);
if ($filters === false) {
$filters = [];
+} else {
+ foreach ($filters as $key => $filter) {
+ $permission = users_is_admin($config['id_user']);
+ // Validate permission and private filter user.
+ if ($permission || $filter['private_filter_user'] === $config['id_user']) {
+ if ($filter['private_filter_user'] !== null) {
+ $filters[$key]['id_name'] = $filter['id_name'].' (P)';
+ }
+ } else if ($filter['private_filter_user'] !== null) {
+ unset($filters[$key]);
+ }
+ }
}
$table = new stdClass();
diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index dd7233e99c..2a58c0601d 100755
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -200,6 +200,16 @@ $text_agent_module = '';
$only_data = false;
+if (enterprise_installed() === true) {
+ $categories_security_hardening = categories_of_cis();
+ foreach ($categories_security_hardening as $key => $cat) {
+ $categories_security_hardening[$key] = implode(' ', $cat);
+ }
+} else {
+ $categories_security_hardening = [];
+}
+
+
// Users.
$id_users = [];
$users_groups = [];
@@ -1029,6 +1039,51 @@ switch ($action) {
$idAgent = $item['id_agent'];
break;
+ case 'top_n_agents_sh':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $top_n_value = (empty($item['top_n_value']) === true) ? 10 : $item['top_n_value'];
+ break;
+
+ case 'top_n_checks_failed':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $top_n_value = (empty($item['top_n_value']) === true) ? 10 : $item['top_n_value'];
+ break;
+
+ case 'top_n_categories_checks':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $top_n_value = (empty($item['top_n_value']) === true) ? 10 : $item['top_n_value'];
+ break;
+
+ case 'vul_by_cat':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $cat_selected = $item['cat_security_hardening'];
+ $ignore_skipped = $item['ignore_skipped'];
+ break;
+
+ case 'list_checks':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $cat_selected = $item['cat_security_hardening'];
+ $status_of_check = $item['status_of_check'];
+ $idAgent = $item['id_agent'];
+ break;
+
+ case 'scoring':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $period = $item['period'];
+ break;
+
+ case 'evolution':
+ $group = $item['id_group'];
+ $recursion = $item['recursion'];
+ $period = $item['period'];
+ break;
+
default:
// It's not possible.
break;
@@ -3855,6 +3910,64 @@ if (is_metaconsole() === true) {
?>
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+ |
+
+ __('All'),
+ 'PASS' => __('Passed'),
+ 'FAIL' => __('Failed'),
+ 'INVALID' => __('Skipped'),
+ ],
+ 'status_of_check',
+ $status_of_check,
+ );
+ ?>
+ |
+
+
@@ -5185,6 +5298,10 @@ echo "".__('Please select a group.').'';
echo '
';
+echo "";
+echo "
".__('Please insert max item number.').'
';
+echo '
';
+
ui_require_javascript_file(
'pandora_inventory',
ENTERPRISE_DIR.'/include/javascript/'
@@ -5520,7 +5637,7 @@ $(document).ready (function () {
return false;
}
break;
- case 'permissions_report':
+ case 'permissions_report':
if ($("#checkbox-select_by_group").prop("checked") && $("select#users_groups>option:selected").val() == undefined) {
dialog_message('#message_no_group');
return false;
@@ -5530,6 +5647,30 @@ $(document).ready (function () {
return false;
}
break;
+ case 'list_checks':
+ if ($("#text-agent").val() == '') {
+ dialog_message('#message_no_agent');
+ return false;
+ }
+ break;
+ case 'top_n_agents_sh':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
+ case 'top_n_checks_failed':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
+ case 'top_n_categories_checks':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
default:
break;
}
@@ -5600,13 +5741,14 @@ $(document).ready (function () {
});
- $("#submit-edit_item").click(function () {
+ $("#button-edit_item").click(function () {
var type = $('#type').val();
if($('#text-name').val() == ''){
dialog_message('#message_no_name');
return false;
}
+
switch (type){
case 'agent_module':
case 'agent_module_status':
@@ -5659,6 +5801,30 @@ $(document).ready (function () {
return false;
}
break;
+ case 'list_checks':
+ if ($("#text-agent").val() == '') {
+ dialog_message('#message_no_agent');
+ return false;
+ }
+ break;
+ case 'top_n_agents_sh':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
+ case 'top_n_checks_failed':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
+ case 'top_n_categories_checks':
+ if ($("#text-max_items").val() == '') {
+ dialog_message('#message_no_max_item');
+ return false;
+ }
+ break;
default:
break;
@@ -6739,6 +6905,9 @@ function chooseType() {
$("#row_os_selector").hide();
$("#row_os_version_regexp").hide();
$("#row_os_end_of_life").hide();
+ $("#row_cat_security_hardening").hide();
+ $("#row_ignore_skipped").hide();
+ $("#row_status_check").hide();
// SLA list default state.
$("#sla_list").hide();
@@ -7600,7 +7769,44 @@ function chooseType() {
case 'ncm':
$("#row_agent").show();
break;
-
+
+ case 'top_n_agents_sh':
+ $("#row_group").show();
+ $("#row_max_items").show();
+ break;
+
+ case 'top_n_checks_failed':
+ $("#row_group").show();
+ $("#row_max_items").show();
+ break;
+
+ case 'top_n_categories_checks':
+ $("#row_group").show();
+ $("#row_max_items").show();
+ break;
+
+ case 'vul_by_cat':
+ $("#row_group").show();
+ $("#row_cat_security_hardening").show();
+ $("#row_ignore_skipped").show();
+ break;
+
+ case 'list_checks':
+ $("#row_group").show();
+ $("#row_agent").show();
+ $("#row_cat_security_hardening").show();
+ $("#row_status_check").show();
+ break;
+
+ case 'scoring':
+ $("#row_group").show();
+ $('#row_period').show();
+ break;
+
+ case 'evolution':
+ $("#row_group").show();
+ $('#row_period').show();
+ break;
}
switch (type) {
diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php
index 59f091aa66..095f79b14a 100755
--- a/pandora_console/godmode/reporting/reporting_builder.php
+++ b/pandora_console/godmode/reporting/reporting_builder.php
@@ -2001,6 +2001,50 @@ switch ($action) {
$good_format = true;
break;
+ case 'top_n_agents_sh':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'top_n_checks_failed':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'top_n_categories_checks':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'vul_by_cat':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['cat_security_hardening'] = get_parameter('cat_security_hardening');
+ $values['ignore_skipped'] = get_parameter('ignore_skipped');
+ $good_format = true;
+ break;
+
+ case 'list_checks':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['cat_security_hardening'] = get_parameter('cat_security_hardening');
+ $values['status_of_check'] = get_parameter('status_of_check');
+ $good_format = true;
+ break;
+
+ case 'scoring':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['period'] = get_parameter('period');
+ $good_format = true;
+ break;
+
+ case 'evolution':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['period'] = get_parameter('period');
+ $good_format = true;
+ break;
+
default:
$values['period'] = get_parameter('period');
$values['top_n'] = get_parameter(
@@ -2030,6 +2074,7 @@ switch ($action) {
|| ($values['type'] == 'event_report_agent')
|| ($values['type'] == 'agent_configuration')
|| ($values['type'] == 'group_configuration')
+ || ($values['type'] == 'list_checks')
) {
$values['id_agent_module'] = '';
} else {
@@ -2888,6 +2933,50 @@ switch ($action) {
$good_format = true;
break;
+ case 'top_n_agents_sh':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'top_n_checks_failed':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'top_n_categories_checks':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['top_n_value'] = get_parameter('max_items');
+ $good_format = true;
+ break;
+
+ case 'vul_by_cat':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['cat_security_hardening'] = get_parameter('cat_security_hardening');
+ $values['ignore_skipped'] = get_parameter('ignore_skipped');
+ $good_format = true;
+ break;
+
+ case 'list_checks':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['cat_security_hardening'] = get_parameter('cat_security_hardening');
+ $values['status_of_check'] = get_parameter('status_of_check');
+ $good_format = true;
+ break;
+
+ case 'scoring':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['period'] = get_parameter('period');
+ $good_format = true;
+ break;
+
+ case 'evolution':
+ $values['id_group'] = get_parameter('combo_group');
+ $values['period'] = get_parameter('period');
+ $good_format = true;
+ break;
+
default:
$values['period'] = get_parameter('period');
$values['top_n'] = get_parameter(
diff --git a/pandora_console/godmode/users/user_management.php b/pandora_console/godmode/users/user_management.php
index 39995d52c2..0675c39be5 100644
--- a/pandora_console/godmode/users/user_management.php
+++ b/pandora_console/godmode/users/user_management.php
@@ -607,16 +607,20 @@ if (is_metaconsole() === true) {
}
}
+$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
+
$userManagementTable->rowclass['captions_blocksize_eventfilter'] = 'field_half_width';
$userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width';
$userManagementTable->data['captions_blocksize_eventfilter'][0] = __('Block size for pagination');
-$userManagementTable->data['fields_blocksize_eventfilter'][0] = html_print_input_text(
- 'block_size',
- $user_info['block_size'],
- '',
- 5,
- 5,
- true
+$userManagementTable->data['fields_blocksize_eventfilter'][0] = html_print_input(
+ [
+ 'type' => 'number',
+ 'size' => 5,
+ 'max' => $performance_variables_control['block_size']->max,
+ 'name' => 'block_size',
+ 'value' => $user_info['block_size'],
+ 'return' => true,
+ ]
);
if (is_metaconsole() === true && empty($user_info['metaconsole_default_event_filter']) !== true) {
diff --git a/pandora_console/images/add-alert.svg b/pandora_console/images/add-alert.svg
new file mode 100755
index 0000000000..3dec357543
--- /dev/null
+++ b/pandora_console/images/add-alert.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/pandora_console/include/ajax/alert_list.ajax.php b/pandora_console/include/ajax/alert_list.ajax.php
index e50634354c..d742f952e8 100644
--- a/pandora_console/include/ajax/alert_list.ajax.php
+++ b/pandora_console/include/ajax/alert_list.ajax.php
@@ -35,7 +35,6 @@ $disable_alert = (bool) get_parameter('disable_alert');
$enable_alert = (bool) get_parameter('enable_alert');
$get_actions_module = (bool) get_parameter('get_actions_module');
$show_update_action_menu = (bool) get_parameter('show_update_action_menu');
-$get_agent_alerts_agent_view = (bool) get_parameter('get_agent_alerts_agent_view');
$resize_event_week = (bool) get_parameter('resize_event_week');
$get_agent_alerts_datatable = (bool) get_parameter('get_agent_alerts_datatable', 0);
$alert_validate = (bool) get_parameter('alert_validate', false);
@@ -91,270 +90,6 @@ if ($get_agent_alerts_simple) {
}
-if ($get_agent_alerts_agent_view) {
- include_once $config['homedir'].'/include/functions_agents.php';
- include_once $config['homedir'].'/operation/agentes/alerts_status.functions.php';
- include_once $config['homedir'].'/include/functions_users.php';
-
- $agent_a = check_acl($config['id_user'], 0, 'AR');
- $agent_w = check_acl($config['id_user'], 0, 'AW');
- $access = ($agent_a == true) ? 'AR' : (($agent_w == true) ? 'AW' : 'AR');
-
- $free_search_alert = get_parameter('free_search_alert', '');
- $all_groups = json_decode(io_safe_output(get_parameter('all_groups')));
- $idAgent = (int) get_parameter('id_agent');
- $filter = get_parameter('filter', 'all_enabled');
- $url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$idAgent;
-
- $sortField = get_parameter('sort_field');
- $sort = get_parameter('sort', 'none');
- $selected = true;
- $selectModuleUp = false;
- $selectModuleDown = false;
- $selectTemplateUp = false;
- $selectTemplateDown = false;
- $selectLastFiredUp = false;
- $selectLastFiredDown = false;
- switch ($sortField) {
- case 'module':
- switch ($sort) {
- case 'up':
- $selectModuleUp = $selected;
- $order = [
- 'field' => 'agent_module_name',
- 'order' => 'ASC',
- ];
- break;
-
- case 'down':
- $selectModuleDown = $selected;
- $order = [
- 'field' => 'agent_module_name',
- 'order' => 'DESC',
- ];
- break;
- }
- break;
-
- case 'template':
- switch ($sort) {
- case 'up':
- $selectTemplateUp = $selected;
- $order = [
- 'field' => 'template_name',
- 'order' => 'ASC',
- ];
- break;
-
- case 'down':
- $selectTemplateDown = $selected;
- $order = [
- 'field' => 'template_name',
- 'order' => 'DESC',
- ];
- break;
- }
- break;
-
- case 'last_fired':
- switch ($sort) {
- case 'up':
- $selectLastFiredUp = $selected;
- $order = [
- 'field' => 'last_fired',
- 'order' => 'ASC',
- ];
- break;
-
- case 'down':
- $selectLastFiredDown = $selected;
- $order = [
- 'field' => 'last_fired',
- 'order' => 'DESC',
- ];
- break;
- }
- break;
-
- default:
- $selectDisabledUp = '';
- $selectDisabledDown = '';
- $selectModuleUp = $selected;
- $selectModuleDown = false;
- $selectTemplateUp = false;
- $selectTemplateDown = false;
- $selectLastFiredUp = false;
- $selectLastFiredDown = false;
- $order = [
- 'field' => 'agent_module_name',
- 'order' => 'ASC',
- ];
- break;
- }
-
- if ($free_search_alert != '') {
- $whereAlertSimple = 'AND ('.'id_alert_template IN (
- SELECT id
- FROM talert_templates
- WHERE name LIKE "%'.$free_search_alert.'%") OR '.'id_alert_template IN (
- SELECT id
- FROM talert_templates
- WHERE id_alert_action IN (
- SELECT id
- FROM talert_actions
- WHERE name LIKE "%'.$free_search_alert.'%")) OR '.'talert_template_modules.id IN (
- SELECT id_alert_template_module
- FROM talert_template_module_actions
- WHERE id_alert_action IN (
- SELECT id
- FROM talert_actions
- WHERE name LIKE "%'.$free_search_alert.'%")) OR '.'id_agent_module IN (
- SELECT id_agente_modulo
- FROM tagente_modulo
- WHERE nombre LIKE "%'.$free_search_alert.'%") OR '.'id_agent_module IN (
- SELECT id_agente_modulo
- FROM tagente_modulo
- WHERE alias LIKE "%'.$free_search_alert.'%")'.')';
- } else {
- $whereAlertSimple = '';
- }
-
- // Add checks for user ACL.
- $groups = users_get_groups($config['id_user'], $access);
- $id_groups = array_keys($groups);
-
- if (empty($id_groups)) {
- $whereAlertSimple .= ' AND (1 = 0) ';
- } else {
- $whereAlertSimple .= sprintf(
- ' AND id_agent_module IN (
- SELECT tam.id_agente_modulo
- FROM tagente_modulo tam
- WHERE tam.id_agente IN (
- SELECT
- ta.id_agente
- FROM
- tagente ta
- WHERE
- ta.id_grupo IN (%s)
- )
- OR tam.id_agente IN (
- SELECT
- DISTINCT(tasg.id_agent)
- FROM
- tagent_secondary_group tasg
- WHERE
- tasg.id_group IN (%s)
- )
- ) ',
- implode(',', $id_groups),
- implode(',', $id_groups)
- );
- }
-
- $alerts = [];
-
- $filter_alert = [];
- if ($filter_standby == 'standby_on') {
- $filter_alert['disabled'] = $filter;
- $filter_alert['standby'] = '1';
- } else if ($filter_standby == 'standby_off') {
- $filter_alert['disabled'] = $filter;
- $filter_alert['standby'] = '0';
- } else {
- $filter_alert['disabled'] = $filter;
- }
-
- $options_simple = ['order' => $order];
-
- $alerts['alerts_simple'] = agents_get_alerts_simple($idAgent, $filter_alert, $options_simple, $whereAlertSimple, false, false, false, false, $strict_user, $tag_filter);
- $countAlertsSimple = agents_get_alerts_simple($idAgent, $filter_alert, false, $whereAlertSimple, false, false, false, true, $strict_user, $tag_filter);
-
- // Urls to sort the table.
- $url_up_module = $url.'&sort_field=module&sort=up';
- $url_down_module = $url.'&sort_field=module&sort=down';
- $url_up_template = $url.'&sort_field=template&sort=up';
- $url_down_template = $url.'&sort_field=template&sort=down';
- $url_up_lastfired = $url.'&sort_field=last_fired&sort=up';
- $url_down_lastfired = $url.'&sort_field=last_fired&sort=down';
-
- $table = new stdClass();
- $table->width = '100%';
- $table->class = 'info_table';
- $table->cellpadding = '0';
- $table->cellspacing = '0';
- $table->size = [];
- $table->head = [];
- $table->align = [];
-
- if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
- $table->size[7] = '5%';
- if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl_one_of_groups($config['id_user'], $all_groups, 'LM')) {
- $table->head[8] = __('Validate');
- $table->align[8] = 'left';
- $table->size[8] = '5%';
- }
-
- $table->head[0] = "".__('P.').'';
- $table->head[1] = "".__('S.').'';
-
- if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') || check_acl_one_of_groups($config['id_user'], $all_groups, 'LM')) {
- $table->head[2] = "".__('F.').'';
- }
-
- $table->head[3] = __('Module');
- $table->head[4] = __('Template');
- $table->head[5] = __('Action');
- $table->head[6] = __('Last fired');
- $table->head[7] = __('Status');
-
- $table->align[7] = 'center';
-
- $table->head[3] .= ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
- $table->head[4] .= ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
- $table->head[6] .= ui_get_sorting_arrows($url_up_lastfired, $url_down_lastfired, $selectLastFiredUp, $selectLastFiredDown);
- } else {
- $table->size[6] = '5%';
- if (check_acl($config['id_user'], $id_group, 'LW') || check_acl($config['id_user'], $id_group, 'LM')) {
- $table->head[7] = __('Validate');
- $table->align[7] = 'left';
- $table->size[7] = '5%';
- }
-
- $table->head[0] = "".__('S.').'';
-
- if (check_acl($config['id_user'], $id_group, 'AW') || check_acl($config['id_user'], $id_group, 'LM')) {
- $table->head[1] = "".__('F.').'';
- }
-
- $table->head[2] = __('Module');
- $table->head[3] = __('Template');
- $table->head[4] = __('Action');
- $table->head[5] = __('Last fired');
- $table->head[6] = __('Status');
-
- $table->align[6] = 'center';
-
- $table->head[2] .= ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
- $table->head[3] .= ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
- $table->head[5] .= ui_get_sorting_arrows($url_up_lastfired, $url_down_lastfired, $selectLastFiredUp, $selectLastFiredDown);
- }
-
- $table->data = [];
- $rowPair = true;
- $iterator = 0;
- foreach ($alerts['alerts_simple'] as $alert) {
- $row = ui_format_alert_row($alert, false, $url, 'font-size: 9pt;');
- $table->data[] = $row;
- }
-
- if (empty($table->data) === false) {
- html_print_table($table);
- } else {
- ui_print_info_message(['no_close' => true, 'message' => __('No alerts found') ]);
- }
-}
-
if ($enable_alert) {
if (! check_acl($config['id_user'], 0, 'LW')) {
db_pandora_audit(
diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php
index 7ccf17938b..f9bf50b7ae 100644
--- a/pandora_console/include/ajax/events.php
+++ b/pandora_console/include/ajax/events.php
@@ -92,6 +92,9 @@ $get_id_source_event = get_parameter('get_id_source_event');
$node_id = (int) get_parameter('node_id', 0);
$settings_modal = get_parameter('settings', 0);
$parameters_modal = get_parameter('parameters', 0);
+// User private filter.
+$current_filter = get_parameter('current_filter', 0);
+$private_filter_event = get_parameter('private_filter_event', 0);
if ($get_comments === true) {
global $config;
@@ -337,6 +340,14 @@ if ($save_event_filter) {
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
+ // Get private filter from user.
+ $private_filter = get_parameter_switch('private_filter_user', 0);
+ if ((int) $private_filter === 1) {
+ $values['private_filter_user'] = $config['id_user'];
+ } else {
+ $values['private_filter_user'] = null;
+ }
+
if (is_metaconsole() === true) {
$values['server_id'] = implode(',', get_parameter('server_id'));
}
@@ -397,6 +408,17 @@ if ($update_event_filter) {
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
+ // Get private filter from user.
+ $private_filter = get_parameter('private_filter_user', 0);
+ $user_private_filter = events_get_event_filter($id);
+ if ((int) $private_filter === 1 && $user_private_filter['private_filter_user'] === null) {
+ $values['private_filter_user'] = $config['id_user'];
+ } else if ($private_filter === $user_private_filter['private_filter_user'] && $user_private_filter['private_filter_user'] !== $config['id_user']) {
+ $values['private_filter_user'] = $user_private_filter['private_filter_user'];
+ } else {
+ $values['private_filter_user'] = null;
+ }
+
if (is_metaconsole() === true) {
$values['server_id'] = implode(',', get_parameter('server_id'));
}
@@ -712,8 +734,8 @@ if ($save_filter_modal) {
$table = new StdClass;
$table->id = 'save_filter_form';
$table->width = '100%';
- $table->cellspacing = 4;
- $table->cellpadding = 4;
+ $table->cellspacing = 5;
+ $table->cellpadding = 5;
$table->class = 'databox';
if (is_metaconsole() === true) {
$table->class = 'databox filters';
@@ -732,7 +754,7 @@ if ($save_filter_modal) {
'filter_mode',
'new',
__('New filter'),
- true,
+ ((int) $current_filter === 0) ? true : false,
true
);
@@ -740,7 +762,7 @@ if ($save_filter_modal) {
'filter_mode',
'update',
__('Update filter'),
- false,
+ ((int) $current_filter > 0) ? true : false,
true
);
@@ -755,6 +777,7 @@ if ($save_filter_modal) {
$table->rowclass[2] = 'flex';
$table->rowclass[3] = 'flex';
$table->rowclass[4] = 'flex';
+ $table->rowclass[5] = 'flex';
$data[0] = ''.__('Filter name').''.$jump;
$data[0] .= html_print_input_text('id_name', '', '', 15, 255, true);
if (is_metaconsole()) {
@@ -801,9 +824,9 @@ if ($save_filter_modal) {
$data[0] .= html_print_select(
$_filters_update,
'overwrite_filter',
+ $current_filter,
'',
- '',
- '',
+ __('None'),
0,
true,
false,
@@ -814,6 +837,31 @@ if ($save_filter_modal) {
$table->data[] = $data;
$table->rowclass[] = '';
+ $data = [];
+ $table->rowid[4] = 'update_filter_row2';
+
+ $table->data[] = $data;
+ $table->rowclass[] = '';
+
+ // Update user private filter.
+ $data = [];
+ $table->rowid[6] = 'private_filter_event_row1';
+ $data[0] = html_print_label_input_block(
+ __('Private'),
+ html_print_checkbox_switch(
+ 'private_filter_event',
+ $private_filter_event,
+ $private_filter_event,
+ true,
+ false,
+ 'checked_slide_events(this);',
+ true
+ )
+ );
+
+ $table->data[] = $data;
+ $table->rowclass[] = '';
+
html_print_table($table);
html_print_div(
@@ -858,10 +906,19 @@ if ($save_filter_modal) {
?>