From 6f9f20f9963990613e1ac62a503dff87024d9e81 Mon Sep 17 00:00:00 2001 From: mdtrooper <tres.14159@gmail.com> Date: Mon, 10 Aug 2015 19:44:28 +0200 Subject: [PATCH] Added the parameter to set the size of networkmaps. --- .../include/functions_networkmap.php | 47 ++++++++++++------- .../operation/agentes/networkmap.groups.php | 5 +- .../operation/agentes/networkmap.topology.php | 7 ++- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/pandora_console/include/functions_networkmap.php b/pandora_console/include/functions_networkmap.php index d36a7958cf..fd87de93fb 100644 --- a/pandora_console/include/functions_networkmap.php +++ b/pandora_console/include/functions_networkmap.php @@ -230,10 +230,12 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $zoom = 1, $ranksep = 2.5, $center = 0, $regen = 1, $pure = 0, $id_networkmap = 0, $show_snmp_modules = 0, $cut_names = true, $relative = false, $text_filter = '', $l2_network = false, $ip_mask = null, - $dont_show_subgroups = false, $strict_user = false) { + $dont_show_subgroups = false, $strict_user = false, $size_canvas = null) { global $config; + + if ($l2_network) { $nooverlap = 1; } @@ -277,7 +279,7 @@ function networkmap_generate_dot ($pandora_name, $group = 0, //Order by id_parent ascendant for to avoid the bugs //because the first agents to process in the next //foreach loop are without parent (id_parent = 0) - + // Get agents data if ($strict_user) { if ($dont_show_subgroups) @@ -291,14 +293,15 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $filter_id_groups[$group] = $group; $filter['id_group'] = implode(',', $filter_id_groups); } - + $filter['group_by'] = 'tagente.id_agente'; $fields = array ('tagente.id_grupo, tagente.nombre, tagente.id_os, tagente.id_parent, tagente.id_agente, tagente.normal_count, tagente.warning_count, tagente.critical_count, tagente.unknown_count, tagente.total_count, tagente.notinit_count'); $acltags = tags_get_user_module_and_tags ($config['id_user'],'AR', $strict_user); $agents = tags_get_all_user_agents (false, $config['id_user'], $acltags, $filter, $fields, false, $strict_user, true); - } else { + } + else { $agents = agents_get_agents ($filter, array ('id_grupo, nombre, id_os, id_parent, id_agente, normal_count, warning_count, critical_count, @@ -328,7 +331,8 @@ function networkmap_generate_dot ($pandora_name, $group = 0, tagente.unknown_count, tagente.total_count, tagente.notinit_count'); $acltags = tags_get_user_module_and_tags ($config['id_user'],'AR', $strict_user); $agents = tags_get_all_user_agents (false, $config['id_user'], $acltags, $filter, $fields, false, $strict_user, true); - } else { + } + else { $agents = agents_get_agents ($filter, array ('id_grupo, nombre, id_os, id_parent, id_agente, normal_count, warning_count, critical_count, @@ -343,7 +347,7 @@ function networkmap_generate_dot ($pandora_name, $group = 0, // Open Graph $graph = networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, - $ranksep, $font_size); + $ranksep, $font_size, $size_canvas); // Parse agents $nodes = array (); @@ -369,14 +373,15 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $filter = array(); $filter['disabled'] = 0; - + // Get agent modules data if ($strict_user) { $modules = tags_get_agent_modules ($agent['id_agente'], false, $acltags, false, $filter, false); - } else { + } + else { $modules = agents_get_modules($agent['id_agente'], '*', $filter, true, true); - } - + } + if ($modules === false) $modules = array(); @@ -437,7 +442,8 @@ function networkmap_generate_dot ($pandora_name, $group = 0, } } } - } else { + } + else { // Addded the relationship of parents of agents foreach ($agents as $agent) { if ($agent['id_parent'] != "0" && @@ -641,7 +647,7 @@ function networkmap_generate_dot_groups ($pandora_name, $group = 0, $zoom = 1, $ranksep = 2.5, $center = 0, $regen = 1, $pure = 0, $modwithalerts = 0, $module_group = 0, $hidepolicymodules = 0, $depth = 'all', $id_networkmap = 0, $dont_show_subgroups = 0, - $text_filter = '', $strict_user = false) { + $text_filter = '', $strict_user = false, $size_canvas = null) { global $config; @@ -698,7 +704,8 @@ function networkmap_generate_dot_groups ($pandora_name, $group = 0, } // Open Graph - $graph = networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, $ranksep, $font_size); + $graph = networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, + $ranksep, $font_size, $size_canvas); $node_count = 0; @@ -713,7 +720,7 @@ function networkmap_generate_dot_groups ($pandora_name, $group = 0, // Add node $nodes_groups[$group2['id_grupo']] = $group2; } - + $node_count = 0; $groups_hiden = array(); @@ -1393,7 +1400,9 @@ function networkmap_close_group () { } // Opens a graph definition -function networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, $ranksep, $font_size) { +function networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, + $ranksep, $font_size, $size_canvas) { + global $config; $overlap = 'compress'; @@ -1425,8 +1434,12 @@ function networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, $ranksep, $fo } $size = $size_x . ',' . $size_y; + if (!is_null($size_canvas)) { + $size = ($size_canvas['x'] / 100) . "," . ($size_canvas['y'] / 100); + } + // BEWARE: graphwiz DONT use single ('), you need double (") - $head = "graph networkmap { bgcolor=\"transparent\"; labeljust=l; margin=0; pad=\"0.75,0.75\";"; + $head = "graph networkmap { dpi=100; bgcolor=\"transparent\"; labeljust=l; margin=0; pad=\"0.75,0.75\";"; if ($nooverlap != '') { $head .= "overlap=\"$overlap\";"; $head .= "ranksep=\"$ranksep\";"; @@ -1437,6 +1450,8 @@ function networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, $ranksep, $fo $head .= "root=0;"; $head .= "size=\"$size\";"; + + return $head; } diff --git a/pandora_console/operation/agentes/networkmap.groups.php b/pandora_console/operation/agentes/networkmap.groups.php index e6ef683fe4..ceaabb1a7c 100644 --- a/pandora_console/operation/agentes/networkmap.groups.php +++ b/pandora_console/operation/agentes/networkmap.groups.php @@ -65,7 +65,8 @@ $filter = networkmap_get_filter ($layout); $graph = networkmap_generate_dot_groups (__('Pandora FMS'), $group, $simple, $font_size, $layout, $nooverlap, $zoom, $ranksep, $center, $regen, $pure, $modwithalerts, $module_group, $hidepolicymodules, - $depth, $id_networkmap, $dont_show_subgroups, $text_filter, $strict_user); + $depth, $id_networkmap, $dont_show_subgroups, $text_filter, + $strict_user, $size_canvas); if ($graph === false) { ui_print_error_message (__('Map could not be generated')); @@ -140,7 +141,7 @@ if ($result !== false) { $image_url = str_replace('\\',"/",str_replace($config['homedir'], "", $filename_img)); else $image_url = str_replace(realpath(io_safe_output($config['homedir'])), "", realpath($filename_img)); - html_print_image ($image_url, false, array ("alt" => __('Network map'), "usemap" => "#networkmap")); + html_print_image ($image_url . "?" . (microtime(true) * 10000), false, array ("alt" => __('Network map'), "usemap" => "#networkmap")); echo "</div>"; require ($filename_map); } diff --git a/pandora_console/operation/agentes/networkmap.topology.php b/pandora_console/operation/agentes/networkmap.topology.php index 76a54a2fdf..5493cdd073 100644 --- a/pandora_console/operation/agentes/networkmap.topology.php +++ b/pandora_console/operation/agentes/networkmap.topology.php @@ -64,11 +64,14 @@ if (!isset($text_filter)) { $text_filter = ''; } + + // Generate dot file $graph = networkmap_generate_dot(__('Pandora FMS'), $group, $simple, $font_size, $layout, $nooverlap, $zoom, $ranksep, $center, $regen, $pure, $id_networkmap, $show_snmp_modules, true, true, - $text_filter, $l2_network, null, $dont_show_subgroups, $strict_user); + $text_filter, $l2_network, null, $dont_show_subgroups, $strict_user, + $size_canvas); if ($graph === false) { ui_print_error_message (__('Map could not be generated')); @@ -146,7 +149,7 @@ if ($result !== false) { } echo "<div style='text-align:center'>"; $image_url = str_replace(realpath(io_safe_output($config['homedir'])), "", realpath($filename_img)); - html_print_image ($image_url, false, array ("alt" => __('Network map'), "usemap" => "#networkmap")); + html_print_image ($image_url . "?" . (microtime(true) * 10000), false, array ("alt" => __('Network map'), "usemap" => "#networkmap")); echo "</div>"; require ($filename_map); }