diff --git a/pandora_console/mobile/operation/networkmap.php b/pandora_console/mobile/operation/networkmap.php index 52fcb677e4..c5d5e39006 100755 --- a/pandora_console/mobile/operation/networkmap.php +++ b/pandora_console/mobile/operation/networkmap.php @@ -21,15 +21,20 @@ class Networkmap { private $id = 0; private $network_map = null; - function __construct() { + function __construct($id = false) { $system = System::getInstance(); - if ($system->checkACL($this->acl)) { + if ($id === false) + $this->getFilters(); + else + $this->id = $id; + + $store_group = db_get_value('store_group', + 'tnetwork_map', 'id_networkmap', $this->id); + + if ($store_group !== false + && $system->checkACL($this->acl, $store_group)) $this->correct_acl = true; - } - else { - $this->correct_acl = false; - } } public function ajax($parameter2 = false) { diff --git a/pandora_console/mobile/operation/networkmaps.php b/pandora_console/mobile/operation/networkmaps.php index b1d96e5ae1..33b72c39e1 100755 --- a/pandora_console/mobile/operation/networkmaps.php +++ b/pandora_console/mobile/operation/networkmaps.php @@ -168,10 +168,10 @@ class Networkmaps { $where['order'] = 'type'; if ($this->group != '0') { - $where['id_group'] = $this->group; + $where['store_group'] = $this->group; } else { - $where['id_group'] = array_keys(users_get_groups()); + $where['store_group'] = array_keys(users_get_groups()); } if ($this->type != '0') @@ -184,13 +184,17 @@ class Networkmaps { } $list = array(); foreach ($network_maps as $networkmap) { + // ACL + if (! $system->checkACL("AR", $networkmap['store_group'])) + continue; + // If enterprise not loaded then skip this code if ($networkmap['type'] == 'policies' and (!defined('PANDORA_ENTERPRISE'))) continue; $row = array(); $row[__('Name')] = '' . io_safe_output($networkmap['name']) . ''; $row[__('Type')] = $networkmap['type']; - $row[__('Group')] = ui_print_group_icon($networkmap["id_group"], true, "groups_small", "" , false); + $row[__('Group')] = ui_print_group_icon($networkmap["store_group"], true, "groups_small", "" , false); $list[] = $row; } diff --git a/pandora_console/operation/agentes/networkmap.dinamic.php b/pandora_console/operation/agentes/networkmap.dinamic.php index 2f8d2849de..a51d659a48 100755 --- a/pandora_console/operation/agentes/networkmap.dinamic.php +++ b/pandora_console/operation/agentes/networkmap.dinamic.php @@ -19,7 +19,7 @@ global $config; check_login (); -if (! check_acl ($config['id_user'], 0, "AR")) { +if (! check_acl ($config['id_user'], $store_group, "AR")) { db_pandora_audit("ACL Violation", "Trying to access node graph builder"); include ("general/noaccess.php"); diff --git a/pandora_console/operation/agentes/networkmap.groups.php b/pandora_console/operation/agentes/networkmap.groups.php index bb85d2ecb4..d21830cd02 100644 --- a/pandora_console/operation/agentes/networkmap.groups.php +++ b/pandora_console/operation/agentes/networkmap.groups.php @@ -19,7 +19,7 @@ global $config; check_login (); -if (! check_acl ($config['id_user'], 0, "AR")) { +if (! check_acl ($config['id_user'], $store_group, "AR")) { db_pandora_audit("ACL Violation", "Trying to access node graph builder"); include ("general/noaccess.php"); diff --git a/pandora_console/operation/agentes/networkmap.php b/pandora_console/operation/agentes/networkmap.php index a7975bc167..8b9de395c0 100644 --- a/pandora_console/operation/agentes/networkmap.php +++ b/pandora_console/operation/agentes/networkmap.php @@ -66,35 +66,44 @@ if ($add_networkmap) { $font_size = 12; $text_filter = ''; $dont_show_subgroups = false; + $store_group = 0; $group = 0; $module_group = 0; $center = 0; $name = $activeTab; + $show_snmp_modules = 0; + $l2_network = 0; $check = db_get_value('name', 'tnetwork_map', 'name', $name); $sql = db_get_value_filter('COUNT(name)', 'tnetwork_map', array('name' => "%$name")); - if ($check) { - $id_networkmap = networkmap_create_networkmap("($sql) ".$name, - $activeTab, $layout, $nooverlap, $simple, $regen, - $font_size, $group, $module_group, $depth, $modwithalerts, - $hidepolicymodules, $zoom, $ranksep, $center, $text_filter, - $dont_show_subgroups); + $values = array( + 'name' => ($check ? "($sql) $name" : $name), + 'type' => $activeTab, + 'layout' => $layout, + 'nooverlap' => $nooverlap, + 'simple' => $simple, + 'regenerate' => $regen, + 'font_size' => $font_size, + 'store_group' => $store_group, + 'id_group' => $group, + 'id_module_group' => $module_group, + 'depth' => $depth, + 'only_modules_with_alerts' => $modwithalerts, + 'hide_policy_modules' => $hidepolicymodules, + 'zoom' => $zoom, + 'distance_nodes' => $ranksep, + 'text_filter' => $text_filter, + 'dont_show_subgroups' => $dont_show_subgroups, + 'center' => $center, + 'show_snmp_modules' => $show_snmp_modules, + 'l2_network' => $l2_network + ); + $id_networkmap = networkmap_create_networkmap($values); - $message = ui_print_result_message ($id_networkmap, - __('Network map created successfully'), - __('Could not create network map'), '', true); - } - else { - $id_networkmap = networkmap_create_networkmap($name, $activeTab, - $layout, $nooverlap, $simple, $regen, $font_size, $group, - $module_group, $depth, $modwithalerts, $hidepolicymodules, - $zoom, $ranksep, $center, $text_filter, $dont_show_subgroups); - - $message = ui_print_result_message ($id_networkmap, - __('Network map created successfully'), - __('Could not create network map'), '', true); - } + $message = ui_print_result_message ($id_networkmap, + __('Network map created successfully'), + __('Could not create network map'), '', true); } if ($save_networkmap || $update_networkmap) { @@ -112,6 +121,7 @@ if ($save_networkmap || $update_networkmap) { $font_size = (int) get_parameter ('font_size', 12); $text_filter = get_parameter ('text_filter', ''); $dont_show_subgroups = (bool)get_parameter ('dont_show_subgroups', 0); + $store_group = (int) get_parameter ('store_group', 0); $group = (int) get_parameter ('group', 0); $module_group = (int) get_parameter ('module_group', 0); $center = (int) get_parameter ('center', 0); @@ -126,7 +136,8 @@ if ($save_networkmap || $update_networkmap) { 'nooverlap' => $nooverlap, 'simple' => $simple, 'regenerate' => $regen, - 'font_size' => $font_size, + 'font_size' => $font_size, + 'store_group' => $store_group, 'id_group' => $group, 'id_module_group' => $module_group, 'depth' => $depth, @@ -177,6 +188,7 @@ if (!$update_networkmap && !$save_networkmap && $id_networkmap != 0) { $font_size = $networkmap_data['font_size']; $text_filter = $networkmap_data['text_filter']; $dont_show_subgroups = $networkmap_data['dont_show_subgroups']; + $store_group = $networkmap_data['store_group']; $group = $networkmap_data['id_group']; $module_group = $networkmap_data['id_module_group']; $center = $networkmap_data['center']; @@ -252,6 +264,7 @@ if (check_acl ($config['id_user'], 0, "RW") || check_acl ($config['id_user'], 0, 'tab=' . $activeTab . '&' . 'save_networkmap=1&' . 'name=' . $name . '&' . + 'store_group=' . $store_group . '&' . 'group=' . $group . '&' . 'layout=' . $layout . '&' . 'nooverlap=' . $nooverlap . '&' . @@ -328,84 +341,88 @@ $layout_array = array ( $options_form = '