Merge remote-tracking branch 'origin/develop' into ent-7937-mensaje-this-node-is-configured-with-centralized-mode-de-nodo-sale-en-metaconsola
Conflicts: pandora_console/install.php
This commit is contained in:
commit
8c1838abb7
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.757-210914
|
||||
Version: 7.0NG.757-210929
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.757-210914"
|
||||
pandora_version="7.0NG.757-210929"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1015,7 +1015,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.757';
|
||||
use constant AGENT_BUILD => '210914';
|
||||
use constant AGENT_BUILD => '210929';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.757"
|
||||
PI_BUILD="210914"
|
||||
PI_BUILD="210929"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{210914}
|
||||
{210929}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.757 Build 210914")
|
||||
#define PANDORA_VERSION ("7.0NG.757 Build 210929")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.757(Build 210914))"
|
||||
VALUE "ProductVersion", "(7.0NG.757(Build 210929))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.757-210914
|
||||
Version: 7.0NG.757-210929
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.757-210914"
|
||||
pandora_version="7.0NG.757-210929"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -106,3 +106,9 @@ enterprise/godmode/alerts/alert_events.php
|
|||
enterprise/godmode/alerts/alert_events_list.php
|
||||
enterprise/godmode/alerts/alert_events_rules.php
|
||||
enterprise/godmode/alerts/configure_alert_rule.php
|
||||
enterprise/include/functions_networkmap.php
|
||||
enterprise/operation/agentes/pandora_networkmap.view.php
|
||||
enterprise/include/ajax/map_enterprise.ajax.php
|
||||
enterprise/include/javascript/SimpleMapController.js
|
||||
enterprise/include/javascript/tooltipster.bundle.min.js
|
||||
enterprise/include/styles/tooltipster.bundle.min.css
|
|
@ -0,0 +1,14 @@
|
|||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_network_filter` int(10) UNSIGNED DEFAULT 0;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_network_filter` int(10) UNSIGNED DEFAULT 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `tevent_alert` ADD COLUMN `id_template_conditions` int(10) unsigned NOT NULL default 0;
|
||||
ALTER TABLE `tevent_alert` ADD COLUMN `id_template_fields` int(10) unsigned NOT NULL default 0;
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL;
|
||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL;
|
||||
|
||||
COMMIT;
|
|
@ -710,6 +710,8 @@ CREATE TABLE IF NOT EXISTS `tevent_alert` (
|
|||
ALTER TABLE `tevent_alert` ADD COLUMN `special_days` tinyint(1) default 0;
|
||||
ALTER TABLE `tevent_alert` MODIFY COLUMN `time_threshold` int(10) NOT NULL default 86400;
|
||||
ALTER TABLE `tevent_alert` ADD COLUMN `disable_event` tinyint(1) DEFAULT 0;
|
||||
ALTER TABLE `tevent_alert` ADD COLUMN `id_template_conditions` int(10) unsigned NOT NULL default 0;
|
||||
ALTER TABLE `tevent_alert` ADD COLUMN `id_template_fields` int(10) unsigned NOT NULL default 0;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `tevent_alert_action`
|
||||
|
@ -896,6 +898,9 @@ ALTER TABLE `treport_content_template` ADD COLUMN `landscape` tinyint(1) UNSIGNE
|
|||
ALTER TABLE `treport_content_template` ADD COLUMN `pagebreak` tinyint(1) UNSIGNED NOT NULL default 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `compare_work_time` tinyint(1) UNSIGNED NOT NULL default 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `graph_render` tinyint(1) UNSIGNED NOT NULL default 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_network_filter` int(10) UNSIGNED DEFAULT 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `treport_content_template` ADD COLUMN `ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
|
||||
-- ----------------------------------------------------------------------
|
||||
-- Table `tnews`
|
||||
|
@ -1441,13 +1446,13 @@ ALTER TABLE `ttag` MODIFY COLUMN `name` text NOT NULL default '';
|
|||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 48);
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 49);
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
|
||||
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
|
||||
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 756);
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 757);
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
|
||||
UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields';
|
||||
DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password';
|
||||
|
@ -1774,6 +1779,9 @@ ALTER TABLE `treport_content` ADD COLUMN `pagebreak` tinyint(1) UNSIGNED NOT NUL
|
|||
ALTER TABLE `treport_content` ADD COLUMN `compare_work_time` tinyint(1) UNSIGNED NOT NULL default 0;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `graph_render` tinyint(1) UNSIGNED NOT NULL default 0;
|
||||
ALTER TABLE `treport_content` MODIFY `external_source` MEDIUMTEXT;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_network_filter` int(10) UNSIGNED DEFAULT 0;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
ALTER TABLE `treport_content` ADD COLUMN `ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tmodule_relationship`
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin
|
||||
// Begin.
|
||||
require_once $config['homedir'].'/include/functions_modules.php';
|
||||
require_once $config['homedir'].'/include/functions_categories.php';
|
||||
require_once $config['homedir'].'/include/graphs/functions_d3.php';
|
||||
|
@ -273,7 +273,8 @@ $table_simple->data[0][3] .= html_print_select_from_sql(
|
|||
true,
|
||||
false,
|
||||
true,
|
||||
$disabledBecauseInPolicy
|
||||
$disabledBecauseInPolicy,
|
||||
'width: 150px'
|
||||
);
|
||||
|
||||
if ((isset($id_agent_module) && $id_agent_module) || $id_policy_module != 0) {
|
||||
|
@ -358,7 +359,7 @@ if (!$edit) {
|
|||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'width:200px',
|
||||
false,
|
||||
100
|
||||
);
|
||||
|
@ -637,7 +638,7 @@ $table_advanced->data[1][4] = html_print_extended_select_for_post_process(
|
|||
'0',
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'width:10em',
|
||||
false,
|
||||
$disabledBecauseInPolicy
|
||||
);
|
||||
|
|
|
@ -0,0 +1,195 @@
|
|||
<?php
|
||||
/**
|
||||
* Empty Network map editor.
|
||||
*
|
||||
* @category View
|
||||
* @package Pandora FMS
|
||||
* @subpackage Enterprise
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
// Check user credentials
|
||||
check_login();
|
||||
|
||||
$id = (int) get_parameter('id_networkmap', 0);
|
||||
|
||||
$new_empty_networkmap = (bool) get_parameter('new_empty_networkmap', false);
|
||||
$edit_networkmap = (bool) get_parameter('edit_networkmap', false);
|
||||
|
||||
$not_found = false;
|
||||
|
||||
if (empty($id)) {
|
||||
$new_empty_networkmap = true;
|
||||
$edit_networkmap = false;
|
||||
}
|
||||
|
||||
if ($new_empty_networkmap) {
|
||||
$name = '';
|
||||
$id_group = 0;
|
||||
$node_radius = 40;
|
||||
$description = '';
|
||||
}
|
||||
|
||||
if ($edit_networkmap) {
|
||||
if (enterprise_installed()) {
|
||||
$disabled_generation_method_select = true;
|
||||
}
|
||||
|
||||
$disabled_source = true;
|
||||
|
||||
$values = db_get_row('tmap', 'id', $id);
|
||||
|
||||
$not_found = false;
|
||||
if ($values === false) {
|
||||
$not_found = true;
|
||||
} else {
|
||||
$id_group = $values['id_group'];
|
||||
|
||||
// ACL for the network map
|
||||
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
|
||||
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW');
|
||||
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$name = io_safe_output($values['name']);
|
||||
|
||||
$description = $values['description'];
|
||||
|
||||
$filter = json_decode($values['filter'], true);
|
||||
|
||||
$node_radius = $filter['node_radius'];
|
||||
}
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Empty Network maps editor'),
|
||||
'images/bricks.png',
|
||||
false,
|
||||
'network_map_enterprise_edit',
|
||||
false,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Topology maps'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Networkmap'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
if ($not_found) {
|
||||
ui_print_error_message(__('Not found networkmap.'));
|
||||
} else {
|
||||
$table = new StdClass();
|
||||
$table->id = 'form_editor';
|
||||
|
||||
$table->width = '98%';
|
||||
$table->class = 'databox_color';
|
||||
|
||||
$table->head = [];
|
||||
|
||||
$table->size = [];
|
||||
$table->size[0] = '30%';
|
||||
|
||||
$table->style = [];
|
||||
$table->style[0] = 'font-weight: bold; width: 150px;';
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = __('Name');
|
||||
$table->data[0][1] = html_print_input_text(
|
||||
'name',
|
||||
$name,
|
||||
'',
|
||||
30,
|
||||
100,
|
||||
true
|
||||
);
|
||||
$table->data[1][0] = __('Group');
|
||||
$table->data[1][1] = '<div class="w250px">'.html_print_select_groups(
|
||||
false,
|
||||
'AR',
|
||||
true,
|
||||
'id_group',
|
||||
$id_group,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
).'</div>';
|
||||
|
||||
$table->data[2][0] = __('Node radius');
|
||||
$table->data[2][1] = html_print_input_text(
|
||||
'node_radius',
|
||||
$node_radius,
|
||||
'',
|
||||
2,
|
||||
10,
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[3][0] = __('Description');
|
||||
$table->data[3][1] = html_print_textarea('description', 7, 25, $description, '', true);
|
||||
|
||||
echo '<form method="post" action="index.php?sec=network&sec2=operation/agentes/pandora_networkmap">';
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
echo "<div style='width: ".$table->width."; text-align: right; margin-top:20px;'>";
|
||||
if ($new_empty_networkmap) {
|
||||
html_print_input_hidden('save_empty_networkmap', 1);
|
||||
html_print_submit_button(
|
||||
__('Save networkmap'),
|
||||
'crt',
|
||||
false,
|
||||
'class="sub next"'
|
||||
);
|
||||
}
|
||||
|
||||
if ($edit_networkmap) {
|
||||
html_print_input_hidden('id_networkmap', $id);
|
||||
html_print_input_hidden('update_empty_networkmap', 1);
|
||||
html_print_submit_button(
|
||||
__('Update networkmap'),
|
||||
'crt',
|
||||
false,
|
||||
'class="sub upd"'
|
||||
);
|
||||
}
|
||||
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
}
|
|
@ -861,10 +861,16 @@ foreach ($simple_alerts as $alert) {
|
|||
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
|
||||
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
|
||||
$policyInfo = policies_is_alert_in_policy2($alert['id'], false);
|
||||
if ($policyInfo === false) {
|
||||
$data[1] .= '';
|
||||
$module_linked = policies_is_module_linked($alert['id_agent_module']);
|
||||
if (is_array($policyInfo) === false && $module_linked === false) {
|
||||
$data[$index['policy']] = '';
|
||||
} else {
|
||||
$img = 'images/policies_mc.png';
|
||||
$module_linked = policies_is_module_linked($alert['id_agent_module']);
|
||||
if ($module_linked === '0') {
|
||||
$img = 'images/unlinkpolicy.png';
|
||||
} else {
|
||||
$img = 'images/policies_mc.png';
|
||||
}
|
||||
|
||||
$data[1] .= ' <a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&pure='.$pure.'&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
|
||||
}
|
||||
|
@ -886,7 +892,7 @@ foreach ($simple_alerts as $alert) {
|
|||
]
|
||||
);
|
||||
} else {
|
||||
if ((int) $alert['id_policy_alerts'] === 0) {
|
||||
if ((int) $alert['id_policy_alerts'] === 0 || $module_linked === '0') {
|
||||
$data[4] .= '<a href="javascript:show_add_action(\''.$alert['id'].'\');">';
|
||||
$data[4] .= html_print_image('images/add.png', true, ['title' => __('Add action'), 'class' => 'invert_filter']);
|
||||
$data[4] .= '</a>';
|
||||
|
|
|
@ -399,6 +399,12 @@ switch ($action) {
|
|||
$sla_sorted_by = $item['top_n'];
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$network_filter = $item['ipam_network_filter'];
|
||||
$alive_ip = $item['ipam_alive_ips'];
|
||||
$agent_not_assigned_to_ip = $item['ipam_ip_not_assigned_to_agent'];
|
||||
break;
|
||||
|
||||
case 'monitor_report':
|
||||
$description = $item['description'];
|
||||
$idAgentModule = $item['id_agent_module'];
|
||||
|
@ -1068,6 +1074,51 @@ $class = 'databox filters';
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_network_filter" class="datos">
|
||||
<td class="bolder"><?php echo __('Filter by network'); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
$sql = 'SELECT id, CONCAT(name_network, " (", network, ")")
|
||||
FROM tipam_network';
|
||||
|
||||
html_print_select_from_sql(
|
||||
$sql,
|
||||
'network_filter',
|
||||
$network_filter,
|
||||
'',
|
||||
'',
|
||||
'0'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_alive_ip" class="datos">
|
||||
<td class="bolder"><?php echo __('Show alive IPs only'); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_checkbox_switch(
|
||||
'alive_ip',
|
||||
1,
|
||||
$alive_ip
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_agent_not_assigned_to_ip" class="datos">
|
||||
<td class="bolder"><?php echo __('Show IPs not assigned to an agent'); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_checkbox_switch(
|
||||
'agent_not_assigned_to_ip',
|
||||
1,
|
||||
$agent_not_assigned_to_ip
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_period" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
|
@ -5514,7 +5565,9 @@ function chooseType() {
|
|||
$("#row_agent_version").hide();
|
||||
$("#row_agent_remote_conf").hide();
|
||||
$("#row_module_free_search").hide();
|
||||
|
||||
$("#row_network_filter").hide();
|
||||
$("#row_alive_ip").hide();
|
||||
$("#row_agent_not_assigned_to_ip").hide();
|
||||
|
||||
// SLA list default state.
|
||||
$("#sla_list").hide();
|
||||
|
@ -6231,6 +6284,13 @@ function chooseType() {
|
|||
$("#row_historical_db_check").hide();
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$("#row_network_filter").show();
|
||||
$("#row_alive_ip").show();
|
||||
$("#row_agent_not_assigned_to_ip").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
break;
|
||||
|
||||
case 'permissions_report':
|
||||
$("#row_description").show();
|
||||
$("#row_users").show();
|
||||
|
|
|
@ -1832,6 +1832,13 @@ switch ($action) {
|
|||
$good_format = true;
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$values['ipam_network_filter'] = get_parameter('network_filter');
|
||||
$values['ipam_alive_ips'] = get_parameter('alive_ip');
|
||||
$values['ipam_ip_not_assigned_to_agent'] = get_parameter('agent_not_assigned_to_ip');
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
$values['period'] = get_parameter('period');
|
||||
$values['top_n'] = get_parameter(
|
||||
|
@ -2229,6 +2236,14 @@ switch ($action) {
|
|||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$es['network_filter'] = get_parameter('network_filter');
|
||||
$es['alive_ip'] = get_parameter('alive_ip');
|
||||
$es['agent_not_assigned_to_ip'] = get_parameter('agent_not_assigned_to_ip');
|
||||
|
||||
// $values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Default.
|
||||
break;
|
||||
|
@ -2536,6 +2551,10 @@ switch ($action) {
|
|||
);
|
||||
}
|
||||
|
||||
$values['ipam_network_filter'] = get_parameter('network_filter', 0);
|
||||
$values['ipam_alive_ips'] = get_parameter('alive_ip', 0);
|
||||
$values['ipam_ip_not_assigned_to_agent'] = get_parameter('agent_not_assigned_to_ip', 0);
|
||||
|
||||
$values['only_display_wrong'] = (int) get_parameter(
|
||||
'checkbox_only_display_wrong',
|
||||
0
|
||||
|
@ -2869,6 +2888,12 @@ switch ($action) {
|
|||
$values['external_source'] = json_encode($es);
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$es['network_filter'] = get_parameter('network_filter');
|
||||
$es['alive_ip'] = get_parameter('alive_ip');
|
||||
$es['agent_not_assigned_to_ip'] = get_parameter('agent_not_assigned_to_ip');
|
||||
break;
|
||||
|
||||
default:
|
||||
// Default.
|
||||
break;
|
||||
|
|
|
@ -87,7 +87,8 @@ if (function_exists('enterprise_hook') === true) {
|
|||
$days_to_expiry = ((strtotime($license_data['expiry_date']) - time()) / (60 * 60 * 24));
|
||||
|
||||
if ((int) $license_data['limit_mode'] === 0) {
|
||||
$limit = db_get_value('count(*)', 'tagente', 'disabled', 0);
|
||||
$agent_table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
$limit = db_get_value('count(*)', $agent_table, 'disabled', 0);
|
||||
} else {
|
||||
$limit = db_get_value('count(*)', 'tagente_modulo', 'disabled', 0);
|
||||
}
|
||||
|
|
|
@ -991,7 +991,7 @@ $email = '<div class="label_select_simple">'.html_print_input_text_extended(
|
|||
$view_mode,
|
||||
'',
|
||||
[
|
||||
'class' => 'input input_line email_icon_input invert_filter',
|
||||
'class' => 'input input_line email_icon_input',
|
||||
'placeholder' => __('E-mail'),
|
||||
],
|
||||
true
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
|
@ -252,7 +252,9 @@ if ($save_event_filter) {
|
|||
$values['filter_only_alert'] = get_parameter('filter_only_alert');
|
||||
$values['id_group_filter'] = get_parameter('id_group_filter');
|
||||
$values['date_from'] = get_parameter('date_from');
|
||||
$values['time_from'] = get_parameter('time_from');
|
||||
$values['date_to'] = get_parameter('date_to');
|
||||
$values['time_to'] = get_parameter('time_to');
|
||||
$values['source'] = get_parameter('source');
|
||||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
|
@ -304,13 +306,15 @@ if ($update_event_filter) {
|
|||
$values['filter_only_alert'] = get_parameter('filter_only_alert');
|
||||
$values['id_group_filter'] = get_parameter('id_group_filter');
|
||||
$values['date_from'] = get_parameter('date_from');
|
||||
$values['time_from'] = get_parameter('time_from');
|
||||
$values['date_to'] = get_parameter('date_to');
|
||||
$values['time_to'] = get_parameter('time_to');
|
||||
$values['source'] = get_parameter('source');
|
||||
$values['id_extra'] = get_parameter('id_extra');
|
||||
$values['user_comment'] = get_parameter('user_comment');
|
||||
$values['id_source_event'] = get_parameter('id_source_event');
|
||||
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$values['server_id'] = get_parameter('server_id');
|
||||
}
|
||||
|
||||
|
@ -355,7 +359,9 @@ if ($get_filter_values) {
|
|||
'id_extra' => '',
|
||||
'id_user_ack' => '',
|
||||
'date_from' => '',
|
||||
'time_from' => '',
|
||||
'date_to' => '',
|
||||
'time_to' => '',
|
||||
'severity' => '',
|
||||
'event_type' => '',
|
||||
'group_rep' => 0,
|
||||
|
@ -380,7 +386,7 @@ if ($get_filter_values) {
|
|||
}
|
||||
}
|
||||
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$server_name = db_get_value('server_name', 'tmetaconsole_setup', 'id', $event_filter['server_id']);
|
||||
if ($server_name !== false) {
|
||||
$event_filter['server_name'] = $server_name;
|
||||
|
@ -543,8 +549,12 @@ function load_form_filter() {
|
|||
$("#select2-server_id-container").text(val);
|
||||
if(i == 'date_from')
|
||||
$("#text-date_from").val(val);
|
||||
if(i == 'time_from')
|
||||
$("#text-time_from").val(val);
|
||||
if(i == 'date_to')
|
||||
$("#text-date_to").val(val);
|
||||
if(i == 'time_to')
|
||||
$("#text-time_to").val(val);
|
||||
if(i == 'module_search')
|
||||
$('input[name=module_search]').val(val);
|
||||
if(i == 'group_name')
|
||||
|
@ -767,7 +777,9 @@ function save_new_filter() {
|
|||
"filter_only_alert" : $("#filter_only_alert").val(),
|
||||
"id_group_filter": $("#id_group_filter").val(),
|
||||
"date_from": $("#text-date_from").val(),
|
||||
"time_from": $("#text-time_from").val(),
|
||||
"date_to": $("#text-date_to").val(),
|
||||
"time_to": $("#text-time_to").val(),
|
||||
"source": $("#text-source").val(),
|
||||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
|
@ -838,7 +850,9 @@ function save_update_filter() {
|
|||
"filter_only_alert" : $("#filter_only_alert").val(),
|
||||
"id_group_filter": $("#id_group_filter").val(),
|
||||
"date_from": $("#text-date_from").val(),
|
||||
"time_from": $("#text-time_from").val(),
|
||||
"date_to": $("#text-date_to").val(),
|
||||
"time_to": $("#text-time_to").val(),
|
||||
"source": $("#text-source").val(),
|
||||
"id_extra": $("#text-id_extra").val(),
|
||||
"user_comment": $("#text-user_comment").val(),
|
||||
|
@ -1783,7 +1797,9 @@ if ($get_list_events_agents) {
|
|||
$tag_without = get_parameter('tag_without');
|
||||
$filter_only_alert = get_parameter('filter_only_alert');
|
||||
$date_from = get_parameter('date_from');
|
||||
$time_from = get_parameter('time_from', '00:00:00');
|
||||
$date_to = get_parameter('date_to');
|
||||
$time_to = get_parameter('time_to', '23:59:59');
|
||||
$id_user = $config['id_user'];
|
||||
|
||||
$returned_sql = events_sql_events_grouped_agents(
|
||||
|
@ -1800,7 +1816,9 @@ if ($get_list_events_agents) {
|
|||
$tag_without,
|
||||
$filter_only_alert,
|
||||
$date_from,
|
||||
$time_from,
|
||||
$date_to,
|
||||
$time_to,
|
||||
$id_user
|
||||
);
|
||||
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
// ______ __ _______ _______ _______
|
||||
// | __ \.---.-.-----.--| |.-----.----.---.-. | ___| | | __|
|
||||
// | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
// |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
//
|
||||
// ============================================================================
|
||||
// Copyright (c) 2007-2021 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
// This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
// You cannnot redistribute it without written permission of copyright holder.
|
||||
// ============================================================================
|
||||
$networkmap = get_parameter('networkmap', false);
|
||||
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/class/NetworkMap.class.php';
|
||||
|
||||
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$node = get_parameter('node', 0);
|
||||
if ($node > 0) {
|
||||
metaconsole_connect(null, $node);
|
||||
}
|
||||
}
|
||||
|
||||
if ($networkmap) {
|
||||
$networkmap_id = get_parameter('networkmap_id', 0);
|
||||
$x_offset = get_parameter('x_offset', 0);
|
||||
$y_offset = get_parameter('y_offset', 0);
|
||||
$zoom_dash = get_parameter('zoom_dash', 0.5);
|
||||
|
||||
// Dashboard mode.
|
||||
$ignore_acl = (bool) get_parameter('ignore_acl', 0);
|
||||
|
||||
$networkmap = db_get_row_filter('tmap', ['id' => $networkmap_id]);
|
||||
|
||||
if ($ignore_acl === false) {
|
||||
// ACL for the network map.
|
||||
$networkmap_read = check_acl($config['id_user'], $networkmap['id_group'], 'MR');
|
||||
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW');
|
||||
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM');
|
||||
|
||||
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
|
||||
if ($node > 0) {
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ob_start();
|
||||
|
||||
if ($networkmap['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
|
||||
$data['name'] = '<a href="index.php?'.'sec=network&'.'sec2=operation/agentes/networkmap.dinamic&'.'activeTab=radial_dynamic&'.'id_networkmap='.$networkmap['id'].'">'.$networkmap['name'].'</a>';
|
||||
global $id_networkmap;
|
||||
$id_networkmap = $networkmap['id'];
|
||||
$tab = 'radial_dynamic';
|
||||
|
||||
include_once 'operation/agentes/networkmap.dinamic.php';
|
||||
} else {
|
||||
$map = new NetworkMap(
|
||||
[
|
||||
'id_map' => $networkmap_id,
|
||||
'widget' => 1,
|
||||
'pure' => 1,
|
||||
'no_popup' => 1,
|
||||
'map_options' => [
|
||||
'x_offs' => $x_offset,
|
||||
'y_offs' => $y_offset,
|
||||
'z_dash' => $zoom_dash,
|
||||
],
|
||||
|
||||
|
||||
]
|
||||
);
|
||||
|
||||
$map->printMap(false, $ignore_acl);
|
||||
}
|
||||
|
||||
$return = ob_get_clean();
|
||||
|
||||
echo $return;
|
||||
|
||||
|
||||
if ($node > 0) {
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ($node > 0) {
|
||||
metaconsole_restore_db();
|
||||
}
|
|
@ -40,6 +40,7 @@ if (is_ajax() === true) {
|
|||
include_once $config['homedir'].'/include/class/TreeGroup.class.php';
|
||||
include_once $config['homedir'].'/include/class/TreeService.class.php';
|
||||
include_once $config['homedir'].'/include/class/TreeGroupEdition.class.php';
|
||||
enterprise_include_once('include/class/TreeIPAMSupernet.class.php');
|
||||
enterprise_include_once('include/class/TreePolicies.class.php');
|
||||
enterprise_include_once('include/class/TreeGroupMeta.class.php');
|
||||
include_once $config['homedir'].'/include/functions_reporting.php';
|
||||
|
@ -190,6 +191,18 @@ if (is_ajax() === true) {
|
|||
);
|
||||
break;
|
||||
|
||||
case 'IPAM_supernets':
|
||||
$tree = new TreeIPAMSupernet(
|
||||
$type,
|
||||
$rootType,
|
||||
$id,
|
||||
$rootID,
|
||||
$serverID,
|
||||
$childrenMethod,
|
||||
$access
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
// No error handler.
|
||||
return;
|
||||
|
|
|
@ -770,7 +770,7 @@ function ldap_process_user_login($login, $password)
|
|||
io_safe_output($config['ldap_base_dn']),
|
||||
$config['ldap_login_attr'],
|
||||
io_safe_output($config['ldap_admin_login']),
|
||||
$config['ldap_admin_pass'],
|
||||
io_safe_output($config['ldap_admin_pass']),
|
||||
io_safe_output($login)
|
||||
);
|
||||
|
||||
|
|
|
@ -837,8 +837,11 @@ class ModuleTemplates extends HTML
|
|||
|
||||
$penInfo = db_get_all_rows_filter('tnetwork_profile_pen', ['id_np' => $this->id_np]);
|
||||
$penList = [];
|
||||
foreach ($penInfo as $pen) {
|
||||
$penList[] = $pen['pen'];
|
||||
// Handle if list of PEN does not exist or is empty.
|
||||
if ($penInfo !== false) {
|
||||
foreach ($penInfo as $pen) {
|
||||
$penList[] = $pen['pen'];
|
||||
}
|
||||
}
|
||||
|
||||
$this->pen = implode(',', $penList);
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_networkmap.php';
|
||||
enterprise_include_once('include/functions_networkmap.php');
|
||||
enterprise_include_once('include/functions_discovery.php');
|
||||
|
||||
// Avoid node overlapping.
|
||||
|
@ -723,13 +722,7 @@ class NetworkMap
|
|||
}
|
||||
|
||||
if ($this->idMap !== false) {
|
||||
if (enterprise_installed()) {
|
||||
// Enterprise environment: LOAD.
|
||||
$this->nodes = enterprise_hook(
|
||||
'get_nodes_from_db',
|
||||
[$this->idMap]
|
||||
);
|
||||
}
|
||||
$this->nodes = get_nodes_from_db($this->idMap);
|
||||
}
|
||||
|
||||
return $this->nodes;
|
||||
|
@ -762,12 +755,7 @@ class NetworkMap
|
|||
}
|
||||
|
||||
if ($this->idMap !== false) {
|
||||
if (enterprise_installed()) {
|
||||
$this->relations = enterprise_hook(
|
||||
'get_relations_from_db',
|
||||
[$this->idMap]
|
||||
);
|
||||
}
|
||||
$this->relations = get_relations_from_db($this->idMap);
|
||||
}
|
||||
|
||||
return $this->relations;
|
||||
|
@ -786,12 +774,9 @@ class NetworkMap
|
|||
|
||||
// Calculate.
|
||||
// Search.
|
||||
if (enterprise_installed() && $this->idTask) {
|
||||
if ($this->idTask) {
|
||||
// Network map, based on discovery task.
|
||||
return enterprise_hook(
|
||||
'get_discovery_agents',
|
||||
[$this->idTask]
|
||||
);
|
||||
return get_discovery_agents($this->idTask);
|
||||
}
|
||||
|
||||
if ($this->network) {
|
||||
|
@ -1101,18 +1086,14 @@ class NetworkMap
|
|||
$relations = $this->relations;
|
||||
|
||||
// Generate if there's no data in DB about nodes or relations.
|
||||
if (empty($nodes) && empty($relations)) {
|
||||
if (empty($nodes) === true && empty($relations) === true) {
|
||||
$this->generateNetworkMap();
|
||||
return;
|
||||
}
|
||||
|
||||
$graph = enterprise_hook(
|
||||
'networkmap_load_map',
|
||||
[$this]
|
||||
);
|
||||
$graph = networkmap_load_map($this);
|
||||
|
||||
if ($graph === ENTERPRISE_NOT_HOOK) {
|
||||
// Method not available, regenerate.
|
||||
if (empty($graph) === true) {
|
||||
$this->generateNetworkMap();
|
||||
return;
|
||||
}
|
||||
|
@ -2607,15 +2588,7 @@ class NetworkMap
|
|||
|
||||
// Save data.
|
||||
if ($this->idMap > 0 && (isset($this->map['__simulated']) === false)) {
|
||||
if (enterprise_installed()) {
|
||||
$graph = enterprise_hook(
|
||||
'save_generate_nodes',
|
||||
[
|
||||
$this->idMap,
|
||||
$graph,
|
||||
]
|
||||
);
|
||||
}
|
||||
$graph = save_generate_nodes($this->idMap, $graph);
|
||||
|
||||
db_process_sql_update(
|
||||
'tmap',
|
||||
|
@ -2733,7 +2706,6 @@ class NetworkMap
|
|||
$output .= 'var networkmap_refresh_time = 1000 * '.$networkmap['source_period'].";\n";
|
||||
$output .= 'var networkmap_center = [ '.$networkmap['center_x'].', '.$networkmap['center_y']."];\n";
|
||||
$output .= 'var networkmap_dimensions = [ '.$networkmap['width'].', '.$networkmap['height']."];\n";
|
||||
$output .= 'var enterprise_installed = '.((int) enterprise_installed()).";\n";
|
||||
$output .= 'var networkmap_write = '.$networkmap_write.";\n";
|
||||
$output .= 'var node_radius = '.$networkmap['filter']['node_radius'].";\n";
|
||||
$output .= 'var networkmap_holding_area_dimensions = '.json_encode($networkmap['filter']['holding_area']).";\n";
|
||||
|
@ -2883,22 +2855,14 @@ class NetworkMap
|
|||
public function loadAdvancedInterface()
|
||||
{
|
||||
$list_networkmaps = get_networkmaps($this->idMap);
|
||||
if (empty($list_networkmaps)) {
|
||||
|
||||
if (empty($list_networkmaps) === true) {
|
||||
$list_networkmaps = [];
|
||||
}
|
||||
|
||||
$id = 'dialog_node_edit';
|
||||
if (!enterprise_installed()) {
|
||||
$id = 'open_version_dialog';
|
||||
$output = '<div id="open_version" style="display: none" title="'.__('Warning').'">';
|
||||
$output .= '<div class="center mrgn_top_20px w90p font_13px">'.__(
|
||||
'In the Open version of %s can not be edited nodes or map',
|
||||
get_product_name()
|
||||
);
|
||||
$output .= '</div></div>';
|
||||
}
|
||||
|
||||
$output .= '<div id="'.$id.'" class="invisible" title="';
|
||||
$output = '<div id="'.$id.'" class="invisible" title="';
|
||||
$output .= __('Edit node').'">';
|
||||
$output .= '<div class="left w100p">';
|
||||
|
||||
|
@ -3017,16 +2981,14 @@ class NetworkMap
|
|||
true
|
||||
);
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$output .= ui_toggle(
|
||||
html_print_table($table, true),
|
||||
__('Node options'),
|
||||
__('Node options'),
|
||||
'',
|
||||
true,
|
||||
true
|
||||
);
|
||||
}
|
||||
$output .= ui_toggle(
|
||||
html_print_table($table, true),
|
||||
__('Node options'),
|
||||
__('Node options'),
|
||||
'',
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$table = new StdClass();
|
||||
$table->id = 'relations_table';
|
||||
|
@ -3109,16 +3071,14 @@ class NetworkMap
|
|||
true
|
||||
);
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$output .= ui_toggle(
|
||||
html_print_table($table, true),
|
||||
__('Relations'),
|
||||
__('Relations'),
|
||||
'',
|
||||
true,
|
||||
true
|
||||
);
|
||||
}
|
||||
$output .= ui_toggle(
|
||||
html_print_table($table, true),
|
||||
__('Relations'),
|
||||
__('Relations'),
|
||||
'',
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$output .= '</div></div>';
|
||||
|
||||
|
@ -3245,6 +3205,16 @@ class NetworkMap
|
|||
-1,
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[0][2] = html_print_checkbox(
|
||||
'group_recursion',
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'choose_group_for_show_agents()'
|
||||
).__('Recursion');
|
||||
|
||||
$table->data[1][0] = __('Agents');
|
||||
$table->data[1][1] = html_print_select(
|
||||
[-1 => __('None')],
|
||||
|
@ -3340,8 +3310,7 @@ class NetworkMap
|
|||
{
|
||||
$output = '';
|
||||
|
||||
if (enterprise_installed()
|
||||
&& $this->useTooltipster
|
||||
if ($this->useTooltipster
|
||||
) {
|
||||
$output .= '<script type="text/javascript">
|
||||
$(function() {
|
||||
|
@ -3376,7 +3345,7 @@ class NetworkMap
|
|||
graph: networkmap,
|
||||
networkmap_center: networkmap_center,
|
||||
networkmap_dimensions: networkmap_dimensions,
|
||||
enterprise_installed: enterprise_installed,
|
||||
enterprise_installed: 1,
|
||||
node_radius: node_radius,
|
||||
holding_area_dimensions: networkmap_holding_area_dimensions,
|
||||
url_background_grid: url_background_grid,
|
||||
|
@ -3419,18 +3388,17 @@ class NetworkMap
|
|||
{
|
||||
global $config;
|
||||
|
||||
if (enterprise_installed()
|
||||
&& isset($this->useTooltipster)
|
||||
&& $this->useTooltipster == true
|
||||
if (isset($this->useTooltipster) === true
|
||||
&& (bool) $this->useTooltipster === true
|
||||
) {
|
||||
$output = '<script type="text/javascript" src="'.ui_get_full_url(
|
||||
'include/javascript/d3.3.5.14.js'
|
||||
).'" charset="utf-8"></script>';
|
||||
$output .= '<script type="text/javascript" src="'.ui_get_full_url(
|
||||
'enterprise/include/javascript/SimpleMapController.js'
|
||||
'include/javascript/SimpleMapController.js'
|
||||
).'"></script>';
|
||||
$output .= '<script type="text/javascript" src="'.ui_get_full_url(
|
||||
'enterprise/include/javascript/tooltipster.bundle.min.js'
|
||||
'include/javascript/tooltipster.bundle.min.js'
|
||||
).'"></script>';
|
||||
$output .= '<script type="text/javascript" src="'.ui_get_full_url(
|
||||
'include/javascript/jquery.svg.js'
|
||||
|
@ -3439,7 +3407,7 @@ class NetworkMap
|
|||
'include/javascript/jquery.svgdom.js'
|
||||
).'"></script>';
|
||||
$output .= '<link rel="stylesheet" type="text/css" href="'.ui_get_full_url(
|
||||
'/enterprise/include/styles/tooltipster.bundle.min.css'
|
||||
'include/styles/tooltipster.bundle.min.css'
|
||||
).'" />'."\n";
|
||||
|
||||
$output .= '<div id="simple_map" data-id="'.$this->idMap.'" ';
|
||||
|
|
|
@ -222,20 +222,20 @@ class TreeService extends Tree
|
|||
|
||||
switch ($status) {
|
||||
case SERVICE_STATUS_NORMAL:
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_ok_ball.png'.'" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_ok_ball.png').'" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_CRITICAL:
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_critical_ball.png'.'" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_critical_ball.png').'" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_WARNING:
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_warning_ball.png'.'" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_warning_ball.png').'" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_UNKNOWN:
|
||||
default:
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_no_data_ball.png'.'" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
|
||||
$processed_items[$row['id']]['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_no_data_ball.png').'" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -406,21 +406,21 @@ class TreeService extends Tree
|
|||
|
||||
switch ($item->agent()->lastStatus()) {
|
||||
case AGENT_STATUS_NORMAL:
|
||||
$tmp['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_ok_ball.png'.'" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
|
||||
$tmp['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_ok_ball.png').'" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
|
||||
break;
|
||||
|
||||
case AGENT_STATUS_CRITICAL:
|
||||
case AGENT_STATUS_ALERT_FIRED:
|
||||
$tmp['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_critical_ball.png'.'" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
|
||||
$tmp['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_critical_ball.png').'" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
|
||||
break;
|
||||
|
||||
case AGENT_STATUS_WARNING:
|
||||
$tmp['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_warning_ball.png'.'" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
|
||||
$tmp['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_warning_ball.png').'" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
|
||||
break;
|
||||
|
||||
case AGENT_STATUS_UNKNOWN:
|
||||
default:
|
||||
$tmp['statusImageHTML'] = '<img src="'.'images/status_sets/default/agent_no_data_ball.png'.'" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
|
||||
$tmp['statusImageHTML'] = '<img src="'.ui_get_full_url('images/status_sets/default/agent_no_data_ball.png').'" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,8 @@ class TreeTag extends Tree
|
|||
$this->L1orderByFinal = 'tt.name';
|
||||
|
||||
$this->L2condition = 'AND ttm.id_tag = '.$this->rootID;
|
||||
$this->L2inner = $this->L1innerInside;
|
||||
$this->L2inner = 'INNER JOIN ttag_module ttm
|
||||
ON ttm.id_agente_modulo = tam.id_agente_modulo';
|
||||
|
||||
$this->L3forceTagCondition = true;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC210914';
|
||||
$build_version = 'PC210929';
|
||||
$pandora_version = 'v7.0NG.757';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -3304,8 +3304,10 @@ function extract_column($array, $column)
|
|||
|
||||
function get_percentile($percentile, $array)
|
||||
{
|
||||
global $config;
|
||||
|
||||
sort($array);
|
||||
$index = (($percentile / 100) * count($array));
|
||||
$index = (($config['percentil'] / 100) * count($array));
|
||||
|
||||
if (floor($index) == $index) {
|
||||
$result = (($array[($index - 1)] + $array[$index]) / 2);
|
||||
|
|
|
@ -3072,7 +3072,7 @@ function agents_get_network_interfaces($agents=false, $agents_filter=false)
|
|||
|
||||
$ni_by_agents = [];
|
||||
foreach ($agents as $agent) {
|
||||
$agent_id = $agent['id_agente'];
|
||||
$agent_id = (isset($agent['id_agente'])) ? $agent['id_agente'] : $agent;
|
||||
$agent_group_id = $agent['id_grupo'];
|
||||
$agent_name = $agent['alias'];
|
||||
$agent_interfaces = [];
|
||||
|
|
|
@ -5777,10 +5777,6 @@ function api_set_create_alert_template($name, $thrash1, $other, $thrash3)
|
|||
{
|
||||
global $config;
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
$headers = getallheaders();
|
||||
if (isset($headers['idk']) === false
|
||||
&& is_management_allowed($headers['idk']) === false
|
||||
|
@ -16733,9 +16729,15 @@ function api_get_group_id_by_name($thrash1, $thrash2, $other, $thrash3)
|
|||
return;
|
||||
}
|
||||
|
||||
if (is_array($other['data']) === true) {
|
||||
$group_id = $other['data'][0];
|
||||
} else {
|
||||
$group_id = $other['data'];
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT id_grupo
|
||||
FROM tgrupo WHERE nombre = "'.$other['data'].'"'
|
||||
FROM tgrupo WHERE nombre = "'.$group_id.'"'
|
||||
);
|
||||
|
||||
$group_id = db_get_all_rows_sql($sql);
|
||||
|
|
|
@ -620,7 +620,7 @@ function config_update_config()
|
|||
$error_update[] = __('Admin LDAP login');
|
||||
}
|
||||
|
||||
if (!config_update_value('ldap_admin_pass', io_input_password(get_parameter('ldap_admin_pass')))) {
|
||||
if (!config_update_value('ldap_admin_pass', get_parameter('ldap_admin_pass'))) {
|
||||
$error_update[] = __('Admin LDAP password');
|
||||
}
|
||||
|
||||
|
|
|
@ -762,7 +762,7 @@ function events_get_all(
|
|||
}
|
||||
|
||||
if (isset($filter['time_from'])) {
|
||||
$time_from = $filter['time_from'];
|
||||
$time_from = (empty($filter['time_from']) === true) ? '00:00:00' : $filter['time_from'];
|
||||
}
|
||||
|
||||
if (isset($date_from)) {
|
||||
|
@ -785,7 +785,7 @@ function events_get_all(
|
|||
}
|
||||
|
||||
if (isset($filter['time_to'])) {
|
||||
$time_to = $filter['time_to'];
|
||||
$time_to = (empty($filter['time_to']) === true) ? '23:59:59' : $filter['time_to'];
|
||||
}
|
||||
|
||||
if (isset($date_to)) {
|
||||
|
@ -6193,7 +6193,9 @@ function events_get_events_grouped_by_agent(
|
|||
* @param array $tag_without Tag_without.
|
||||
* @param boolean $filter_only_alert Filter_only_alert.
|
||||
* @param string $date_from Date_from.
|
||||
* @param string $time_from Time_from.
|
||||
* @param string $date_to Date_to.
|
||||
* @param string $time_to Time_to.
|
||||
* @param boolean $id_user Id_user.
|
||||
* @param boolean $server_id_search Server_id_search.
|
||||
*
|
||||
|
@ -6213,7 +6215,9 @@ function events_sql_events_grouped_agents(
|
|||
$tag_without=[],
|
||||
$filter_only_alert=false,
|
||||
$date_from='',
|
||||
$time_from='',
|
||||
$date_to='',
|
||||
$time_to='',
|
||||
$id_user=false,
|
||||
$server_id_search=false
|
||||
) {
|
||||
|
@ -6320,27 +6324,35 @@ function events_sql_events_grouped_agents(
|
|||
$sql_post .= " AND id_usuario = '".$id_user_ack."'";
|
||||
}
|
||||
|
||||
if (!isset($date_from)) {
|
||||
if (isset($date_from) === false) {
|
||||
$date_from = '';
|
||||
}
|
||||
|
||||
if (!isset($date_to)) {
|
||||
if (isset($time_from) === false) {
|
||||
$time_from = '00:00:00';
|
||||
}
|
||||
|
||||
if (isset($date_to) === false) {
|
||||
$date_to = '';
|
||||
}
|
||||
|
||||
if (isset($time_to) === false || empty($time_to) === true) {
|
||||
$time_to = '23:59:59';
|
||||
}
|
||||
|
||||
if (($date_from == '') && ($date_to == '')) {
|
||||
if ($event_view_hr > 0) {
|
||||
$unixtime = (get_system_time() - ($event_view_hr * SECONDS_1HOUR));
|
||||
$sql_post .= ' AND (utimestamp > '.$unixtime.')';
|
||||
}
|
||||
} else {
|
||||
if ($date_from != '') {
|
||||
$udate_from = strtotime($date_from.' 00:00:00');
|
||||
if (empty($date_from) === false) {
|
||||
$udate_from = strtotime($date_from.' '.$time_from);
|
||||
$sql_post .= ' AND (utimestamp >= '.$udate_from.')';
|
||||
}
|
||||
|
||||
if ($date_to != '') {
|
||||
$udate_to = strtotime($date_to.' 23:59:59');
|
||||
if (empty($date_to) === false) {
|
||||
$udate_to = strtotime($date_to.' '.$time_to);
|
||||
$sql_post .= ' AND (utimestamp <= '.$udate_to.')';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3755,7 +3755,7 @@ function graph_custom_sql_graph(
|
|||
0,
|
||||
floor($SQL_GRAPH_MAX_LABEL_SIZE / 2)
|
||||
);
|
||||
$label .= '...';
|
||||
$label .= '...<br>';
|
||||
$label .= substr(
|
||||
$first_label,
|
||||
floor(-$SQL_GRAPH_MAX_LABEL_SIZE / 2)
|
||||
|
|
|
@ -1774,6 +1774,12 @@ function html_print_extended_select_for_post_process(
|
|||
$uniq_name = $name;
|
||||
}
|
||||
|
||||
$style = 'font-size: xx-small;';
|
||||
|
||||
if ($select_style !== false) {
|
||||
$style .= sprintf(' %s', $select_style);
|
||||
}
|
||||
|
||||
ob_start();
|
||||
|
||||
echo '<div id="'.$uniq_name.'_default" style="w100p inline_line">';
|
||||
|
@ -1789,7 +1795,7 @@ function html_print_extended_select_for_post_process(
|
|||
false,
|
||||
'',
|
||||
$disabled,
|
||||
'font-size: xx-small;'.$select_style
|
||||
$style
|
||||
);
|
||||
echo ' <a href="javascript:">'.html_print_image(
|
||||
'images/pencil.png',
|
||||
|
@ -1840,20 +1846,20 @@ function html_print_extended_select_for_post_process(
|
|||
/**
|
||||
* Render a pair of select for times and text box for set the time more fine.
|
||||
*
|
||||
* @param string $name Select form name
|
||||
* @param variant $selected Current selected value. Can be a single value or an array of selected values (in combination with multiple)
|
||||
* @param string $name Select form name.
|
||||
* @param mixed $selected Current selected value. Can be a single value or an array of selected values (in combination with multiple).
|
||||
* @param string $script Javascript onChange (select) code.
|
||||
* @param string $nothing Label when nothing is selected.
|
||||
* @param variant $nothing_value Value when nothing is selected
|
||||
* @param mixed $nothing_value Value when nothing is selected.
|
||||
* @param integer $size Size of the input.
|
||||
* @param boolean $return Whether to return an output string or echo now (optional, echo by default).
|
||||
* @param boolean $select_style Wherter to assign to combo a unique name (to have more than one on same page, like dashboard)
|
||||
* @param boolean $unique_name
|
||||
* @param string $class
|
||||
* @param boolean $readonly
|
||||
* @param string $custom_fields
|
||||
* @param string $style_icon
|
||||
* @param boolean $no_change
|
||||
* @param boolean $select_style Wherter to assign to combo a unique name (to have more than one on same page, like dashboard).
|
||||
* @param boolean $unique_name Uunique name value.
|
||||
* @param string $class Class value.
|
||||
* @param boolean $readonly Readonly value.
|
||||
* @param string $custom_fields Custom fields value.
|
||||
* @param string $style_icon Style icon value.
|
||||
* @param boolean $no_change No change value.
|
||||
* @param boolean $allow_zero Allow the use of the value zero.
|
||||
|
||||
* @return string HTML code if return parameter is true.
|
||||
|
@ -1935,7 +1941,7 @@ function html_print_extended_select_for_time(
|
|||
|
||||
ob_start();
|
||||
// Use the no_meta parameter because this image is only in the base console.
|
||||
echo '<div id="'.$uniq_name.'_default" class="wauto inline_line">';
|
||||
echo '<div id="'.$uniq_name.'_default" class="wauto inline_flex">';
|
||||
html_print_select(
|
||||
$fields,
|
||||
$uniq_name.'_select',
|
||||
|
@ -2024,13 +2030,14 @@ function html_print_extended_select_for_time(
|
|||
/**
|
||||
* Print selects to configure the cron of a module.
|
||||
*
|
||||
* @param string Run hour.
|
||||
* @param string Run minute.
|
||||
* @param string Run day of the month.
|
||||
* @param string Run month.
|
||||
* @param string Run day of the week.
|
||||
* @param bool Whether to return an output string or echo now (optional, echo by default).
|
||||
* @param bool Print cron grayed
|
||||
* @param string $hour Run hour.
|
||||
* @param string $minute Run minute.
|
||||
* @param string $mday Run day of the month.
|
||||
* @param string $month Run month.
|
||||
* @param string $wday Run day of the week.
|
||||
* @param boolean $return Whether to return an output string or echo now (optional, echo by default).
|
||||
* @param boolean $disabled If true, the control will show disabled.
|
||||
* @param boolean $to Print cron grayed.
|
||||
*
|
||||
* @return string HTML code if return parameter is true.
|
||||
*/
|
||||
|
@ -4814,7 +4821,11 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
|||
((isset($data['size']) === true) ? $data['size'] : false),
|
||||
((isset($data['return']) === true) ? $data['return'] : false),
|
||||
((isset($data['style']) === true) ? $data['selected'] : false),
|
||||
((isset($data['unique']) === true) ? $data['unique'] : false)
|
||||
((isset($data['unique']) === true) ? $data['unique'] : false),
|
||||
((isset($data['class']) === true) ? $data['class'] : ''),
|
||||
((isset($data['readonly']) === true) ? $data['readonly'] : false),
|
||||
((isset($data['custom_fields']) === true) ? $data['custom_fields'] : false),
|
||||
((isset($data['style_icon']) === true) ? $data['style_icon'] : '')
|
||||
);
|
||||
break;
|
||||
|
||||
|
@ -5280,7 +5291,7 @@ function html_print_tabs(array $tabs)
|
|||
* Create a datalist.
|
||||
*
|
||||
* @param string $id Use custom id.
|
||||
* @param string $values Input values.
|
||||
* @param array $values Input values.
|
||||
* @param string $returnparam Whether to return an output string or echo now (optional, echo by default).
|
||||
*
|
||||
* @return string HTML code if return parameter is true.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -757,6 +757,13 @@ function reporting_make_reporting_data(
|
|||
);
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
$report['contents'][] = reporting_ipam(
|
||||
$report,
|
||||
$content
|
||||
);
|
||||
break;
|
||||
|
||||
case 'agent_detailed_event':
|
||||
case 'event_report_agent':
|
||||
$report_control = io_safe_output(
|
||||
|
|
|
@ -389,6 +389,10 @@ function reporting_html_print_report($report, $mini=false, $report_info=1)
|
|||
reporting_html_inventory_changes($table, $item);
|
||||
break;
|
||||
|
||||
case 'IPAM_network':
|
||||
reporting_enterprise_html_ipam($table, $item, $mini);
|
||||
break;
|
||||
|
||||
case 'agent_detailed_event':
|
||||
case 'event_report_agent':
|
||||
reporting_html_event_report_agent($table, $item);
|
||||
|
|
|
@ -686,6 +686,13 @@ function reports_get_report_types($template=false, $not_editor=false)
|
|||
'name' => __('Module Histogram graph'),
|
||||
];
|
||||
|
||||
if ($config['enterprise_installed'] && is_metaconsole() === false) {
|
||||
$types['IPAM_network'] = [
|
||||
'optgroup' => __('IPAM'),
|
||||
'name' => __('IPAM networks'),
|
||||
];
|
||||
}
|
||||
|
||||
$types['SLA'] = [
|
||||
'optgroup' => __('SLA'),
|
||||
'name' => __('S.L.A.'),
|
||||
|
|
|
@ -705,7 +705,7 @@ function tags_get_tags_formatted($tags_array, $get_url=true)
|
|||
$tags = [];
|
||||
foreach ($tags_array as $t) {
|
||||
$tag_url = explode(' ', trim($t));
|
||||
$tag = $tag_url[0];
|
||||
$tag = io_safe_output($tag_url[0]);
|
||||
if (isset($tag_url[1]) && $tag_url[1] != '' && $get_url) {
|
||||
$title = $tag_url[1];
|
||||
// $link = '<a href="'.$tag_url[1].'" target="_blank">'.html_print_image('images/zoom.png',true, array('alt' => $title, 'title' => $title)).'</a>';
|
||||
|
|
|
@ -1117,10 +1117,17 @@ function ui_format_alert_row(
|
|||
}
|
||||
|
||||
$policyInfo = policies_is_alert_in_policy2($alert['id'], false);
|
||||
if ($policyInfo === false) {
|
||||
$module_linked = policies_is_module_linked($alert['id_agent_module']);
|
||||
if (is_array($policyInfo) === false && $module_linked === false) {
|
||||
$data[$index['policy']] = '';
|
||||
} else {
|
||||
$img = 'images/policies_mc.png';
|
||||
$module_linked = policies_is_module_linked($alert['id_agent_module']);
|
||||
if ($module_linked === '0') {
|
||||
$img = 'images/unlinkpolicy.png';
|
||||
} else {
|
||||
$img = 'images/policies_mc.png';
|
||||
}
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
$data[$index['policy']] = '<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
|
||||
} else {
|
||||
|
@ -5738,7 +5745,7 @@ function ui_print_agent_autocomplete_input($parameters)
|
|||
}
|
||||
|
||||
$attrs = [];
|
||||
$attrs['style'] = 'background: url('.$icon_image.') no-repeat right; '.$text_color.'';
|
||||
$attrs['style'] = 'padding-right: 20px; background: url('.$icon_image.') no-repeat right; '.$text_color.'';
|
||||
|
||||
if (!$disabled_javascript_on_blur_function) {
|
||||
$attrs['onblur'] = $javascript_on_blur_function_name.'()';
|
||||
|
|
|
@ -0,0 +1,459 @@
|
|||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 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.
|
||||
|
||||
/* globals d3 */
|
||||
/* globals jQuery */
|
||||
/* globals $ */
|
||||
|
||||
/*-----------------------------------------------*/
|
||||
/*-------------------Constants-------------------*/
|
||||
/*-----------------------------------------------*/
|
||||
var MAX_ZOOM_LEVEL = 5;
|
||||
|
||||
/*-----------------------------------------------*/
|
||||
/*------------------Constructor------------------*/
|
||||
/*-----------------------------------------------*/
|
||||
var SimpleMapController = function(params) {
|
||||
if (!params) {
|
||||
console.log("[SimpleMapController]: No params received");
|
||||
return this;
|
||||
}
|
||||
this._target = params["target"];
|
||||
|
||||
if (typeof params["map_width"] == "undefined") {
|
||||
this.map_width = 0;
|
||||
} else {
|
||||
this.map_width = params["map_width"];
|
||||
}
|
||||
|
||||
if (typeof params["map_height"] == "undefined") {
|
||||
this.map_height = 0;
|
||||
} else {
|
||||
this.map_height = params["map_height"];
|
||||
}
|
||||
|
||||
if (typeof params["font_size"] == "undefined") {
|
||||
this.font_size = 20;
|
||||
} else {
|
||||
this.font_size = params["font_size"];
|
||||
}
|
||||
|
||||
if (typeof params["homedir"] == "undefined") {
|
||||
this.homedir = "";
|
||||
} else {
|
||||
this.homedir = params["homedir"];
|
||||
}
|
||||
|
||||
if (typeof params["custom_params"] == "undefined") {
|
||||
this.custom_params = "";
|
||||
} else {
|
||||
this.custom_params = params["custom_params"];
|
||||
}
|
||||
|
||||
if (typeof params["center_x"] == "undefined") {
|
||||
this.center_x = 0;
|
||||
} else {
|
||||
this.center_x = params["center_x"];
|
||||
}
|
||||
|
||||
if (typeof params["center_y"] == "undefined") {
|
||||
this.center_y = 0;
|
||||
} else {
|
||||
this.center_y = params["center_y"];
|
||||
}
|
||||
|
||||
if (typeof params["z_dash"] == "undefined") {
|
||||
this.z_dash = 0.5;
|
||||
} else {
|
||||
this.z_dash = params["z_dash"];
|
||||
}
|
||||
|
||||
if (typeof params["nodes"] == "undefined") {
|
||||
this.nodes = [];
|
||||
} else {
|
||||
this.nodes = params["nodes"];
|
||||
}
|
||||
|
||||
if (typeof params["arrows"] == "undefined") {
|
||||
this.arrows = [];
|
||||
} else {
|
||||
this.arrows = params["arrows"];
|
||||
}
|
||||
|
||||
var factor = $(this._target).width() / $(this._target).height();
|
||||
|
||||
// Center is about complete SVG map not only central node.
|
||||
// Calculus is to leave same space on left-right (width)
|
||||
// and top-bottom (height).
|
||||
this.center_x = ($(this._target).width() - this.map_width * factor) / 2;
|
||||
this.center_y = ($(this._target).height() - this.map_height * factor) / 2;
|
||||
};
|
||||
|
||||
/*-----------------------------------------------*/
|
||||
/*------------------Atributes--------------------*/
|
||||
/*-----------------------------------------------*/
|
||||
SimpleMapController.prototype._viewport = null;
|
||||
SimpleMapController.prototype._zoomManager = null;
|
||||
|
||||
/*-----------------------------------------------*/
|
||||
/*--------------------Methods--------------------*/
|
||||
/*-----------------------------------------------*/
|
||||
/**
|
||||
* Function init_trans_map
|
||||
* Return void
|
||||
* This function init the transactional map
|
||||
*/
|
||||
SimpleMapController.prototype.init_map = function() {
|
||||
var self = this;
|
||||
|
||||
var svg = d3.select(self._target + " svg");
|
||||
|
||||
self._zoomManager = d3.behavior
|
||||
.zoom()
|
||||
.scale(self.z_dash)
|
||||
.scaleExtent([1 / MAX_ZOOM_LEVEL, MAX_ZOOM_LEVEL])
|
||||
.on("zoom", zoom);
|
||||
|
||||
self._viewport = svg
|
||||
.call(self._zoomManager)
|
||||
.append("g")
|
||||
.attr("class", "viewport")
|
||||
.attr("transform", "translate(0, 0) scale(" + self.z_dash + ")");
|
||||
|
||||
self._slider = d3
|
||||
.select(self._target + " .zoom_controller .vertical_range")
|
||||
.property("value", 0)
|
||||
.property("min", -Math.log(MAX_ZOOM_LEVEL))
|
||||
.property("max", Math.log(MAX_ZOOM_LEVEL))
|
||||
.property("step", (Math.log(MAX_ZOOM_LEVEL) * 2) / MAX_ZOOM_LEVEL)
|
||||
.on("input", slided);
|
||||
|
||||
/**
|
||||
* Function zoom
|
||||
* Return void
|
||||
* This function manages the zoom
|
||||
*/
|
||||
function zoom() {
|
||||
self.last_event = "zoom";
|
||||
|
||||
var zoom_level = d3.event.scale;
|
||||
|
||||
self._slider.property("value", Math.log(zoom_level));
|
||||
|
||||
self._viewport.attr(
|
||||
"transform",
|
||||
"translate(" + d3.event.translate + ") scale(" + zoom_level + ")"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function slided
|
||||
* Return void
|
||||
* This function manages the slide (zoom system)
|
||||
*/
|
||||
function slided() {
|
||||
var slider_value = parseFloat(self._slider.property("value"));
|
||||
|
||||
var zoom_level = Math.exp(slider_value);
|
||||
|
||||
/*----------------------------------------------------------------*/
|
||||
/*-Code to translate the map with the zoom for to hold the center-*/
|
||||
/*----------------------------------------------------------------*/
|
||||
var center = [
|
||||
parseFloat(d3.select(self._target).style("width")) / 2,
|
||||
parseFloat(d3.select(self._target).style("height")) / 2
|
||||
];
|
||||
|
||||
var old_translate = self._zoomManager.translate();
|
||||
var old_scale = self._zoomManager.scale();
|
||||
|
||||
var temp1 = [
|
||||
(center[0] - old_translate[0]) / old_scale,
|
||||
(center[1] - old_translate[1]) / old_scale
|
||||
];
|
||||
|
||||
var temp2 = [
|
||||
temp1[0] * zoom_level + old_translate[0],
|
||||
temp1[1] * zoom_level + old_translate[1]
|
||||
];
|
||||
|
||||
var new_translation = [
|
||||
old_translate[0] + center[0] - temp2[0],
|
||||
old_translate[1] + center[1] - temp2[1]
|
||||
];
|
||||
|
||||
self._zoomManager
|
||||
.scale(zoom_level)
|
||||
.translate(new_translation)
|
||||
.event(self._viewport);
|
||||
}
|
||||
|
||||
self.paint_arrows();
|
||||
self.paint_nodes();
|
||||
};
|
||||
|
||||
SimpleMapController.prototype.paint_nodes = function() {
|
||||
var self = this;
|
||||
if (self.nodes != null) {
|
||||
// Initialize objects.
|
||||
var circle_elem = self._viewport
|
||||
.selectAll(".node")
|
||||
.data(self.nodes)
|
||||
.enter()
|
||||
.append("g")
|
||||
.attr("id", function(d) {
|
||||
return "node_" + d["id"];
|
||||
})
|
||||
.attr("transform", function(d) {
|
||||
return "translate(" + d["x"] + ", " + d["y"] + ")";
|
||||
})
|
||||
.attr("class", "draggable node")
|
||||
.attr("image", function(d) {
|
||||
return d["image"];
|
||||
})
|
||||
.attr("style", function(d) {
|
||||
return (
|
||||
"fill: " + d["color"] + "; " + "stroke: " + d["stroke-color"] + ";"
|
||||
);
|
||||
})
|
||||
.attr("stroke-width", function(d) {
|
||||
return d["stroke-width"];
|
||||
})
|
||||
.style("cursor", function(d) {
|
||||
if (d["id"] === "0") {
|
||||
return "default";
|
||||
} else {
|
||||
return "pointer";
|
||||
}
|
||||
});
|
||||
|
||||
// Node size in map.
|
||||
circle_elem
|
||||
.append("circle")
|
||||
.attr("cx", self.center_x)
|
||||
.attr("cy", function(d) {
|
||||
return self.center_y + d["radius"];
|
||||
})
|
||||
.attr("r", function(d) {
|
||||
return d["radius"];
|
||||
});
|
||||
|
||||
circle_elem.each(function(node, index) {
|
||||
if (Array.isArray(node["label"])) {
|
||||
node["label"].forEach(function(value, index2) {
|
||||
d3.selectAll("#node_" + index)
|
||||
.append("text")
|
||||
.attr("dx", function(d) {
|
||||
if (typeof d["label_x_offset"] == "undefined") {
|
||||
d["label_x_offset"] = 0;
|
||||
}
|
||||
return self.center_x + d["label_x_offset"];
|
||||
})
|
||||
.attr("dy", function(d) {
|
||||
if (typeof d["font_size"] == "undefined") {
|
||||
d["font_size"] = self.font_size;
|
||||
}
|
||||
if (typeof d["label_y_offset"] == "undefined") {
|
||||
d["label_y_offset"] = d["radius"] + d["font_size"];
|
||||
}
|
||||
return (
|
||||
self.center_y +
|
||||
d["radius"] +
|
||||
d["label_y_offset"] +
|
||||
index2 * d["font_size"]
|
||||
);
|
||||
})
|
||||
.style("text-anchor", "middle")
|
||||
.style("font-size", function(d) {
|
||||
if (typeof d["font_size"] == "undefined") {
|
||||
d["font_size"] = self.font_size;
|
||||
}
|
||||
return d["font_size"] + "px";
|
||||
})
|
||||
.style("stroke-width", 0)
|
||||
.attr("fill", "black")
|
||||
.text(value);
|
||||
});
|
||||
} else {
|
||||
circle_elem
|
||||
.append("text")
|
||||
.attr("dx", function(d) {
|
||||
if (typeof d["label_x_offset"] == "undefined") {
|
||||
d["label_x_offset"] = 0;
|
||||
}
|
||||
return self.center_x + d["label_x_offset"];
|
||||
})
|
||||
.attr("dy", function(d) {
|
||||
if (typeof d["font_size"] == "undefined") {
|
||||
d["font_size"] = self.font_size;
|
||||
}
|
||||
if (typeof d["label_y_offset"] == "undefined") {
|
||||
d["label_y_offset"] = d["radius"] + d["font_size"];
|
||||
}
|
||||
return self.center_y + d["radius"] + d["label_y_offset"];
|
||||
})
|
||||
.style("text-anchor", "middle")
|
||||
.style("font-size", function(d) {
|
||||
if (typeof d["font_size"] == "undefined") {
|
||||
d["font_size"] = self.font_size;
|
||||
}
|
||||
return d["font_size"] + "px";
|
||||
})
|
||||
.style("stroke-width", 0)
|
||||
.attr("fill", "black")
|
||||
.text(function(d) {
|
||||
return d["label"];
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Node image.
|
||||
circle_elem
|
||||
.append("svg:image")
|
||||
.attr("class", "node_image")
|
||||
.attr("xlink:href", function(d) {
|
||||
return d["image"];
|
||||
})
|
||||
.attr("x", function(d) {
|
||||
if (typeof d["size_image"] != "undefined") {
|
||||
return self.center_x - d["size_image"] / 2;
|
||||
} else {
|
||||
return self.center_x - 52 / 2;
|
||||
}
|
||||
})
|
||||
.attr("y", function(d) {
|
||||
if (typeof size_image != "undefined") {
|
||||
return self.center_y + d["radius"] - d["size_image"] / 2;
|
||||
} else {
|
||||
return self.center_y + d["radius"] - 52 / 2;
|
||||
}
|
||||
})
|
||||
.attr("width", function(d) {
|
||||
return d["image_width"];
|
||||
})
|
||||
.attr("height", function(d) {
|
||||
return d["image_height"];
|
||||
});
|
||||
|
||||
// Tooltipster. This could be dynamic.
|
||||
self.nodes.forEach(function(node) {
|
||||
if (node["id_agent"] != 0) {
|
||||
$("#node_" + node["id"]).tooltipster({
|
||||
contentAsHTML: true,
|
||||
onlyOne: true,
|
||||
updateAnimation: null,
|
||||
interactive: true,
|
||||
trigger: "click",
|
||||
content: $('<img src="' + self.homedir + '/images/spinner.gif"/>'),
|
||||
functionReady: function() {
|
||||
$("#node_" + node["id"]).tooltipster("open");
|
||||
$(".tooltipster-content").css("background", "#FFF");
|
||||
$(".tooltipster-content").css("color", "#000");
|
||||
|
||||
var params = self.custom_params;
|
||||
|
||||
// Add data node click.
|
||||
params.node_data = node;
|
||||
|
||||
params["id_agent"] = node["id_agent"];
|
||||
jQuery.ajax({
|
||||
data: params,
|
||||
dataType: "html",
|
||||
type: "POST",
|
||||
url: self.homedir + "/ajax.php",
|
||||
success: function(data) {
|
||||
$(".tooltipster-content").css("min-height", "330px");
|
||||
$(".tooltipster-content").css("max-height", "500px");
|
||||
$("#node_" + node["id"]).tooltipster("content", data);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
SimpleMapController.prototype.paint_arrows = function() {
|
||||
var self = this;
|
||||
|
||||
if (self.arrows != null) {
|
||||
self._viewport
|
||||
.selectAll(".arrow")
|
||||
.data(self.arrows)
|
||||
.enter()
|
||||
.append("g")
|
||||
.attr("class", "arrow")
|
||||
.attr("to", function(d) {
|
||||
return d["dest"];
|
||||
})
|
||||
.attr("from", function(d) {
|
||||
return d["orig"];
|
||||
})
|
||||
.attr("style", "fill: rgb(50, 50, 128);")
|
||||
.append("line")
|
||||
.attr("stroke", "#373737")
|
||||
.attr("stroke-width", 3)
|
||||
.attr("x1", function(d) {
|
||||
return self.center_x + self.getFirstPoint(d["orig"], "x");
|
||||
})
|
||||
.attr("y1", function(d) {
|
||||
return self.center_y + self.getFirstPoint(d["orig"], "y");
|
||||
})
|
||||
.attr("x2", function(d) {
|
||||
return self.center_x + self.getSecondPoint(d["dest"], "x");
|
||||
})
|
||||
.attr("y2", function(d) {
|
||||
return self.center_y + self.getSecondPoint(d["dest"], "y");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
SimpleMapController.prototype.getFirstPoint = function(orig, coord) {
|
||||
var self = this;
|
||||
var point = 0;
|
||||
|
||||
self.nodes.forEach(function(node) {
|
||||
if (node["id"] === orig) {
|
||||
if (coord == "x") {
|
||||
point = parseFloat(node["x"]);
|
||||
return;
|
||||
} else {
|
||||
point = parseFloat(node["y"]) + node["radius"];
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return point;
|
||||
};
|
||||
|
||||
SimpleMapController.prototype.getSecondPoint = function(dest, coord) {
|
||||
var self = this;
|
||||
var point = 0;
|
||||
|
||||
self.nodes.forEach(function(node) {
|
||||
if (node["id"] === dest) {
|
||||
if (coord == "x") {
|
||||
point = parseFloat(node["x"]);
|
||||
return;
|
||||
} else {
|
||||
point = parseFloat(node["y"]) + node["radius"];
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return point;
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -948,6 +948,133 @@ function processTreeSearch(settings) {
|
|||
});
|
||||
}
|
||||
|
||||
function processServiceTree(settings) {
|
||||
var treeController = TreeController.getController();
|
||||
|
||||
if (
|
||||
typeof treeController.recipient != "undefined" &&
|
||||
treeController.recipient.length > 0
|
||||
)
|
||||
treeController.recipient.empty();
|
||||
|
||||
$(".loading_tree").show();
|
||||
|
||||
var parameters = {};
|
||||
parameters["page"] = "include/ajax/tree.ajax";
|
||||
parameters["getChildren"] = 1;
|
||||
parameters["type"] = "services";
|
||||
parameters["filter"] = {};
|
||||
parameters["filter"]["searchGroup"] = "";
|
||||
parameters["filter"]["searchAgent"] = "";
|
||||
parameters["filter"]["statusAgent"] = "";
|
||||
parameters["filter"]["searchModule"] = "";
|
||||
parameters["filter"]["statusModule"] = "";
|
||||
parameters["filter"]["groupID"] = "";
|
||||
parameters["filter"]["tagID"] = "";
|
||||
parameters["filter"]["searchHirearchy"] = 1;
|
||||
parameters["filter"]["show_not_init_agents"] = 1;
|
||||
parameters["filter"]["show_not_init_modules"] = 1;
|
||||
parameters["filter"]["is_favourite"] = 0;
|
||||
parameters["filter"]["width"] = 100;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: settings.ajaxURL,
|
||||
data: parameters,
|
||||
success: function(data) {
|
||||
if (data.success) {
|
||||
$(".loading_tree").hide();
|
||||
// Get the main values of the tree.
|
||||
var rawTree = Object.values(data.tree);
|
||||
// Sorting tree by description (TreeController.js).
|
||||
rawTree.sort(function(a, b) {
|
||||
var x = a.description.toLowerCase();
|
||||
var y = b.description.toLowerCase();
|
||||
if (x < y) {
|
||||
return -1;
|
||||
}
|
||||
if (x > y) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
treeController.init({
|
||||
recipient: $("div#container_servicemap_" + settings.cellId),
|
||||
detailRecipient: {
|
||||
render: function(element, data) {
|
||||
return {
|
||||
open: function() {
|
||||
$("#module_details_window")
|
||||
.hide()
|
||||
.empty()
|
||||
.append(data)
|
||||
.dialog({
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
title: "Info",
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
},
|
||||
width: 450,
|
||||
height: 500
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
page: parameters["page"],
|
||||
emptyMessage: "No data found",
|
||||
foundMessage: "Found groups",
|
||||
tree: rawTree,
|
||||
baseURL: settings.baseURL,
|
||||
ajaxURL: settings.ajaxURL,
|
||||
filter: parameters["filter"],
|
||||
counterTitles: {
|
||||
total: {
|
||||
agents: "Total agents",
|
||||
modules: "Total modules",
|
||||
none: "Total"
|
||||
},
|
||||
alerts: {
|
||||
agents: "Fired alerts",
|
||||
modules: "Fired alerts",
|
||||
none: "Fired alerts"
|
||||
},
|
||||
critical: {
|
||||
agents: "Critical agents",
|
||||
modules: "Critical modules')",
|
||||
none: "Critical"
|
||||
},
|
||||
warning: {
|
||||
agents: "Warning agents",
|
||||
modules: "Warning modules",
|
||||
none: "Warning"
|
||||
},
|
||||
unknown: {
|
||||
agents: "Unknown agents",
|
||||
modules: "Unknown modules",
|
||||
none: "Unknown"
|
||||
},
|
||||
not_init: {
|
||||
agents: "Not init agents",
|
||||
modules: "Not init modules",
|
||||
none: "Not init"
|
||||
},
|
||||
ok: {
|
||||
agents: " Normal agents ",
|
||||
modules: " Normal modules ",
|
||||
none: " Normal "
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
|
||||
function show_module_detail_dialog(
|
||||
module_id,
|
||||
id_agent,
|
||||
|
|
|
@ -1327,12 +1327,23 @@ function filterByText(selectbox, textbox, textNoData) {
|
|||
function manageComponentFields(action, type) {
|
||||
var fieldLines = $("tr[id*=network_component-" + type + "]").length;
|
||||
var protocol = $("#module_protocol").val();
|
||||
let textForAdd = "";
|
||||
|
||||
if (action === "add") {
|
||||
let lineNumber = fieldLines + 1;
|
||||
let textForAdd =
|
||||
type === "oid-list-pluginRow-snmpRow"
|
||||
? "_oid_" + lineNumber + "_"
|
||||
: lineNumber;
|
||||
|
||||
switch (type) {
|
||||
case "oid-list-pluginRow-snmpRow":
|
||||
textForAdd = "_oid_" + lineNumber + "_";
|
||||
break;
|
||||
|
||||
case "oid-list-wmiRow":
|
||||
textForAdd = "_field_wmi_" + lineNumber + "_";
|
||||
break;
|
||||
|
||||
default:
|
||||
textForAdd = lineNumber;
|
||||
}
|
||||
|
||||
$("#network_component-manage-" + type).before(
|
||||
$("#network_component-" + type + "-row-1")
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -159,6 +159,21 @@ var TreeController = {
|
|||
}
|
||||
};
|
||||
|
||||
var IPAMSupernetCounterTitles = {
|
||||
total_networks: {
|
||||
totals: "Networks"
|
||||
}
|
||||
};
|
||||
|
||||
var IPAMNetworkCounterTitles = {
|
||||
alive_ips: {
|
||||
totals: "Alive IPs"
|
||||
},
|
||||
total_ips: {
|
||||
totals: "Total IPs"
|
||||
}
|
||||
};
|
||||
|
||||
try {
|
||||
var title = "";
|
||||
|
||||
|
@ -192,6 +207,12 @@ var TreeController = {
|
|||
case "services":
|
||||
title = serviceCounterTitles[counterType].totals;
|
||||
break;
|
||||
case "IPAM_supernets":
|
||||
title = IPAMSupernetCounterTitles[counterType].totals;
|
||||
break;
|
||||
case "IPAM_networks":
|
||||
title = IPAMNetworkCounterTitles[counterType].totals;
|
||||
break;
|
||||
default:
|
||||
if (
|
||||
typeof controller.counterTitles != "undefined" &&
|
||||
|
@ -333,6 +354,113 @@ var TreeController = {
|
|||
|
||||
hasCounters = true;
|
||||
}
|
||||
} else if (type == "IPAM_supernets") {
|
||||
var $counters = $("<div></div>");
|
||||
$counters.addClass("tree-node-counters");
|
||||
|
||||
if (counters.total_networks > 0) {
|
||||
// Open the parentheses
|
||||
$counters.append(" (");
|
||||
|
||||
if (
|
||||
typeof counters.total_networks !== "undefined" &&
|
||||
counters.total_networks >= 0
|
||||
) {
|
||||
var $networksCounter = $("<div></div>");
|
||||
$networksCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html(counters.total_networks);
|
||||
|
||||
_processNodeCounterTitle(
|
||||
$networksCounter,
|
||||
type,
|
||||
"total_networks"
|
||||
);
|
||||
|
||||
$counters.append($networksCounter);
|
||||
} else {
|
||||
var $networksCounter = $("<div></div>");
|
||||
$networksCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html("0");
|
||||
|
||||
_processNodeCounterTitle(
|
||||
$networksCounter,
|
||||
type,
|
||||
"total_networks"
|
||||
);
|
||||
|
||||
$counters.append($networksCounter);
|
||||
}
|
||||
|
||||
// Close the parentheses
|
||||
$counters.append(")");
|
||||
|
||||
hasCounters = true;
|
||||
}
|
||||
} else if (type == "IPAM_networks") {
|
||||
var $counters = $("<div></div>");
|
||||
$counters.addClass("tree-node-counters");
|
||||
|
||||
// Open the parentheses
|
||||
$counters.append(" (");
|
||||
|
||||
if (
|
||||
typeof counters.alive_ips !== "undefined" &&
|
||||
counters.alive_ips >= 0
|
||||
) {
|
||||
var $aliveCounter = $("<div></div>");
|
||||
$aliveCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html(counters.alive_ips);
|
||||
|
||||
_processNodeCounterTitle($aliveCounter, type, "alive_ips");
|
||||
|
||||
$counters.append($aliveCounter);
|
||||
} else {
|
||||
var $aliveCounter = $("<div></div>");
|
||||
$aliveCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html("0");
|
||||
|
||||
_processNodeCounterTitle($aliveCounter, type, "alive_ips");
|
||||
|
||||
$counters.append($aliveCounter);
|
||||
}
|
||||
|
||||
if (
|
||||
typeof counters.total_ips !== "undefined" &&
|
||||
counters.total_ips >= 0
|
||||
) {
|
||||
var $totalCounter = $("<div></div>");
|
||||
$totalCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html(counters.total_ips);
|
||||
|
||||
_processNodeCounterTitle($totalCounter, type, "total_ips");
|
||||
|
||||
$counters.append(" : ").append($totalCounter);
|
||||
} else {
|
||||
var $totalCounter = $("<div></div>");
|
||||
$totalCounter
|
||||
.addClass("tree-node-counter")
|
||||
.addClass("total")
|
||||
.html("0");
|
||||
|
||||
_processNodeCounterTitle($totalCounter, type, "total_ips");
|
||||
|
||||
$counters.append(" : ").append($totalCounter);
|
||||
}
|
||||
|
||||
// Close the parentheses
|
||||
$counters.append(")");
|
||||
|
||||
hasCounters = true;
|
||||
} else {
|
||||
var $counters = $("<div></div>");
|
||||
$counters.addClass("tree-node-counters");
|
||||
|
@ -637,6 +765,87 @@ var TreeController = {
|
|||
}
|
||||
|
||||
$content.append(" " + element.alias);
|
||||
break;
|
||||
case "IPAM_supernets":
|
||||
var IPAMSupernetDetailImage = $(
|
||||
'<img class="invert_filter" src="' +
|
||||
(controller.baseURL.length > 0 ? controller.baseURL : "") +
|
||||
'images/transactional_map.png" /> '
|
||||
);
|
||||
|
||||
if (typeof element.id !== "undefined") {
|
||||
IPAMSupernetDetailImage.click(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var postData = {
|
||||
page: "enterprise/include/ajax/ipam.ajax",
|
||||
show_networkmap_statistics: 1,
|
||||
"node_data[id_net]": element.id,
|
||||
"node_data[type_net]": "supernet"
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: controller.ajaxURL,
|
||||
type: "POST",
|
||||
dataType: "html",
|
||||
data: postData,
|
||||
success: function(data, textStatus, xhr) {
|
||||
controller.detailRecipient
|
||||
.render("IPAMsupernets", data)
|
||||
.open();
|
||||
}
|
||||
});
|
||||
}).css("cursor", "pointer");
|
||||
|
||||
$content.append(IPAMSupernetDetailImage);
|
||||
}
|
||||
|
||||
if (element.name !== null) {
|
||||
$content.append(" " + element.name);
|
||||
}
|
||||
|
||||
break;
|
||||
case "IPAM_networks":
|
||||
$content.addClass("ipam-network");
|
||||
|
||||
var IPAMNetworkDetailImage = $(
|
||||
'<img class="invert_filter" src="' +
|
||||
(controller.baseURL.length > 0 ? controller.baseURL : "") +
|
||||
'images/list.png" /> '
|
||||
);
|
||||
|
||||
if (typeof element.id !== "undefined") {
|
||||
IPAMNetworkDetailImage.click(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
//window.location.href = element.IPAMNetworkDetail;
|
||||
var postData = {
|
||||
page: "enterprise/include/ajax/ipam.ajax",
|
||||
show_networkmap_statistics: 1,
|
||||
"node_data[id_net]": element.id,
|
||||
"node_data[type_net]": "network"
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: controller.ajaxURL,
|
||||
type: "POST",
|
||||
dataType: "html",
|
||||
data: postData,
|
||||
success: function(data, textStatus, xhr) {
|
||||
controller.detailRecipient
|
||||
.render("IPAMnetwork", data)
|
||||
.open();
|
||||
}
|
||||
});
|
||||
}).css("cursor", "pointer");
|
||||
|
||||
$content.append(IPAMNetworkDetailImage);
|
||||
}
|
||||
|
||||
if (element.name !== null) {
|
||||
$content.append(" " + element.name);
|
||||
}
|
||||
|
||||
break;
|
||||
case "services":
|
||||
if (
|
||||
|
@ -960,7 +1169,7 @@ var TreeController = {
|
|||
return;
|
||||
}
|
||||
}
|
||||
// If exist the detail container, show the data
|
||||
// If detail container exists, show the data.
|
||||
if (
|
||||
typeof controller.detailRecipient !== "undefined" ||
|
||||
disabled == false
|
||||
|
|
|
@ -352,6 +352,14 @@ class Widget
|
|||
$className .= '\ServiceMapWidget';
|
||||
break;
|
||||
|
||||
case 'service_view':
|
||||
if (\enterprise_installed() === false) {
|
||||
$not_installed = true;
|
||||
}
|
||||
|
||||
$className .= '\ServiceViewWidget';
|
||||
break;
|
||||
|
||||
case 'single_graph':
|
||||
$className .= '\SingleGraphWidget';
|
||||
break;
|
||||
|
|
|
@ -354,6 +354,7 @@ class CustomGraphWidget extends Widget
|
|||
'value' => $values['period'],
|
||||
'nothing' => __('None'),
|
||||
'nothing_value' => 0,
|
||||
'style_icon' => 'flex-grow: 0',
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -325,6 +325,8 @@ class GraphModuleHistogramWidget extends Widget
|
|||
'value' => $values['period'],
|
||||
'nothing' => __('None'),
|
||||
'nothing_value' => 0,
|
||||
'style_icon' => 'flex-grow: 0',
|
||||
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -285,7 +285,6 @@ class NetworkMapWidget extends Widget
|
|||
null,
|
||||
null,
|
||||
true,
|
||||
false,
|
||||
$return_all_group
|
||||
);
|
||||
|
||||
|
@ -438,7 +437,7 @@ class NetworkMapWidget extends Widget
|
|||
$settings = \json_encode(
|
||||
[
|
||||
'cellId' => $this->cellId,
|
||||
'page' => 'enterprise/include/ajax/map_enterprise.ajax',
|
||||
'page' => 'include/ajax/map_enterprise.ajax',
|
||||
'url' => ui_get_full_url('ajax.php'),
|
||||
'networkmap_id' => $id_networkmap,
|
||||
'x_offset' => $x_offset,
|
||||
|
|
|
@ -0,0 +1,471 @@
|
|||
<?php
|
||||
/**
|
||||
* Widget Tree view Pandora FMS Console
|
||||
*
|
||||
* @category Console Class
|
||||
* @package Pandora FMS
|
||||
* @subpackage Widget Tree view
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
namespace PandoraFMS\Dashboard;
|
||||
|
||||
use PandoraFMS\Dashboard\Manager;
|
||||
|
||||
/**
|
||||
* Tree view Widgets.
|
||||
*/
|
||||
class ServiceViewWidget extends Widget
|
||||
{
|
||||
|
||||
/**
|
||||
* Name widget.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* Title widget.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $title;
|
||||
|
||||
/**
|
||||
* Page widget;
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $page;
|
||||
|
||||
/**
|
||||
* Class name widget.
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
protected $className;
|
||||
|
||||
/**
|
||||
* Values options for each widget.
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
protected $values;
|
||||
|
||||
/**
|
||||
* Configuration required.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $configurationRequired;
|
||||
|
||||
/**
|
||||
* Error load widget.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $loadError;
|
||||
|
||||
/**
|
||||
* Width.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $width;
|
||||
|
||||
/**
|
||||
* Heigth.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $height;
|
||||
|
||||
/**
|
||||
* Grid Width.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $gridWidth;
|
||||
|
||||
/**
|
||||
* Dashboard ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $dashboardId;
|
||||
|
||||
/**
|
||||
* Cell ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $cellId;
|
||||
|
||||
|
||||
/**
|
||||
* Construct.
|
||||
*
|
||||
* @param integer $cellId Cell ID.
|
||||
* @param integer $dashboardId Dashboard ID.
|
||||
* @param integer $widgetId Widget ID.
|
||||
* @param integer|null $width New width.
|
||||
* @param integer|null $height New height.
|
||||
* @param integer|null $gridWidth Grid width.
|
||||
*/
|
||||
public function __construct(
|
||||
int $cellId,
|
||||
int $dashboardId=0,
|
||||
int $widgetId=0,
|
||||
?int $width=0,
|
||||
?int $height=0,
|
||||
?int $gridWidth=0
|
||||
) {
|
||||
global $config;
|
||||
|
||||
ui_require_css_file('tree');
|
||||
ui_require_css_file('fixed-bottom-box');
|
||||
|
||||
// Includes.
|
||||
enterprise_include_once('/include/functions_services.php');
|
||||
enterprise_include_once('/include/functions_servicemap.php');
|
||||
|
||||
// WARNING: Do not edit. This chunk must be in the constructor.
|
||||
parent::__construct(
|
||||
$cellId,
|
||||
$dashboardId,
|
||||
$widgetId
|
||||
);
|
||||
|
||||
// Width.
|
||||
$this->width = $width;
|
||||
|
||||
// Height.
|
||||
$this->height = $height;
|
||||
|
||||
// Grid Width.
|
||||
$this->gridWidth = $gridWidth;
|
||||
|
||||
// Cell Id.
|
||||
$this->cellId = $cellId;
|
||||
|
||||
// Widget ID.
|
||||
$this->widgetId = $widgetId;
|
||||
|
||||
// Dashboard ID.
|
||||
$this->dashboardId = $dashboardId;
|
||||
|
||||
// Options.
|
||||
$this->values = $this->decoders($this->getOptionsWidget());
|
||||
|
||||
// Positions.
|
||||
$this->position = $this->getPositionWidget();
|
||||
|
||||
// Page.
|
||||
$this->page = basename(__FILE__);
|
||||
|
||||
// ClassName.
|
||||
$class = new \ReflectionClass($this);
|
||||
$this->className = $class->getShortName();
|
||||
|
||||
// Title.
|
||||
$this->title = __('Service View');
|
||||
|
||||
// Name.
|
||||
if (empty($this->name) === true) {
|
||||
$this->name = 'service_view';
|
||||
}
|
||||
|
||||
// // This forces at least a first configuration.
|
||||
// $this->configurationRequired = false;
|
||||
// if (empty($this->values['serviceId']) === true) {
|
||||
// $this->configurationRequired = true;
|
||||
// }
|
||||
$this->overflow_scrollbars = false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Decoders hack for retrocompability.
|
||||
*
|
||||
* @param array $decoder Values.
|
||||
*
|
||||
* @return array Returns the values with the correct key.
|
||||
*/
|
||||
public function decoders(array $decoder): array
|
||||
{
|
||||
$values = [];
|
||||
// Retrieve global - common inputs.
|
||||
$values = parent::decoders($decoder);
|
||||
|
||||
if (isset($decoder['type']) === true) {
|
||||
$values['type'] = $decoder['type'];
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates inputs for form (specific).
|
||||
*
|
||||
* @return array Of inputs.
|
||||
*
|
||||
* @throws Exception On error.
|
||||
*/
|
||||
public function getFormInputs(): array
|
||||
{
|
||||
// Retrieve global - common inputs.
|
||||
$inputs = parent::getFormInputs();
|
||||
|
||||
$values = $this->values;
|
||||
if (empty($values['type']) === true) {
|
||||
$values['type'] = 'tree';
|
||||
}
|
||||
|
||||
// Type services view.
|
||||
$fields = [
|
||||
'tree' => __('Tree'),
|
||||
'table' => __('Table'),
|
||||
];
|
||||
|
||||
$inputs[] = [
|
||||
'label' => __('Type'),
|
||||
'arguments' => [
|
||||
'type' => 'select',
|
||||
'fields' => $fields,
|
||||
'name' => 'type',
|
||||
'selected' => $values['type'],
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
return $inputs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Post for widget.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPost():array
|
||||
{
|
||||
// Retrieve global - common inputs.
|
||||
$values = parent::getPost();
|
||||
$values['type'] = \get_parameter('type', 'tree');
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw widget.
|
||||
*
|
||||
* @return string;
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$values = $this->values;
|
||||
|
||||
$size = parent::getSize();
|
||||
$output = '';
|
||||
|
||||
if ($values['type'] === 'tree' || empty($values['type'])) {
|
||||
if (check_acl($config['id_user'], 0, 'AR') === 0) {
|
||||
$output .= '<div class="container-center">';
|
||||
$output .= \ui_print_error_message(
|
||||
__('The user doesn\'t have permission to read agents'),
|
||||
'',
|
||||
true
|
||||
);
|
||||
$output .= '</div>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
$containerId = 'container_servicemap_'.$this->cellId;
|
||||
$output .= "<div id='".$containerId."' class='tree-controller-recipient'>";
|
||||
$output .= '</div>';
|
||||
|
||||
$output .= \html_print_image(
|
||||
'images/spinner.gif',
|
||||
true,
|
||||
[
|
||||
'class' => 'loading_tree',
|
||||
'style' => 'display: none;',
|
||||
]
|
||||
);
|
||||
|
||||
// Css Files.
|
||||
\ui_require_css_file('tree', 'include/styles/', true);
|
||||
if ($config['style'] == 'pandora_black') {
|
||||
\ui_require_css_file('pandora_black', 'include/styles/', true);
|
||||
}
|
||||
|
||||
\ui_require_javascript_file(
|
||||
'TreeController',
|
||||
'include/javascript/tree/',
|
||||
true
|
||||
);
|
||||
|
||||
\ui_require_javascript_file(
|
||||
'fixed-bottom-box',
|
||||
'include/javascript/',
|
||||
true
|
||||
);
|
||||
|
||||
$settings['cellId'] = $this->cellId;
|
||||
$settings['baseURL'] = \ui_get_full_url('/', false, false, false);
|
||||
$settings['ajaxURL'] = \ui_get_full_url('ajax.php', false, false, false);
|
||||
|
||||
// Show the modal window of an module.
|
||||
$output .= '<div id="module_details_window" class="">';
|
||||
$output .= '</div>';
|
||||
|
||||
// Script.
|
||||
$output .= '<script type="text/javascript">';
|
||||
$output .= 'processServiceTree('.json_encode($settings).');';
|
||||
$output .= '</script>';
|
||||
} else {
|
||||
$own_info = \get_user_info($config['id_user']);
|
||||
if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
|
||||
$display_all_services = true;
|
||||
} else {
|
||||
$display_all_services = false;
|
||||
}
|
||||
|
||||
$order = [
|
||||
'field' => 'name',
|
||||
'field2' => 'name',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
|
||||
$filter['order'] = $order;
|
||||
|
||||
$services = services_get_services(
|
||||
$filter,
|
||||
false,
|
||||
$display_all_services,
|
||||
'AR'
|
||||
);
|
||||
|
||||
$output .= '<div class="white_box mgn_btt_20px mrgn_top_20px pddng_50px services_table" >';
|
||||
$output .= '<div id="table_services_dashboard">';
|
||||
foreach ($services as $service) {
|
||||
switch ($service['status']) {
|
||||
case SERVICE_STATUS_NORMAL:
|
||||
$color = COL_NORMAL;
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_CRITICAL:
|
||||
$color = COL_CRITICAL;
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_WARNING:
|
||||
$color = COL_WARNING;
|
||||
break;
|
||||
|
||||
case SERVICE_STATUS_UNKNOWN:
|
||||
default:
|
||||
$color = COL_UNKNOWN;
|
||||
break;
|
||||
}
|
||||
|
||||
$output .= '<a id="service_'.$service['id'].'" style="background-color: '.$color.'; color: #fff;" class="table_services_item_link_dashboard" href="index.php?'.'sec=network&'.'sec2=enterprise/operation/services/services&tab=service_map&'.'id_service='.$service['id'].'">
|
||||
<div class="table_services_item">
|
||||
<div style="width:50px; text-align:center;">';
|
||||
$output .= \ui_print_group_icon($service['id_group'], true, 'groups_small_white', '', false);
|
||||
|
||||
$output .= '</div>
|
||||
<div class="tooltip" style="color: #fff;position: relative;opacity: 1">'.$service['description'].'
|
||||
</div>
|
||||
<div class="tooltip" style="color: #fff;position: relative;opacity: 1">';
|
||||
$output .= \html_print_image('images/help_w.png', true, ['class' => 'img_help', 'title' => __($service['name']), 'id' => $service['id']]);
|
||||
|
||||
$output .= '</div>
|
||||
</div>
|
||||
</a>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
$output .= '<table cellspacing="0" cellpadding="0">';
|
||||
$output .= '<tr>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="service_status" style=" background: '.COL_UNKNOWN.';"></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="service_status" style="background: '.COL_NORMAL.';"></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="service_status" style="background: '.COL_WARNING.';"></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="service_status" style="background: '.COL_CRITICAL.';"></div>';
|
||||
$output .= '</td>';
|
||||
|
||||
$output .= '</tr><tr>';
|
||||
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="pdd_r_15px"><span class="font_12px">Unknown</span></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '<td >';
|
||||
$output .= '<div class="pdd_r_15px"><span class="font_12px">Normal</span></div>';
|
||||
$output .= '</div>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div class="pdd_r_15px"><span class="font_12px">Warning</span></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '<td>';
|
||||
$output .= '<div><span class="font_12px">Critical</span></div>';
|
||||
$output .= '</td>';
|
||||
$output .= '</tr>';
|
||||
$output .= '</table>';
|
||||
$output .= '</div>';
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get description.
|
||||
*
|
||||
* @return string.
|
||||
*/
|
||||
public static function getDescription()
|
||||
{
|
||||
return __('Services view');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Name.
|
||||
*
|
||||
* @return string.
|
||||
*/
|
||||
public static function getName()
|
||||
{
|
||||
return 'service_view';
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -310,6 +310,7 @@ class SingleGraphWidget extends Widget
|
|||
'value' => $values['period'],
|
||||
'nothing' => __('None'),
|
||||
'nothing_value' => 0,
|
||||
'style_icon' => 'flex-grow: 0',
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -335,6 +335,7 @@ class SLAPercentWidget extends Widget
|
|||
'value' => $values['period'],
|
||||
'nothing' => __('None'),
|
||||
'nothing_value' => 0,
|
||||
'style_icon' => 'flex-grow: 0',
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -240,6 +240,7 @@ class TopNWidget extends Widget
|
|||
'value' => $values['period'],
|
||||
'nothing' => __('None'),
|
||||
'nothing_value' => 0,
|
||||
'style_icon' => 'flex-grow: 0',
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -153,6 +153,17 @@ abstract class Entity
|
|||
/**
|
||||
* Dynamically call methods in this object.
|
||||
*
|
||||
* To dynamically switch between community methods and prioritize
|
||||
* enterprise ones, define method visibility as 'protected' in both
|
||||
* classes.
|
||||
*
|
||||
* For instance, in following situation:
|
||||
* protected PandoraFMS\Agent::test()
|
||||
* protected PandoraFMS\Enterprise\Agent::test()
|
||||
*
|
||||
* If enterprise is available, then PandoraFMS\Enterprise\Agent::test()
|
||||
* will be executed, community method otherwise.
|
||||
*
|
||||
* @param string $methodName Name of target method or attribute.
|
||||
* @param array $params Arguments for target method.
|
||||
*
|
||||
|
@ -161,41 +172,38 @@ abstract class Entity
|
|||
*/
|
||||
public function __call(string $methodName, ?array $params=null)
|
||||
{
|
||||
// Prioritize written methods over dynamic ones.
|
||||
if (method_exists($this, $methodName) === true) {
|
||||
return call_user_func_array(
|
||||
$this->{$methodName},
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
// Enterprise capabilities.
|
||||
// Prioritize enterprise written methods over dynamic fields.
|
||||
if (\enterprise_installed() === true
|
||||
&& $this->enterprise !== null
|
||||
&& method_exists($this->enterprise, $methodName) === true
|
||||
) {
|
||||
return call_user_func_array(
|
||||
[
|
||||
$this->enterprise,
|
||||
$methodName,
|
||||
],
|
||||
$params
|
||||
return $this->enterprise->$methodName(...$params);
|
||||
}
|
||||
|
||||
if (method_exists($this, $methodName) === false) {
|
||||
if (array_key_exists($methodName, $this->fields) === true) {
|
||||
if (empty($params) === true) {
|
||||
return $this->fields[$methodName];
|
||||
} else {
|
||||
$this->fields[$methodName] = $params[0];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
throw new \Exception(
|
||||
get_class($this).' error, method '.$methodName.' does not exist'
|
||||
);
|
||||
}
|
||||
|
||||
if (array_key_exists($methodName, $this->fields) === true) {
|
||||
if (empty($params) === true) {
|
||||
return $this->fields[$methodName];
|
||||
} else {
|
||||
$this->fields[$methodName] = $params[0];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
throw new \Exception(
|
||||
get_class($this).' error, method '.$methodName.' does not exist'
|
||||
);
|
||||
// Do not return nor throw exceptions after this point, allow php
|
||||
// default __call behaviour to continue working with object method
|
||||
// defined.
|
||||
// If you're receiving NULL as result of the method invocation, ensure
|
||||
// it is not private, take in mind this method will mask any access
|
||||
// level error or notification since it is public and has limited access
|
||||
// to the object (public|protected).
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -379,6 +379,11 @@ final class Percentile extends Item
|
|||
|
||||
$moduleValue = \modules_get_last_value($moduleId);
|
||||
if ($moduleValue === false) {
|
||||
// Restore connection.
|
||||
if ($nodeConnected === true) {
|
||||
\metaconsole_restore_db();
|
||||
}
|
||||
|
||||
throw new \InvalidArgumentException(
|
||||
'error fetching the module value'
|
||||
);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.query_result_view_container {
|
||||
|
|
|
@ -166,7 +166,6 @@ div.target.flex {
|
|||
text-align: center;
|
||||
}
|
||||
div#rules::after {
|
||||
content: "Drop Here";
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 2em auto;
|
||||
|
|
|
@ -5814,6 +5814,18 @@ div#status_pie {
|
|||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#table_services_dashboard {
|
||||
display: grid;
|
||||
grid-gap: 20px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||
grid-template-rows: 1fr;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.services_table {
|
||||
width: 97%;
|
||||
}
|
||||
|
||||
.table_services_item_link {
|
||||
font-size: 16px;
|
||||
display: grid;
|
||||
|
@ -5822,6 +5834,14 @@ div#status_pie {
|
|||
padding: 10px 10px 10px 0;
|
||||
}
|
||||
|
||||
.table_services_item_link_dashboard {
|
||||
font-size: 16px;
|
||||
display: grid;
|
||||
min-height: 50px;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 10px 10px 0;
|
||||
}
|
||||
|
||||
.table_services_item {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -176,6 +176,12 @@ div#tree-controller-recipient {
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.tree-controller-recipient {
|
||||
text-align: left;
|
||||
width: 98%;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.tree-node > .node-content > div + div:not(.tree-node-counters) {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
@ -183,3 +189,7 @@ div#tree-controller-recipient {
|
|||
.tree-node .disabled {
|
||||
filter: opacity(0.3);
|
||||
}
|
||||
|
||||
.ipam-network {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -616,36 +616,7 @@ if (! isset($config['id_user'])) {
|
|||
config_prepare_session();
|
||||
}
|
||||
|
||||
if (is_user_admin($config['id_user'])) {
|
||||
// PHP configuration values.
|
||||
$PHPupload_max_filesize = config_return_in_bytes(
|
||||
ini_get('upload_max_filesize')
|
||||
);
|
||||
$PHPmemory_limit = config_return_in_bytes(
|
||||
ini_get('memory_limit')
|
||||
);
|
||||
$PHPmax_execution_time = ini_get('max_execution_time');
|
||||
|
||||
if ($PHPmax_execution_time !== '0') {
|
||||
set_time_limit(0);
|
||||
}
|
||||
|
||||
$PHPupload_max_filesize_min = config_return_in_bytes('800M');
|
||||
|
||||
if ($PHPupload_max_filesize < $PHPupload_max_filesize_min) {
|
||||
ini_set('upload_max_filesize', config_return_in_bytes('800M'));
|
||||
}
|
||||
|
||||
$PHPmemory_limit_min = config_return_in_bytes('500M');
|
||||
|
||||
if ($PHPmemory_limit < $PHPmemory_limit_min && $PHPmemory_limit !== '-1') {
|
||||
ini_set('memory_limit', config_return_in_bytes('500M'));
|
||||
}
|
||||
|
||||
set_time_limit((int) $PHPmax_execution_time);
|
||||
ini_set('upload_max_filesize', $PHPupload_max_filesize);
|
||||
ini_set('memory_limit', $PHPmemory_limit);
|
||||
}
|
||||
|
||||
// ==========================================================
|
||||
// -------- SET THE CUSTOM CONFIGS OF USER ------------------
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
<div style='height: 10px'>
|
||||
<?php
|
||||
$version = '7.0NG.757';
|
||||
$build = '210922';
|
||||
$build = '210929';
|
||||
$banner = "v$version Build $build";
|
||||
|
||||
error_reporting(0);
|
||||
|
|
|
@ -31,13 +31,14 @@ global $config;
|
|||
|
||||
// Check user credentials.
|
||||
check_login();
|
||||
|
||||
// error_reporting(E_ALL);
|
||||
// ini_set("display_errors", 1);
|
||||
// General ACL for the network maps.
|
||||
$networkmaps_read = check_acl($config['id_user'], 0, 'MR');
|
||||
$networkmaps_write = check_acl($config['id_user'], 0, 'MW');
|
||||
$networkmaps_manage = check_acl($config['id_user'], 0, 'MM');
|
||||
$networkmaps_read = (bool) check_acl($config['id_user'], 0, 'MR');
|
||||
$networkmaps_write = (bool) check_acl($config['id_user'], 0, 'MW');
|
||||
$networkmaps_manage = (bool) check_acl($config['id_user'], 0, 'MM');
|
||||
|
||||
if (!$networkmaps_read && !$networkmaps_write && !$networkmaps_manage) {
|
||||
if ($networkmaps_read === false && $networkmaps_write === false && $networkmaps_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
|
@ -48,179 +49,174 @@ if (!$networkmaps_read && !$networkmaps_write && !$networkmaps_manage) {
|
|||
|
||||
require_once 'include/functions_networkmap.php';
|
||||
|
||||
$new_networkmap = (bool) get_parameter('new_networkmap', false);
|
||||
$save_networkmap = (bool) get_parameter('save_networkmap', false);
|
||||
$save_empty_networkmap = (bool) get_parameter('save_empty_networkmap', false);
|
||||
$new_networkmap = (bool) get_parameter('new_networkmap', false);
|
||||
$save_networkmap = (bool) get_parameter('save_networkmap', false);
|
||||
$save_empty_networkmap = (bool) get_parameter('save_empty_networkmap', false);
|
||||
$update_empty_networkmap = (bool) get_parameter('update_empty_networkmap', false);
|
||||
$update_networkmap = (bool) get_parameter('update_networkmap', false);
|
||||
$copy_networkmap = (bool) get_parameter('copy_networkmap', false);
|
||||
$delete = (bool) get_parameter('delete', false);
|
||||
$tab = (string) get_parameter('tab', 'list');
|
||||
$new_empty_networkmap = get_parameter('new_empty_networkmap', false);
|
||||
$update_networkmap = (bool) get_parameter('update_networkmap', false);
|
||||
$copy_networkmap = (bool) get_parameter('copy_networkmap', false);
|
||||
$delete = (bool) get_parameter('delete', false);
|
||||
$tab = (string) get_parameter('tab', 'list');
|
||||
$new_empty_networkmap = (bool) get_parameter('new_empty_networkmap', false);
|
||||
|
||||
if (enterprise_installed()) {
|
||||
if ($new_empty_networkmap) {
|
||||
if ($networkmaps_write || $networkmaps_manage) {
|
||||
enterprise_include(
|
||||
'godmode/agentes/pandora_networkmap_empty.editor.php'
|
||||
);
|
||||
return;
|
||||
}
|
||||
if ($new_empty_networkmap === true) {
|
||||
if ($networkmaps_write === true || $networkmaps_manage === true) {
|
||||
include_once 'godmode/agentes/pandora_networkmap_empty.editor.php';
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ($save_empty_networkmap === true) {
|
||||
$id_group = (int) get_parameter('id_group', 0);
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
|
||||
// ACL for the network map.
|
||||
$networkmap_write = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
|
||||
if ($networkmap_write === false && $networkmap_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
if ($save_empty_networkmap) {
|
||||
$id_group = (int) get_parameter('id_group', 0);
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
$name = (string) get_parameter('name', '');
|
||||
|
||||
// ACL for the network map.
|
||||
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
|
||||
$networkmap_write = check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage = check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
// Default size values.
|
||||
$width = $config['networkmap_max_width'];
|
||||
$height = $config['networkmap_max_width'];
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
$method = (string) get_parameter('method', 'fdp');
|
||||
|
||||
$name = (string) get_parameter('name', '');
|
||||
$dont_show_subgroups = (int) get_parameter_checkbox(
|
||||
'dont_show_subgroups',
|
||||
0
|
||||
);
|
||||
$node_radius = (int) get_parameter('node_radius', 40);
|
||||
$description = get_parameter('description', '');
|
||||
|
||||
// Default size values
|
||||
$width = $config['networkmap_max_width'];
|
||||
$height = $config['networkmap_max_width'];
|
||||
$values = [];
|
||||
$values['name'] = $name;
|
||||
$values['id_group'] = $id_group;
|
||||
$values['source_period'] = 60;
|
||||
$values['width'] = $width;
|
||||
$values['height'] = $height;
|
||||
$values['id_user'] = $config['id_user'];
|
||||
$values['description'] = $description;
|
||||
$values['source'] = 0;
|
||||
$values['source_data'] = $id_group;
|
||||
$values['id_group_map'] = $id_group_map;
|
||||
|
||||
$method = (string) get_parameter('method', 'fdp');
|
||||
|
||||
$dont_show_subgroups = (int) get_parameter_checkbox(
|
||||
'dont_show_subgroups',
|
||||
0
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
$node_radius = (int) get_parameter('node_radius', 40);
|
||||
$description = get_parameter('description', '');
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$values = [];
|
||||
$values['name'] = $name;
|
||||
$values['id_group'] = $id_group;
|
||||
$values['source_period'] = 60;
|
||||
$values['width'] = $width;
|
||||
$values['height'] = $height;
|
||||
$values['id_user'] = $config['id_user'];
|
||||
$values['description'] = $description;
|
||||
$values['source'] = 0;
|
||||
$values['source_data'] = $id_group;
|
||||
$values['id_group_map'] = $id_group_map;
|
||||
$filter = [];
|
||||
$filter['dont_show_subgroups'] = $dont_show_subgroups;
|
||||
$filter['node_radius'] = $node_radius;
|
||||
$filter['empty_map'] = 1;
|
||||
$values['filter'] = json_encode($filter);
|
||||
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$filter = [];
|
||||
$filter['dont_show_subgroups'] = $dont_show_subgroups;
|
||||
$filter['node_radius'] = $node_radius;
|
||||
$filter['empty_map'] = 1;
|
||||
$values['filter'] = json_encode($filter);
|
||||
|
||||
$result = false;
|
||||
if (!empty($name)) {
|
||||
$result = db_process_sql_insert(
|
||||
'tmap',
|
||||
$values
|
||||
);
|
||||
}
|
||||
|
||||
$result_txt = ui_print_result_message(
|
||||
$result,
|
||||
__('Succesfully created'),
|
||||
__('Could not be created'),
|
||||
'',
|
||||
true
|
||||
);
|
||||
|
||||
$id = $result;
|
||||
define('_id_', $id);
|
||||
|
||||
if ($result !== false) {
|
||||
$tab = 'view';
|
||||
header(
|
||||
'Location: '.ui_get_full_url(
|
||||
'index.php?sec=network&sec2=operation/agentes/pandora_networkmap&tab='.$tab.'&id_networkmap='.$id
|
||||
)
|
||||
);
|
||||
}
|
||||
} else if ($update_empty_networkmap) {
|
||||
$id_group = (int) get_parameter('id_group', 0);
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
|
||||
|
||||
// ACL for the new network map
|
||||
$networkmap_write_new = check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage_new = check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$name = (string) get_parameter('name', '');
|
||||
|
||||
$recon_task_id = (int) get_parameter(
|
||||
'recon_task_id',
|
||||
0
|
||||
);
|
||||
|
||||
$source = (string) get_parameter('source', 'group');
|
||||
|
||||
$values = [];
|
||||
$values['name'] = $name;
|
||||
$values['id_group'] = $id_group;
|
||||
|
||||
$values['generation_method'] = 4;
|
||||
|
||||
$description = get_parameter('description', '');
|
||||
$values['description'] = $description;
|
||||
|
||||
$dont_show_subgroups = (int) get_parameter_checkbox(
|
||||
'dont_show_subgroups',
|
||||
0
|
||||
);
|
||||
$node_radius = (int) get_parameter('node_radius', 40);
|
||||
$row = db_get_row('tmap', 'id', $id);
|
||||
$filter = json_decode($row['filter'], true);
|
||||
$filter['dont_show_subgroups'] = $dont_show_subgroups;
|
||||
$filter['node_radius'] = $node_radius;
|
||||
|
||||
$values['filter'] = json_encode($filter);
|
||||
|
||||
$result = false;
|
||||
if (!empty($name)) {
|
||||
$result = db_process_sql_update(
|
||||
'tmap',
|
||||
$values,
|
||||
['id' => $id]
|
||||
);
|
||||
}
|
||||
|
||||
$result_txt = ui_print_result_message(
|
||||
$result,
|
||||
__('Succesfully updated'),
|
||||
__('Could not be updated'),
|
||||
'',
|
||||
true
|
||||
$result = false;
|
||||
if (!empty($name)) {
|
||||
$result = db_process_sql_insert(
|
||||
'tmap',
|
||||
$values
|
||||
);
|
||||
}
|
||||
|
||||
$result_txt = ui_print_result_message(
|
||||
$result,
|
||||
__('Succesfully created'),
|
||||
__('Could not be created'),
|
||||
'',
|
||||
true
|
||||
);
|
||||
|
||||
$id = $result;
|
||||
define('_id_', $id);
|
||||
|
||||
if ($result !== false) {
|
||||
$tab = 'view';
|
||||
header(
|
||||
'Location: '.ui_get_full_url(
|
||||
'index.php?sec=network&sec2=operation/agentes/pandora_networkmap&tab='.$tab.'&id_networkmap='.$id
|
||||
)
|
||||
);
|
||||
}
|
||||
} else if ($update_empty_networkmap) {
|
||||
$id_group = (int) get_parameter('id_group', 0);
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
|
||||
|
||||
// ACL for the new network map
|
||||
$networkmap_write_new = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage_new = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$name = (string) get_parameter('name', '');
|
||||
|
||||
$recon_task_id = (int) get_parameter(
|
||||
'recon_task_id',
|
||||
0
|
||||
);
|
||||
|
||||
$source = (string) get_parameter('source', 'group');
|
||||
|
||||
$values = [];
|
||||
$values['name'] = $name;
|
||||
$values['id_group'] = $id_group;
|
||||
|
||||
$values['generation_method'] = 4;
|
||||
|
||||
$description = get_parameter('description', '');
|
||||
$values['description'] = $description;
|
||||
|
||||
$dont_show_subgroups = (int) get_parameter_checkbox(
|
||||
'dont_show_subgroups',
|
||||
0
|
||||
);
|
||||
$node_radius = (int) get_parameter('node_radius', 40);
|
||||
$row = db_get_row('tmap', 'id', $id);
|
||||
$filter = json_decode($row['filter'], true);
|
||||
$filter['dont_show_subgroups'] = $dont_show_subgroups;
|
||||
$filter['node_radius'] = $node_radius;
|
||||
|
||||
$values['filter'] = json_encode($filter);
|
||||
|
||||
$result = false;
|
||||
if (empty($name) === false) {
|
||||
$result = db_process_sql_update(
|
||||
'tmap',
|
||||
$values,
|
||||
['id' => $id]
|
||||
);
|
||||
}
|
||||
|
||||
$result_txt = ui_print_result_message(
|
||||
$result,
|
||||
__('Succesfully updated'),
|
||||
__('Could not be updated'),
|
||||
'',
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
// The networkmap doesn't exist yet
|
||||
|
@ -245,12 +241,11 @@ if ($new_networkmap || $save_networkmap) {
|
|||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
|
||||
|
||||
// ACL for the network map
|
||||
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
|
||||
$networkmap_write = check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage = check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
// ACL for the network map.
|
||||
$networkmap_write = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
if ($networkmap_write === false && $networkmap_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
|
@ -259,9 +254,9 @@ if ($new_networkmap || $save_networkmap) {
|
|||
return;
|
||||
}
|
||||
|
||||
$name = (string) get_parameter('name', '');
|
||||
$name = (string) get_parameter('name');
|
||||
|
||||
// Default size values
|
||||
// Default size values.
|
||||
$width = $config['networkmap_max_width'];
|
||||
$height = $config['networkmap_max_width'];
|
||||
|
||||
|
@ -288,11 +283,7 @@ if ($new_networkmap || $save_networkmap) {
|
|||
$scale_z = get_parameter('scale_z', 0.5);
|
||||
|
||||
$node_sep = get_parameter('node_sep', '0.25');
|
||||
if ($method == 'twopi') {
|
||||
$rank_sep = get_parameter('rank_sep', '1.0');
|
||||
} else {
|
||||
$rank_sep = get_parameter('rank_sep', '0.5');
|
||||
}
|
||||
$rank_sep = get_parameter('rank_sep', ($method === 'twopi') ? '1.0' : '0.5');
|
||||
|
||||
$mindist = get_parameter('mindist', '1.0');
|
||||
$kval = get_parameter('kval', '0.3');
|
||||
|
@ -348,7 +339,7 @@ if ($new_networkmap || $save_networkmap) {
|
|||
$values['source_data'] = $ip_mask;
|
||||
}
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
if ($networkmap_write === false && $networkmap_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
|
@ -437,10 +428,10 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
|
|||
return;
|
||||
}
|
||||
|
||||
$networkmap_write = check_acl_restricted_all($config['id_user'], $id_group_map_old, 'MW');
|
||||
$networkmap_manage = check_acl_restricted_all($config['id_user'], $id_group_map_old, 'MM');
|
||||
$networkmap_write = (bool) check_acl_restricted_all($config['id_user'], $id_group_map_old, 'MW');
|
||||
$networkmap_manage = (bool) check_acl_restricted_all($config['id_user'], $id_group_map_old, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
if ($networkmap_write === false && $networkmap_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
|
@ -455,12 +446,12 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
|
|||
$id_group_old = db_get_value('id_group', 'tmap', 'id', $id);
|
||||
|
||||
|
||||
// ACL for the new network map
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
$networkmap_write_new = check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage_new = check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
// ACL for the new network map.
|
||||
$id_group_map = (int) get_parameter('id_group_map', 0);
|
||||
$networkmap_write_new = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MW');
|
||||
$networkmap_manage_new = (bool) check_acl_restricted_all($config['id_user'], $id_group_map, 'MM');
|
||||
|
||||
if (!$networkmap_write && !$networkmap_manage) {
|
||||
if ($networkmap_write === false && $networkmap_manage === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap'
|
||||
|
@ -503,7 +494,7 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
|
|||
$values['filter'] = json_encode($filter);
|
||||
|
||||
$result = false;
|
||||
if (!empty($name)) {
|
||||
if (empty($name) === false) {
|
||||
$result = db_process_sql_update(
|
||||
'tmap',
|
||||
$values,
|
||||
|
@ -577,11 +568,9 @@ switch ($tab) {
|
|||
$old_networkmaps_enterprise = [];
|
||||
$old_networkmaps_open = [];
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$old_networkmaps_enterprise = db_get_all_rows_sql('SELECT * FROM tnetworkmap_enterprise');
|
||||
if ($old_networkmaps_enterprise === false) {
|
||||
$old_networkmaps_enterprise = [];
|
||||
}
|
||||
$old_networkmaps_enterprise = db_get_all_rows_sql('SELECT * FROM tnetworkmap_enterprise');
|
||||
if ($old_networkmaps_enterprise === false) {
|
||||
$old_networkmaps_enterprise = [];
|
||||
}
|
||||
|
||||
$old_networkmaps_open = db_get_all_rows_sql('SELECT * FROM tnetwork_map');
|
||||
|
@ -590,13 +579,13 @@ switch ($tab) {
|
|||
foreach ($old_networkmaps_enterprise as $old_map_ent) {
|
||||
$old_map_options = json_decode($old_map_ent['options'], true);
|
||||
|
||||
if (!isset($old_map_options['migrated'])) {
|
||||
if (isset($old_map_options['migrated']) === false) {
|
||||
$ent_maps_to_migrate[] = $old_map_ent['id'];
|
||||
}
|
||||
}
|
||||
|
||||
$open_maps_to_migrate = [];
|
||||
if (isset($old_networkmaps_open) && is_array($old_networkmaps_open)) {
|
||||
if (isset($old_networkmaps_open) === true && is_array($old_networkmaps_open) === true) {
|
||||
foreach ($old_networkmaps_open as $old_map_open) {
|
||||
$text_filter = $old_map_open['text_filter'];
|
||||
if ($text_filter != 'migrated') {
|
||||
|
@ -605,7 +594,7 @@ switch ($tab) {
|
|||
}
|
||||
}
|
||||
|
||||
if (!empty($ent_maps_to_migrate) || !empty($open_maps_to_migrate)) {
|
||||
if (empty($ent_maps_to_migrate) === false || empty($open_maps_to_migrate) === false) {
|
||||
?>
|
||||
<div id="migration_dialog" class="center">
|
||||
<p class="center"><strong>Networkmaps are not migrated, wait while migration is processed...</strong></p>
|
||||
|
@ -694,12 +683,10 @@ switch ($tab) {
|
|||
|
||||
$table->style = [];
|
||||
$table->style['name'] = '';
|
||||
if (enterprise_installed()) {
|
||||
$table->style['nodes'] = 'text-align: center;';
|
||||
}
|
||||
$table->style['nodes'] = 'text-align: center;';
|
||||
|
||||
$table->style['groups'] = 'text-align: left;';
|
||||
if ($networkmaps_write || $networkmaps_manage) {
|
||||
if ($networkmaps_write === true || $networkmaps_manage === true) {
|
||||
$table->style['copy'] = 'text-align: center;';
|
||||
$table->style['edit'] = 'text-align: center;';
|
||||
$table->style['delete'] = 'text-align: center;';
|
||||
|
@ -707,12 +694,10 @@ switch ($tab) {
|
|||
|
||||
$table->size = [];
|
||||
$table->size['name'] = '60%';
|
||||
if (enterprise_installed()) {
|
||||
$table->size['nodes'] = '30px';
|
||||
}
|
||||
$table->size['nodes'] = '30px';
|
||||
|
||||
$table->size['groups'] = '400px';
|
||||
if ($networkmaps_write || $networkmaps_manage) {
|
||||
if ($networkmaps_write === true || $networkmaps_manage === true) {
|
||||
$table->size['copy'] = '30px';
|
||||
$table->size['edit'] = '30px';
|
||||
$table->size['delete'] = '30px';
|
||||
|
@ -720,12 +705,10 @@ switch ($tab) {
|
|||
|
||||
$table->head = [];
|
||||
$table->head['name'] = __('Name');
|
||||
if (enterprise_installed()) {
|
||||
$table->head['nodes'] = __('Nodes');
|
||||
}
|
||||
$table->head['nodes'] = __('Nodes');
|
||||
|
||||
$table->head['groups'] = __('Groups');
|
||||
if ($networkmaps_write || $networkmaps_manage) {
|
||||
if ($networkmaps_write === true || $networkmaps_manage === true) {
|
||||
$table->head['copy'] = __('Copy');
|
||||
$table->head['edit'] = __('Edit');
|
||||
$table->head['delete'] = __('Delete');
|
||||
|
@ -755,19 +738,10 @@ switch ($tab) {
|
|||
$table->data = [];
|
||||
|
||||
foreach ($network_maps as $network_map) {
|
||||
// ACL for the network map
|
||||
$networkmap_read = check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MR');
|
||||
$networkmap_write = check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MW');
|
||||
$networkmap_manage = check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MM');
|
||||
|
||||
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access networkmap enterprise'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
continue;
|
||||
}
|
||||
// ACL for the network map.
|
||||
$networkmap_read = (bool) check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MR');
|
||||
$networkmap_write = (bool) check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MW');
|
||||
$networkmap_manage = (bool) check_acl_restricted_all($config['id_user'], $network_map['id_group_map'], 'MM');
|
||||
|
||||
$data = [];
|
||||
if ($network_map['generation_method'] == 6) {
|
||||
|
@ -797,19 +771,17 @@ switch ($tab) {
|
|||
$count = 0;
|
||||
}
|
||||
|
||||
if (enterprise_installed()) {
|
||||
if (($count == 0) && ($network_map['source'] != 'empty')) {
|
||||
if ($network_map['generated']) {
|
||||
$data['nodes'] = __('Empty map');
|
||||
} else if ($network_map['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
|
||||
$data['nodes'] = __('Dynamic');
|
||||
} else {
|
||||
$data['nodes'] = __('Pending to generate');
|
||||
}
|
||||
if (($count == 0) && ($network_map['source'] != 'empty')) {
|
||||
if ($network_map['generated']) {
|
||||
$data['nodes'] = __('Empty map');
|
||||
} else if ($network_map['generation_method'] == LAYOUT_RADIAL_DYNAMIC) {
|
||||
$data['nodes'] = __('Dynamic');
|
||||
} else {
|
||||
$data['nodes'] = ($network_map['id_group'] == 0) ? ($count - 1) : $count;
|
||||
// PandoraFMS node is not an agent
|
||||
$data['nodes'] = __('Pending to generate');
|
||||
}
|
||||
} else {
|
||||
$data['nodes'] = ($network_map['id_group'] == 0) ? ($count - 1) : $count;
|
||||
// PandoraFMS node is not an agent
|
||||
}
|
||||
|
||||
$data['groups'] = ui_print_group_icon($network_map['id_group_map'], true);
|
||||
|
@ -847,14 +819,12 @@ switch ($tab) {
|
|||
echo '</form>';
|
||||
echo '</div>';
|
||||
|
||||
if (enterprise_installed()) {
|
||||
echo "<div style='width: ".$table->width."; margin-top: 5px;'>";
|
||||
echo '<form method="post" action="index.php?sec=network&sec2=operation/agentes/pandora_networkmap">';
|
||||
html_print_input_hidden('new_empty_networkmap', 1);
|
||||
html_print_submit_button(__('Create empty network map'), 'crt', false, 'class="sub next float-right mrgn_right_20px"');
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
}
|
||||
echo "<div style='width: ".$table->width."; margin-top: 5px;'>";
|
||||
echo '<form method="post" action="index.php?sec=network&sec2=operation/agentes/pandora_networkmap">';
|
||||
html_print_input_hidden('new_empty_networkmap', 1);
|
||||
html_print_submit_button(__('Create empty network map'), 'crt', false, 'class="sub next float-right mrgn_right_20px"');
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -55,6 +55,7 @@ if (is_ajax()) {
|
|||
$process_migration = (bool) get_parameter('process_migration', false);
|
||||
$get_agent_info = (bool) get_parameter('get_agent_info', false);
|
||||
$update_node = (bool) get_parameter('update_node', false);
|
||||
$get_agents_in_group = (bool) get_parameter('get_agents_in_group', false);
|
||||
|
||||
if ($update_node) {
|
||||
$node_json = io_safe_output(get_parameter('node', ''));
|
||||
|
@ -80,6 +81,65 @@ if (is_ajax()) {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
if ($get_agents_in_group) {
|
||||
$id = (int) get_parameter('id', 0);
|
||||
$group = (int) get_parameter('group', -1);
|
||||
$group_recursion = (int) get_parameter('group_recursion', 0);
|
||||
|
||||
$return = [];
|
||||
$return['correct'] = false;
|
||||
|
||||
if ($group != -1) {
|
||||
$where_id_agente = ' 1=1 ';
|
||||
|
||||
$agents_in_networkmap = db_get_all_rows_filter(
|
||||
'titem',
|
||||
[
|
||||
'id_map' => $id,
|
||||
'deleted' => 0,
|
||||
]
|
||||
);
|
||||
if ($agents_in_networkmap !== false) {
|
||||
$ids = [];
|
||||
foreach ($agents_in_networkmap as $agent) {
|
||||
if ($agent['type'] == 0) {
|
||||
$ids[] = $agent['source_data'];
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($ids) === false) {
|
||||
$where_id_agente = 'id_agente NOT IN ('.implode(',', $ids).')';
|
||||
}
|
||||
}
|
||||
|
||||
if ($group_recursion !== 0) {
|
||||
$group_tree = groups_get_children_ids($group);
|
||||
$group = implode(',', $group_tree);
|
||||
}
|
||||
|
||||
$sql = 'SELECT id_agente, alias
|
||||
FROM tagente
|
||||
WHERE id_grupo IN ('.$group.') AND '.$where_id_agente.'
|
||||
ORDER BY alias ASC';
|
||||
|
||||
$agents = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($agents !== false) {
|
||||
$return['agents'] = [];
|
||||
foreach ($agents as $agent) {
|
||||
$return['agents'][$agent['id_agente']] = $agent['alias'];
|
||||
}
|
||||
|
||||
$return['correct'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($return);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($module_get_status) {
|
||||
$id = (int) get_parameter('id', 0);
|
||||
|
||||
|
|
|
@ -765,7 +765,7 @@ if (is_ajax()) {
|
|||
|
||||
$result = [];
|
||||
foreach ($last_modules_set as $module_name => $module_data) {
|
||||
$value = ui_print_truncate_text(io_safe_output($module_name), 'module_medium', false, true);
|
||||
$value = ui_print_truncate_text(io_safe_output($module_name), 'module_medium', false, true, false, '...');
|
||||
|
||||
$module_data_processed = array_map(
|
||||
function ($item) {
|
||||
|
@ -863,10 +863,12 @@ if (is_ajax()) {
|
|||
io_safe_output($nameModule['nombre']),
|
||||
'module_medium',
|
||||
false,
|
||||
true
|
||||
true,
|
||||
false,
|
||||
'...'
|
||||
);
|
||||
} else {
|
||||
$result[io_safe_output($nameModule['nombre']).'$*$'.implode('|', $idAgents)] = ui_print_truncate_text(io_safe_output($nameModule['nombre']), 'module_medium', false, true);
|
||||
$result[io_safe_output($nameModule['nombre']).'$*$'.implode('|', $idAgents)] = ui_print_truncate_text(io_safe_output($nameModule['nombre']), 'module_medium', false, true, false, '...');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ $access = ($event_a == true) ? 'ER' : (($event_w == true) ? 'EW' : (($event_m ==
|
|||
|
||||
|
||||
$readonly = false;
|
||||
if (!is_metaconsole()
|
||||
if (is_metaconsole() === false
|
||||
&& isset($config['event_replication'])
|
||||
&& $config['event_replication'] == 1
|
||||
&& $config['show_events_in_local'] == 1
|
||||
|
@ -82,7 +82,7 @@ if (!is_metaconsole()
|
|||
// Load specific stylesheet.
|
||||
ui_require_css_file('events');
|
||||
ui_require_css_file('tables');
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
ui_require_css_file('tables_meta', ENTERPRISE_DIR.'/include/styles/');
|
||||
}
|
||||
|
||||
|
@ -216,7 +216,7 @@ $section = get_parameter('section', false);
|
|||
|
||||
$id_source_event = get_parameter(
|
||||
'filter[id_source_event]',
|
||||
$filter['id_source_event']
|
||||
($filter['id_source_event'] ?? '')
|
||||
);
|
||||
|
||||
$server_id = get_parameter(
|
||||
|
@ -224,7 +224,7 @@ $server_id = get_parameter(
|
|||
$filter['id_server_meta']
|
||||
);
|
||||
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
// Connect to node database.
|
||||
$id_node = $server_id;
|
||||
if ($id_node != 0) {
|
||||
|
@ -235,16 +235,16 @@ if (is_metaconsole()) {
|
|||
}
|
||||
|
||||
|
||||
if (empty($text_agent) && !empty($id_agent)) {
|
||||
if (empty($text_agent) && empty($id_agent) === false) {
|
||||
$text_agent = agents_get_alias($id_agent);
|
||||
}
|
||||
|
||||
if (empty($text_module) && !empty($id_agent_module)) {
|
||||
if (empty($text_module) && empty($id_agent_module) === false) {
|
||||
$text_module = modules_get_agentmodule_name($id_agent_module);
|
||||
$text_agent = agents_get_alias(modules_get_agentmodule_agent($id_agent_module));
|
||||
}
|
||||
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
// Return to metaconsole database.
|
||||
if ($id_node != 0) {
|
||||
metaconsole_restore_db();
|
||||
|
@ -252,7 +252,7 @@ if (is_metaconsole()) {
|
|||
}
|
||||
|
||||
// Ajax responses.
|
||||
if (is_ajax()) {
|
||||
if (is_ajax() === true) {
|
||||
$get_events = get_parameter('get_events', 0);
|
||||
// Datatables offset, limit.
|
||||
$start = get_parameter('start', 0);
|
||||
|
@ -263,7 +263,7 @@ if (is_ajax()) {
|
|||
ob_start();
|
||||
$order = get_datatable_order(true);
|
||||
|
||||
if (is_array($order) && $order['field'] == 'mini_severity') {
|
||||
if (is_array($order) === true && $order['field'] === 'mini_severity') {
|
||||
$order['field'] = 'te.criticity';
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,8 @@ if (is_ajax()) {
|
|||
'tg.nombre as group_name',
|
||||
'ta.direccion',
|
||||
];
|
||||
if (!is_metaconsole()) {
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
$fields[] = 'am.nombre as module_name';
|
||||
$fields[] = 'am.id_agente_modulo as id_agentmodule';
|
||||
$fields[] = 'am.custom_id as module_custom_id';
|
||||
|
@ -509,11 +510,13 @@ if ($loaded_filter !== false && $from_event_graph != 1) {
|
|||
$filter_only_alert = $filter['filter_only_alert'];
|
||||
$id_group_filter = $filter['id_group_filter'];
|
||||
$date_from = $filter['date_from'];
|
||||
$time_from = $filter['time_from'];
|
||||
$date_to = $filter['date_to'];
|
||||
$time_to = $filter['time_to'];
|
||||
$source = $filter['source'];
|
||||
$id_extra = $filter['id_extra'];
|
||||
$user_comment = $filter['user_comment'];
|
||||
$id_source_event = $filter['id_source_event'];
|
||||
$id_source_event = ($filter['id_source_event'] ?? '');
|
||||
$server_id = $filter['server_id'];
|
||||
}
|
||||
}
|
||||
|
@ -565,7 +568,7 @@ $tabletags_with->cellspacing = 4;
|
|||
$tabletags_with->cellpadding = 4;
|
||||
$tabletags_with->class = 'noshadow';
|
||||
$tabletags_with->styleTable = 'border: 0px;';
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$tabletags_with->class = 'nobady';
|
||||
$tabletags_with->cellspacing = 0;
|
||||
$tabletags_with->cellpadding = 0;
|
||||
|
@ -642,7 +645,7 @@ $tabletags_without->width = '100%';
|
|||
$tabletags_without->cellspacing = 4;
|
||||
$tabletags_without->cellpadding = 4;
|
||||
$tabletags_without->class = 'noshadow';
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$tabletags_without->class = 'nobady';
|
||||
$tabletags_without->cellspacing = 0;
|
||||
$tabletags_without->cellpadding = 0;
|
||||
|
@ -781,7 +784,7 @@ if ($pure) {
|
|||
// Floating menu - End.
|
||||
ui_require_jquery_file('countdown');
|
||||
} else {
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
// Load metaconsole frame.
|
||||
enterprise_hook('open_meta_frame');
|
||||
}
|
||||
|
@ -892,7 +895,7 @@ if ($pure) {
|
|||
}
|
||||
|
||||
// If the history event is not enabled, dont show the history tab.
|
||||
if (!isset($config['metaconsole_events_history']) || $config['metaconsole_events_history'] != 1) {
|
||||
if (isset($config['metaconsole_events_history']) === false || $config['metaconsole_events_history'] != 1) {
|
||||
unset($onheader['history']);
|
||||
}
|
||||
|
||||
|
@ -913,7 +916,7 @@ if ($pure) {
|
|||
break;
|
||||
}
|
||||
|
||||
if (! defined('METACONSOLE')) {
|
||||
if (is_metaconsole() === false) {
|
||||
unset($onheader['history']);
|
||||
ui_print_page_header(
|
||||
__('Events'),
|
||||
|
@ -974,13 +977,16 @@ if (enterprise_installed() === true) {
|
|||
}
|
||||
|
||||
// Error div for ajax messages.
|
||||
echo "<div id='show_message_error'>";
|
||||
echo '</div>';
|
||||
|
||||
html_print_div(
|
||||
[
|
||||
'id' => 'show_message_error',
|
||||
'content' => '',
|
||||
]
|
||||
);
|
||||
|
||||
// Controls.
|
||||
if (is_metaconsole() !== true) {
|
||||
if (isset($config['event_replication'])
|
||||
if (isset($config['event_replication']) === true
|
||||
&& $config['event_replication'] == 1
|
||||
) {
|
||||
if ($config['show_events_in_local'] == 0) {
|
||||
|
@ -1095,7 +1101,7 @@ $in = '<div class="filter_input"><label>'.__('Free search').'</label>';
|
|||
$in .= $data.'</div>';
|
||||
$inputs[] = $in;
|
||||
|
||||
if (empty($severity) && $severity !== '0') {
|
||||
if (empty($severity) === true && $severity !== '0') {
|
||||
$severity = -1;
|
||||
}
|
||||
|
||||
|
@ -1207,7 +1213,7 @@ $in .= $data.'</div>';
|
|||
$adv_inputs[] = $in;
|
||||
|
||||
// Mixed. Metaconsole => server, Console => module.
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$title = __('Server');
|
||||
$data = html_print_select_from_sql(
|
||||
'SELECT id, server_name FROM tmetaconsole_setup',
|
||||
|
@ -1270,16 +1276,20 @@ $data = html_print_select(
|
|||
-1,
|
||||
true
|
||||
);
|
||||
$in = '<div class="filter_input"><label>'.__('Alert events').'</label>';
|
||||
$in .= $data.'</div>';
|
||||
$adv_inputs[] = $in;
|
||||
|
||||
if (is_metaconsole()) {
|
||||
if (empty($id_source_event) === true) {
|
||||
$id_source_event = '';
|
||||
}
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s',
|
||||
__('Alert events'),
|
||||
$data
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$input_id_source_event = (empty($id_source_event) === true) ? '' : $id_source_event;
|
||||
if (is_metaconsole() === true) {
|
||||
$data = html_print_input_text(
|
||||
'id_source_event',
|
||||
$id_source_event,
|
||||
|
@ -1288,19 +1298,24 @@ if (is_metaconsole()) {
|
|||
255,
|
||||
true
|
||||
);
|
||||
$in = '<div class="filter_input"><label>'.__('Id source event').'</label>';
|
||||
$in .= $data.'</div>';
|
||||
$adv_inputs[] = $in;
|
||||
}
|
||||
|
||||
if ($date_from === '0000-00-00') {
|
||||
$date_from = '';
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s',
|
||||
__('Id source event'),
|
||||
$data
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
// Date from.
|
||||
$data = html_print_input_text(
|
||||
$inputDateFrom = html_print_input_text(
|
||||
'date_from',
|
||||
$date_from,
|
||||
($date_from === '0000-00-00') ? '' : $date_from,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
|
@ -1318,22 +1333,69 @@ $data = html_print_input_text(
|
|||
// Autocomplete.
|
||||
'off'
|
||||
);
|
||||
$in = '<div class="filter_input">';
|
||||
$in .= '<div class="filter_input_little"><label>'.__('Date from').'</label>';
|
||||
$in .= $data.'</div>';
|
||||
|
||||
$data = '';
|
||||
$in .= $data.'</div>';
|
||||
$adv_inputs[] = $in;
|
||||
// Time from.
|
||||
$inputTimeFrom = html_print_input_text(
|
||||
'time_from',
|
||||
$time_from,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
true,
|
||||
// Disabled.
|
||||
false,
|
||||
// Required.
|
||||
false,
|
||||
// Function.
|
||||
'',
|
||||
// Class.
|
||||
'',
|
||||
// OnChange.
|
||||
'',
|
||||
// Autocomplete.
|
||||
'off'
|
||||
);
|
||||
|
||||
if ($date_to === '0000-00-00') {
|
||||
$date_to = '';
|
||||
}
|
||||
// Date and Time From.
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s<span>:</span>%s',
|
||||
__('From (date:time)'),
|
||||
$inputDateFrom,
|
||||
$inputTimeFrom
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Time to.
|
||||
$inputTimeTo = html_print_input_text(
|
||||
'time_to',
|
||||
$time_to,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
true,
|
||||
// Disabled.
|
||||
false,
|
||||
// Required.
|
||||
false,
|
||||
// Function.
|
||||
'',
|
||||
// Class.
|
||||
'',
|
||||
// OnChange.
|
||||
'',
|
||||
// Autocomplete.
|
||||
'off'
|
||||
);
|
||||
|
||||
// Date to.
|
||||
$data = html_print_input_text(
|
||||
$inputDateTo = html_print_input_text(
|
||||
'date_to',
|
||||
$date_to,
|
||||
($date_to === '0000-00-00') ? '' : $date_to,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
|
@ -1351,16 +1413,23 @@ $data = html_print_input_text(
|
|||
// Autocomplete.
|
||||
'off'
|
||||
);
|
||||
$in = '<div class="filter_input">';
|
||||
$in .= '<div class="filter_input_little"><label>'.__('Date to').'</label>';
|
||||
$in .= $data.'</div>';
|
||||
|
||||
$data = '';
|
||||
$in .= $data.'</div>';
|
||||
$adv_inputs[] = $in;
|
||||
// Date and Time To.
|
||||
$adv_inputs[] = html_print_div(
|
||||
[
|
||||
'class' => 'filter_input',
|
||||
'content' => sprintf(
|
||||
'<label>%s</label>%s<span>:</span>%s',
|
||||
__('To (date:time)'),
|
||||
$inputDateTo,
|
||||
$inputTimeTo
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Tags.
|
||||
if (is_metaconsole()) {
|
||||
if (is_metaconsole() === true) {
|
||||
$data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>';
|
||||
$data .= '<fieldset><legend class="pdd_0px">'.__('Events without following tags').'</legend>'.html_print_table($tabletags_without, true).'</fieldset>';
|
||||
} else {
|
||||
|
|
|
@ -1,16 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Tree view.
|
||||
*
|
||||
* @category Operation
|
||||
* @package Pandora FMS
|
||||
* @subpackage Community
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 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.
|
||||
// Begin.
|
||||
ui_require_css_file('tree');
|
||||
ui_require_css_file('fixed-bottom-box');
|
||||
|
||||
|
@ -35,11 +51,11 @@ if (enterprise_include_once('include/functions_policies.php') !== ENTERPRISE_NOT
|
|||
$enterpriseEnable = true;
|
||||
}
|
||||
|
||||
$url = 'index.php?'.'sec=estado&'.'sec2=operation/tree&'.'refr=0&'.'pure='.$pure.'&'.'tab=%s';
|
||||
$url = 'index.php?sec=estado&sec2=operation/tree&refr=0&pure='.$pure.'&tab=%s';
|
||||
|
||||
$tabs = [];
|
||||
|
||||
if (!$strict_acl) {
|
||||
if ($strict_acl === false) {
|
||||
$tabs['tag'] = [
|
||||
'text' => "<a href='".sprintf($url, 'tag')."'>".html_print_image(
|
||||
'images/tag.png',
|
||||
|
@ -221,7 +237,7 @@ $row[] = __('Show full hirearchy');
|
|||
$row[] = html_print_checkbox('serach_hirearchy', $serach_hirearchy, false, true);
|
||||
|
||||
$row[] = __('Agent status');
|
||||
$row[] = html_print_select($agent_status_arr, 'status_agent', $status_agent, '', '', 0, true);
|
||||
$row[] = html_print_select($agent_status_arr, 'status_agent', $status_agent, '', '', 0, true, false, true, '', false, 'width:10em');
|
||||
$row[] = html_print_input_hidden('show_not_init_modules_hidden', $show_not_init_modules, true);
|
||||
|
||||
// Button
|
||||
|
|
|
@ -451,30 +451,29 @@ if (check_acl($config['id_user'], 0, 'ER')) {
|
|||
|
||||
|
||||
$autorefresh_list_out = [];
|
||||
if (is_metaconsole()) {
|
||||
$autorefresh_list_out['monitoring/tactical'] = 'Tactical view';
|
||||
$autorefresh_list_out['monitoring/group_view'] = 'Group view';
|
||||
} else {
|
||||
$autorefresh_list_out['operation/agentes/tactical'] = 'Tactical view';
|
||||
$autorefresh_list_out['operation/agentes/group_view'] = 'Group view';
|
||||
if (is_metaconsole() === false || is_centrallised() === true) {
|
||||
$autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
|
||||
$autorefresh_list_out['operation/agentes/alerts_status'] = 'Alert detail';
|
||||
$autorefresh_list_out['enterprise/operation/cluster/cluster'] = 'Cluster view';
|
||||
$autorefresh_list_out['operation/gis_maps/render_view'] = 'Gis Map';
|
||||
$autorefresh_list_out['operation/reporting/graph_viewer'] = 'Graph Viewer';
|
||||
$autorefresh_list_out['operation/snmpconsole/snmp_view'] = 'SNMP console';
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$autorefresh_list_out['general/sap_view'] = 'SAP view';
|
||||
}
|
||||
}
|
||||
|
||||
$autorefresh_list_out['operation/agentes/estado_agente'] = 'Agent detail';
|
||||
$autorefresh_list_out['operation/agentes/alerts_status'] = 'Alert detail';
|
||||
$autorefresh_list_out['operation/agentes/tactical'] = 'Tactical view';
|
||||
$autorefresh_list_out['operation/agentes/group_view'] = 'Group view';
|
||||
$autorefresh_list_out['operation/agentes/status_monitor'] = 'Monitor detail';
|
||||
$autorefresh_list_out['operation/operation/services/services'] = 'Services';
|
||||
$autorefresh_list_out['enterprise/operation/services/services'] = 'Services';
|
||||
$autorefresh_list_out['operation/dashboard/dashboard'] = 'Dashboard';
|
||||
$autorefresh_list_out['operation/reporting/graph_viewer'] = 'Graph Viewer';
|
||||
$autorefresh_list_out['operation/gis_maps/render_view'] = 'Gis Map';
|
||||
|
||||
$autorefresh_list_out['operation/snmpconsole/snmp_view'] = 'SNMP console';
|
||||
$autorefresh_list_out['operation/agentes/pandora_networkmap'] = 'Network map';
|
||||
$autorefresh_list_out['operation/visual_console/render_view'] = 'Visual console';
|
||||
$autorefresh_list_out['operation/events/events'] = 'Events';
|
||||
$autorefresh_list_out['enterprise/operation/cluster/cluster'] = 'Cluster view';
|
||||
if (enterprise_installed()) {
|
||||
$autorefresh_list_out['general/sap_view'] = 'SAP view';
|
||||
}
|
||||
|
||||
|
||||
if (!isset($autorefresh_list)) {
|
||||
$select = db_process_sql("SELECT autorefresh_white_list FROM tusuario WHERE id_user = '".$config['id_user']."'");
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -1580,6 +1580,9 @@ CREATE TABLE IF NOT EXISTS `treport_content` (
|
|||
`pagebreak` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`compare_work_time` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`graph_render` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`ipam_network_filter` int(10) UNSIGNED DEFAULT 0,
|
||||
`ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
|
||||
`ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY(`id_rc`),
|
||||
FOREIGN KEY (`id_report`) REFERENCES treport(`id_report`)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
|
@ -3012,6 +3015,8 @@ CREATE TABLE IF NOT EXISTS `tevent_alert` (
|
|||
`group_by` enum ('','id_agente','id_agentmodule','id_alert_am','id_grupo') default '',
|
||||
`special_days` tinyint(1) default 0,
|
||||
`disable_event` tinyint(1) default 0,
|
||||
`id_template_conditions` int(10) unsigned NOT NULL default 0,
|
||||
`id_template_fields` int(10) unsigned NOT NULL default 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
@ -3193,6 +3198,9 @@ CREATE TABLE IF NOT EXISTS `treport_content_template` (
|
|||
`pagebreak` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`compare_work_time` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`graph_render` tinyint(1) UNSIGNED NOT NULL default 0,
|
||||
`ipam_network_filter` int(10) UNSIGNED DEFAULT 0,
|
||||
`ipam_alive_ips` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
|
||||
`ipam_ip_not_assigned_to_agent` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY(`id_rc`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('MR', 49),
|
||||
('identification_reminder', 1),
|
||||
('identification_reminder_timestamp', 0),
|
||||
('current_package', 756),
|
||||
('current_package', 757),
|
||||
('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'),
|
||||
('custom_docs_logo', 'default_docs.png'),
|
||||
('custom_support_logo', 'default_support.png'),
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__.'/../include/config.php';
|
||||
require_once __DIR__.'/../vendor/autoload.php';
|
||||
|
||||
if (file_exists(__DIR__.'/../'.ENTERPRISE_DIR.'/load_enterprise.php') === true) {
|
||||
include_once __DIR__.'/../'.ENTERPRISE_DIR.'/load_enterprise.php';
|
||||
}
|
||||
|
||||
if (isset($_SERVER['argc']) === false) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
global $config;
|
||||
|
||||
use PandoraFMS\Agent;
|
||||
|
||||
$ids = \db_get_all_rows_filter('tagente', [], ['id_agente']);
|
||||
if ($ids === false) {
|
||||
echo "Unable to find agents\n";
|
||||
$ids = [];
|
||||
}
|
||||
|
||||
$policies = \db_get_all_rows_filter('tpolicies', [], 'id,name');
|
||||
$policies = array_reduce(
|
||||
$policies,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['name']] = $item['id'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
foreach ($ids as $a) {
|
||||
try {
|
||||
$agent = new Agent($a['id_agente']);
|
||||
if ($agent->hasRemoteCapabilities() === true) {
|
||||
$agent_policies = $agent->getConfPolicies();
|
||||
|
||||
$oldIds = [];
|
||||
$newIds = [];
|
||||
foreach ($agent_policies as $oldId => $name) {
|
||||
$oldIds[] = $oldId;
|
||||
$newIds[] = $policies[io_safe_input($name)];
|
||||
}
|
||||
|
||||
$res_update_con_policy = $agent->updatePolicyIds(
|
||||
$oldIds,
|
||||
$newIds
|
||||
);
|
||||
if ($res_update_con_policy === false) {
|
||||
echo 'Failed ['.$agent->name()."]\n";
|
||||
} else {
|
||||
echo 'Agent '.io_safe_output($agent->alias())." updated successfully\n";
|
||||
}
|
||||
} else {
|
||||
echo 'Agent '.io_safe_output($agent->alias())." skipped\n";
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage()."\n";
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.757-210914
|
||||
Version: 7.0NG.757-210929
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.757-210914"
|
||||
pandora_version="7.0NG.757-210929"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -540,11 +540,6 @@ dataserver_lifo 0
|
|||
|
||||
policy_manager 1
|
||||
|
||||
# If set to 1, the event replicate process is enabled. 0 by default. (PANDORA FMS ENTERPRISE ONLY)
|
||||
# WARNING: This process doesn't do anything if is not properly configured from the console setup
|
||||
|
||||
event_replication 0
|
||||
|
||||
# If set to 1, new events validate older event for the same module. This will
|
||||
# affect the performance of the server. This was the "normal behaviour" on previous (4.x) versions.
|
||||
# disable only if you really know what you are doing !!.
|
||||
|
@ -707,3 +702,15 @@ alertserver_threads 4
|
|||
# Generate an hourly warning event if alert execution is being delayed more than alertserver_warn seconds.
|
||||
alertserver_warn 180
|
||||
|
||||
# Pandora FMS HA MySQL cluster splitbrain auto-recovery (PANDORA FMS ENTERPRISE ONLY)
|
||||
# IMPORTANT! Please understand and configure all settings from pandora_console/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster&tab=setup
|
||||
# before enable this feature.
|
||||
#splitbrain_autofix 0
|
||||
|
||||
# Pandora FMS HA MySQL cluster splitbrain auto-recovery settings (PANDORA FMS ENTERPRISE ONLY)
|
||||
# Maximum number of retries
|
||||
#ha_max_splitbrain_retries 2
|
||||
# Maximum number of retries to verify resync status.
|
||||
#ha_max_resync_wait_retries 3
|
||||
# Maximum number of seconds waiting while verifying resync status.
|
||||
#ha_resync_sleep 10
|
||||
|
|
|
@ -446,11 +446,6 @@ dataserver_lifo 0
|
|||
|
||||
policy_manager 1
|
||||
|
||||
# If set to 1, the event replicate process is enabled. 0 by default. (PANDORA FMS ENTERPRISE ONLY)
|
||||
# WARNING: This process doesn't do anything if is not properly configured from the console setup
|
||||
|
||||
event_replication 0
|
||||
|
||||
# If set to 1, new events validate older event for the same module. This will
|
||||
# affect the performance of the server. This was the "normal behaviour" on previous (4.x) versions.
|
||||
# disable only if you really know what you are doing !!.
|
||||
|
|
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.757";
|
||||
my $pandora_build = "210914";
|
||||
my $pandora_build = "210929";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -172,6 +172,8 @@ sub pandora_get_sharedconfig ($$) {
|
|||
|
||||
$pa_config->{"use_custom_encoding"} = pandora_get_tconfig_token ($dbh, 'use_custom_encoding', 0);
|
||||
|
||||
$pa_config->{"event_replication"} = pandora_get_tconfig_token ($dbh, 'event_replication', 0);
|
||||
|
||||
if ($pa_config->{'include_agents'} eq '') {
|
||||
$pa_config->{'include_agents'} = 0;
|
||||
}
|
||||
|
@ -1043,9 +1045,6 @@ sub pandora_load_config {
|
|||
elsif ($parametro =~ m/^policy_manager\s+([0-1])/i) {
|
||||
$pa_config->{'policy_manager'}= clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^event_replication\s+([0-1])/i) {
|
||||
$pa_config->{'event_replication'}= clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^event_auto_validation\s+([0-1])/i) {
|
||||
$pa_config->{'event_auto_validation'}= clean_blank($1);
|
||||
}
|
||||
|
@ -1290,6 +1289,18 @@ sub pandora_load_config {
|
|||
elsif ($parametro =~ m/^pandora_service_cmd\s(.*)/i) {
|
||||
$pa_config->{'pandora_service_cmd'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^splitbrain_autofix\s+([0-9]*)/i) {
|
||||
$pa_config->{'splitbrain_autofix'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^ha_max_resync_wait_retries\s+([0-9]*)/i) {
|
||||
$pa_config->{'ha_max_resync_wait_retries'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^ha_resync_sleep\s+([0-9]*)/i) {
|
||||
$pa_config->{'ha_resync_sleep'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^ha_max_splitbrain_retries\s+([0-9]*)/i) {
|
||||
$pa_config->{'ha_max_splitbrain_retries'} = clean_blank($1);
|
||||
}
|
||||
|
||||
} # end of loop for parameter #
|
||||
|
||||
|
|
|
@ -1381,6 +1381,13 @@ sub pandora_execute_action ($$$$$$$$$;$) {
|
|||
|
||||
# Address
|
||||
$field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module, $alert);
|
||||
|
||||
# Simple email address validation. Prevents connections to the SMTP server when no address is provided.
|
||||
if (index($field1, '@') == -1) {
|
||||
logger($pa_config, "No valid email address provided for action '" . $action->{'name'} . "' alert '". $alert->{'name'} . "' agent '" . (defined ($agent) ? $agent->{'alias'} : 'N/A') . "'.", 10);
|
||||
return;
|
||||
}
|
||||
|
||||
# Subject
|
||||
$field2 = subst_alert_macros ($field2, \%macros, $pa_config, $dbh, $agent, $module, $alert);
|
||||
# Message
|
||||
|
@ -4828,23 +4835,23 @@ sub generate_status_event ($$$$$$$$) {
|
|||
}
|
||||
|
||||
($event_type, $severity) = ('going_down_normal', 2);
|
||||
$description = $pa_config->{"text_going_down_normal"};
|
||||
$description = safe_output($pa_config->{"text_going_down_normal"});
|
||||
# Critical
|
||||
} elsif ($status == 1) {
|
||||
($event_type, $severity) = ('going_up_critical', 4);
|
||||
$description = $pa_config->{"text_going_up_critical"};
|
||||
$description = safe_output($pa_config->{"text_going_up_critical"});
|
||||
# Warning
|
||||
} elsif ($status == 2) {
|
||||
|
||||
# From critical
|
||||
if ($known_status == 1) {
|
||||
($event_type, $severity) = ('going_down_warning', 3);
|
||||
$description = $pa_config->{"text_going_down_warning"};
|
||||
$description = safe_output($pa_config->{"text_going_down_warning"});
|
||||
}
|
||||
# From normal or warning (after becoming unknown)
|
||||
else {
|
||||
($event_type, $severity) = ('going_up_warning', 3);
|
||||
$description = $pa_config->{"text_going_up_warning"};
|
||||
$description = safe_output($pa_config->{"text_going_up_warning"});
|
||||
}
|
||||
} else {
|
||||
# Unknown status
|
||||
|
|
|
@ -273,9 +273,9 @@ sub get_agent_id ($$) {
|
|||
|
||||
my $rc;
|
||||
if($is_meta == 1) {
|
||||
$rc = get_db_value ($dbh, "SELECT id_agente FROM tmetaconsole_agent WHERE nombre = ? OR direccion = ?", safe_input($agent_name), $agent_name);
|
||||
$rc = get_db_value ($dbh, "SELECT id_agente FROM tmetaconsole_agent WHERE nombre = ?", safe_input($agent_name));
|
||||
} else {
|
||||
$rc = get_db_value ($dbh, "SELECT id_agente FROM tagente WHERE nombre = ? OR direccion = ?", safe_input($agent_name), $agent_name);
|
||||
$rc = get_db_value ($dbh, "SELECT id_agente FROM tagente WHERE nombre = ?", safe_input($agent_name));
|
||||
}
|
||||
|
||||
return defined ($rc) ? $rc : -1;
|
||||
|
|
|
@ -29,6 +29,8 @@ use POSIX qw(strftime ceil);
|
|||
use JSON;
|
||||
use Encode qw(encode_utf8);
|
||||
use MIME::Base64;
|
||||
use File::Basename qw(dirname);
|
||||
use File::Copy;
|
||||
|
||||
# Default lib dir for RPM and DEB packages
|
||||
use lib '/usr/lib/perl5';
|
||||
|
@ -378,7 +380,8 @@ sub exec_recon_script ($$$) {
|
|||
}
|
||||
|
||||
if (-x $command) {
|
||||
my $exec_output = `$command $args`;
|
||||
my $exec_output = `$command $args 2>&1`;
|
||||
log_execution($pa_config, $task->{'id_rt'}, "$command $args", $exec_output);
|
||||
logger($pa_config, "Execution output: \n". $exec_output, 10);
|
||||
} else {
|
||||
logger($pa_config, "Cannot execute recon task command $command.", 10);
|
||||
|
@ -1778,5 +1781,54 @@ sub PandoraFMS::Recon::Base::update_progress ($$) {
|
|||
}
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Store a log with execution details.
|
||||
################################################################################
|
||||
sub log_execution($$$$) {
|
||||
my ($pa_config, $task_id, $cmd, $output) = @_;
|
||||
|
||||
return unless $pa_config->{'verbosity'} eq 10;
|
||||
|
||||
my $discovery_log_path = dirname($pa_config->{'log_file'}).'/discovery/';
|
||||
mkdir($discovery_log_path) unless -d $discovery_log_path;
|
||||
|
||||
eval {
|
||||
local $SIG{__DIE__};
|
||||
|
||||
open (my $f, ">", $discovery_log_path.'task.'.$task_id.'.cmd');
|
||||
print $f $cmd;
|
||||
close ($f);
|
||||
|
||||
open ($f, ">", $discovery_log_path.'task.'.$task_id.'.out');
|
||||
print $f $output;
|
||||
close ($f);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Store configuration files.
|
||||
################################################################################
|
||||
sub log_conf_files($$@) {
|
||||
my $pa_config = shift;
|
||||
my $task_id = shift;
|
||||
my @files = @_;
|
||||
|
||||
return unless $pa_config->{'verbosity'} eq 10;
|
||||
|
||||
my $discovery_log_path = dirname($pa_config->{'log_file'}).'/discovery/';
|
||||
mkdir($discovery_log_path) unless -d $discovery_log_path;
|
||||
|
||||
eval {
|
||||
local $SIG{__DIE__};
|
||||
|
||||
foreach my $f (@files) {
|
||||
copy($f, $discovery_log_path);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
|
|
@ -9,6 +9,7 @@ use strict;
|
|||
use warnings;
|
||||
|
||||
use File::Copy;
|
||||
use File::Basename qw(dirname basename);
|
||||
use Scalar::Util qw(looks_like_number);
|
||||
use lib '/usr/lib/perl5';
|
||||
use PandoraFMS::PluginTools qw/init read_configuration read_file empty trim/;
|
||||
|
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.757";
|
||||
my $pandora_build = "210914";
|
||||
my $pandora_build = "210929";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.757
|
||||
%define release 210914
|
||||
%define release 210929
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.757"
|
||||
PI_BUILD="210914"
|
||||
PI_BUILD="210929"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
|
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.757 Build 210914";
|
||||
my $version = "7.0NG.757 Build 210929";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -49,11 +49,14 @@ my $Running = 0;
|
|||
########################################################################
|
||||
# Print the given message with a preceding timestamp.
|
||||
########################################################################
|
||||
sub log_message($$$) {
|
||||
my ($conf, $source, $message) = @_;
|
||||
sub log_message($$$;$) {
|
||||
my ($conf, $source, $message, $verbosity_level) = @_;
|
||||
|
||||
my $level = $verbosity_level;
|
||||
$level = 5 unless defined($level);
|
||||
|
||||
if (ref($conf) eq "HASH") {
|
||||
logger($conf, 'HA (' . $source . ') ' . "$message", 5);
|
||||
logger($conf, 'HA (' . $source . ') ' . "$message", $level);
|
||||
}
|
||||
|
||||
if ($source eq '') {
|
||||
|
@ -403,19 +406,6 @@ END {
|
|||
stop();
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Aux. get module id
|
||||
###############################################################################
|
||||
my %module_id;
|
||||
sub __get_module_id {
|
||||
my ($dbh, $module_type) = @_;
|
||||
|
||||
if (!defined($module_id{$module_type})) {
|
||||
$module_id{$module_type} = get_module_id($dbh, $module_type);
|
||||
}
|
||||
|
||||
return $module_id{$module_type}
|
||||
}
|
||||
|
||||
$SIG{INT} = \&stop;
|
||||
$SIG{TERM} = \&stop;
|
||||
|
|
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.757 Build 210914";
|
||||
my $version = "7.0NG.757 Build 210929";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
|
|
@ -567,6 +567,10 @@ export default class VisualConsole {
|
|||
|
||||
Object.keys(this.lineLinks[item.id]).forEach(i => {
|
||||
let lineId = parseInt(i);
|
||||
const found = this.elementIds.indexOf(lineId);
|
||||
if (found === -1) {
|
||||
return;
|
||||
}
|
||||
let line = this.elementsById[lineId] as Line;
|
||||
if (line.props) {
|
||||
let startX = line.props.startPosition.x;
|
||||
|
|
Loading…
Reference in New Issue