2016-02-04 12:06:45 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
// Pandora FMS - http://pandorafms.com
|
|
|
|
// ==================================================
|
|
|
|
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
|
|
|
|
// Please see http://pandorafms.org for full contribution list
|
|
|
|
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public License
|
|
|
|
// as published by the Free Software Foundation; version 2
|
|
|
|
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @package Include
|
|
|
|
* @subpackage Networkmap
|
|
|
|
*/
|
|
|
|
|
2016-02-08 13:47:46 +01:00
|
|
|
require_once ('include/functions_os.php');
|
|
|
|
require_once ('include/functions_networkmap.php');
|
|
|
|
enterprise_include("include/functions_networkmap_enterprise.php");
|
|
|
|
|
|
|
|
require_once("include/class/Map.class.php");
|
|
|
|
|
2016-02-04 12:06:45 +01:00
|
|
|
class Networkmap extends Map {
|
2016-02-08 13:47:46 +01:00
|
|
|
protected $show_snmp_modules = false;
|
2016-02-09 13:52:03 +01:00
|
|
|
protected $source_group = 0;
|
|
|
|
protected $source_ip_mask = "";
|
|
|
|
protected $show_groups = false;
|
|
|
|
protected $show_module_groups = false;
|
|
|
|
protected $filter_text = "";
|
2016-02-08 13:47:46 +01:00
|
|
|
|
2016-02-04 12:06:45 +01:00
|
|
|
public function __construct($id) {
|
|
|
|
parent::__construct($id);
|
2016-02-04 16:59:40 +01:00
|
|
|
|
2016-02-05 15:53:59 +01:00
|
|
|
$this->requires_js[] = "include/javascript/map/NetworkmapController.js";
|
2016-02-04 12:06:45 +01:00
|
|
|
}
|
|
|
|
|
2016-02-08 13:47:46 +01:00
|
|
|
public function processDBValues($dbValues) {
|
2016-02-09 13:52:03 +01:00
|
|
|
$filter = json_decode($dbValues['filter'], true);
|
2016-02-08 13:47:46 +01:00
|
|
|
|
2016-02-09 13:52:03 +01:00
|
|
|
$this->show_snmp_modules = $filter['show_snmp_modules'];
|
|
|
|
$this->filter_text = $filter["text"];
|
|
|
|
|
|
|
|
switch ($dbValues['source_data']) {
|
|
|
|
case MAP_SOURCE_GROUP:
|
|
|
|
$this->source_group = $dbValues['source'];
|
|
|
|
$this->source_ip_mask = "";
|
|
|
|
break;
|
|
|
|
case MAP_SOURCE_IP_MASK:
|
|
|
|
$this->source_group = $dbValues['source'];
|
|
|
|
$this->source_ip_mask = "";
|
|
|
|
break;
|
|
|
|
}
|
2016-02-08 13:47:46 +01:00
|
|
|
|
|
|
|
parent::processDBValues($dbValues);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function generateDot() {
|
|
|
|
// TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function temp_parseParameters_generateDot() {
|
|
|
|
$return = array();
|
|
|
|
|
2016-02-09 13:52:03 +01:00
|
|
|
$return['id_group'] = $this->source_group;
|
2016-02-08 13:47:46 +01:00
|
|
|
$return['simple'] = 12; // HARD CODED
|
|
|
|
$return['font_size'] = null;
|
|
|
|
$return['layout'] = null;
|
|
|
|
$return['nooverlap'] = false; // HARD CODED
|
|
|
|
$return['zoom'] = 1; // HARD CODED
|
|
|
|
$return['ranksep'] = 2.5; // HARD CODED
|
|
|
|
$return['center'] = 0; // HARD CODED
|
|
|
|
$return['regen'] = 0; // HARD CODED
|
|
|
|
$return['pure'] = 0; // HARD CODED
|
|
|
|
$return['id'] = $this->id;
|
|
|
|
$return['show_snmp_modules'] = $this->show_snmp_modules;
|
2016-02-09 13:52:03 +01:00
|
|
|
$return['l2_network_interfaces'] = true; // HARD CODED
|
|
|
|
$return['ip_mask'] = $this->source_ip_mask;
|
|
|
|
$return['dont_show_subgroups'] = !$this->show_groups;
|
|
|
|
$return['old_mode'] = false;
|
|
|
|
$return['filter'] = $this->filter_text;
|
2016-02-08 13:47:46 +01:00
|
|
|
|
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getNodes() {
|
|
|
|
if (empty($this->nodes)) {
|
|
|
|
|
|
|
|
// ----- INI DEPRECATED CODE--------------------------------
|
|
|
|
// I hope this code to change for any some better and
|
|
|
|
// rewrote the old function.
|
|
|
|
|
|
|
|
$parameters = $this->temp_parseParameters_generateDot();
|
|
|
|
|
|
|
|
// Generate dot file
|
|
|
|
$graph = networkmap_generate_dot (__('Pandora FMS'),
|
|
|
|
$parameters['id_group'],
|
|
|
|
$parameters['simple'],
|
|
|
|
$parameters['font_size'],
|
|
|
|
$parameters['layout'],
|
|
|
|
$parameters['nooverlap'],
|
|
|
|
$parameters['zoom'],
|
|
|
|
$parameters['ranksep'],
|
|
|
|
$parameters['center'],
|
|
|
|
$parameters['regen'],
|
|
|
|
$parameters['pure'],
|
|
|
|
$parameters['id'],
|
|
|
|
$parameters['show_snmp_modules'],
|
|
|
|
false, //cut_names
|
|
|
|
true, // relative
|
|
|
|
'',
|
|
|
|
$parameters['l2_network_interfaces'],
|
|
|
|
$parameters['ip_mask'],
|
|
|
|
$parameters['dont_show_subgroups'],
|
|
|
|
false,
|
|
|
|
null,
|
|
|
|
$parameters['old_mode']);
|
|
|
|
|
|
|
|
|
2016-02-09 13:52:03 +01:00
|
|
|
|
|
|
|
$filename_dot = sys_get_temp_dir() . "/networkmap" . uniqid() . ".dot";
|
2016-02-08 13:47:46 +01:00
|
|
|
|
|
|
|
file_put_contents($filename_dot, $graph);
|
|
|
|
|
|
|
|
$filename_plain = sys_get_temp_dir() . "/plain.txt";
|
|
|
|
|
2016-02-09 13:52:03 +01:00
|
|
|
switch ($this->generation_method) {
|
|
|
|
case MAP_GENERATION_CIRCULAR:
|
|
|
|
$graphviz_command = "circo";
|
|
|
|
break;
|
|
|
|
case MAP_GENERATION_PLANO:
|
|
|
|
$graphviz_command = "dot";
|
|
|
|
break;
|
|
|
|
case MAP_GENERATION_RADIAL:
|
|
|
|
$graphviz_command = "twopi";
|
|
|
|
break;
|
|
|
|
case MAP_GENERATION_SPRING1:
|
|
|
|
$graphviz_command = "spring1";
|
|
|
|
break;
|
|
|
|
case MAP_GENERATION_SPRING2:
|
|
|
|
$graphviz_command = "spring2";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2016-02-10 14:01:10 +01:00
|
|
|
$cmd = "$graphviz_command " .
|
|
|
|
"-Tpng -o /tmp/caca.png -Tplain -o " . $filename_plain . " " .
|
2016-02-08 13:47:46 +01:00
|
|
|
$filename_dot;
|
|
|
|
|
|
|
|
system ($cmd);
|
|
|
|
|
|
|
|
unlink($filename_dot);
|
|
|
|
|
2016-02-10 14:01:10 +01:00
|
|
|
html_debug($cmd);
|
2016-02-09 13:52:03 +01:00
|
|
|
html_debug($filename_plain);
|
2016-02-10 14:01:10 +01:00
|
|
|
html_debug(file_get_contents($filename_plain), true);
|
2016-02-09 13:52:03 +01:00
|
|
|
|
|
|
|
$nodes = networkmap_enterprise_loadfile($this->id,
|
|
|
|
$filename_plain,
|
|
|
|
$relation_nodes, $graph,
|
|
|
|
$parameters['l2_network_interfaces']);
|
2016-02-08 13:47:46 +01:00
|
|
|
//~ html_debug_print($graph);
|
|
|
|
//~ html_debug_print($nodes);
|
|
|
|
//~ html_debug_print($relation_nodes);
|
|
|
|
|
2016-02-10 14:01:10 +01:00
|
|
|
// debug image
|
|
|
|
// Read image path, convert to base64 encoding
|
|
|
|
$imgData = base64_encode(file_get_contents("/tmp/caca.png"));
|
|
|
|
|
|
|
|
// Format the image SRC: data:{mime};base64,{data};
|
|
|
|
$src = 'data: '.mime_content_type("/tmp/caca.png").';base64,'.$imgData;
|
|
|
|
|
|
|
|
// Echo out a sample image
|
|
|
|
echo '<img src="'.$src.'">';
|
|
|
|
|
2016-02-08 13:47:46 +01:00
|
|
|
// ----- END DEPRECATED CODE--------------------------------
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-02-04 12:06:45 +01:00
|
|
|
public function show() {
|
2016-02-08 13:47:46 +01:00
|
|
|
$this->getNodes();
|
2016-02-09 13:52:03 +01:00
|
|
|
|
2016-02-04 12:06:45 +01:00
|
|
|
parent::show();
|
|
|
|
}
|
2016-02-04 16:59:40 +01:00
|
|
|
|
2016-02-08 13:47:46 +01:00
|
|
|
public function printJSInit() {
|
2016-02-04 16:59:40 +01:00
|
|
|
echo "<h1>Networkmap</h1>";
|
|
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
|
|
$(function() {
|
|
|
|
// map = new js_networkmap();
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
<?php
|
|
|
|
}
|
2016-02-04 12:06:45 +01:00
|
|
|
}
|
|
|
|
?>
|