diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 73036e6993..7587cf0aff 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,17 @@ +2014-03-20 Miguel de Dios + + * godmode/snmpconsole/snmp_alert.php, + godmode/alerts/alert_list.list.php, + godmode/agentes/agent_manager.php, + godmode/agentes/configurar_agente.php, + godmode/agentes/modificar_agente.php, + include/functions_reporting.php, + operation/agentes/estado_agente.php, + images/remote_configuration.png: added a tab for enterprise remote + configuration. + + Incident: #311 + 2014-03-19 Alejandro Gallardo * pandoradb_data.sql, diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index 536c44aef4..a62170000c 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -128,13 +128,6 @@ if (!$new_agent) { } } -$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) { @@ -174,11 +167,18 @@ if (!$new_agent) { $agent_name = io_safe_output($agent_name); $agent_md5 = md5 ($agent_name, false); - $table->data[0][1] .= '  '; + $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'))); + 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); @@ -286,7 +286,12 @@ 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] .= ''; $table->data[3][1] .= html_print_image( "images/cross.png", true, array ('title' => __('Delete remote configuration file'), 'style' => 'vertical-align: middle;')).''; diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index dd92b26529..a997c9b62d 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -212,11 +212,16 @@ if ($create_agent) { $agent_created_ok = true; - $info = 'Name: ' . $nombre_agente . ' IP: ' . $direccion_agente . - ' Group: ' . $grupo . ' Interval: ' . $intervalo . - ' Comments: ' . $comentarios . ' Mode: ' . $modo . - ' ID_parent: ' . $id_parent . ' Server: ' . $server_name . - ' ID os: ' . $id_os . ' Disabled: ' . $disabled . + $info = 'Name: ' . $nombre_agente . + ' IP: ' . $direccion_agente . + ' Group: ' . $grupo . + ' Interval: ' . $intervalo . + ' Comments: ' . $comentarios . + ' Mode: ' . $modo . + ' ID_parent: ' . $id_parent . + ' Server: ' . $server_name . + ' ID os: ' . $id_os . + ' Disabled: ' . $disabled . ' Custom ID: ' . $custom_id . ' Cascade protection: ' . $cascade_protection . ' Icon path: ' . $icon_path . @@ -237,7 +242,6 @@ if ($create_agent) { // Show tabs $img_style = array ("class" => "top", "width" => 16); -// TODO: Change to use ui_print_page_header if ($id_agente) { /* View tab */ @@ -299,7 +303,8 @@ if ($id_agente) { $inventorytab = ""; - $has_remote_conf = enterprise_hook('config_agents_has_remote_configuration',array($id_agente)); + $has_remote_conf = enterprise_hook('config_agents_has_remote_configuration', + array($id_agente)); if ($has_remote_conf === true) { /* Plugins */ @@ -365,18 +370,56 @@ if ($id_agente) { } if (check_acl ($config["id_user"], $group, "AW", $id_agente)) { - $onheader = array('view' => $viewtab, - 'main' => $maintab, - 'module' => $moduletab, - 'alert' => $alerttab, - 'template' => $templatetab, - 'inventory' => $inventorytab, - 'pluginstab' => $pluginstab, - 'collection'=> $collectiontab, - 'group' => $grouptab, - 'gis' => $gistab, - 'agent_wizard' => $agent_wizard); + if ($has_remote_conf) { + $agent_name = agents_get_name($id_agente); + $agent_name = io_safe_output($agent_name); + $agent_md5 = md5 ($agent_name, false); + $remote_configuration_tab['text'] = + '' + . html_print_image ("images/book_edit.png", true, + array("title" =>__('Remote configuration'))) + . ''; + if ($tab == 'remote_configuration') + $remote_configuration_tab['active'] = true; + else + $remote_configuration_tab['active'] = false; + + + $onheader = array('view' => $viewtab, + 'separator' => "", + 'main' => $maintab, + 'remote_configuration' => $remote_configuration_tab, + 'module' => $moduletab, + 'alert' => $alerttab, + 'template' => $templatetab, + 'inventory' => $inventorytab, + 'pluginstab' => $pluginstab, + 'collection'=> $collectiontab, + 'group' => $grouptab, + 'gis' => $gistab, + 'agent_wizard' => $agent_wizard); + } + else { + $onheader = array('view' => $viewtab, + 'separator' => "", + 'main' => $maintab, + 'module' => $moduletab, + 'alert' => $alerttab, + 'template' => $templatetab, + 'inventory' => $inventorytab, + 'pluginstab' => $pluginstab, + 'collection'=> $collectiontab, + 'group' => $grouptab, + 'gis' => $gistab, + 'agent_wizard' => $agent_wizard); + } + // Only if the agent has incidents associated show incidents tab if ($total_incidents) { $onheader['incident'] = $incidenttab; @@ -449,6 +492,9 @@ if ($id_agente) { case "incident": $tab_description = '- ' . __('Incidents'); break; + case "remote_configuration": + $tab_description = '- ' . __('Remote configuration'); + break; case "agent_wizard": switch(get_parameter('wizard_section')) { case 'snmp_explorer': @@ -475,12 +521,14 @@ if ($id_agente) { break; } - ui_print_page_header (agents_get_name ($id_agente) . - ' ' . $tab_description, "images/setup.png", false, $help_header , true, $onheader); + ui_print_page_header ( + agents_get_name ($id_agente) . ' ' . $tab_description, + "images/setup.png", false, $help_header , true, $onheader); } else { // Create agent - ui_print_page_header (__('Agent manager'), "images/bricks.png", false, "create_agent", true); + ui_print_page_header (__('Agent manager'), "images/bricks.png", + false, "create_agent", true); } $delete_conf_file = (bool) get_parameter('delete_conf_file'); @@ -594,7 +642,8 @@ if ($update_agent) { // if modified some agent paramenter foreach ($field_values as $key => $value) { - $old_value = db_get_all_rows_filter('tagent_custom_data', array('id_agent' => $id_agente, 'id_field' => $key)); + $old_value = db_get_all_rows_filter('tagent_custom_data', + array('id_agent' => $id_agente, 'id_field' => $key)); if ($old_value === false) { // Create custom field if not exist @@ -741,7 +790,7 @@ if ($update_module || $create_module) { // where are very big and PHP uses scientific notation, p.e: // 1.23E-10 is 0.000000000123 - $post_process = get_parameter ('post_process', 0); + $post_process = (string) get_parameter ('post_process', 0.0); $prediction_module = 0; $max_timeout = (int) get_parameter ('max_timeout'); $max_retries = (int) get_parameter ('max_retries'); @@ -790,15 +839,15 @@ if ($update_module || $create_module) { if (!empty($macros)) { $macros = json_decode(base64_decode($macros), true); - foreach ($macros as $k => $m) { + foreach($macros as $k => $m) { $macros[$k]['value'] = get_parameter($m['macro'], ''); } $macros = json_encode($macros); - $conf_array = explode("\n", $configuration_data); - foreach ($conf_array as $line) { - if (preg_match("/^module_name\s*(.*)/", $line, $match)) { + $conf_array = explode("\n",$configuration_data); + foreach($conf_array as $line) { + if(preg_match("/^module_name\s*(.*)/", $line, $match)) { $new_configuration_data .= "module_name $name\n"; } // We delete from conf all the module macros starting with _field @@ -822,7 +871,8 @@ if ($update_module || $create_module) { enterprise_hook ('get_service_synthetic_parameters'); - $agent_name = (string) get_parameter('agent_name',agents_get_name ($id_agente)); + $agent_name = (string) get_parameter('agent_name', + agents_get_name($id_agente)); $snmp_community = (string) get_parameter ('snmp_community'); $snmp_oid = (string) get_parameter ('snmp_oid'); @@ -895,7 +945,7 @@ if ($update_module || $create_module) { //Set the event type that can show. $disabled_types_event = array(EVENTS_GOING_UNKNOWN => (int)!$throw_unknown_events); $disabled_types_event = json_encode($disabled_types_event); - + $module_macro_names = (array) get_parameter('module_macro_names', array()); $module_macro_values = (array) get_parameter('module_macro_values', array()); $module_macros = modules_get_module_macros_json ($module_macro_names, $module_macro_values); @@ -1413,6 +1463,9 @@ switch ($tab) { case "incident": require("agent_incidents.php"); break; + case "remote_configuration": + enterprise_include("godmode/agentes/agent_disk_conf_editor.php"); + break; case "extension": $found = false; foreach($config['extensions'] as $extension) { @@ -1470,46 +1523,46 @@ echo ''; echo ''; ?> diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index 5f577ad503..b29abc7e66 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -483,7 +483,11 @@ if ($agents !== false) { if (enterprise_installed()) { enterprise_include_once('include/functions_config_agents.php'); if (config_agents_has_remote_configuration($agent["id_agente"])) { - echo ""; + echo ""; echo html_print_image("images/application_edit.png", true, array("align" => 'middle', "title" => __('Edit remote config'))); echo ""; } diff --git a/pandora_console/godmode/alerts/alert_list.list.php b/pandora_console/godmode/alerts/alert_list.list.php index 36f64804bf..386b5bbab2 100644 --- a/pandora_console/godmode/alerts/alert_list.list.php +++ b/pandora_console/godmode/alerts/alert_list.list.php @@ -41,18 +41,18 @@ else { } // Table for filter controls -$form_filter = '
'; +$form_filter = ''; $form_filter .= "\n"; $form_filter .= ''."\n"; $form_filter .= "\n"; -$form_filter .= "\n"; $temp = agents_get_agents(); $arrayAgents = array(); # Avoid empty arrays, warning messages are UGLY ! -if ($temp){ +if ($temp) { foreach ($temp as $agentElement) { $arrayAgents[$agentElement['id_agente']] = $agentElement['nombre']; } @@ -137,7 +137,7 @@ $form_filter .= "
".__('Template name').""; +$form_filter .= "" . __('Template name') . ""; $form_filter .= html_print_input_text ('template_name', $templateName, '', 12, 255, true); $form_filter .= "
\n"; $form_filter .= "
\n"; echo "
"; -ui_toggle($form_filter,__('Alert control filter'), __('Toggle filter(s)')); +ui_toggle($form_filter, __('Alert control filter'), __('Toggle filter(s)')); $simple_alerts = array(); @@ -313,7 +313,7 @@ if (!$id_agente) { else { $url = 'index.php?sec='.$sec.'&sec2=godmode/agentes/configurar_agente&pure='.$pure.'&tab=alert&id_agente=' . $id_agente; } - + $table->class = 'alert_list databox'; $table->width = '98%'; $table->size = array (); @@ -375,8 +375,8 @@ $iterator = 0; foreach ($simple_alerts as $alert) { if ($alert['disabled']) { - $table->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;'; - $table->style[$iterator][1] = 'font-style: italic; color: #aaaaaa;'; + $table->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;'; + $table->style[$iterator][1] = 'font-style: italic; color: #aaaaaa;'; } if ($rowPair) @@ -385,9 +385,9 @@ foreach ($simple_alerts as $alert) { $table->rowclass[$iterator] = 'rowOdd'; $rowPair = !$rowPair; $iterator++; - + $data = array (); - + if (! $id_agente) { $id_agent = modules_get_agentmodule_agent ($alert['id_agent_module']); @@ -395,7 +395,7 @@ foreach ($simple_alerts as $alert) { $data[0] = ''; - if(check_acl ($config['id_user'], $agent_group, "AW")) { + if (check_acl ($config['id_user'], $agent_group, "AW")) { $main_tab = 'main'; } else { @@ -410,7 +410,7 @@ foreach ($simple_alerts as $alert) { $data[0] .= ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[…]', 'display:block;font-size: 7.2pt'); if ($alert['disabled']) $data[0] .= ''; - + $data[0] .= ''; } else { @@ -421,7 +421,7 @@ foreach ($simple_alerts as $alert) { $data[1] = ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[…]', 'display:block;font-size: 7.2pt') . '
'; $template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']); - + // The access to the template manage page is necessary have LW permissions on template group if(check_acl ($config['id_user'], $template_group, "LW")) { $data[1] .= ""; @@ -433,7 +433,7 @@ foreach ($simple_alerts as $alert) { href="'.ui_get_full_url(false,false,false,false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">'; $data[1] .= html_print_image("images/zoom.png", true, array("id" => 'template-details-'.$alert['id_alert_template'], "class" => "img_help")); $data[1] .= ' '; - + if(check_acl ($config['id_user'], $template_group, "LW")) { $data[1] .= ""; } @@ -453,7 +453,7 @@ foreach ($simple_alerts as $alert) { $data[2] .= ""; $data[2] .= ""; } - + foreach ($actions as $action_id => $action) { $data[2] .= ""; $data[2] .= ""; @@ -519,7 +519,7 @@ foreach ($simple_alerts as $alert) { $data[2] .= ''; $data[2] .= html_print_input_hidden ('add_action', 1, true); $data[2] .= html_print_input_hidden ('id_alert_module', $alert['id'], true); - + if (! $id_agente) { $data[2] .= ''; $data[2] .= '
'; @@ -569,7 +569,7 @@ foreach ($simple_alerts as $alert) { $data[2] .= ''; $data[2] .= ''; } - + $status = STATUS_ALERT_NOT_FIRED; $title = ""; @@ -614,7 +614,7 @@ foreach ($simple_alerts as $alert) { $data[4] .= html_print_input_hidden ('id_alert', $alert['id'], true); $data[4] .= ''; } - + // To access to policy page is necessary have AW permissions in the agent if(check_acl ($config['id_user'], $agent_group, "AW")) { if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { @@ -623,7 +623,7 @@ foreach ($simple_alerts as $alert) { $data[4] .= ''; else { $img = 'images/policies.png'; - + $data[4] .= '  ' . html_print_image($img, true, array('title' => $policyInfo['name'])) . ''; @@ -658,11 +658,11 @@ foreach ($simple_alerts as $alert) { array_push ($table->data, $data); } -if (isset($data)){ +if (isset($data)) { html_print_table ($table); } else { - echo "
".__('No alerts defined')."
"; + echo "
" . __('No alerts defined') . "
"; } // Create alert button @@ -673,7 +673,7 @@ if (isset($dont_display_alert_create_bttn)) $display_create = false; if ($display_create && check_acl ($config['id_user'], 0, "LW")){ - echo '
'; + echo '
'; echo '
'; html_print_submit_button (__('Create'), 'crtbtn', false, 'class="sub next"'); echo '
'; @@ -771,19 +771,19 @@ function show_advance_options_action(id_alert) { function show_add_action(id_alert) { $("#add_action-div-" + id_alert).hide () - .dialog ({ - resizable: true, - draggable: true, - title: '', - modal: true, - overlay: { - opacity: 0.5, - background: "black" - }, - width: 500, - height: 300 - }) - .show (); + .dialog ({ + resizable: true, + draggable: true, + title: '', + modal: true, + overlay: { + opacity: 0.5, + background: "black" + }, + width: 500, + height: 300 + }) + .show (); } /* ]]> */ diff --git a/pandora_console/godmode/snmpconsole/snmp_alert.php b/pandora_console/godmode/snmpconsole/snmp_alert.php index 93576bdb0e..a9d76c36cf 100644 --- a/pandora_console/godmode/snmpconsole/snmp_alert.php +++ b/pandora_console/godmode/snmpconsole/snmp_alert.php @@ -195,7 +195,7 @@ if ($save_alert || $modify_alert) { $custom_oid_data_15, $custom_oid_data_16, $custom_oid_data_17, $custom_oid_data_18, $custom_oid_data_19, $custom_oid_data_20, $trap_type, $single_value, $position, $group, $id_as); - + $result = db_process_sql ($sql); if (!$result) { @@ -737,7 +737,7 @@ else { "priority_filter=" . $priority_filter . "&" . "offset=" . $offset; } - + //$where_sql = ' 1 = 1'; if ($trap_type_filter != SNMP_TRAP_TYPE_NONE) { $where_sql .= ' AND `trap_type` = ' . $trap_type_filter; @@ -767,7 +767,7 @@ else { $count = db_get_value_sql("SELECT COUNT(*) FROM talert_snmp WHERE id_group IN ($str_user_groups) " . $where_sql); - + $result = array(); //Overview diff --git a/pandora_console/images/remote_configuration.png b/pandora_console/images/remote_configuration.png new file mode 100644 index 0000000000..5e4bd77c77 Binary files /dev/null and b/pandora_console/images/remote_configuration.png differ diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 0174cb9c04..367594e3f7 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -1423,11 +1423,12 @@ function reporting_get_group_stats ($id_group = 0, $access = 'AR') { $id_group[0] = $my_group; } - foreach ($id_group as $group){ + foreach ($id_group as $group) { $group_stat = db_get_all_rows_sql ("SELECT * FROM tgroup_stat, tgrupo WHERE tgrupo.id_grupo = tgroup_stat.id_group AND tgroup_stat.id_group = $group ORDER BY nombre"); + $data["monitor_checks"] += $group_stat[0]["modules"]; $data["monitor_not_init"] += $group_stat[0]["non-init"]; $data["monitor_unknown"] += $group_stat[0]["unknown"]; @@ -1453,7 +1454,7 @@ function reporting_get_group_stats ($id_group = 0, $access = 'AR') { // Get Agents Unknown $data["agent_unknown"] += groups_agent_unknown($group); // Get Agents Not init - $data["agent_not_init"] += groups_agent_not_init($group); + $data["agent_not_init"] += groups_agent_not_init($group); } @@ -1484,7 +1485,7 @@ function reporting_get_group_stats ($id_group = 0, $access = 'AR') { array_push($covered_groups, $sub['id_grupo']); array_push($group_array, $sub['id_grupo']); } - + } // Add id of this group to create the clause @@ -1531,7 +1532,7 @@ function reporting_get_group_stats ($id_group = 0, $access = 'AR') { // Get monitor WARNING, except disabled and non-init $data["monitor_warning"] += groups_monitor_warning ($group_array); - + // Get monitor UNKNOWN, except disabled and non-init $data["monitor_unknown"] += groups_monitor_unknown ($group_array); @@ -1545,7 +1546,7 @@ function reporting_get_group_stats ($id_group = 0, $access = 'AR') { // Get TOTAL agents in a group $data["total_agents"] += groups_total_agents ($group_array); - + // Get TOTAL non-init modules, except disabled ones and async modules $data["total_not_init"] += $data["monitor_not_init"]; diff --git a/pandora_console/operation/agentes/estado_agente.php b/pandora_console/operation/agentes/estado_agente.php index 6c06ac7b71..6a8d28cc4e 100644 --- a/pandora_console/operation/agentes/estado_agente.php +++ b/pandora_console/operation/agentes/estado_agente.php @@ -493,7 +493,12 @@ foreach ($agents as $agent) { if (enterprise_installed()) { if (config_agents_has_remote_configuration($agent["id_agente"])) { - $data[9] = "". + $data[9] = "". html_print_image("images/application_edit.png", true, array("align" => 'middle', "title" => __('Edit remote config'))).""; } }