Merge branch 'ent-3595-discovery-fase-2' of https://brutus.artica.lan:8081/artica/pandorafms into ent-3595-discovery-fase-2
Former-commit-id: 4e097a7169f1ecb05c843076b67f98f0ea1370af
This commit is contained in:
commit
c2033715a9
|
@ -28,9 +28,10 @@
|
||||||
|
|
||||||
require_once __DIR__.'/Wizard.main.php';
|
require_once __DIR__.'/Wizard.main.php';
|
||||||
require_once $config['homedir'].'/include/functions_users.php';
|
require_once $config['homedir'].'/include/functions_users.php';
|
||||||
|
require_once $config['homedir'].'/include/class/CustomNetScan.class.php';
|
||||||
|
require_once $config['homedir'].'/include/class/ManageNetScanScripts.class.php';
|
||||||
|
|
||||||
enterprise_include_once('include/class/CSVImportAgents.class.php');
|
enterprise_include_once('include/class/CSVImportAgents.class.php');
|
||||||
enterprise_include_once('include/class/CustomNetScan.class.php');
|
|
||||||
enterprise_include_once('include/class/ManageNetScanScripts.class.php');
|
|
||||||
enterprise_include_once('include/functions_hostdevices.php');
|
enterprise_include_once('include/functions_hostdevices.php');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,19 +127,19 @@ class HostDevices extends Wizard
|
||||||
'icon' => ENTERPRISE_DIR.'/images/wizard/csv.png',
|
'icon' => ENTERPRISE_DIR.'/images/wizard/csv.png',
|
||||||
'label' => __('Import CSV'),
|
'label' => __('Import CSV'),
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$buttons[] = [
|
$buttons[] = [
|
||||||
'url' => $this->url.'&mode=customnetscan',
|
'url' => $this->url.'&mode=customnetscan',
|
||||||
'icon' => ENTERPRISE_DIR.'/images/wizard/customnetscan.png',
|
'icon' => '/images/wizard/customnetscan.png',
|
||||||
'label' => __('Custom NetScan'),
|
'label' => __('Custom NetScan'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$buttons[] = [
|
$buttons[] = [
|
||||||
'url' => $this->url.'&mode=managenetscanscripts',
|
'url' => $this->url.'&mode=managenetscanscripts',
|
||||||
'icon' => ENTERPRISE_DIR.'/images/wizard/managenetscanscripts.png',
|
'icon' => '/images/wizard/managenetscanscripts.png',
|
||||||
'label' => __('Manage NetScan scripts'),
|
'label' => __('Manage NetScan scripts'),
|
||||||
];
|
];
|
||||||
}
|
|
||||||
|
|
||||||
$this->prepareBreadcrum(
|
$this->prepareBreadcrum(
|
||||||
[
|
[
|
||||||
|
@ -165,6 +166,7 @@ class HostDevices extends Wizard
|
||||||
);
|
);
|
||||||
return $csv_importer->runCSV();
|
return $csv_importer->runCSV();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($mode === 'customnetscan') {
|
if ($mode === 'customnetscan') {
|
||||||
$customnetscan_importer = new CustomNetScan(
|
$customnetscan_importer = new CustomNetScan(
|
||||||
|
@ -181,7 +183,6 @@ class HostDevices extends Wizard
|
||||||
);
|
);
|
||||||
return $managenetscanscript_importer->runManageNetScanScript();
|
return $managenetscanscript_importer->runManageNetScanScript();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ($mode == 'netscan') {
|
if ($mode == 'netscan') {
|
||||||
return $this->runNetScan();
|
return $this->runNetScan();
|
||||||
|
|
|
@ -26,7 +26,8 @@
|
||||||
* ============================================================================
|
* ============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('CLOUDWIZARD_AWS_DESCRIPTION', 'Discovery.Cloud.AWS.EC2');
|
// Begin.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Global Wizard generic class. Needs to be inherited.
|
* Global Wizard generic class. Needs to be inherited.
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 339 B |
Binary file not shown.
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 263 B |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -43,9 +43,15 @@ if ($progress_task_discovery) {
|
||||||
$id_task,
|
$id_task,
|
||||||
90,
|
90,
|
||||||
460,
|
460,
|
||||||
50,
|
30,
|
||||||
'#EA5434'
|
'#EA5434',
|
||||||
|
'%',
|
||||||
|
'',
|
||||||
|
'#FFFFFF',
|
||||||
|
0,
|
||||||
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
$result .= '</li>';
|
$result .= '</li>';
|
||||||
$result .= '<li><h1>'.__('Searching devices in').' red a scanear</h1></li>';
|
$result .= '<li><h1>'.__('Searching devices in').' red a scanear</h1></li>';
|
||||||
$result .= '<li>';
|
$result .= '<li>';
|
||||||
|
@ -53,9 +59,15 @@ if ($progress_task_discovery) {
|
||||||
$id_task.'_2',
|
$id_task.'_2',
|
||||||
30,
|
30,
|
||||||
460,
|
460,
|
||||||
50,
|
30,
|
||||||
'#2751E1'
|
'#2751E1',
|
||||||
|
'%',
|
||||||
|
'',
|
||||||
|
'#FFFFFF',
|
||||||
|
0,
|
||||||
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
$result .= '</li>';
|
$result .= '</li>';
|
||||||
$result .= '<li><h1>'.__('Summary').'</h1></li>';
|
$result .= '<li><h1>'.__('Summary').'</h1></li>';
|
||||||
$result .= '<li><span><b>'.__('Estimated').'</b>: total de host</span></li>';
|
$result .= '<li><span><b>'.__('Estimated').'</b>: total de host</span></li>';
|
||||||
|
|
|
@ -0,0 +1,758 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Extension to schedule tasks on Pandora FMS Console
|
||||||
|
*
|
||||||
|
* @category Wizard
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage Host&Devices
|
||||||
|
* @version 1.0.0
|
||||||
|
* @license See below
|
||||||
|
*
|
||||||
|
* ______ ___ _______ _______ ________
|
||||||
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2019 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 General Public License
|
||||||
|
* as published by the Free Software Foundation for 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.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once $config['homedir'].'/godmode/wizards/Wizard.main.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CustomNetScan. Host and devices child class.
|
||||||
|
*/
|
||||||
|
class CustomNetScan extends Wizard
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of pages to control breadcrum.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
public $MAXPAGES = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Labels for breadcrum.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $pageLabels = [
|
||||||
|
'Netscan Custom definition',
|
||||||
|
'Netscan Custom script',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param integer $page Page.
|
||||||
|
* @param array $breadcrum Breadcrum.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(int $page, array $breadcrum)
|
||||||
|
{
|
||||||
|
$this->url = ui_get_full_url(
|
||||||
|
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd'
|
||||||
|
);
|
||||||
|
$this->page = $page;
|
||||||
|
$this->breadcrum = $breadcrum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves and validates information given by user in NetScan wizard.
|
||||||
|
*
|
||||||
|
* @return boolean Data OK or not.
|
||||||
|
*/
|
||||||
|
public function parseNetScan()
|
||||||
|
{
|
||||||
|
if (isset($this->page) === true && $this->page === 0) {
|
||||||
|
// Check if we're updating a task.
|
||||||
|
$task_id = get_parameter('task', null);
|
||||||
|
|
||||||
|
if (isset($task_id) === true) {
|
||||||
|
// We're updating this task.
|
||||||
|
$task = db_get_row(
|
||||||
|
'trecon_task',
|
||||||
|
'id_rt',
|
||||||
|
$task_id
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($task !== false) {
|
||||||
|
$this->task = $task;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate response from page 0. No, not a bug, we're always 1 page
|
||||||
|
// from 'validation' page.
|
||||||
|
if (isset($this->page) === true && $this->page === 1) {
|
||||||
|
$task_id = get_parameter('task', null);
|
||||||
|
$taskname = get_parameter('taskname', '');
|
||||||
|
$comment = get_parameter('comment', '');
|
||||||
|
$server_id = get_parameter('id_recon_server', '');
|
||||||
|
$id_group = get_parameter('id_group', '');
|
||||||
|
$interval = get_parameter('interval', 0);
|
||||||
|
|
||||||
|
if (isset($task_id) === true) {
|
||||||
|
// We're updating this task.
|
||||||
|
$task = db_get_row(
|
||||||
|
'trecon_task',
|
||||||
|
'id_rt',
|
||||||
|
$task_id
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($task !== false) {
|
||||||
|
$this->task = $task;
|
||||||
|
}
|
||||||
|
} else if (isset($taskname) === true) {
|
||||||
|
// Avoid double creation.
|
||||||
|
$task = db_get_row_filter(
|
||||||
|
'trecon_task',
|
||||||
|
['name' => $taskname]
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($task !== false) {
|
||||||
|
$this->task = $task;
|
||||||
|
$this->msg = __('This task has been already defined. Please edit it or create a new one.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($task_id !== null
|
||||||
|
&& $taskname == null
|
||||||
|
&& $server_id == null
|
||||||
|
&& $id_group == null
|
||||||
|
&& $server == null
|
||||||
|
&& $datacenter == ''
|
||||||
|
&& $user == ''
|
||||||
|
&& $pass == ''
|
||||||
|
&& $encrypt == null
|
||||||
|
&& $interval == 0
|
||||||
|
) {
|
||||||
|
// Default values, no data received.
|
||||||
|
// User is accesing directly to this page.
|
||||||
|
if (users_is_admin() !== true && check_acl(
|
||||||
|
$config['id_usuario'],
|
||||||
|
$this->task['id_group'],
|
||||||
|
'PM'
|
||||||
|
) !== true
|
||||||
|
) {
|
||||||
|
$this->msg = __('You have no access to edit this task.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isset($this->task['id_rt']) === false) {
|
||||||
|
// Disabled 2 Implies wizard non finished.
|
||||||
|
$this->task['disabled'] = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($taskname == '') {
|
||||||
|
$this->msg = __('You must provide a task name.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($server_id == '') {
|
||||||
|
$this->msg = __('You must select a Discovery Server.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($id_group == '') {
|
||||||
|
$this->msg = __('You must select a valid group.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign fields.
|
||||||
|
$this->task['name'] = $taskname;
|
||||||
|
$this->task['description'] = $comment;
|
||||||
|
$this->task['id_recon_server'] = $server_id;
|
||||||
|
$this->task['id_group'] = $id_group;
|
||||||
|
$this->task['interval_sweep'] = $interval;
|
||||||
|
|
||||||
|
if (isset($this->task['id_rt']) === false) {
|
||||||
|
// Create.
|
||||||
|
$this->task['id_rt'] = db_process_sql_insert(
|
||||||
|
'trecon_task',
|
||||||
|
$this->task
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Update.
|
||||||
|
db_process_sql_update(
|
||||||
|
'trecon_task',
|
||||||
|
$this->task,
|
||||||
|
['id_rt' => $this->task['id_rt']]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate response from page 1.
|
||||||
|
if ($this->page == 2) {
|
||||||
|
$id_rt = get_parameter('task', -1);
|
||||||
|
|
||||||
|
$task = db_get_row(
|
||||||
|
'trecon_task',
|
||||||
|
'id_rt',
|
||||||
|
$id_rt
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($task !== false) {
|
||||||
|
$this->task = $task;
|
||||||
|
} else {
|
||||||
|
$this->msg = __('Failed to find network scan task.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_recon_script = get_parameter('id_recon_script', null);
|
||||||
|
$field1 = get_parameter('_field1_', '');
|
||||||
|
$field2 = get_parameter('_field2_', '');
|
||||||
|
$field3 = get_parameter('_field3_', '');
|
||||||
|
$field4 = get_parameter('_field4_', '');
|
||||||
|
|
||||||
|
// Get macros.
|
||||||
|
$macros = get_parameter('macros', null);
|
||||||
|
|
||||||
|
if (empty($macros) === false) {
|
||||||
|
$macros = json_decode(
|
||||||
|
base64_decode($macros),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($macros as $k => $m) {
|
||||||
|
$macros[$k]['value'] = get_parameter($m['macro'], '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->task['id_recon_script'] = $id_recon_script;
|
||||||
|
$this->task['macros'] = io_json_mb_encode($macros);
|
||||||
|
$this->task['field1'] = $field1;
|
||||||
|
$this->task['field2'] = $field2;
|
||||||
|
$this->task['field3'] = $field3;
|
||||||
|
$this->task['field4'] = $field4;
|
||||||
|
|
||||||
|
if ($this->task['disabled'] == 2) {
|
||||||
|
// Wizard finished.
|
||||||
|
$this->task['disabled'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update.
|
||||||
|
$res = db_process_sql_update(
|
||||||
|
'trecon_task',
|
||||||
|
$this->task,
|
||||||
|
['id_rt' => $this->task['id_rt']]
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run function. It will be call into HostsDevices class.
|
||||||
|
* Page 0: Upload form.
|
||||||
|
* Page 1: Task resume.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function runCustomNetScan()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (!check_acl($config['id_user'], 0, 'PM')) {
|
||||||
|
db_pandora_audit(
|
||||||
|
'ACL Violation',
|
||||||
|
'Trying to access Custom Net Scan.'
|
||||||
|
);
|
||||||
|
include 'general/noaccess.php';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->parseNetScan() === false) {
|
||||||
|
// Error.
|
||||||
|
ui_print_error_message(
|
||||||
|
$this->msg
|
||||||
|
);
|
||||||
|
|
||||||
|
$form = [
|
||||||
|
'form' => [
|
||||||
|
'method' => 'POST',
|
||||||
|
'action' => $this->url.'&mode=customnetscan&page='.($this->page - 1).'&task='.$this->task['id_rt'],
|
||||||
|
],
|
||||||
|
'inputs' => [
|
||||||
|
[
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'hidden',
|
||||||
|
'name' => 'task',
|
||||||
|
'value' => $this->task['id_rt'],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'submit',
|
||||||
|
'label' => __('Go back'),
|
||||||
|
'type' => 'submit',
|
||||||
|
'attributes' => 'class="sub cancel"',
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check ACL. If user is not able to manage target task,
|
||||||
|
// redirect him to main page.
|
||||||
|
if (users_is_admin() !== true && check_acl(
|
||||||
|
$config['id_usuario'],
|
||||||
|
$this->task['id_group'],
|
||||||
|
'PM'
|
||||||
|
) !== true
|
||||||
|
) {
|
||||||
|
$form['form']['action'] = $this->url.'&mode=customnetscan&page='.($this->page - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->printForm($form);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$run_url = 'index.php?sec=gservers&sec2=godmode/servers/discovery';
|
||||||
|
|
||||||
|
$task_url = '';
|
||||||
|
if (isset($this->task['id_rt']) === true) {
|
||||||
|
$task_url = '&task='.$this->task['id_rt'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd',
|
||||||
|
'label' => __('Host & Devices'),
|
||||||
|
];
|
||||||
|
|
||||||
|
for ($i = 0; $i < $this->MAXPAGES; $i++) {
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd&mode=customnetscan&page='.$i.$task_url,
|
||||||
|
'label' => __($this->pageLabels[$i]),
|
||||||
|
'selected' => (($i == $this->page) ? 1 : 0),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->page < $this->MAXPAGES) {
|
||||||
|
// Avoid to print header out of wizard.
|
||||||
|
$this->prepareBreadcrum($breadcrum);
|
||||||
|
$this->printHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
$task_url = '';
|
||||||
|
if (isset($this->task['id_rt'])) {
|
||||||
|
$task_url = '&task='.$this->task['id_rt'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd',
|
||||||
|
'label' => __($this->label),
|
||||||
|
];
|
||||||
|
for ($i = 0; $i < $this->maxPagesNetScan; $i++) {
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd&mode=customnetscan&page='.$i.$task_url,
|
||||||
|
'label' => $this->pageLabelsNetScan[$i],
|
||||||
|
'selected' => (($i == $this->page) ? 1 : 0),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->page < $this->maxPagesNetScan) {
|
||||||
|
// Avoid to print header out of wizard.
|
||||||
|
$this->prepareBreadcrum($breadcrum);
|
||||||
|
$this->printHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->page) === true
|
||||||
|
&& $this->page !== 0
|
||||||
|
&& isset($this->task['id_rt']) === false
|
||||||
|
) {
|
||||||
|
// Error.
|
||||||
|
ui_print_error_message(
|
||||||
|
__('Internal error, please re-run this wizard.')
|
||||||
|
);
|
||||||
|
|
||||||
|
$form = [
|
||||||
|
'form' => [
|
||||||
|
'method' => 'POST',
|
||||||
|
'action' => $this->url.'&mode=customnetscan&page=0',
|
||||||
|
],
|
||||||
|
'inputs' => [
|
||||||
|
[
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'hidden',
|
||||||
|
'name' => 'page',
|
||||||
|
'value' => 0,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'submit',
|
||||||
|
'label' => __('Go back'),
|
||||||
|
'type' => 'submit',
|
||||||
|
'attributes' => 'class="sub cancel"',
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->printForm($form);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------.
|
||||||
|
// Page 0. wizard starts HERE.
|
||||||
|
// -------------------------------.
|
||||||
|
if (isset($this->page) === true || $this->page == 0) {
|
||||||
|
if (isset($this->page) === false
|
||||||
|
|| $this->page == 0
|
||||||
|
) {
|
||||||
|
$form = [];
|
||||||
|
|
||||||
|
// Input task name.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Task name').'</b>',
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'taskname',
|
||||||
|
'value' => $this->task['name'],
|
||||||
|
'type' => 'text',
|
||||||
|
'size' => 25,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
if (isset($this->task['id_rt']) === true) {
|
||||||
|
// Propagate id.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'task',
|
||||||
|
'value' => $this->task['id_rt'],
|
||||||
|
'type' => 'hidden',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input task description.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Comment').'</b>',
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'comment',
|
||||||
|
'value' => $this->task['description'],
|
||||||
|
'type' => 'text',
|
||||||
|
'size' => 25,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Input Discovery Server.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Discovery server').'</b>'.ui_print_help_tip(
|
||||||
|
__('You must select a Discovery Server to run the Task, otherwise the Recon Task will never run'),
|
||||||
|
true
|
||||||
|
),
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'select_from_sql',
|
||||||
|
'sql' => sprintf(
|
||||||
|
'SELECT id_server, name
|
||||||
|
FROM tserver
|
||||||
|
WHERE server_type = %d
|
||||||
|
ORDER BY name',
|
||||||
|
SERVER_TYPE_DISCOVERY
|
||||||
|
),
|
||||||
|
'name' => 'id_recon_server',
|
||||||
|
'selected' => $this->task['id_recon_server'],
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Input Group.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Group').'</b>',
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'id_group',
|
||||||
|
'returnAllGroup' => false,
|
||||||
|
'privilege' => 'PM',
|
||||||
|
'type' => 'select_groups',
|
||||||
|
'selected' => $this->task['id_group'],
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Interval and schedules.
|
||||||
|
$interv_manual = 0;
|
||||||
|
if ((int) $this->task['interval_sweep'] == 0) {
|
||||||
|
$interv_manual = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Schedule.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Interval').'</b>'.ui_print_help_tip(
|
||||||
|
__('Manual interval means that it will be executed only On-demand'),
|
||||||
|
true
|
||||||
|
),
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'select',
|
||||||
|
'selected' => $interv_manual,
|
||||||
|
'fields' => [
|
||||||
|
0 => __('Defined'),
|
||||||
|
1 => __('Manual'),
|
||||||
|
],
|
||||||
|
'name' => 'interval_manual_defined',
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
'extra' => '<span id="interval_manual_container">'.html_print_extended_select_for_time(
|
||||||
|
'interval',
|
||||||
|
$this->task['interval_sweep'],
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'0',
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
).ui_print_help_tip(
|
||||||
|
__('The minimum recomended interval for Recon Task is 5 minutes'),
|
||||||
|
true
|
||||||
|
).'</span>',
|
||||||
|
];
|
||||||
|
|
||||||
|
$str = __('Next');
|
||||||
|
|
||||||
|
if (isset($this->task['id_rt']) === true) {
|
||||||
|
$str = __('Update and continue');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submit button.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'submit',
|
||||||
|
'label' => $str,
|
||||||
|
'type' => 'submit',
|
||||||
|
'attributes' => 'class="sub next"',
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$task_url = '';
|
||||||
|
if (isset($this->task['id_rt'])) {
|
||||||
|
$task_url = '&task='.$this->task['id_rt'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$form['form'] = [
|
||||||
|
'method' => 'POST',
|
||||||
|
'action' => $this->url.'&mode=customnetscan&page='.($this->page + 1).$task_url,
|
||||||
|
];
|
||||||
|
|
||||||
|
// Default.
|
||||||
|
$interval = 600;
|
||||||
|
$unit = 60;
|
||||||
|
if (isset($this->task['interval_sweep']) === true) {
|
||||||
|
$interval = $this->task['interval_sweep'];
|
||||||
|
$unit = $this->getTimeUnit($interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
$form['js'] = '
|
||||||
|
$("select#interval_manual_defined").change(function() {
|
||||||
|
if ($("#interval_manual_defined").val() == 1) {
|
||||||
|
$("#interval_manual_container").hide();
|
||||||
|
$("#text-interval_text").val(0);
|
||||||
|
$("#hidden-interval").val(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#interval_manual_container").show();
|
||||||
|
$("#text-interval_text").val(10);
|
||||||
|
$("#hidden-interval").val('.$interval.');
|
||||||
|
$("#interval_units").val('.$unit.');
|
||||||
|
}
|
||||||
|
}).change();
|
||||||
|
';
|
||||||
|
|
||||||
|
// XXX: Could be improved validating inputs before continue (JS)
|
||||||
|
// Print NetScan page 0.
|
||||||
|
$this->printForm($form);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->page) === true && $this->page === 1) {
|
||||||
|
$name_ipam = 'IPAM Recon';
|
||||||
|
// Recon script.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Recon script').'</b>',
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'select_from_sql',
|
||||||
|
'sql' => sprintf(
|
||||||
|
'SELECT id_recon_script, name FROM trecon_script WHERE name <> "%s" ORDER BY name',
|
||||||
|
$name_ipam
|
||||||
|
),
|
||||||
|
'name' => 'id_recon_script',
|
||||||
|
'selected' => $this->task['id_recon_script'],
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'hidden' => 1,
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'hidden',
|
||||||
|
'name' => 'task',
|
||||||
|
'value' => $this->task['id_rt'],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'hidden' => 1,
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'hidden_extended',
|
||||||
|
'name' => 'macros',
|
||||||
|
'value' => base64_encode($this->task['macros']),
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Explanation.
|
||||||
|
$explanation = db_get_value(
|
||||||
|
'description',
|
||||||
|
'trecon_script',
|
||||||
|
'id_recon_script',
|
||||||
|
$this->task['id_recon_script']
|
||||||
|
);
|
||||||
|
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => '<b>'.__('Explanation').'</b><span id="spinner_recon_script" style="display: none;">'.html_print_image('images/spinner.gif', true).'</span>',
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'textarea',
|
||||||
|
'rows' => 4,
|
||||||
|
'columns' => 60,
|
||||||
|
'name' => 'explanation',
|
||||||
|
'value' => $explanation,
|
||||||
|
'return' => true,
|
||||||
|
'attributes' => 'style="width: 388px;"',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'hidden' => 1,
|
||||||
|
'id' => 'table_recon-macro_field',
|
||||||
|
'label' => '<b>'.__('macro_desc').'</b>'.ui_print_help_tip('macro_help', true),
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'macro_name',
|
||||||
|
'value' => 'macro_value',
|
||||||
|
'type' => 'text',
|
||||||
|
'size' => 100,
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
if (empty($this->task['macros']) === false) {
|
||||||
|
$macros = json_decode($this->task['macros'], true);
|
||||||
|
foreach ($macros as $k => $m) {
|
||||||
|
$label_macro = '';
|
||||||
|
$label_macro .= '<b>'.$m['desc'].'</b>';
|
||||||
|
if (!empty($m['help'])) {
|
||||||
|
$label_macro .= ui_print_help_tip(
|
||||||
|
$m['help'],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($m['hide']) {
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => $label_macro,
|
||||||
|
'id' => 'table_recon-macro'.$m['macro'],
|
||||||
|
'class' => 'macro_field',
|
||||||
|
'arguments' => [
|
||||||
|
'name' => $m['macro'],
|
||||||
|
'value' => $m['value'],
|
||||||
|
'type' => 'password',
|
||||||
|
'size' => 100,
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'label' => $label_macro,
|
||||||
|
'id' => 'table_recon-macro'.$m['macro'],
|
||||||
|
'class' => 'macro_field',
|
||||||
|
'arguments' => [
|
||||||
|
'name' => $m['macro'],
|
||||||
|
'value' => $m['value'],
|
||||||
|
'type' => 'text',
|
||||||
|
'size' => 100,
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submit button.
|
||||||
|
$form['inputs'][] = [
|
||||||
|
'arguments' => [
|
||||||
|
'name' => 'submit',
|
||||||
|
'label' => __('Finish'),
|
||||||
|
'type' => 'submit',
|
||||||
|
'attributes' => 'class="sub next"',
|
||||||
|
'return' => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$form['form'] = [
|
||||||
|
'method' => 'POST',
|
||||||
|
'action' => $this->url.'&mode=customnetscan&page='.($this->page + 1).'&task='.$this->task['id_rt'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$id_task = (isset($this->task['id_rt']) === true) ? $this->task['id_rt'] : 0;
|
||||||
|
|
||||||
|
$url_ajax = $config['homeurl'].'ajax.php';
|
||||||
|
|
||||||
|
$change = '';
|
||||||
|
if (empty($this->task['macros']) !== false) {
|
||||||
|
$change = '.change();';
|
||||||
|
}
|
||||||
|
|
||||||
|
$form['js'] = '
|
||||||
|
$("select#id_recon_script").change(function() {
|
||||||
|
get_explanation_recon_script($(this).val(), "'.$id_task.'", "'.$url_ajax.'");
|
||||||
|
})'.$change;
|
||||||
|
|
||||||
|
$this->printForm($form);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->page) === true && $this->page === 2) {
|
||||||
|
if ($this->task['id_rt']) {
|
||||||
|
// 0 - Is OK.
|
||||||
|
$this->result = 0;
|
||||||
|
$this->msg = __('Task configured.');
|
||||||
|
} else {
|
||||||
|
// 1 - Is NOT OK.
|
||||||
|
$this->result = 1;
|
||||||
|
$this->msg = __('Wizard failed. Cannot configure task.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'result' => $this->result,
|
||||||
|
'id' => $this->task['id_rt'],
|
||||||
|
'msg' => $this->msg,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_require_javascript_file('pandora_modules');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,759 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Extension to schedule tasks on Pandora FMS Console
|
||||||
|
*
|
||||||
|
* @category Wizard
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage Host&Devices
|
||||||
|
* @version 1.0.0
|
||||||
|
* @license See below
|
||||||
|
*
|
||||||
|
* ______ ___ _______ _______ ________
|
||||||
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2019 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 General Public License
|
||||||
|
* as published by the Free Software Foundation for 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.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once $config['homedir'].'/godmode/wizards/Wizard.main.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ManageNetScanScripts. Host and devices child class.
|
||||||
|
*/
|
||||||
|
class ManageNetScanScripts extends Wizard
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of pages to control breadcrum.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
public $MAXPAGES = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Labels for breadcrum.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $pageLabels = [
|
||||||
|
'List net scan scripts',
|
||||||
|
'Operation net scan cripts',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param integer $page Page.
|
||||||
|
* @param array $breadcrum Breadcrum.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(int $page, array $breadcrum)
|
||||||
|
{
|
||||||
|
$this->url = ui_get_full_url(
|
||||||
|
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd'
|
||||||
|
);
|
||||||
|
$this->page = $page;
|
||||||
|
$this->breadcrum = $breadcrum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run function. It will be call into HostsDevices class.
|
||||||
|
* Page 0: Upload form.
|
||||||
|
* Page 1: Task resume.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function runManageNetScanScript()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (check_acl($config['id_user'], 0, 'AW') === 0) {
|
||||||
|
db_pandora_audit(
|
||||||
|
'ACL Violation',
|
||||||
|
'Trying to access Net Scan Script.'
|
||||||
|
);
|
||||||
|
include 'general/noaccess.php';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$run_url = 'index.php?sec=gservers&sec2=godmode/servers/discovery';
|
||||||
|
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd',
|
||||||
|
'label' => __('Host & Devices'),
|
||||||
|
];
|
||||||
|
|
||||||
|
for ($i = 0; $i < $this->MAXPAGES; $i++) {
|
||||||
|
$breadcrum[] = [
|
||||||
|
'link' => $run_url.'&wiz=hd&mode=managenetscanscripts&page='.$i,
|
||||||
|
'label' => __($this->pageLabels[$i]),
|
||||||
|
'selected' => (($i == $this->page) ? 1 : 0),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->page < $this->MAXPAGES) {
|
||||||
|
// Avoid to print header out of wizard.
|
||||||
|
$this->prepareBreadcrum($breadcrum);
|
||||||
|
$this->printHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_script = get_parameter('id_script', 0);
|
||||||
|
|
||||||
|
// Initialize msg.
|
||||||
|
$msg = [];
|
||||||
|
|
||||||
|
// Operations.
|
||||||
|
$operation_scp = get_parameter('operation_scp', '');
|
||||||
|
if ($operation_scp !== '') {
|
||||||
|
switch ($operation_scp) {
|
||||||
|
case 'update_scp':
|
||||||
|
$msg = $this->updateScanScripts($id_script);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'delete_scp':
|
||||||
|
$msg = $this->deleteScanScripts($id_script);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'create_scp':
|
||||||
|
$msg = $this->createScanScripts($id_script);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Nothing for doing. Never exist other operation.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($this->page) || $this->page === 0) {
|
||||||
|
$this->printListNetScanScripts($msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($this->page) || $this->page === 1) {
|
||||||
|
$this->printFormScanScripts($id_script);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create net scan script.
|
||||||
|
*
|
||||||
|
* @return array Check msg successfully or problem
|
||||||
|
*/
|
||||||
|
private function createScanScripts()
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
$reconscript_name = get_parameter('form_name', '');
|
||||||
|
$reconscript_description = get_parameter('form_description', '');
|
||||||
|
$reconscript_script = get_parameter('form_script', '');
|
||||||
|
|
||||||
|
// Get macros.
|
||||||
|
$i = 1;
|
||||||
|
$macros = [];
|
||||||
|
while (1) {
|
||||||
|
$macro = (string) get_parameter('field'.$i.'_macro');
|
||||||
|
if ($macro == '') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$desc = (string) get_parameter('field'.$i.'_desc');
|
||||||
|
$help = (string) get_parameter('field'.$i.'_help');
|
||||||
|
$value = (string) get_parameter('field'.$i.'_value');
|
||||||
|
$hide = get_parameter('field'.$i.'_hide');
|
||||||
|
|
||||||
|
$macros[$i]['macro'] = $macro;
|
||||||
|
$macros[$i]['desc'] = $desc;
|
||||||
|
$macros[$i]['help'] = $help;
|
||||||
|
$macros[$i]['value'] = $value;
|
||||||
|
$macros[$i]['hide'] = $hide;
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$macros = io_json_mb_encode($macros);
|
||||||
|
|
||||||
|
$values = [
|
||||||
|
'name' => $reconscript_name,
|
||||||
|
'description' => $reconscript_description,
|
||||||
|
'script' => $reconscript_script,
|
||||||
|
'macros' => $macros,
|
||||||
|
];
|
||||||
|
|
||||||
|
$result_crt = false;
|
||||||
|
if ($values['name'] !== '' && $values['script'] !== '') {
|
||||||
|
$result_crt = db_process_sql_insert('trecon_script', $values);
|
||||||
|
if (!$result_crt) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem creating'),
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$result = [
|
||||||
|
'error' => 0,
|
||||||
|
'msg' => __('Created successfully'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Name or Script fullpath they can not be empty'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update net scan script.
|
||||||
|
*
|
||||||
|
* @param integer $id_script Id script.
|
||||||
|
*
|
||||||
|
* @return array Check msg successfully or problem
|
||||||
|
*/
|
||||||
|
private function updateScanScripts(int $id_script)
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
if (isset($id_script) === false || $id_script === 0) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem deleting Net scan Scripts, Not selected script'),
|
||||||
|
];
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If modified any parameter.
|
||||||
|
$reconscript_name = get_parameter('form_name', '');
|
||||||
|
$reconscript_description = get_parameter('form_description', '');
|
||||||
|
$reconscript_script = get_parameter('form_script', '');
|
||||||
|
|
||||||
|
// Get macros.
|
||||||
|
$i = 1;
|
||||||
|
$macros = [];
|
||||||
|
while (1) {
|
||||||
|
$macro = (string) get_parameter('field'.$i.'_macro');
|
||||||
|
if ($macro == '') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$desc = (string) get_parameter('field'.$i.'_desc');
|
||||||
|
$help = (string) get_parameter('field'.$i.'_help');
|
||||||
|
$value = (string) get_parameter('field'.$i.'_value');
|
||||||
|
$hide = get_parameter('field'.$i.'_hide');
|
||||||
|
|
||||||
|
$macros[$i]['macro'] = $macro;
|
||||||
|
$macros[$i]['desc'] = $desc;
|
||||||
|
$macros[$i]['help'] = $help;
|
||||||
|
$macros[$i]['value'] = $value;
|
||||||
|
$macros[$i]['hide'] = $hide;
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$macros = io_json_mb_encode($macros);
|
||||||
|
|
||||||
|
$sql_update = sprintf(
|
||||||
|
"UPDATE trecon_script SET
|
||||||
|
name = '%s',
|
||||||
|
description = '%s',
|
||||||
|
script = '%s',
|
||||||
|
macros = '%s'
|
||||||
|
WHERE id_recon_script = %d",
|
||||||
|
$reconscript_name,
|
||||||
|
$reconscript_description,
|
||||||
|
$reconscript_script,
|
||||||
|
$macros,
|
||||||
|
$id_script
|
||||||
|
);
|
||||||
|
|
||||||
|
$result_upd = false;
|
||||||
|
if ($reconscript_name !== '' && $reconscript_script !== '') {
|
||||||
|
$result_upd = db_process_sql($sql_update);
|
||||||
|
if (!$result_upd) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem updating'),
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$result = [
|
||||||
|
'error' => 0,
|
||||||
|
'msg' => __('Updated successfully'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Name or Script fullpath they can not be empty'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete net scan script.
|
||||||
|
*
|
||||||
|
* @param integer $id_script Id script.
|
||||||
|
*
|
||||||
|
* @return array Check msg successfully or problem
|
||||||
|
*/
|
||||||
|
private function deleteScanScripts(int $id_script)
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
if (isset($id_script) === false || $id_script === 0) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem deleting Net scan Scripts, Not selected script'),
|
||||||
|
];
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result_dlt = db_process_sql_delete(
|
||||||
|
'trecon_script',
|
||||||
|
['id_recon_script' => $id_script]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!$result_dlt) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem deleting Net scan Scripts'),
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$result_dlt2 = db_process_sql_delete(
|
||||||
|
'trecon_task',
|
||||||
|
['id_recon_script' => $id_script]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!$result_dlt2) {
|
||||||
|
$result = [
|
||||||
|
'error' => 1,
|
||||||
|
'msg' => __('Problem deleting Net scan Scripts'),
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$result = [
|
||||||
|
'error' => 0,
|
||||||
|
'msg' => __('Deleted successfully'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print list Net scan scripts and messages operations.
|
||||||
|
*
|
||||||
|
* @param array $msg Print msg if necessary.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function printListNetScanScripts(array $msg)
|
||||||
|
{
|
||||||
|
if (count($msg) > 0) {
|
||||||
|
if ($msg['error'] === 1) {
|
||||||
|
ui_print_error_message($msg['msg']);
|
||||||
|
} else {
|
||||||
|
ui_print_success_message($msg['msg']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = 'index.php?sec=gservers&sec2=godmode/servers/discovery';
|
||||||
|
$url .= '&wiz=hd&mode=managenetscanscripts';
|
||||||
|
|
||||||
|
// List available Net scan scripts.
|
||||||
|
$rows = db_get_all_rows_in_table('trecon_script');
|
||||||
|
|
||||||
|
if ($rows !== false) {
|
||||||
|
echo '<table width="100%" cellspacing="4" cellpadding="4" class="databox data">';
|
||||||
|
echo '<th>'.__('Name').'</th>';
|
||||||
|
echo '<th>'.__('Description').'</th>';
|
||||||
|
echo '<th>'.__('Delete').'</th>';
|
||||||
|
$color = 0;
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
if ($color == 1) {
|
||||||
|
$tdcolor = 'datos';
|
||||||
|
$color = 0;
|
||||||
|
} else {
|
||||||
|
$tdcolor = 'datos2';
|
||||||
|
$color = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<tr>';
|
||||||
|
echo "<td class='".$tdcolor."' style='min-width: 100px;'>";
|
||||||
|
echo '<b><a href="'.$url.'&page=1&id_script='.$row['id_recon_script'].'">';
|
||||||
|
echo $row['name'];
|
||||||
|
echo '</a></b></td>';
|
||||||
|
echo "</td><td class='".$tdcolor."'>";
|
||||||
|
$desc = io_safe_output(
|
||||||
|
$row['description']
|
||||||
|
);
|
||||||
|
|
||||||
|
$desc = str_replace(
|
||||||
|
"\n",
|
||||||
|
'<br>',
|
||||||
|
$desc
|
||||||
|
);
|
||||||
|
|
||||||
|
echo $desc.'<br><br>';
|
||||||
|
echo '<b>'.__('Command').': </b><i>'.$row['script'].'</i>';
|
||||||
|
echo "</td><td align='center' class='".$tdcolor."'>";
|
||||||
|
// Delete.
|
||||||
|
echo '<form
|
||||||
|
method="post"
|
||||||
|
onsubmit="if (! confirm (\''.__('Are you sure delete script?').'\')) return false"
|
||||||
|
style="display: inline;">';
|
||||||
|
echo html_print_input_hidden('page', 0, true);
|
||||||
|
echo html_print_input_hidden(
|
||||||
|
'operation_scp',
|
||||||
|
'delete_scp',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
echo html_print_input_hidden(
|
||||||
|
'id_script',
|
||||||
|
$row['id_recon_script'],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
echo html_print_input_image(
|
||||||
|
'delete',
|
||||||
|
'images/cross.png',
|
||||||
|
1,
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Delete Script'),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
echo '</form>';
|
||||||
|
echo '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
|
echo "<form name=reconscript method='post' action='".$url."'>";
|
||||||
|
echo html_print_input_hidden('page', 1, true);
|
||||||
|
echo "<input name='crtbutton' style='float:right;' type='submit' class='sub next' value='".__('Add')."'>";
|
||||||
|
echo '</form>';
|
||||||
|
} else {
|
||||||
|
ui_print_info_message(
|
||||||
|
[
|
||||||
|
'no_close' => true,
|
||||||
|
'message' => __(
|
||||||
|
'There are no net scan scripts in the system'
|
||||||
|
),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print form net scan scripts.
|
||||||
|
*
|
||||||
|
* @param integer $id_script Id script.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function printFormScanScripts(int $id_script)
|
||||||
|
{
|
||||||
|
// Initialize vars.
|
||||||
|
if ($id_script !== 0) {
|
||||||
|
$form_id = $id_script;
|
||||||
|
$reconscript = db_get_row(
|
||||||
|
'trecon_script',
|
||||||
|
'id_recon_script',
|
||||||
|
$form_id
|
||||||
|
);
|
||||||
|
$form_name = $reconscript['name'];
|
||||||
|
$form_description = $reconscript['description'];
|
||||||
|
$form_script = $reconscript['script'];
|
||||||
|
$macros = $reconscript['macros'];
|
||||||
|
} else {
|
||||||
|
$form_name = '';
|
||||||
|
$form_description = '';
|
||||||
|
$form_script = '';
|
||||||
|
$macros = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = 'index.php?sec=gservers&sec2=godmode/servers/discovery';
|
||||||
|
$url .= '&wiz=hd&mode=managenetscanscripts';
|
||||||
|
|
||||||
|
if ($id_script !== 0) {
|
||||||
|
echo '<form name=reconscript method="post" action="'.$url.'&id_script='.$id_script.'">';
|
||||||
|
echo html_print_input_hidden('page', 0, true);
|
||||||
|
echo html_print_input_hidden(
|
||||||
|
'operation_scp',
|
||||||
|
'update_scp',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
echo '<form name=reconscript method="post" action="'.$url.'">';
|
||||||
|
echo html_print_input_hidden('page', 0, true);
|
||||||
|
echo html_print_input_hidden(
|
||||||
|
'operation_scp',
|
||||||
|
'create_scp',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$table = new stdClass();
|
||||||
|
$table->width = '100%';
|
||||||
|
$table->id = 'table-form';
|
||||||
|
$table->class = 'databox filters';
|
||||||
|
$table->style = [];
|
||||||
|
$table->style[0] = 'font-weight: bold';
|
||||||
|
$table->style[2] = 'font-weight: bold';
|
||||||
|
$table->data = [];
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Name');
|
||||||
|
$data[0] .= ui_print_help_icon(
|
||||||
|
'reconscript_definition',
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
'images/help_w.png'
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[1] = '<input type="text" name="form_name" size=30 value="'.$form_name.'">';
|
||||||
|
$table->data['recon_name'] = $data;
|
||||||
|
$table->colspan['recon_name'][1] = 3;
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Script fullpath');
|
||||||
|
$data[1] = '<input type="text" name="form_script" size=70 value="'.$form_script.'">';
|
||||||
|
$table->data['recon_fullpath'] = $data;
|
||||||
|
$table->colspan['recon_fullpath'][1] = 3;
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Description');
|
||||||
|
$data[1] = '<textarea name="form_description" cols="50" rows="4">';
|
||||||
|
$data[1] .= $form_description;
|
||||||
|
$data[1] .= '</textarea>';
|
||||||
|
$table->data['recon_description'] = $data;
|
||||||
|
$table->colspan['recon_description'][1] = 3;
|
||||||
|
|
||||||
|
$macros = json_decode($macros, true);
|
||||||
|
|
||||||
|
// This code is ready to add locked feature as plugins.
|
||||||
|
$locked = false;
|
||||||
|
|
||||||
|
// The next row number is recon_3.
|
||||||
|
$next_name_number = 3;
|
||||||
|
$i = 1;
|
||||||
|
while (1) {
|
||||||
|
// Always print at least one macro.
|
||||||
|
if ((!isset($macros[$i]) || $macros[$i]['desc'] == '') && $i > 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$macro_desc_name = 'field'.$i.'_desc';
|
||||||
|
$macro_desc_value = '';
|
||||||
|
$macro_help_name = 'field'.$i.'_help';
|
||||||
|
$macro_help_value = '';
|
||||||
|
$macro_value_name = 'field'.$i.'_value';
|
||||||
|
$macro_value_value = '';
|
||||||
|
$macro_name_name = 'field'.$i.'_macro';
|
||||||
|
$macro_name = '_field'.$i.'_';
|
||||||
|
$macro_hide_value_name = 'field'.$i.'_hide';
|
||||||
|
$macro_hide_value_value = 0;
|
||||||
|
|
||||||
|
if (isset($macros[$i]['desc'])) {
|
||||||
|
$macro_desc_value = $macros[$i]['desc'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($macros[$i]['help'])) {
|
||||||
|
$macro_help_value = $macros[$i]['help'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($macros[$i]['value'])) {
|
||||||
|
$macro_value_value = $macros[$i]['value'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($macros[$i]['hide'])) {
|
||||||
|
$macro_hide_value_value = $macros[$i]['hide'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$datam = [];
|
||||||
|
$datam[0] = __('Description');
|
||||||
|
$datam[0] .= "<span style='font-weight: normal'> ( ";
|
||||||
|
$datam[0] .= $macro_name;
|
||||||
|
$datam[0] .= ' )</span>';
|
||||||
|
$datam[0] .= html_print_input_hidden(
|
||||||
|
$macro_name_name,
|
||||||
|
$macro_name,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$datam[1] = html_print_input_text_extended(
|
||||||
|
$macro_desc_name,
|
||||||
|
$macro_desc_value,
|
||||||
|
'text-'.$macro_desc_name,
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
255,
|
||||||
|
$locked,
|
||||||
|
'',
|
||||||
|
"class='command_advanced_conf'",
|
||||||
|
true
|
||||||
|
);
|
||||||
|
if ($locked) {
|
||||||
|
$datam[1] .= html_print_image(
|
||||||
|
'images/lock.png',
|
||||||
|
true,
|
||||||
|
['class' => 'command_advanced_conf']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$datam[2] = __('Default value');
|
||||||
|
$datam[2] .= "<span style='font-weight: normal'> ( ";
|
||||||
|
$datam[2] .= $macro_name;
|
||||||
|
$datam[2] .= ' ) </span>';
|
||||||
|
$datam[3] = html_print_input_text_extended(
|
||||||
|
$macro_value_name,
|
||||||
|
$macro_value_value,
|
||||||
|
'text-'.$macro_value_name,
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
255,
|
||||||
|
$locked,
|
||||||
|
'',
|
||||||
|
"class='command_component command_advanced_conf'",
|
||||||
|
true
|
||||||
|
);
|
||||||
|
if ($locked) {
|
||||||
|
$datam[3] .= html_print_image(
|
||||||
|
'images/lock.png',
|
||||||
|
true,
|
||||||
|
['class' => 'command_advanced_conf']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data['recon_'.$next_name_number] = $datam;
|
||||||
|
|
||||||
|
$next_name_number++;
|
||||||
|
|
||||||
|
$table->colspan['recon_'.$next_name_number][1] = 3;
|
||||||
|
|
||||||
|
$datam = [];
|
||||||
|
$datam[0] = __('Hide value');
|
||||||
|
$datam[0] .= ui_print_help_tip(
|
||||||
|
__('This field will show up as dots like a password'),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$datam[1] = html_print_checkbox_extended(
|
||||||
|
$macro_hide_value_name,
|
||||||
|
1,
|
||||||
|
$macro_hide_value_value,
|
||||||
|
0,
|
||||||
|
'',
|
||||||
|
['class' => 'command_advanced_conf'],
|
||||||
|
true,
|
||||||
|
'checkbox-'.$macro_hide_value_name
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data['recon_'.$next_name_number] = $datam;
|
||||||
|
$next_name_number++;
|
||||||
|
|
||||||
|
$table->colspan['recon_'.$next_name_number][1] = 3;
|
||||||
|
|
||||||
|
$datam = [];
|
||||||
|
$datam[0] = __('Help');
|
||||||
|
$datam[0] .= "<span style='font-weight: normal'> ( ";
|
||||||
|
$datam[0] .= $macro_name;
|
||||||
|
$datam[0] .= ' )</span><br><br><br>';
|
||||||
|
|
||||||
|
$tadisabled = ($locked === true) ? ' disabled' : '';
|
||||||
|
|
||||||
|
$datam[1] = html_print_textarea(
|
||||||
|
$macro_help_name,
|
||||||
|
6,
|
||||||
|
100,
|
||||||
|
$macro_help_value,
|
||||||
|
'class="command_advanced_conf" style="width: 97%;"'.$tadisabled,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($locked) {
|
||||||
|
$datam[1] .= html_print_image(
|
||||||
|
'images/lock.png',
|
||||||
|
true,
|
||||||
|
['class' => 'command_advanced_conf']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$datam[1] .= '<br><br><br>';
|
||||||
|
|
||||||
|
$table->data['recon_'.$next_name_number] = $datam;
|
||||||
|
$next_name_number++;
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$locked) {
|
||||||
|
$datam = [];
|
||||||
|
$datam[0] = '<span style="font-weight: bold">';
|
||||||
|
$datam[0] .= __('Add macro').'</span>';
|
||||||
|
$datam[0] .= '<a href="javascript:new_macro(\'table-form-recon_\');update_preview();">';
|
||||||
|
$datam[0] .= html_print_image(
|
||||||
|
'images/add.png',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$datam[0] .= '</a>';
|
||||||
|
$datam[0] .= '<div id="next_macro" style="display:none">';
|
||||||
|
$datam[0] .= $i.'</div>';
|
||||||
|
$datam[0] .= '<div id="next_row" style="display:none">';
|
||||||
|
$datam[0] .= $next_name_number.'</div>';
|
||||||
|
|
||||||
|
$delete_macro_style = '';
|
||||||
|
if ($i <= 2) {
|
||||||
|
$delete_macro_style = 'display:none;';
|
||||||
|
}
|
||||||
|
|
||||||
|
$datam[2] = '<div id="delete_macro_button" style="'.$delete_macro_style.'">';
|
||||||
|
$datam[2] .= __('Delete macro');
|
||||||
|
$datam[2] .= '<a href="javascript:delete_macro_form(\'table-form-recon_\');update_preview();">';
|
||||||
|
$datam[2] .= html_print_image(
|
||||||
|
'images/delete.png',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$datam[2] .= '</a></div>';
|
||||||
|
|
||||||
|
$table->colspan['recon_action'][0] = 2;
|
||||||
|
$table->rowstyle['recon_action'] = 'text-align:center';
|
||||||
|
$table->colspan['recon_action'][2] = 2;
|
||||||
|
$table->data['recon_action'] = $datam;
|
||||||
|
}
|
||||||
|
|
||||||
|
html_print_table($table);
|
||||||
|
|
||||||
|
echo '<table width=100%>';
|
||||||
|
echo '<tr><td align="right">';
|
||||||
|
|
||||||
|
if ($id_script === 0) {
|
||||||
|
echo "<input name='crtbutton' type='submit' class='sub wand' value='".__('Create')."'>";
|
||||||
|
} else {
|
||||||
|
echo "<input name='uptbutton' type='submit' class='sub upd' value='".__('Update')."'>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</form></table>';
|
||||||
|
|
||||||
|
ui_require_javascript_file('pandora_modules');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -30,13 +30,7 @@
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
require_once $config['homedir'].'/include/functions_networkmap.php';
|
require_once $config['homedir'].'/include/functions_networkmap.php';
|
||||||
require_once $config['homedir'].'/include/functions_pandora_networkmap.php';
|
enterprise_include_once('include/functions_networkmap.php');
|
||||||
|
|
||||||
enterprise_include_once('include/functions_pandora_networkmap.php');
|
|
||||||
|
|
||||||
define('SOURCE_GROUP', 0);
|
|
||||||
define('SOURCE_TASK', 1);
|
|
||||||
define('SOURCE_NETWORK', 2);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage networkmaps in Pandora FMS
|
* Manage networkmaps in Pandora FMS
|
||||||
|
@ -123,6 +117,16 @@ class NetworkMap
|
||||||
*/
|
*/
|
||||||
public $mapOptions;
|
public $mapOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loadfile function array
|
||||||
|
* file path
|
||||||
|
* function name
|
||||||
|
* extra parameter(cluster)
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $loadfile;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base constructor.
|
* Base constructor.
|
||||||
|
@ -160,6 +164,15 @@ class NetworkMap
|
||||||
$this->mapOptions['strict_user'] = false;
|
$this->mapOptions['strict_user'] = false;
|
||||||
$this->mapOptions['size_canvas'] = null;
|
$this->mapOptions['size_canvas'] = null;
|
||||||
$this->mapOptions['old_mode'] = false;
|
$this->mapOptions['old_mode'] = false;
|
||||||
|
$this->mapOptions['baseurl'] = ui_get_full_url(false, false, false, false);
|
||||||
|
$this->mapOptions['width'] = '100%';
|
||||||
|
$this->mapOptions['height'] = 600;
|
||||||
|
$this->mapOptions['node_radius'] = 40;
|
||||||
|
$this->mapOptions['id_cluster'] = null;
|
||||||
|
$this->mapOptions['tooltip'] = false;
|
||||||
|
$this->mapOptions['size_image'] = 40;
|
||||||
|
$this->mapOptions['page_tooltip'] = null;
|
||||||
|
|
||||||
$this->mapOptions['map_filter'] = [
|
$this->mapOptions['map_filter'] = [
|
||||||
'dont_show_subgroups' => 0,
|
'dont_show_subgroups' => 0,
|
||||||
'node_radius' => 40,
|
'node_radius' => 40,
|
||||||
|
@ -212,6 +225,14 @@ class NetworkMap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// loadfile options
|
||||||
|
// This is only used while generating simple maps
|
||||||
|
if (is_array($options['loadfile'])) {
|
||||||
|
foreach ($options['loadfile'] as $k => $v) {
|
||||||
|
$this->loadfile[$k] = $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load from tmap.
|
// Load from tmap.
|
||||||
if ($options['id_map']) {
|
if ($options['id_map']) {
|
||||||
$this->idMap = $options['id_map'];
|
$this->idMap = $options['id_map'];
|
||||||
|
@ -219,7 +240,7 @@ class NetworkMap
|
||||||
$this->loadMap();
|
$this->loadMap();
|
||||||
|
|
||||||
if (empty($this->nodes)
|
if (empty($this->nodes)
|
||||||
|| empty($this->relations)
|
&& empty($this->relations)
|
||||||
) {
|
) {
|
||||||
$this->createMap();
|
$this->createMap();
|
||||||
}
|
}
|
||||||
|
@ -425,7 +446,7 @@ class NetworkMap
|
||||||
$relations = $this->relations;
|
$relations = $this->relations;
|
||||||
|
|
||||||
// Generate if there's no data in DB about nodes or relations.
|
// Generate if there's no data in DB about nodes or relations.
|
||||||
if (empty($nodes) || empty($relations)) {
|
if (empty($nodes) && empty($relations)) {
|
||||||
$this->generateNetworkMap();
|
$this->generateNetworkMap();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -488,6 +509,22 @@ class NetworkMap
|
||||||
public function generateDotGraph()
|
public function generateDotGraph()
|
||||||
{
|
{
|
||||||
if (!isset($this->dotGraph)) {
|
if (!isset($this->dotGraph)) {
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
include_once $config['homedir'].'/include/functions_maps.php';
|
||||||
|
$graph .= open_graph();
|
||||||
|
|
||||||
|
foreach ($this->nodes as $key => $value) {
|
||||||
|
$graph .= create_node($value, $this->mapOptions['font_size']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->relations as $key => $relation) {
|
||||||
|
$graph .= create_edge($key, $relation);
|
||||||
|
}
|
||||||
|
|
||||||
|
$graph .= close_graph();
|
||||||
|
|
||||||
|
$this->dotGraph = $graph;
|
||||||
|
} else {
|
||||||
// Generate dot file.
|
// Generate dot file.
|
||||||
$this->dotGraph = networkmap_generate_dot(
|
$this->dotGraph = networkmap_generate_dot(
|
||||||
get_product_name(),
|
get_product_name(),
|
||||||
|
@ -516,7 +553,7 @@ class NetworkMap
|
||||||
$this->mapOptions['map_filter']
|
$this->mapOptions['map_filter']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -653,12 +690,24 @@ class NetworkMap
|
||||||
ui_print_error_message(
|
ui_print_error_message(
|
||||||
__('Failed to generate dotmap, please select different layout schema')
|
__('Failed to generate dotmap, please select different layout schema')
|
||||||
);
|
);
|
||||||
$this->graph = networkmap_process_networkmap($this->idMap);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
unlink($filename_dot);
|
unlink($filename_dot);
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
if (isset($this->loadfile)) {
|
||||||
|
include_once $this->loadfile[0];
|
||||||
|
$func = $this->loadfile[1];
|
||||||
|
// Extra parameter. Used in clustermap.
|
||||||
|
if (isset($this->mapOptions['id_cluster'])) {
|
||||||
|
$this->graph = $func($filename_plain, $this->dotGraph, $this->mapOptions['id_cluster']);
|
||||||
|
} else {
|
||||||
|
$this->graph = $func($filename_plain, $this->dotGraph);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
} else {
|
||||||
$nodes = networkmap_loadfile(
|
$nodes = networkmap_loadfile(
|
||||||
$this->idMap,
|
$this->idMap,
|
||||||
$filename_plain,
|
$filename_plain,
|
||||||
|
@ -810,7 +859,7 @@ class NetworkMap
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->graph = $nodes_and_relations;
|
$this->graph = $nodes_and_relations;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -821,6 +870,29 @@ class NetworkMap
|
||||||
*/
|
*/
|
||||||
public function loadMapData()
|
public function loadMapData()
|
||||||
{
|
{
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript">';
|
||||||
|
$output .= "var controller_map = null;\n";
|
||||||
|
$output .= 'var size_image ='.json_encode($this->mapOptions['size_image']).";\n";
|
||||||
|
$output .= 'var tooltipster ='.json_encode($this->mapOptions['tootltip']).";\n";
|
||||||
|
$output .= 'var nodes = '.json_encode($this->graph['nodes']).";\n";
|
||||||
|
$output .= 'var arrows = '.json_encode($this->graph['arrows']).";\n";
|
||||||
|
$output .= 'var height = '.json_encode($this->mapOptions['height']).";\n";
|
||||||
|
$output .= 'var node_radius ='.json_encode($this->mapOptions['node_radius']).";\n";
|
||||||
|
$output .= 'var font_size ='.json_encode($this->mapOptions['font_size']).";\n";
|
||||||
|
$output .= 'var homedir ='.json_encode($this->mapOptions['baseurl']).";\n";
|
||||||
|
$output .= "var custom_params = {};\n";
|
||||||
|
$output .= "custom_params['get_tooltip_info'] = 1;\n";
|
||||||
|
if ($this->mapOptions['id_cluster'] != null) {
|
||||||
|
$output .= "custom_params['id_cluster'] = ".$this->mapOptions['id_cluster'].";\n";
|
||||||
|
$output .= 'var id_cluster ='.json_encode($this->mapOptions['id_cluster']).";\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= "custom_params['page'] = 'enterprise/include/ajax/clustermap';\n";
|
||||||
|
$output .= '</script>';
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
} else {
|
||||||
$networkmap = $this->map;
|
$networkmap = $this->map;
|
||||||
|
|
||||||
$simulate = false;
|
$simulate = false;
|
||||||
|
@ -1037,6 +1109,7 @@ class NetworkMap
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1453,6 +1526,16 @@ class NetworkMap
|
||||||
{
|
{
|
||||||
$output = '';
|
$output = '';
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript">
|
||||||
|
var controller = null
|
||||||
|
$(function() {
|
||||||
|
controller = new SimpleMapController("#simple_map");
|
||||||
|
controller.init_map();
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
echo $output;
|
||||||
|
} else {
|
||||||
// Generate JS for advanced controller.
|
// Generate JS for advanced controller.
|
||||||
$output .= '
|
$output .= '
|
||||||
|
|
||||||
|
@ -1493,6 +1576,7 @@ class NetworkMap
|
||||||
}
|
}
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1506,10 +1590,27 @@ class NetworkMap
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
$output = '';
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/d3.3.5.14.js" charset="utf-8"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'enterprise/include/javascript/SimpleMapController.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'enterprise/include/javascript/tooltipster.bundle.min.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/jquery.svg.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/jquery.svgdom.js"></script>';
|
||||||
|
$output .= '<link rel="stylesheet" type="text/css" href="'.$this->mapOptions['baseurl'].'/enterprise/include/styles/tooltipster.bundle.min.css" />'."\n";
|
||||||
|
|
||||||
|
$output .= '<div id="simple_map" data-id="<?php echo $this->name;?>" style="border: 1px #dddddd solid;">';
|
||||||
|
$output .= '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" pointer-events="all" width="'.$this->mapOptions['width'].'" height="'.$this->mapOptions['height'].'px">';
|
||||||
|
|
||||||
|
$output .= '</svg>';
|
||||||
|
$output .= '</div>';
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
} else {
|
||||||
ui_require_css_file('networkmap');
|
ui_require_css_file('networkmap');
|
||||||
ui_require_css_file('jquery.contextMenu', 'include/styles/js/');
|
ui_require_css_file('jquery.contextMenu', 'include/styles/js/');
|
||||||
|
|
||||||
$output = '';
|
|
||||||
$minimap_display = '';
|
$minimap_display = '';
|
||||||
if ($this->mapOptions['pure']) {
|
if ($this->mapOptions['pure']) {
|
||||||
$minimap_display = 'none';
|
$minimap_display = 'none';
|
||||||
|
@ -1556,6 +1657,7 @@ class NetworkMap
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -548,13 +548,28 @@ define('LAYOUT_SPRING2', 4);
|
||||||
// Extra: radial dynamic.
|
// Extra: radial dynamic.
|
||||||
define('LAYOUT_RADIAL_DYNAMIC', 6);
|
define('LAYOUT_RADIAL_DYNAMIC', 6);
|
||||||
|
|
||||||
|
// Map sources.
|
||||||
|
define('SOURCE_GROUP', 0);
|
||||||
|
define('SOURCE_TASK', 1);
|
||||||
|
define('SOURCE_NETWORK', 2);
|
||||||
|
|
||||||
|
// Backward compatibility ~ Migration.
|
||||||
define('MAP_SOURCE_GROUP', 0);
|
define('MAP_SOURCE_GROUP', 0);
|
||||||
define('MAP_SOURCE_IP_MASK', 1);
|
define('MAP_SOURCE_IP_MASK', 1);
|
||||||
|
|
||||||
define('NETWORKMAP_DEFAULT_WIDTH', 800);
|
define('NETWORKMAP_DEFAULT_WIDTH', 800);
|
||||||
define('NETWORKMAP_DEFAULT_HEIGHT', 800);
|
define('NETWORKMAP_DEFAULT_HEIGHT', 800);
|
||||||
|
|
||||||
|
// Discovery task types.
|
||||||
|
define('DISCOVERY_HOSTDEVICES', 0);
|
||||||
|
define('DISCOVERY_HOSTDEVICES_CUSTOM', 1);
|
||||||
|
define('DISCOVERY_CLOUD_AWS', 10);
|
||||||
|
define('DISCOVERY_APP_VMWARE', 100);
|
||||||
|
|
||||||
|
// Discovery task descriptions.
|
||||||
|
define('CLOUDWIZARD_AWS_DESCRIPTION', 'Discovery.Cloud.AWS.EC2');
|
||||||
|
define('CLOUDWIZARD_VMWARE_DESCRIPTION', 'Discovery.App.VMware');
|
||||||
|
|
||||||
// Background options.
|
// Background options.
|
||||||
define('CENTER', 0);
|
define('CENTER', 0);
|
||||||
define('MOSAIC', 1);
|
define('MOSAIC', 1);
|
||||||
|
|
|
@ -2202,7 +2202,7 @@ function agents_delete_agent($id_agents, $disableACL=false)
|
||||||
|
|
||||||
// Delete agent in networkmap enterprise
|
// Delete agent in networkmap enterprise
|
||||||
if (enterprise_installed()) {
|
if (enterprise_installed()) {
|
||||||
enterprise_include_once('include/functions_pandora_networkmap.php');
|
enterprise_include_once('include/functions_networkmap.php');
|
||||||
networkmap_delete_nodes_by_agent([$id_agent]);
|
networkmap_delete_nodes_by_agent([$id_agent]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,17 +1,29 @@
|
||||||
<?php
|
<?php
|
||||||
;
|
/**
|
||||||
// Pandora FMS - http://pandorafms.com
|
* Library for networkmaps in Pandora FMS
|
||||||
// ==================================================
|
*
|
||||||
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
|
* @category Deprecated
|
||||||
// Please see http://pandorafms.org for full contribution list
|
* @package Pandora FMS
|
||||||
// This program is free software; you can redistribute it and/or
|
* @subpackage NetworkMap
|
||||||
// modify it under the terms of the GNU Lesser General Public License
|
* @version 1.0.0
|
||||||
// as published by the Free Software Foundation; version 2
|
* @license See below
|
||||||
// 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 Networkmaps
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2019 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 General Public License
|
||||||
|
* as published by the Free Software Foundation for 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.
|
||||||
|
* ============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Deprecated.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1041,6 +1041,9 @@ function servers_get_server_string_name(int $server)
|
||||||
case SERVER_TYPE_WUX:
|
case SERVER_TYPE_WUX:
|
||||||
return __('WUX server');
|
return __('WUX server');
|
||||||
|
|
||||||
|
case SERVER_TYPE_ENTERPRISE_SATELLITE:
|
||||||
|
return __('Satellite');
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return __('N/A');
|
return __('N/A');
|
||||||
}
|
}
|
||||||
|
|
|
@ -354,8 +354,18 @@ function ux_console_phases_donut($phases, $id, $return=false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function d3_progress_bar($id, $percentile, $width, $height, $color, $unit='%', $text='', $fill_color='#FFFFFF')
|
function d3_progress_bar(
|
||||||
{
|
$id,
|
||||||
|
$percentile,
|
||||||
|
$width,
|
||||||
|
$height,
|
||||||
|
$color,
|
||||||
|
$unit='%',
|
||||||
|
$text='',
|
||||||
|
$fill_color='#FFFFFF',
|
||||||
|
$radiusx=10,
|
||||||
|
$radiusy=10
|
||||||
|
) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$recipient_name = 'progress_bar_'.$id;
|
$recipient_name = 'progress_bar_'.$id;
|
||||||
|
@ -366,8 +376,19 @@ function d3_progress_bar($id, $percentile, $width, $height, $color, $unit='%', $
|
||||||
$output .= '<div id='.$recipient_name." style='overflow: hidden;'></div>";
|
$output .= '<div id='.$recipient_name." style='overflow: hidden;'></div>";
|
||||||
$output .= include_javascript_d3(true);
|
$output .= include_javascript_d3(true);
|
||||||
$output .= "<script language=\"javascript\" type=\"text/javascript\">
|
$output .= "<script language=\"javascript\" type=\"text/javascript\">
|
||||||
progress_bar_d3('".$recipient_name_to_js."', ".(int) $percentile.', '.(int) $width.', '.(int) $height.", '".$color."', '".$unit."', '".$text."', '".$fill_color."');
|
progress_bar_d3(
|
||||||
</script>";
|
'".$recipient_name_to_js."',
|
||||||
|
".(int) $percentile.',
|
||||||
|
'.(int) $width.',
|
||||||
|
'.(int) $height.",
|
||||||
|
'".$color."',
|
||||||
|
'".$unit."',
|
||||||
|
'".$text."',
|
||||||
|
'".$fill_color."',
|
||||||
|
".(int) $radiusx.',
|
||||||
|
'.(int) $radiusy.',
|
||||||
|
);
|
||||||
|
</script>';
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1782,7 +1782,9 @@ function progress_bar_d3(
|
||||||
color,
|
color,
|
||||||
unit,
|
unit,
|
||||||
label,
|
label,
|
||||||
label_color
|
label_color,
|
||||||
|
radiusx,
|
||||||
|
radiusy
|
||||||
) {
|
) {
|
||||||
var startPercent = 0;
|
var startPercent = 0;
|
||||||
var endPercent = parseInt(percentile) / 100;
|
var endPercent = parseInt(percentile) / 100;
|
||||||
|
@ -1799,20 +1801,20 @@ function progress_bar_d3(
|
||||||
.append("rect")
|
.append("rect")
|
||||||
.attr("fill", "#000000")
|
.attr("fill", "#000000")
|
||||||
.attr("fill-opacity", 0.5)
|
.attr("fill-opacity", 0.5)
|
||||||
.attr("height", 20)
|
.attr("height", height)
|
||||||
.attr("width", width)
|
.attr("width", width)
|
||||||
.attr("rx", 10)
|
.attr("rx", radiusx)
|
||||||
.attr("ry", 10)
|
.attr("ry", radiusy)
|
||||||
.attr("x", 0);
|
.attr("x", 0);
|
||||||
|
|
||||||
var progress_front = circle
|
var progress_front = circle
|
||||||
.append("rect")
|
.append("rect")
|
||||||
.attr("fill", color)
|
.attr("fill", color)
|
||||||
.attr("fill-opacity", 1)
|
.attr("fill-opacity", 1)
|
||||||
.attr("height", 20)
|
.attr("height", height)
|
||||||
.attr("width", 0)
|
.attr("width", 0)
|
||||||
.attr("rx", 10)
|
.attr("rx", radiusx)
|
||||||
.attr("ry", 10)
|
.attr("ry", radiusy)
|
||||||
.attr("x", 0);
|
.attr("x", 0);
|
||||||
|
|
||||||
var labelText = circle
|
var labelText = circle
|
||||||
|
@ -1834,7 +1836,7 @@ function progress_bar_d3(
|
||||||
.style("font-weight", "bold")
|
.style("font-weight", "bold")
|
||||||
.style("font-size", 14)
|
.style("font-size", 14)
|
||||||
.attr("text-anchor", "middle")
|
.attr("text-anchor", "middle")
|
||||||
.attr("dy", "-10");
|
.attr("dy", (height - height / 2) / 4);
|
||||||
|
|
||||||
function updateProgress(bar_progress) {
|
function updateProgress(bar_progress) {
|
||||||
var percent_value = Number(bar_progress * 100);
|
var percent_value = Number(bar_progress * 100);
|
||||||
|
|
|
@ -4415,6 +4415,7 @@ div#header_discovery {
|
||||||
width: 9px;
|
width: 9px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div#header_discovery:hover {
|
div#header_discovery:hover {
|
||||||
|
|
|
@ -504,8 +504,8 @@ function create_loading_tooltip(d, x, y) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_tooltip(d) {
|
function show_tooltip(d) {
|
||||||
x = d3.event.clientX + 10;
|
x = d3.event.clientX 100;
|
||||||
y = d3.event.clientY + 10;
|
y = d3.event.clientY 100;
|
||||||
|
|
||||||
if (d.default_tooltip) {
|
if (d.default_tooltip) {
|
||||||
create_loading_tooltip(d, x, y);
|
create_loading_tooltip(d, x, y);
|
||||||
|
|
|
@ -30,7 +30,6 @@ if (!$networkmaps_read && !$networkmaps_write && !$networkmaps_manage) {
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once 'include/functions_networkmap.php';
|
require_once 'include/functions_networkmap.php';
|
||||||
require_once 'include/functions_pandora_networkmap.php';
|
|
||||||
|
|
||||||
$new_networkmap = (bool) get_parameter('new_networkmap', false);
|
$new_networkmap = (bool) get_parameter('new_networkmap', false);
|
||||||
$save_networkmap = (bool) get_parameter('save_networkmap', false);
|
$save_networkmap = (bool) get_parameter('save_networkmap', false);
|
||||||
|
@ -358,12 +357,12 @@ if ($new_networkmap || $save_networkmap) {
|
||||||
|
|
||||||
if ($result !== false) {
|
if ($result !== false) {
|
||||||
$tab = 'view';
|
$tab = 'view';
|
||||||
if ($values['generation_method'] == 6) {
|
if ($values['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
|
||||||
$tab = 'r_dinamic';
|
$tab = 'r_dinamic';
|
||||||
define('_activeTab_', 'radial_dynamic');
|
define('_activeTab_', 'radial_dynamic');
|
||||||
$url = 'index.php?sec=network&sec2=operation/agentes/networkmap.dinamic&activeTab=radial_dynamic';
|
$url = 'index.php?sec=network&sec2=operation/agentes/networkmap.dinamic&activeTab=radial_dynamic';
|
||||||
header(
|
header(
|
||||||
'Location'.ui_get_full_url(
|
'Location: '.ui_get_full_url(
|
||||||
$url.'&id_networkmap='.$id
|
$url.'&id_networkmap='.$id
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -733,6 +732,8 @@ switch ($tab) {
|
||||||
if (($count == 0) && ($network_map['source'] != 'empty')) {
|
if (($count == 0) && ($network_map['source'] != 'empty')) {
|
||||||
if ($network_map['generated']) {
|
if ($network_map['generated']) {
|
||||||
$data['nodes'] = __('Empty map');
|
$data['nodes'] = __('Empty map');
|
||||||
|
} else if ($network_map['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
|
||||||
|
$data['nodes'] = __('Dynamic');
|
||||||
} else {
|
} else {
|
||||||
$data['nodes'] = __('Pending to generate');
|
$data['nodes'] = __('Pending to generate');
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
require_once 'include/functions_pandora_networkmap.php';
|
require_once 'include/functions_networkmap.php';
|
||||||
enterprise_include_once('include/functions_policies.php');
|
enterprise_include_once('include/functions_policies.php');
|
||||||
enterprise_include_once('include/functions_dashboard.php');
|
enterprise_include_once('include/functions_dashboard.php');
|
||||||
require_once 'include/functions_modules.php';
|
require_once 'include/functions_modules.php';
|
||||||
|
@ -866,13 +866,6 @@ if ($networkmap === false) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
$nodes_and_relations = networkmap_process_networkmap($id);
|
|
||||||
|
|
||||||
show_networkmap($id, $user_readonly, $nodes_and_relations, $dash_mode, $map_dash_details);
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
include_once $config['homedir'].'/include/class/NetworkMap.class.php';
|
include_once $config['homedir'].'/include/class/NetworkMap.class.php';
|
||||||
|
|
||||||
$map_manager = new NetworkMap(
|
$map_manager = new NetworkMap(
|
||||||
|
|
Loading…
Reference in New Issue