From fe863f61df975987768683610570b939279bec9f Mon Sep 17 00:00:00 2001 From: mdtrooper Date: Mon, 8 Feb 2016 13:47:46 +0100 Subject: [PATCH] Working in the code of new networkmaps. --- pandora_console/include/class/Map.class.php | 49 ++++++-- .../include/class/Networkmap.class.php | 112 +++++++++++++++++- pandora_console/include/constants.php | 4 + pandora_console/include/functions_maps.php | 48 -------- .../include/javascript/map/MapController.js | 4 +- pandora_console/operation/maps/networkmap.php | 20 +++- 6 files changed, 173 insertions(+), 64 deletions(-) diff --git a/pandora_console/include/class/Map.class.php b/pandora_console/include/class/Map.class.php index 951f5e3088..ee227f678c 100644 --- a/pandora_console/include/class/Map.class.php +++ b/pandora_console/include/class/Map.class.php @@ -22,31 +22,60 @@ */ abstract class Map { + protected $status = STATUS_OK; + protected $id = null; protected $type = null; protected $subtype = null; + protected $id_group = null; + + protected $nodes = null; protected $requires_js = null; public function __construct($id) { $this->id = $id; - $this->loadDB(); + if (!$this->loadDB()) { + $this->status = STATUS_ERROR; + } + else { + $this->requires_js = array(); + $this->requires_js[] = "include/javascript/d3.3.5.14.js"; + $this->requires_js[] = "include/javascript/map/MapController.js"; + } + } + + protected function processDBValues($dbValues) { + $this->type = (int)$dbValues['type']; + $this->subtype = (int)$dbValues['subtype']; - $this->requires_js = array(); - $this->requires_js[] = "include/javascript/d3.3.5.14.js"; - $this->requires_js[] = "include/javascript/map/MapController.js"; + $this->id_group = (int)$dbValues['id_group']; + + html_debug(111); } private function loadDB() { $row = db_get_row_filter('tmap', array('id' => $this->id)); - $this->type = $row['type']; - $this->subtype = $row['subtype']; + if (empty($row)) + return false; + + switch (get_class($this)) { + case 'Networkmap': + Networkmap::processDBValues($row); + break; + case 'NetworkmapEnterprise': + NetworkmapEnterprise::processDBValues($row); + break; + default: + $this->processDBValues($row); + break; + } } - abstract function print_js_init(); + abstract function printJSInit(); public function show() { @@ -62,7 +91,11 @@ abstract class Map { print_js_init(); + $this->printJSInit(); + } + + public function getType() { + return $this->type; } } ?> diff --git a/pandora_console/include/class/Networkmap.class.php b/pandora_console/include/class/Networkmap.class.php index 47fb1b6888..1f20fb8519 100644 --- a/pandora_console/include/class/Networkmap.class.php +++ b/pandora_console/include/class/Networkmap.class.php @@ -21,18 +21,128 @@ * @subpackage Networkmap */ +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"); + class Networkmap extends Map { + protected $show_snmp_modules = false; + public function __construct($id) { parent::__construct($id); $this->requires_js[] = "include/javascript/map/NetworkmapController.js"; } + public function processDBValues($dbValues) { + $filter = json_decode($dbValues, true); + + $this->show_snmp_modules = true; + + parent::processDBValues($dbValues); + } + + protected function generateDot() { + // TODO + } + + protected function temp_parseParameters_generateDot() { + $return = array(); + + $return['id_group'] = $this->id_group; + $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; + $return['l2_network_interfaces'] = null; + $return['ip_mask'] = null; + $return['dont_show_subgroups'] = null; + $return['old_mode'] = null; + $return['filter'] = null; + $return['simple'] = 0; // HARD CODED + + 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']); + + + $filename_dot = sys_get_temp_dir() . "/networkmap_" . $parameters['filter']; + if ($parameters['simple']) { + $filename_dot .= "_simple"; + } + if ($nooverlap) { + $filename_dot .= "_nooverlap"; + } + $filename_dot .= "_" . $id . ".dot"; + + file_put_contents($filename_dot, $graph); + + $filename_plain = sys_get_temp_dir() . "/plain.txt"; + + $cmd = "$filter -Tplain -o " . $filename_plain . " " . + $filename_dot; + + system ($cmd); + + unlink($filename_dot); + + $nodes = networkmap_enterprise_loadfile($id, $filename_plain, + $relation_nodes, $graph, $l2_network_interfaces); + //~ html_debug_print($graph); + //~ html_debug_print($nodes); + //~ html_debug_print($relation_nodes); + + // ----- END DEPRECATED CODE-------------------------------- + } + } + public function show() { + $this->getNodes(); parent::show(); } - public function print_js_init() { + public function printJSInit() { echo "

Networkmap

"; ?>