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 "'; + 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 @@ + + + Add alert@svg + + + + \ 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) { ?>