WIP: NetworkMap class

Former-commit-id: 888621c19262397298ac934e26e55a0b0ab218ec
This commit is contained in:
fbsanchez 2019-03-12 18:17:18 +01:00
parent c91c79a735
commit 1bc326c00c
6 changed files with 43 additions and 26 deletions

View File

@ -38,13 +38,6 @@ define('SOURCE_GROUP', 0);
define('SOURCE_TASK', 1); define('SOURCE_TASK', 1);
define('SOURCE_NETWORK', 2); define('SOURCE_NETWORK', 2);
define('LAYOUT_CIRCULAR', 0);
define('LAYOUT_FLAT', 1);
define('LAYOUT_RADIAL', 2);
define('LAYOUT_SPRING1', 3);
define('LAYOUT_SPRING2', 4);
/** /**
* Manage networkmaps in Pandora FMS * Manage networkmaps in Pandora FMS
*/ */
@ -625,15 +618,16 @@ class NetworkMap
$filename_dot .= '_nooverlap'; $filename_dot .= '_nooverlap';
} }
$filename_dot .= '_'.$this->idMap.'.dot'; $filename_dot .= uniqid().'_'.$this->idMap.'.dot';
file_put_contents($filename_dot, $this->dotGraph); file_put_contents($filename_dot, $this->dotGraph);
$plain_file = 'plain'.uniqid().'.txt';
switch (PHP_OS) { switch (PHP_OS) {
case 'WIN32': case 'WIN32':
case 'WINNT': case 'WINNT':
case 'Windows': case 'Windows':
$filename_plain = sys_get_temp_dir().'\\plain.txt'; $filename_plain = sys_get_temp_dir().'\\'.$plain_file;
$cmd = io_safe_output( $cmd = io_safe_output(
$config['graphviz_bin_dir'].'\\'.$filter.'.exe -Tplain -o '.$filename_plain.' '.$filename_dot $config['graphviz_bin_dir'].'\\'.$filter.'.exe -Tplain -o '.$filename_plain.' '.$filename_dot
@ -641,13 +635,22 @@ class NetworkMap
break; break;
default: default:
$filename_plain = sys_get_temp_dir().'/plain.txt'; $filename_plain = sys_get_temp_dir().'/'.$plain_file;
$cmd = $filter.' -Tplain -o '.$filename_plain.' '.$filename_dot; $cmd = $filter.' -Tplain -o '.$filename_plain.' '.$filename_dot;
break; break;
} }
$r = system($cmd); $retval = 0;
$r = system($cmd, $retval);
if ($retval != 0) {
ui_print_error_message(
__('Failed to generate dotmap, please select different layout schema')
);
$this->graph = networkmap_process_networkmap($this->idMap);
return;
}
unlink($filename_dot); unlink($filename_dot);

View File

@ -535,6 +535,20 @@ define('MAP_GENERATION_RADIAL', 2);
define('MAP_GENERATION_SPRING1', 3); define('MAP_GENERATION_SPRING1', 3);
define('MAP_GENERATION_SPRING2', 4); define('MAP_GENERATION_SPRING2', 4);
// Algorithm: Circo.
define('LAYOUT_CIRCULAR', 0);
// Algorithm: Dot.
define('LAYOUT_FLAT', 1);
// Algorithm: Twopi.
define('LAYOUT_RADIAL', 2);
// Algorithm: Neato.
define('LAYOUT_SPRING1', 3);
// Algorithm: Fdp.
define('LAYOUT_SPRING2', 4);
// Extra: radial dynamic.
define('LAYOUT_RADIAL_DYNAMIC', 6);
define('MAP_SOURCE_GROUP', 0); define('MAP_SOURCE_GROUP', 0);
define('MAP_SOURCE_IP_MASK', 1); define('MAP_SOURCE_IP_MASK', 1);

View File

@ -329,7 +329,7 @@ function networkmap_generate_dot(
$filter[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$text_filter.'%")'; $filter[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$text_filter.'%")';
} }
if ($group >= 1) { if ($group >= 0 && empty($ip_mask)) {
if ($dont_show_subgroups) { if ($dont_show_subgroups) {
$filter['id_grupo'] = $group; $filter['id_grupo'] = $group;
} else { } else {

View File

@ -57,27 +57,27 @@ function networkmap_process_networkmap($id=0)
$pure = (int) get_parameter('pure', 0); $pure = (int) get_parameter('pure', 0);
switch ($networkmap['generation_method']) { switch ($networkmap['generation_method']) {
case 0: case LAYOUT_CIRCULAR:
$filter = 'circo'; $filter = 'circo';
$layout = 'circular'; $layout = 'circular';
break; break;
case 1: case LAYOUT_FLAT:
$filter = 'dot'; $filter = 'dot';
$layout = 'flat'; $layout = 'flat';
break; break;
case 2: case LAYOUT_RADIAL:
$filter = 'twopi'; $filter = 'twopi';
$layout = 'radial'; $layout = 'radial';
break; break;
case 3: case LAYOUT_SPRING1:
$filter = 'neato'; $filter = 'neato';
$layout = 'spring1'; $layout = 'spring1';
break; break;
case 4: case LAYOUT_SPRING2:
$filter = 'fdp'; $filter = 'fdp';
$layout = 'spring2'; $layout = 'spring2';
break; break;

View File

@ -272,31 +272,31 @@ if ($new_networkmap || $save_networkmap) {
switch ($method) { switch ($method) {
case 'twopi': case 'twopi':
$values['generation_method'] = 2; $values['generation_method'] = LAYOUT_RADIAL;
break; break;
case 'dot': case 'dot':
$values['generation_method'] = 1; $values['generation_method'] = LAYOUT_FLAT;
break; break;
case 'circo': case 'circo':
$values['generation_method'] = 0; $values['generation_method'] = LAYOUT_CIRCULAR;
break; break;
case 'neato': case 'neato':
$values['generation_method'] = 3; $values['generation_method'] = LAYOUT_SPRING1;
break; break;
case 'fdp': case 'fdp':
$values['generation_method'] = 4; $values['generation_method'] = LAYOUT_SPRING2;
break; break;
case 'radial_dinamic': case 'radial_dinamic':
$values['generation_method'] = 6; $values['generation_method'] = LAYOUT_RADIAL_DYNAMIC;
break; break;
default: default:
$values['generation_method'] = 2; $values['generation_method'] = LAYOUT_RADIAL;
break; break;
} }
@ -353,12 +353,12 @@ if ($new_networkmap || $save_networkmap) {
define('_id_', $id); define('_id_', $id);
if ($result !== false) { if ($result !== false) {
$tab = 'view';
if ($values['generation_method'] == 6) { if ($values['generation_method'] == 6) {
$tab = 'r_dinamic'; $tab = 'r_dinamic';
define('_activeTab_', 'radial_dynamic'); define('_activeTab_', 'radial_dynamic');
} }
$tab = 'view';
header('Location: '.$_SERVER['HTTP_REFERER'].'&tab='.$tab.'&id_networkmap='.$id); header('Location: '.$_SERVER['HTTP_REFERER'].'&tab='.$tab.'&id_networkmap='.$id);
} }
} }

View File

@ -890,7 +890,7 @@ if ($networkmap === false) {
include_once $config['homedir'].'/include/class/NetworkMap.class.php'; include_once $config['homedir'].'/include/class/NetworkMap.class.php';
echo 'generado por clase';
$map_manager = new NetworkMap( $map_manager = new NetworkMap(
[ 'id_map' => $networkmap['id']] [ 'id_map' => $networkmap['id']]
); );