networkmap functions ligth cleanup

Former-commit-id: 51d7eaa9dee0d58eb8e01f4043149766145df20d
This commit is contained in:
fbsanchez 2019-03-21 18:38:31 +01:00
parent 95d2259236
commit 8fd3f7788a
1 changed files with 0 additions and 369 deletions

View File

@ -1957,375 +1957,6 @@ function networkmap_links_to_js_links(
}
function networkmap_write_js_array($id, $nodes_and_relations=[], $map_dash_details=[])
{
global $config;
db_clean_cache();
$ent_installed = (int) enterprise_installed();
$networkmap = db_get_row('tmap', 'id', $id);
$networkmap['filter'] = json_decode($networkmap['filter'], true);
// Hardcoded
$networkmap['filter']['holding_area'] = [
500,
500,
];
echo "\n";
echo "////////////////////////////////////////////////////////////////////\n";
echo "// VARS FROM THE DB\n";
echo "////////////////////////////////////////////////////////////////////\n";
echo "\n";
echo "var url_background_grid = '".ui_get_full_url(
'images/background_grid.png'
)."'\n";
echo 'var networkmap_id = '.$id.";\n";
if (!empty($map_dash_details)) {
echo 'var x_offs = '.$map_dash_details['x_offs'].";\n";
echo 'var y_offs = '.$map_dash_details['y_offs'].";\n";
echo 'var z_dash = '.$map_dash_details['z_dash'].";\n";
} else {
echo "var x_offs = null;\n";
echo "var y_offs = null;\n";
echo "var z_dash = null;\n";
}
echo 'var networkmap_refresh_time = 1000 * '.$networkmap['source_period'].";\n";
echo 'var networkmap_center = [ '.$networkmap['center_x'].', '.$networkmap['center_y']."];\n";
echo 'var networkmap_dimensions = [ '.$networkmap['width'].', '.$networkmap['height']."];\n";
echo 'var enterprise_installed = '.$ent_installed.";\n";
echo 'var node_radius = '.$networkmap['filter']['node_radius'].";\n";
echo 'var networkmap_holding_area_dimensions = '.json_encode($networkmap['filter']['holding_area']).";\n";
echo "var networkmap = {'nodes': [], 'links': []};\n";
$nodes = $nodes_and_relations['nodes'];
if (empty($nodes)) {
$nodes = [];
}
$count_item_holding_area = 0;
$count = 0;
$nodes_graph = [];
foreach ($nodes as $key => $node) {
$style = json_decode($node['style'], true);
$node['style'] = json_decode($node['style'], true);
// Only agents can be show
if (isset($node['type'])) {
if ($node['type'] == 1) {
continue;
}
} else {
$node['type'] = '';
}
$item = networkmap_db_node_to_js_node(
$node,
$count,
$count_item_holding_area
);
if ($item['deleted']) {
continue;
}
echo 'networkmap.nodes.push('.json_encode($item).");\n";
$nodes_graph[$item['id']] = $item;
}
$relations = $nodes_and_relations['relations'];
if ($relations === false) {
$relations = [];
}
// Clean the relations and transform the module relations into
// interfaces
networkmap_clean_relations_for_js($relations);
$links_js = networkmap_links_to_js_links($relations, $nodes_graph);
$array_aux = [];
foreach ($links_js as $link_js) {
if ($link_js['deleted']) {
unset($links_js[$link_js['id']]);
}
if ($link_js['target'] == -1) {
unset($links_js[$link_js['id']]);
}
if ($link_js['source'] == -1) {
unset($links_js[$link_js['id']]);
}
if ($link_js['target'] == $link_js['source']) {
unset($links_js[$link_js['id']]);
}
if ($link_js['arrow_start'] == 'module' && $link_js['arrow_end'] == 'module') {
echo 'networkmap.links.push('.json_encode($link_js).");\n";
$array_aux[$link_js['id_agent_start']] = 1;
unset($links_js[$link_js['id']]);
}
}
foreach ($links_js as $link_js) {
if (($link_js['id_agent_end'] === 0) && $array_aux[$link_js['id_agent_start']] === 1) {
continue;
} else {
echo 'networkmap.links.push('.json_encode($link_js).");\n";
}
}
echo "\n";
echo "\n";
echo "////////////////////////////////////////////////////////////////////\n";
echo "// INTERFACE STATUS COLORS\n";
echo "////////////////////////////////////////////////////////////////////\n";
$module_color_status = [];
$module_color_status[] = [
'status_code' => AGENT_MODULE_STATUS_NORMAL,
'color' => COL_NORMAL,
];
$module_color_status[] = [
'status_code' => AGENT_MODULE_STATUS_CRITICAL_BAD,
'color' => COL_CRITICAL,
];
$module_color_status[] = [
'status_code' => AGENT_MODULE_STATUS_WARNING,
'color' => COL_WARNING,
];
$module_color_status[] = [
'status_code' => AGENT_STATUS_ALERT_FIRED,
'color' => COL_ALERTFIRED,
];
$module_color_status_unknown = COL_UNKNOWN;
echo 'var module_color_status = '.json_encode($module_color_status).";\n";
echo "var module_color_status_unknown = '".$module_color_status_unknown."';\n";
echo "\n";
echo "\n";
echo "////////////////////////////////////////////////////////////////////\n";
echo "// Other vars\n";
echo "////////////////////////////////////////////////////////////////////\n";
echo "var translation_none = '".__('None')."';\n";
echo "var dialog_node_edit_title = '".__('Edit node %s')."';\n";
echo "var holding_area_title = '".__('Holding Area')."';\n";
echo "var edit_menu = '".__('Show details and options')."';\n";
echo "var interface_link_add = '".__('Add a interface link')."';\n";
echo "var set_parent_link = '".__('Set parent interface')."';\n";
echo "var set_as_children_menu = '".__('Set as children')."';\n";
echo "var set_parent_menu = '".__('Set parent')."';\n";
echo "var abort_relationship_menu = '".__('Abort the action of set relationship')."';\n";
echo "var delete_menu = '".__('Delete')."';\n";
echo "var add_node_menu = '".__('Add node')."';\n";
echo "var set_center_menu = '".__('Set center')."';\n";
echo "var refresh_menu = '".__('Refresh')."';\n";
echo "var refresh_holding_area_menu = '".__('Refresh Holding area')."';\n";
echo "var ok_button = '".__('Proceed')."';\n";
echo "var message_to_confirm = '".__('Resetting the map will delete all customizations you have done, including manual relationships between elements, new items, etc.')."';\n";
echo "var warning_message = '".__('WARNING')."';\n";
echo "var ok_button = '".__('Proceed')."';\n";
echo "var cancel_button = '".__('Cancel')."';\n";
echo "var restart_map_menu = '".__('Restart map')."';\n";
echo "var abort_relationship_interface = '".__('Abort the interface relationship')."';\n";
echo "var abort_relationship_menu = '".__('Abort the action of set relationship')."';\n";
echo "\n";
echo "\n";
}
function networkmap_loadfile(
$id=0,
$file='',
&$relations_param,
$graph
) {
global $config;
$height_map = 200;
if ((int) $id > 0) {
$height_map = db_get_value('height', 'tmap', 'id', $id);
}
$networkmap_nodes = [];
$relations = [];
$other_file = file($file);
// Remove the graph head
$graph = preg_replace('/^graph .*/', '', $graph);
// Cut in nodes the graph
$graph = explode(']', $graph);
$ids = [];
foreach ($graph as $node) {
$line = str_replace("\n", ' ', $node);
if (preg_match('/([0-9]+) \[.*tooltip.*id_module=([0-9]+)/', $line, $match) != 0) {
$ids[$match[1]] = [
'type' => 'module',
'id_module' => $match[2],
];
} else if (preg_match('/([0-9]+) \[.*tooltip.*id_agent=([0-9]+)/', $line, $match) != 0) {
$ids[$match[1]] = [
'type' => 'agent',
'id_agent' => $match[2],
];
}
}
foreach ($other_file as $key => $line) {
// clean line a long spaces for one space caracter
$line = preg_replace('/[ ]+/', ' ', $line);
$data = [];
if (preg_match('/^node.*$/', $line) != 0) {
$items = explode(' ', $line);
$node_id = $items[1];
// 200 for larger maps
$node_x = ($items[2] * 100);
$node_y = ($height_map - $items[3] * 100);
// 200 for larger maps
$data['id'] = $node_id;
$data['text'] = '';
$data['image'] = '';
$data['width'] = 10;
$data['height'] = 10;
$data['id_agent'] = 0;
if (preg_match('/<img src=\"([^\"]*)\"/', $line, $match) == 1) {
$image = $match[1];
$data['shape'] = 'image';
$data['image'] = $image;
$size = getimagesize($config['homedir'].'/'.$image);
$data['width'] = $size[0];
$data['height'] = $size[1];
$data['id_agent'] = 0;
$data['id_module'] = 0;
$data['type'] = '';
$product_name = get_product_name();
if (preg_match("/$product_name/", $line) != 0) {
$data['text'] = $product_name;
$data['id_agent'] = 0;
} else {
$data['type'] = $ids[$node_id]['type'];
switch ($ids[$node_id]['type']) {
case 'module':
$data['id_module'] = $ids[$node_id]['id_module'];
$data['id_agent'] = modules_get_agentmodule_agent($ids[$node_id]['id_module']);
$text = modules_get_agentmodule_name($data['id_module']);
$text = ui_print_truncate_text(
$text,
'agent_medium',
false,
true,
false,
'...',
false
);
$data['text'] = $text;
$data['id_agent'] = db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $data['id_module']);
break;
case 'agent':
$data['id_agent'] = $ids[$node_id]['id_agent'];
$text = agents_get_alias($ids[$node_id]['id_agent']);
$text = ui_print_truncate_text(
$text,
'agent_medium',
false,
true,
false,
'...',
false
);
$data['text'] = $text;
$data['parent'] = db_get_value('id_parent', 'tagente', 'id_agente', $data['id_agent']);
break;
}
}
} else {
$data['shape'] = 'wtf';
}
$data['coords'] = [
$node_x,
$node_y,
];
if (strpos($node_id, 'transp_') !== false) {
// removed the transparent nodes
} else {
$networkmap_nodes[$node_id] = $data;
}
} else if (preg_match('/^edge.*$/', $line) != 0) {
$items = explode(' ', $line);
$line_orig = $items[2];
$line_dest = $items[1];
// $relations[$line_dest] = $line_orig;
$relations[] = [
'orig' => $line_orig,
'dest' => $line_dest,
];
}
}
$relations_param = [];
foreach ($relations as $rel) {
if (strpos($rel['orig'], 'transp_') !== false) {
// removed the transparent nodes
continue;
}
if (strpos($rel['dest'], 'transp_') !== false) {
// removed the transparent nodes
continue;
}
$row = [
'id_child' => $rel['orig'],
'child_type' => $networkmap_nodes[$rel['orig']]['type'],
'id_parent' => $rel['dest'],
'parent_type' => $networkmap_nodes[$rel['dest']]['type'],
];
$relations_param[] = $row;
}
return [
'nodes' => $networkmap_nodes,
'relations' => $relations_param,
];
}
function get_status_color_module_networkmap($id_agente_modulo)
{
$status = modules_get_agentmodule_status($id_agente_modulo);