diff --git a/pandora_console/godmode/massive/massive_edit_agents.php b/pandora_console/godmode/massive/massive_edit_agents.php index 83001be810..71c8bbaabd 100755 --- a/pandora_console/godmode/massive/massive_edit_agents.php +++ b/pandora_console/godmode/massive/massive_edit_agents.php @@ -117,6 +117,14 @@ if ($update_agents) { $values['quiet'] = get_parameter('quiet_select'); } + if (get_parameter('safe_mode_change', -1) == 1 && get_parameter('safe_mode_module', '') != '') { + // Get the module name. + $values['safe_mode_module'] = get_parameter('safe_mode_module'); + } else if (get_parameter('safe_mode_change', -1) == 0) { + // Disabled Safe Operation Mode. + $values['safe_mode_module'] = '0'; + } + $fields = db_get_all_fields_in_table('tagent_custom_fields'); if ($fields === false) { @@ -134,6 +142,20 @@ if ($update_agents) { } } + // Get the id_agente_modulo to update the 'safe_operation_mode' field. + if (isset($values['safe_mode_module']) && ($values['safe_mode_module'] != '0')) { + foreach ($id_agents as $id_agent) { + $id_module_safe[$id_agent] = db_get_value_filter( + 'id_agente_modulo', + 'tagente_modulo', + [ + 'id_agente' => $id_agent, + 'nombre' => $values['safe_mode_module'], + ] + ); + } + } + // CONF FILE DELETION if (isset($values['delete_conf'])) { unset($values['delete_conf']); @@ -188,6 +210,11 @@ if ($update_agents) { } } + // Get the id_agent_module for this agent to update the 'safe_operation_mode' field. + if (isset($values['safe_mode_module']) && ($values['safe_mode_module'] != '0')) { + $values['safe_mode_module'] = $id_module_safe[$id_agent]; + } + $result = db_process_sql_update( 'tagente', $values, @@ -677,6 +704,27 @@ $table->data[6][1] = html_print_select( true ); +$table->data[7][0] = __('Safe operation mode').': '.ui_print_help_tip( + __( + 'This mode allow %s to disable all modules +of this agent while the selected module is on CRITICAL status', + get_product_name() + ), + true +); +$table->data[7][1] .= html_print_select( + [ + 1 => __('Enabled'), + 0 => __('Disabled'), + ], + 'safe_mode_change', + -1, + '', + __('No change'), + -1, + true +).' '; +$table->data[7][1] .= __('Module').' '.html_print_select('', 'safe_mode_module', '', '', __('Any'), -1, true).''; ui_toggle(html_print_table($table, true), __('Advanced options')); unset($table); @@ -810,6 +858,54 @@ $(document).ready (function () { } }); + + // Enable Safe Operation Mode if 'Enabled' is selected. + $("#safe_mode_module").attr("disabled", "disabled"); + $("#safe_mode_change").on('change', function() { + if ($("#safe_mode_change").val() == 1) { + $("#safe_mode_module").removeAttr("disabled"); + refreshSafeModules(); + } + else { + $("#safe_mode_module").attr("disabled", "disabled"); + $('#safe_mode_module').empty(); + $("#safe_mode_module").append($("").attr("value", 'Any').html('Any')); + } + }); + + // Fill modules in Safe Operation Mode. + function refreshSafeModules(){ + var idAgents = Array(); + jQuery.each ($("#id_agents option:selected"), function (i, val) { + idAgents.push($(val).val()); + }); + + var params = { + "page" : "operation/agentes/ver_agente", + "get_agent_modules_json_for_multiple_agents" : 1, + "id_agent" : idAgents, + "selection_mode": "common" + }; + + jQuery.post ("ajax.php", + params, + function (data, status) { + $('#safe_mode_module').empty(); + if($.type(data) === "object"){ + jQuery.each (data, function (id, value) { + option = $("").attr("value", value).html(value); + $("#safe_mode_module").append(option); + }); + } else { + option = $("").attr("value", 'None').html('None'); + $("#safe_mode_module").append(option); + } + }, + "json" + ); + } + + $("#form_agent").submit(function() { var get_parameters_count = window.location.href.slice( window.location.href.indexOf('?') + 1).split('&').length; @@ -833,7 +929,7 @@ $(document).ready (function () { $("#id_group").trigger("change"); }); - $("#id_agents").change (function () { + $('#id_agents').on('change', function() { var idAgents = Array(); jQuery.each ($("#id_agents option:selected"), function (i, val) { idAgents.push($(val).val()); @@ -858,6 +954,10 @@ $(document).ready (function () { ); $("#form_agents").attr("style", ""); + + if($("#safe_mode_change").val() == 1) { + refreshSafeModules(); + } }); $("#id_group").change (function () {