$agent['id_agente'], 'name' => io_safe_output($agent['nombre']), 'ip' => io_safe_output($agent['direccion'])); } echo json_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) { require_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 = array(); $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 = array(); } echo json_encode($out); } return; } // Load global vars enterprise_include ('godmode/agentes/agent_manager.php'); require_once ('include/functions_servers.php'); require_once ('include/functions_gis.php'); require_once($config['homedir'] . "/include/functions_agents.php"); require_once ($config['homedir'].'/include/functions_users.php'); 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"); require ("general/noaccess.php"); return; } if ($new_agent) { if (! empty ($direccion_agente) && empty ($nombre_agente)) $nombre_agente = $direccion_agente; } echo '
 
'; if (!$new_agent) { // Agent remote configuration editor $agent_md5 = md5 ($nombre_agente, false); $filename['md5'] = $config["remote_config"]."/md5/".$agent_md5.".md5"; $filename['conf'] = $config["remote_config"]."/conf/".$agent_md5.".conf"; } $disk_conf = (bool) get_parameter ('disk_conf'); if ($disk_conf) { require ("agent_disk_conf_editor.php"); return; } $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 '
'; $table->width = '98%'; $table->class = "databox_color"; $table->head = array (); $table->style = array (); $table->style[0] = 'font-weight: bold; width: 150px;'; $table->data = array (); $table->data[0][0] = __('Agent name') . ui_print_help_tip (__("The agent's name must be the same as the one defined at the console"), true); $table->data[0][1] = html_print_input_text ('agente', $nombre_agente, '', 50, 100,true); if ($id_agente) { $table->data[0][1] .= " ".__("ID")."  $id_agente  "; $table->data[0][1] .= '  '; $table->data[0][1] .= html_print_image ("images/lupa.png", true, array ("border" => 0, "title" => __('Agent detail'))); $table->data[0][1] .= ''; } // Remote configuration available if (!$new_agent) { if (file_exists ($filename['md5'])) { $table->data[0][1] .= '  '; $table->data[0][1] .= html_print_image ("images/application_edit.png", true, array ("border" => 0, "title" => __('This agent can be remotely configured'))); $table->data[0][1] .= ''.ui_print_help_tip (__('You can remotely edit this agent configuration'), true); } } // Delete link from here if (!$new_agent) { $table->data[0][1] .= "  "; } $table->data[1][0] = __('IP Address'); $table->data[1][1] = html_print_input_text ('direccion', $direccion_agente, '', 16, 100, true); if ($id_agente) { $table->data[1][1] .= '    '; $ip_all = agents_get_addresses ($id_agente); $table->data[1][1] .= html_print_select ($ip_all, "address_list", $direccion_agente, '', '', 0, true); $table->data[1][1] .= " ". html_print_checkbox ("delete_ip", 1, false, true).__('Delete selected'); } $groups = users_get_groups ($config["id_user"], "AR",false); $agents = agents_get_group_agents (array_keys ($groups)); $table->data[2][0] = __('Parent'); $params = array(); $params['return'] = true; $params['show_helptip'] = true; $params['input_name'] = 'id_parent'; $params['value'] = agents_get_name ($id_parent); $table->data[2][1] = ui_print_agent_autocomplete_input($params); $table->data[2][1] .= html_print_checkbox ("cascade_protection", 1, $cascade_protection, true).__('Cascade protection'). " " . ui_print_help_icon("cascade_protection", true); $table->data[3][0] = __('Group'); $table->data[3][1] = html_print_select_groups(false, "AR", false, 'grupo', $grupo, '', '', 0, true); $table->data[4][0] = __('Interval'); $table->data[4][1] = html_print_extended_select_for_time ('intervalo', $intervalo, '', '', '0', 10, true); $table->data[5][0] = __('OS'); $table->data[5][1] = html_print_select_from_sql ('SELECT id_os, name FROM tconfig_os', 'id_os', $id_os, '', '', '0', true); $table->data[5][1] .= ' '; $table->data[5][1] .= ui_print_os_icon ($id_os, false, true); $table->data[5][1] .= ''; // Network server $table->data[6][0] = __('Server'); if ($new_agent) { //Set first server by default. $server_name = reset(array_keys(servers_get_names())); } $table->data[6][1] = html_print_select (servers_get_names (), 'server_name', $server_name, '', __('None'), 0, true); // Description $table->data[7][0] = __('Description'); $table->data[7][1] = html_print_input_text ('comentarios', $comentarios, '', 45, 255, true); html_print_table ($table); unset($table); $table->width = '98%'; $table->class = "databox_color"; $table->head = array (); $table->style = array (); $table->style[0] = 'font-weight: bold; width: 150px;'; $table->data = array (); // Custom ID $table->data[0][0] = __('Custom ID'); $table->data[0][1] = html_print_input_text ('custom_id', $custom_id, '', 16, 255, true); // Learn mode / Normal mode $table->data[1][0] = __('Module definition').ui_print_help_icon("module_definition", true); $table->data[1][1] = __('Learning mode').' '.html_print_radio_button_extended ("modo", 1, '', $modo, false, '', 'style="margin-right: 40px;"', true); $table->data[1][1] .= __('Normal mode').' '.html_print_radio_button_extended ("modo", 0, '', $modo, false, '', 'style="margin-right: 40px;"', true); // Status (Disabled / Enabled) $table->data[2][0] = __('Status'); $table->data[2][1] = __('Disabled').' '.html_print_radio_button_extended ("disabled", 1, '', $disabled, false, '', 'style="margin-right: 40px;"', true); $table->data[2][1] .= __('Active').' '.html_print_radio_button_extended ("disabled", 0, '', $disabled, false, '', 'style="margin-right: 40px;"', true); // Remote configuration $table->data[3][0] = __('Remote configuration'); if (!$new_agent) { if (file_exists ($filename['md5'])) { $table->data[3][1] = date ("F d Y H:i:s", fileatime ($filename['md5'])); // Delete remote configuration $table->data[3][1] .= ''; $table->data[3][1] .= html_print_image ("images/cross.png", true, array ('title' => __('Delete remote configuration file'), 'style' => 'vertical-align: middle;')).''; $table->data[3][1] .= ''.ui_print_help_tip (__('Delete this conf file implies that for restore you must reactive remote config in the local agent.'), true); } else $table->data[3][1] = ''.__('Not available').''; } else $table->data[3][1] = ''.__('Not available').''; $listIcons = gis_get_array_list_icons(); $arraySelectIcon = array(); foreach ($listIcons as $index => $value) $arraySelectIcon[$index] = $index; $path = 'images/gis_map/icons/'; //TODO set better method the path $table->data[4][0] = __('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->data[4][1] = html_print_select($arraySelectIcon, "icon_path", $icon_path, "changeIcons();", __('None'), '', true) . ' ' . html_print_image($path_ok, true, array("id" => "icon_ok", "style" => "display:".$display_icons.";")) . ' ' . html_print_image($path_bad, true, array("id" => "icon_bad", "style" => "display:".$display_icons.";")) . ' ' . html_print_image($path_warning, true, array("id" => "icon_warning", "style" => "display:".$display_icons.";")); if ($config['activate_gis']) { $table->data[5][0] = __('Ignore new GIS data:'); $table->data[5][1] = __('Yes') . ' ' . html_print_radio_button_extended ("update_gis_data", 0, '', $update_gis_data, false, '', 'style="margin-right: 40px;"', true); $table->data[5][1] .= __('No') . ' ' . html_print_radio_button_extended ("update_gis_data", 1, '', $update_gis_data, false, '', 'style="margin-right: 40px;"', true); } $table->data[6][0] = __('Url address'); $table->data[6][1] = html_print_input_text ('url_description', $url_description, '', 45, 255, true); $table->data[7][0] = __('Quiet'); $table->data[7][0] .= ui_print_help_tip(__('The agent still runs but the alerts and events will be stop'), true); $table->data[7][1] = html_print_checkbox('quiet', 1, $quiet, true); ui_toggle(html_print_table ($table, true), __('Advanced options')); unset($table); $table->width = '98%'; $table->class = "databox_color"; $table->head = array (); $table->style = array (); $table->style[0] = 'font-weight: bold; width: 150px;'; $table->data = array (); $fields = db_get_all_fields_in_table('tagent_custom_fields'); if($fields === false) $fields = array(); foreach ($fields as $field) { $data[0] = ''.$field['name'].''; $custom_value = db_get_value_filter('description', 'tagent_custom_data', array('id_field' => $field['id_field'], 'id_agent' => $id_agente)); if($custom_value === false) { $custom_value = ''; } $data[1] = html_print_textarea ('customvalue_'.$field['id_field'], 2, 65, $custom_value, 'style="min-height: 30px;"', true); array_push ($table->data, $data); } if(!empty($fields)) { ui_toggle(html_print_table ($table, true), __('Custom fields')); } echo '
'; if ($id_agente) { 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'); ?>