diff --git a/pandora_console/include/class/NetworkMap.class.php b/pandora_console/include/class/NetworkMap.class.php index 4656ad39f4..7829610a60 100644 --- a/pandora_console/include/class/NetworkMap.class.php +++ b/pandora_console/include/class/NetworkMap.class.php @@ -1727,7 +1727,10 @@ class NetworkMap $item['image_height'] = 0; if (empty($node['style']['image']) === false) { $item['image_url'] = ui_get_full_url( - $node['style']['image'] + $node['style']['image'], + false, + false, + false ); $image_size = getimagesize( $config['homedir'].'/'.$node['style']['image'] @@ -3391,7 +3394,7 @@ class NetworkMap && isset($this->useTooltipster) && $this->useTooltipster == true ) { - $output .= ''; $output .= ''; + $output .= ''; + if (isset($this->map['__simulated']) === false) { // Load context menu if manageable networkmap. - $output .= ''; + $output .= ''; } - $output .= ''; + $output .= ''; // Open networkconsole_id div. $output .= '
$server) { + $connection = metaconsole_get_connection($server); + if (metaconsole_connect($connection) != NOERR) { + continue; + } + + $tmp_maps = db_get_all_rows_filter('tmap', $where); + if ($tmp_maps !== false) { + foreach ($tmp_maps as $g) { + $g['id_t'] = $g['id']; + $g['id'] = $connection['id'].'_'.$g['id']; + $g['name'] = $g['name'].' ('.$connection['server_name'].')'; + $networkmaps_raw[] = $g; + } + } + + metaconsole_restore_db(); + } + } else { + $networkmaps_raw = db_get_all_rows_filter('tmap', $where); + } + if (empty($networkmaps_raw)) { return []; } diff --git a/pandora_console/include/graphs/functions_d3.php b/pandora_console/include/graphs/functions_d3.php index fc7dab4d7f..abba81ea72 100644 --- a/pandora_console/include/graphs/functions_d3.php +++ b/pandora_console/include/graphs/functions_d3.php @@ -22,15 +22,30 @@ function include_javascript_d3($return=false) $is_include_javascript = true; $output .= ''; $output .= ''; $output .= ''; } diff --git a/pandora_console/include/javascript/pandora_dashboards.js b/pandora_console/include/javascript/pandora_dashboards.js index 14a9461998..a322dbe4d7 100644 --- a/pandora_console/include/javascript/pandora_dashboards.js +++ b/pandora_console/include/javascript/pandora_dashboards.js @@ -782,7 +782,8 @@ function dashboardLoadNetworkMap(settings) { auth_class: settings.auth_class, auth_hash: settings.auth_hash, id_user: settings.id_user, - ignore_acl: 1 + ignore_acl: 1, + node: settings.node }, dataType: "html", success: function(data) { diff --git a/pandora_console/include/lib/Dashboard/Widgets/network_map.php b/pandora_console/include/lib/Dashboard/Widgets/network_map.php index 2856ba2d08..4733bd73b6 100644 --- a/pandora_console/include/lib/Dashboard/Widgets/network_map.php +++ b/pandora_console/include/lib/Dashboard/Widgets/network_map.php @@ -203,6 +203,10 @@ class NetworkMapWidget extends Widget $values['networkmapId'] = $decoder['networkmaps']; } + if (isset($decoder['node']) === true) { + $values['node'] = $decoder['node']; + } + if (isset($decoder['networkmapId']) === true) { $values['networkmapId'] = $decoder['networkmapId']; } @@ -268,14 +272,44 @@ class NetworkMapWidget extends Widget $return_all_group = true; } + // Selected. + $selected = $values['networkmapId']; + if ((bool) is_metaconsole() === true) { + $selected = $values['node'].'_'.$values['networkmapId']; + } else { + $selected = $values['networkmapId']; + } + // Map. - $fields = \networkmap_get_networkmaps(null, null, true, false, $return_all_group); + $fields = \networkmap_get_networkmaps( + null, + null, + true, + false, + $return_all_group + ); - // If currently selected networkmap is not included in fields array (it belongs to a group over which user has no permissions), then add it to fields array. - if ($values['networkmapId'] !== null && !array_key_exists($values['networkmapId'], $fields)) { - $selected_networkmap = db_get_row('tmap', 'id', $values['networkmapId']); + // If currently selected networkmap is not included in fields array + // (it belongs to a group over which user has no permissions), then add + // it to fields array. + if ($values['networkmapId'] !== null + && array_key_exists($selected, $fields) === false + ) { + if ((bool) is_metaconsole() === true) { + metaconsole_connect(null, $values['nodeId']); + } - $fields[$values['networkmapId']] = $selected_networkmap; + $selected_networkmap = db_get_value( + 'id', + 'tmap', + $values['networkmapId'] + ); + + $fields[$selected] = $selected_networkmap; + + if ((bool) is_metaconsole() === true) { + metaconsole_restore_db(); + } } $inputs[] = [ @@ -358,7 +392,18 @@ class NetworkMapWidget extends Widget // Retrieve global - common inputs. $values = parent::getPost(); - $values['networkmapId'] = \get_parameter('networkmapId', 0); + $nmId = \get_parameter('networkmapId', null); + + if ($nmId !== null) { + if ((bool) is_metaconsole() === true) { + $mc_stuff = explode('_', $nmId); + $values['node'] = $mc_stuff[0]; + $values['networkmapId'] = $mc_stuff[1]; + } else { + $values['networkmapId'] = $nmId; + } + } + $values['xOffset'] = \get_parameter('xOffset', 0); $values['yOffset'] = \get_parameter('yOffset', 0); $values['zoomLevel'] = (float) \get_parameter('zoomLevel', 0.5); @@ -382,8 +427,9 @@ class NetworkMapWidget extends Widget $x_offset = $this->values['xOffset']; $y_offset = $this->values['yOffset']; $zoom_dash = $this->values['zoomLevel']; + $node = ($this->values['node'] ?? ''); - $hash = md5($config['dbpass'].$id_networkmap.$config['id_user']); + $hash = md5($config['dbpass'].$id_networkmap.$config['id_user'].$node); $style = 'width:'.$size['width'].'px; height:'.$size['height'].'px;'; $id = 'body_cell-'.$this->cellId; @@ -401,6 +447,7 @@ class NetworkMapWidget extends Widget 'id_user' => $config['id_user'], 'auth_class' => 'PandoraFMS\Dashboard\Manager', 'auth_hash' => Manager::generatePublicHash(), + 'node' => $node, ] ); diff --git a/pandora_console/include/styles/meta_dashboards.css b/pandora_console/include/styles/meta_dashboards.css index c04ed2137b..1b24b3bce5 100644 --- a/pandora_console/include/styles/meta_dashboards.css +++ b/pandora_console/include/styles/meta_dashboards.css @@ -2,3 +2,23 @@ div#page { width: 90% !important; margin: 0 auto; } + +.networkconsole { + height: 100%; +} + +.networkconsole svg { + height: 100%; +} +.minimap { + position: absolute; + left: 0px; + top: 0px; + border: 1px solid #bbbbbb; +} +.holding_networkmap { + display: none; + position: absolute; + right: 50px; + top: 20px; +} diff --git a/pandora_console/operation/dashboard/dashboard.php b/pandora_console/operation/dashboard/dashboard.php index 4408c83d9c..3b081cfc7a 100644 --- a/pandora_console/operation/dashboard/dashboard.php +++ b/pandora_console/operation/dashboard/dashboard.php @@ -34,7 +34,7 @@ require $config['homedir'].'/vendor/autoload.php'; use PandoraFMS\Dashboard\Manager; if ((bool) is_metaconsole() === true) { - ui_require_css_file('meta_dashboards.css'); + ui_require_css_file('meta_dashboards'); } $ajaxPage = 'operation/dashboard/dashboard';