$agent['id_agente'], 'name' => io_safe_output($agent['nombre']), 'ip' => io_safe_output($agent['direccion']), ]; } echo io_json_mb_encode($data); return; } $get_modules_json_for_multiple_snmp = (bool) get_parameter('get_modules_json_for_multiple_snmp', 0); if ($get_modules_json_for_multiple_snmp) { include_once 'include/graphs/functions_utils.php'; $idSNMP = get_parameter('id_snmp'); $id_snmp_serialize = get_parameter('id_snmp_serialize'); $snmp = unserialize_in_temp($id_snmp_serialize, false); $oid_snmp = []; $out = false; foreach ($idSNMP as $id) { foreach ($snmp[$id] as $key => $value) { // Check if it has "ifXXXX" syntax and skip it if (! preg_match('/if/', $key)) { continue; } $oid_snmp[$value['oid']] = $key; } if ($out === false) { $out = $oid_snmp; } else { $out = array_intersect($out, $oid_snmp); } $oid_snmp = []; } echo io_json_mb_encode($out); } // And and remove groups use the same function $add_secondary_groups = get_parameter('add_secondary_groups'); $remove_secondary_groups = get_parameter('remove_secondary_groups'); if ($add_secondary_groups || $remove_secondary_groups) { $id_agent = get_parameter('id_agent'); $groups_to_add = get_parameter('groups'); if (enterprise_installed()) { if (empty($groups_to_add)) { return 0; } enterprise_include('include/functions_agents.php'); $ret = enterprise_hook( 'agents_update_secondary_groups', [ $id_agent, $add_secondary_groups ? $groups_to_add : [], $remove_secondary_groups ? $groups_to_add : [], ] ); // Echo 0 in case of error. 0 Otherwise. echo $ret ? 1 : 0; } } return; } ui_require_javascript_file('openlayers.pandora'); $new_agent = (bool) get_parameter('new_agent'); if (! isset($id_agente) && ! $new_agent) { db_pandora_audit('ACL Violation', 'Trying to access agent manager witout an agent'); include 'general/noaccess.php'; return; } if ($new_agent) { if (! empty($direccion_agente) && empty($nombre_agente)) { $nombre_agente = $direccion_agente; } $servers = servers_get_names(); if (!empty($servers)) { $array_keys_servers = array_keys($servers); $server_name = reset($array_keys_servers); } } if (!$new_agent) { // Agent remote configuration editor enterprise_include_once('include/functions_config_agents.php'); if (enterprise_installed()) { $filename = config_agents_get_agent_config_filenames($id_agente); } } $disk_conf_delete = (bool) get_parameter('disk_conf_delete'); // Agent remote configuration DELETE if ($disk_conf_delete) { // TODO: Get this working on computers where the Pandora server(s) are not on the webserver // TODO: Get a remote_config editor working in the open version @unlink($filename['md5']); @unlink($filename['conf']); } echo '
'; if (!$new_agent && $alias != '') { $table_agent_name = '

'.__('Agent name').': '.ui_print_help_tip(__("The agent's name must be the same as the one defined at the console"), true).'

'; $table_agent_name .= '
'; $table_agent_name .= '
'.html_print_input_text('agente', $nombre_agente, '', 50, 100, true).'
'; $table_agent_name .= '
'; $table_qr_code = '

'.__('QR Code Agent view').':

'; if ($id_agente) { $table_agent_name .= ''.__('ID').' '.$id_agente.''; $table_agent_name .= ''; $table_agent_name .= html_print_image( 'images/zoom.png', true, [ 'border' => 0, 'title' => __('Agent detail'), ] ); $table_agent_name .= ''; } $agent_options_update = 'agent_options_update'; // Delete link from here. $table_agent_name .= "".html_print_image('images/cross.png', true, ['title' => __('Delete agent')]).''; // Remote configuration available. if (isset($filename)) { if (file_exists($filename['md5'])) { $agent_name = agents_get_name($id_agente); $agent_name = io_safe_output($agent_name); $agent_md5 = md5($agent_name, false); $table_agent_name .= ''; $table_agent_name .= html_print_image( 'images/application_edit.png', true, [ 'border' => 0, 'title' => __('This agent can be remotely configured'), ] ); $table_agent_name .= ''.ui_print_help_tip( __('You can remotely edit this agent configuration'), true ); } } $table_agent_name .= '
'; } if ($new_agent) { $label_select_child_left = 'label_select_child_left'; $label_select_parent = 'label_select_parent'; } $table_alias = '

'.__('Alias').': '.ui_print_help_tip(__('Characters /,\,|,%,#,&,$ will be ignored'), true).'

'; $table_alias .= '
'; $table_alias .= '
'.html_print_input_text('alias', $alias, '', 50, 100, true).'
'; if ($new_agent) { $table_alias .= '
'.html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true).__('Use alias as name').'
'; } $table_alias .= '
'; $table_ip = '

'.__('IP Address').':

'; $table_ip .= '
'; $table_ip .= '
'.html_print_input_text('direccion', $direccion_agente, '', 16, 100, true).'
'; $table_ip .= '
'.html_print_checkbox_switch('unique_ip', 1, $config['unique_ip'], true).__('Unique IP').ui_print_help_tip(__('Set the primary IP address as the unique IP, preventing the same primary IP address from being used in more than one agent'), true).'
'; $table_ip .= '
'; if ($id_agente) { $ip_all = agents_get_addresses($id_agente); $table_ip .= '
'; $table_ip .= '
'; $table_ip .= '
'.html_print_select($ip_all, 'address_list', $direccion_agente, '', '', 0, true).'
'; $table_ip .= '
'.html_print_checkbox_switch('delete_ip', 1, false, true).__('Delete selected').'
'; $table_ip .= '
'; } ?> "; } $table_qr_code .= '
'; } $groups = users_get_groups($config['id_user'], 'AR', false); $modules = db_get_all_rows_sql( 'SELECT id_agente_modulo as id_module, nombre as name FROM tagente_modulo WHERE id_agente = '.$id_parent ); $modules_values = []; $modules_values[0] = __('Any'); if (is_array($modules)) { foreach ($modules as $m) { $modules_values[$m['id_module']] = $m['name']; } } $table_primary_group = '

'.__('Primary group').':

'; $table_primary_group .= '
'; // Cannot change primary group if user have not permission for that group. if (isset($groups[$grupo]) || $new_agent) { $table_primary_group .= html_print_select_groups(false, 'AR', false, 'grupo', $grupo, '', '', 0, true); } else { $table_primary_group .= groups_get_name($grupo); $table_primary_group .= html_print_input_hidden('grupo', $grupo, true); } $table_primary_group .= '
'; $table_primary_group .= ui_print_group_icon($grupo, true); $table_primary_group .= '
'; $table_interval = '

'.__('Interval').':

'; $table_interval .= '
'; $table_interval .= html_print_extended_select_for_time('intervalo', $intervalo, '', '', '0', 10, true); if ($intervalo < SECONDS_5MINUTES) { $table_interval .= clippy_context_help('interval_agent_min'); } $table_interval .= '
'; $table_os = '

'.__('OS').':

'; $table_os .= '
'; $table_os .= html_print_select_from_sql( 'SELECT id_os, name FROM tconfig_os', 'id_os', $id_os, '', '', '0', true ); $table_os .= '
'; $table_os .= ui_print_os_icon($id_os, false, true); $table_os .= '
'; // Network server. $servers = servers_get_names(); if (!array_key_exists($server_name, $servers)) { $server_Name = 0; // Set the agent have not server. } $table_server = '

'.__('Server').':

'; $table_server .= '
'; if ($new_agent) { // Set first server by default. $servers_get_names = servers_get_names(); $array_keys_servers_get_names = array_keys($servers_get_names); $server_name = reset($array_keys_servers_get_names); } $table_server .= html_print_select( servers_get_names(), 'server_name', $server_name, '', __('None'), 0, true ).'
'.ui_print_help_icon('agent_server', true).'
'; // Description. $table_description = '

'.__('Description').':

'; $table_description .= html_print_input_text( 'comentarios', $comentarios, '', 45, 200, true ).'
'; echo '
'.$table_agent_name.$table_alias.$table_ip.$table_primary_group.'
'.$table_interval.$table_os.$table_server.$table_description.'
'; if (!$new_agent && $alias != '') { echo $table_qr_code; } echo '
'; if (enterprise_installed()) { $secondary_groups_selected = enterprise_hook('agents_get_secondary_groups', [$id_agente]); $table_adv_secondary_groups = '

'.__('Secondary groups').': '.ui_print_help_icon('secondary_groups', true).'

'; $table_adv_secondary_groups_left = html_print_select_groups( false, // Use the current user to select the groups 'AR', // ACL permission false, // Not all group 'secondary_groups', // HTML id '', // No select any by default '', // Javascript onChange code '', // Do not user no selected value 0, // Do not use no selected value true, // Return HTML (not echo) true, // Multiple selection true, // Sorting by default '', // CSS classnames (default) false, // Not disabled (default) 'width:50%; min-width:170px; text-align:center', // Inline styles (default) false, // Option style select (default) false, // Do not truncate the users tree (default) 'id_grupo', // Key to get as value (default) false, // Not strict user (default) $secondary_groups_selected['plain'] // Do not show the primary group in this selection ); $table_adv_secondary_groups_arrows = html_print_input_image( 'add_secondary', 'images/darrowright_green.png', 1, '', true, [ 'id' => 'right_autorefreshlist', 'title' => __('Add secondary groups'), 'onclick' => 'agent_manager_add_secondary_groups(event, '.$id_agente.');', ] ).html_print_input_image( 'remove_secondary', 'images/darrowleft_green.png', 1, '', true, [ 'id' => 'left_autorefreshlist', 'title' => __('Remove secondary groups'), 'onclick' => 'agent_manager_remove_secondary_groups(event, '.$id_agente.');', ] ); $table_adv_secondary_groups_right .= html_print_select( $secondary_groups_selected['for_select'], // Values 'secondary_groups_selected', // HTML id '', // Selected '', // Javascript onChange code '', // Nothing selected 0, // Nothing selected true, // Return HTML (not echo) true, // Multiple selection true, // Sort '', // Class false, // Disabled 'width:50%; min-width:170px; text-align:center' // Style ); // safe operation mode if ($id_agente) { $sql_modules = db_get_all_rows_sql( 'SELECT id_agente_modulo as id_module, nombre as name FROM tagente_modulo WHERE id_agente = '.$id_agente ); $safe_mode_modules = []; $safe_mode_modules[0] = __('Any'); foreach ($sql_modules as $m) { $safe_mode_modules[$m['id_module']] = $m['name']; } $table_adv_safe = '

'.__('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_adv_safe .= html_print_checkbox_switch('safe_mode', 1, $safe_mode, true); $table_adv_safe .= __('Module').' '.html_print_select($safe_mode_modules, 'safe_mode_module', $safe_mode_module, '', '', 0, true).'
'; } // Remote configuration $table_adv_remote = '

'.__('Remote configuration').':

'; if (!$new_agent && isset($filename)) { if (file_exists($filename['md5'])) { $table_adv_remote .= date('F d Y H:i:s', fileatime($filename['md5'])); // Delete remote configuration $table_adv_remote .= ''; $table_adv_remote .= html_print_image( 'images/cross.png', true, [ 'title' => __('Delete remote configuration file'), 'style' => 'vertical-align: middle;', ] ).''; $table_adv_remote .= ''.ui_print_help_tip( __('Delete this conf file implies that for restore you must reactive remote config in the local agent.'), true ); } } else { $table_adv_remote .= ''.__('Not available').''; } $table_adv_remote .= '
'; $cps_array[-1] = __('Disabled'); if ($cps > 0) { $cps_array[$cps] = __('Enabled'); } else { $cps_inc = 0; if ($id_agente) { $cps_inc = service_agents_cps($id_agente); } $cps_array[$cps_inc] = __('Enabled'); } $table_adv_cascade = '

'.__('Cascade protection services').': '; $table_adv_cascade .= ui_print_help_tip(__('Disable the alerts and events of the elements that belong to this service'), true).'

'; $table_adv_cascade .= html_print_select($cps_array, 'cps', $cps, '', '', 0, true).'
'; } // Custom ID $table_adv_custom_id = '

'.__('Custom ID').':

'; $table_adv_custom_id .= html_print_input_text('custom_id', $custom_id, '', 16, 255, true).'
'; $table_adv_parent = '

'.__('Parent').':

'; $params = []; $params['return'] = true; $params['show_helptip'] = true; $params['input_name'] = 'id_parent'; $params['print_hidden_input_idagent'] = true; $params['hidden_input_idagent_name'] = 'id_agent_parent'; $params['hidden_input_idagent_value'] = $id_parent; $params['value'] = db_get_value('alias', 'tagente', 'id_agente', $id_parent); $params['selectbox_id'] = 'cascade_protection_module'; $params['javascript_is_function_select'] = true; $params['cascade_protection'] = true; $table_adv_parent .= '
'; $table_adv_parent .= ui_print_agent_autocomplete_input($params); if (enterprise_installed()) { $table_adv_parent .= html_print_checkbox_switch('cascade_protection', 1, $cascade_protection, true).__('Cascade protection').' '.ui_print_help_icon('cascade_protection', true); } $table_adv_parent .= __('Module').' '.html_print_select($modules_values, 'cascade_protection_module', $cascade_protection_module, '', '', 0, true).'
'; // Learn mode / Normal mode $table_adv_module_mode = '

'.__('Module definition').': '.ui_print_help_icon('module_definition', true).'

'; $table_adv_module_mode .= '
'; $table_adv_module_mode .= html_print_radio_button_extended( 'modo', 1, __('Learning mode'), $modo, false, 'show_modules_not_learning_mode_context_help();', '', true ); $table_adv_module_mode .= html_print_radio_button_extended( 'modo', 0, __('Normal mode'), $modo, false, 'show_modules_not_learning_mode_context_help();', '', true ); $table_adv_module_mode .= html_print_radio_button_extended( 'modo', 2, __('Autodisable mode'), $modo, false, 'show_modules_not_learning_mode_context_help();', '', true ); $table_adv_module_mode .= '
'; // Status (Disabled / Enabled) $table_adv_status = '

'.__('Disabled').': '.ui_print_help_tip(__('If the remote configuration is enabled, it will also go into standby mode when disabling it.'), true).'

'; $table_adv_status .= html_print_checkbox_switch('disabled', 1, $disabled, true).'
'; // Url address. if (enterprise_installed()) { $table_adv_url = '

'.__('Url address').': '.ui_print_help_tip(__('URL address must be complete, for example: https://pandorafms.com/'), true).'

'; $table_adv_url .= html_print_input_text( 'url_description', $url_description, '', 45, 255, true ).'
'; } else { $table_adv_url = '

'.__('Url address').':

'; $table_adv_url .= html_print_input_text( 'url_description', $url_description, '', 45, 255, true ).''; } $table_adv_quiet = '

'.__('Quiet').': '; $table_adv_quiet .= ui_print_help_tip(__('The agent still runs but the alerts and events will be stop'), true).'

'; $table_adv_quiet .= html_print_checkbox_switch('quiet', 1, $quiet, true).'
'; $listIcons = gis_get_array_list_icons(); $arraySelectIcon = []; foreach ($listIcons as $index => $value) { $arraySelectIcon[$index] = $index; } $path = 'images/gis_map/icons/'; // TODO set better method the path $table_adv_agent_icon = '

'.__('Agent icon').': '.ui_print_help_tip(__('Agent icon for GIS Maps.'), true).'

'; if ($icon_path == '') { $display_icons = 'none'; // Hack to show no icon. Use any given image to fix not found image errors $path_without = 'images/spinner.png'; $path_default = 'images/spinner.png'; $path_ok = 'images/spinner.png'; $path_bad = 'images/spinner.png'; $path_warning = 'images/spinner.png'; } else { $display_icons = ''; $path_without = $path.$icon_path.'.default.png'; $path_default = $path.$icon_path.'.default.png'; $path_ok = $path.$icon_path.'.ok.png'; $path_bad = $path.$icon_path.'.bad.png'; $path_warning = $path.$icon_path.'.warning.png'; } $table_adv_agent_icon .= html_print_select( $arraySelectIcon, 'icon_path', $icon_path, 'changeIcons();', __('None'), '', true ).html_print_image( $path_ok, true, [ 'id' => 'icon_ok', 'style' => 'display:'.$display_icons.';', ] ).html_print_image( $path_bad, true, [ 'id' => 'icon_bad', 'style' => 'display:'.$display_icons.';', ] ).html_print_image( $path_warning, true, [ 'id' => 'icon_warning', 'style' => 'display:'.$display_icons.';', ] ).'
'; if ($config['activate_gis']) { $table_adv_gis = '

'.__('Ignore new GIS data:').'

'; if ($new_agent) { $update_gis_data = true; } $table_adv_gis .= html_print_checkbox_switch('update_gis_data', 1, $update_gis_data, true).'No / Yes
'; } $table_adv_options = $table_adv_secondary_groups.'
'.$table_adv_secondary_groups_left.'
'.$table_adv_secondary_groups_arrows.'
'.$table_adv_secondary_groups_right.'
'.$table_adv_parent.$table_adv_custom_id.$table_adv_module_mode.$table_adv_cascade.$table_adv_gis.'
'.$table_adv_agent_icon.$table_adv_url.$table_adv_quiet.$table_adv_status.$table_adv_remote.$table_adv_safe.'
'; echo '
'; ui_toggle($table_adv_options, __('Advanced options'), '', true, false, 'white_box white_box_opened'); echo '
'; $table = new stdClass(); $table->width = '100%'; $table->class = 'custom_fields_table'; $table->head = []; $table->style = []; $table->style[0] = 'font-weight: bold;'; $table->data = []; $fields = db_get_all_fields_in_table('tagent_custom_fields'); if ($fields === false) { $fields = []; } foreach ($fields as $field) { $id_custom_field = $field['id_field']; $data[0] = '
'; $data[0] .= ''.$field['name'].''; $data[0] .= ui_print_help_tip( __('This field allows url insertion using the BBCode\'s url tag').'.
'.__('The format is: [url=\'url to navigate\']\'text to show\'[/url]').'.

'.__('e.g.: [url=google.com]Google web search[/url]'), true ); $data[0] .= '
'; $combo = []; $combo = $field['combo_values']; $combo = explode(',', $combo); $combo_values = []; foreach ($combo as $value) { $combo_values[$value] = $value; } $custom_value = db_get_value_filter( 'description', 'tagent_custom_data', [ 'id_field' => $field['id_field'], 'id_agent' => $id_agente, ] ); if ($custom_value === false) { $custom_value = ''; } if ($field['is_password_type']) { $data_field[1] = html_print_input_text_extended( 'customvalue_'.$field['id_field'], $custom_value, 'customvalue_'.$field['id_field'], '', 30, 100, $view_mode, '', '', true, true ); } else { $data_field[1] = html_print_textarea( 'customvalue_'.$field['id_field'], 2, 65, $custom_value, 'style="min-height: 30px;"', true ); } if ($field['combo_values'] !== '') { $data_field[1] = html_print_select( $combo_values, 'customvalue_'.$field['id_field'], $custom_value, '', __('None'), '', true, false, false, '', false, false, false, false, false, '', false ); }; $table->rowid[] = 'name_field-'.$id_custom_field; array_push($table->data, $data); $table->rowid[] = 'field-'.$id_custom_field; array_push($table->data, $data_field); } if (!empty($fields)) { echo '
'; ui_toggle(html_print_table($table, true), __('Custom fields'), '', true, false, 'white_box white_box_opened'); echo '
'; } echo '
'; // The context help about the learning mode. if ($modo == 0) { echo ""; } else { echo "'; if ($id_agente) { echo '
'; html_print_submit_button( __('Update'), 'updbutton', false, 'class="sub upd"' ); html_print_input_hidden('update_agent', 1); html_print_input_hidden('id_agente', $id_agente); } else { html_print_submit_button( __('Create'), 'crtbutton', false, 'class="sub wand"' ); html_print_input_hidden('create_agent', 1); } echo '
'; ui_require_jquery_file('pandora.controls'); ui_require_jquery_file('ajaxqueue'); ui_require_jquery_file('bgiframe'); ?>