fixed warnings php

Former-commit-id: d21cb02113c65a7f50a5e29f7f536e85ba5cb945
This commit is contained in:
daniel 2019-02-25 13:02:39 +01:00
parent 9753faa17a
commit 504a8e9d1a
9 changed files with 913 additions and 488 deletions

View File

@ -106,7 +106,9 @@ function get_value_sum($arr)
{
foreach ($arr as $clave) {
foreach ($clave as $valor) {
$result += $valor;
if (is_numeric($valor) === true) {
$result += $valor;
}
}
}

View File

@ -1,17 +1,32 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 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.
// Load global vars
global $config;
check_login();
@ -51,15 +66,22 @@ if (is_ajax()) {
}
if (!is_metaconsole()) {
// Header
ui_print_page_header(__('Module groups defined in %s', get_product_name()), 'images/module_group.png', false, '', true, '');
// Header.
ui_print_page_header(
__('Module groups defined in %s', get_product_name()),
'images/module_group.png',
false,
'',
true,
''
);
}
$create_group = (bool) get_parameter('create_group');
$update_group = (bool) get_parameter('update_group');
$delete_group = (bool) get_parameter('delete_group');
// Create group
// Create group.
if ($create_group) {
$name = (string) get_parameter('name');
$icon = (string) get_parameter('icon');
@ -70,22 +92,29 @@ if ($create_group) {
if ($name) {
if (!$check) {
$result = db_process_sql_insert('tmodule_group', ['name' => $name]);
$result = db_process_sql_insert(
'tmodule_group',
['name' => $name]
);
if ($result) {
ui_print_success_message(__('Group successfully created'));
} else {
ui_print_error_message(__('There was a problem creating group'));
ui_print_error_message(
__('There was a problem creating group')
);
}
} else {
ui_print_error_message(__('Each module group must have a different name'));
ui_print_error_message(
__('Each module group must have a different name')
);
}
} else {
ui_print_error_message(__('Module group must have a name'));
}
}
// Update group
// Update group.
if ($update_group) {
$id_group = (int) get_parameter('id_group');
$name = (string) get_parameter('name');
@ -98,38 +127,79 @@ if ($update_group) {
if ($name) {
if (!$check || $subcheck == $name) {
$result = db_process_sql_update('tmodule_group', ['name' => $name], ['id_mg' => $id_group]);
$result = db_process_sql_update(
'tmodule_group',
['name' => $name],
['id_mg' => $id_group]
);
if ($result !== false) {
ui_print_success_message(__('Group successfully updated'));
} else {
ui_print_error_message(__('There was a problem modifying group'));
ui_print_error_message(
__('There was a problem modifying group')
);
}
} else {
ui_print_error_message(__('Each module group must have a different name'));
ui_print_error_message(
__('Each module group must have a different name')
);
}
} else {
ui_print_error_message(__('Module group must have a name'));
}
}
// Delete group
// Delete group.
if ($delete_group) {
$id_group = (int) get_parameter('id_group');
$result = db_process_sql_delete('tmodule_group', ['id_mg' => $id_group]);
if ($result) {
$result = db_process_sql_update('tagente_modulo', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('tpolicy_modules', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('tcontainer_item', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('tnetwork_component', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('treport_content', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('tnetwork_map', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('tlocal_component', ['id_module_group' => 0], ['id_module_group' => $id_group]);
db_process_sql_update('treport_content_template', ['id_module_group' => 0], ['id_module_group' => $id_group]);
$result = db_process_sql_update(
'tagente_modulo',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'tpolicy_modules',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'tcontainer_item',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'tnetwork_component',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'treport_content',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'tnetwork_map',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'tlocal_component',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
db_process_sql_update(
'treport_content_template',
['id_module_group' => 0],
['id_module_group' => $id_group]
);
// A group with no modules can be deleted, to avoid a message error then do the follwing
// A group with no modules can be deleted,
// to avoid a message error then do the follwing.
if ($result !== false) {
$result = true;
}
@ -150,36 +220,15 @@ $offset = (int) get_parameter('offset', 0);
ui_pagination($total_groups, $url, $offset);
switch ($config['dbtype']) {
case 'mysql':
$sql = 'SELECT *
FROM tmodule_group
ORDER BY name ASC
LIMIT '.$offset.', '.$config['block_size'];
break;
case 'postgresql':
$sql = 'SELECT *
FROM tmodule_group
ORDER BY name ASC
LIMIT '.$config['block_size'].' OFFSET '.$offset;
break;
case 'oracle':
$set = [];
$set['limit'] = $config['block_size'];
$set['offset'] = $offset;
$sql = 'SELECT *
FROM tmodule_group
ORDER BY name ASC';
$sql = oracle_recode_query($sql, $set);
break;
}
$sql = 'SELECT *
FROM tmodule_group
ORDER BY name ASC
LIMIT '.$offset.', '.$config['block_size'];
$groups = db_get_all_rows_sql($sql);
$table = new stdClass();
$table->width = '100%';
$table->class = 'databox data';
@ -210,11 +259,21 @@ if (!empty($groups)) {
html_print_table($table);
} else {
ui_print_info_message(['no_close' => true, 'message' => __('There are no defined module groups') ]);
ui_print_info_message(
[
'no_close' => true,
'message' => __('There are no defined module groups'),
]
);
}
echo '<form method="post" action="index.php?sec=gmodules&sec2=godmode/groups/configure_modu_group">';
echo '<div class="action-buttons" style="width: '.$table->width.'">';
html_print_submit_button(__('Create module group'), 'crt', false, 'class="sub next"');
html_print_submit_button(
__('Create module group'),
'crt',
false,
'class="sub next"'
);
echo '</div>';
echo '</form>';

View File

@ -1,17 +1,32 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2009 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.
// Load global vars
check_login();
if (! check_acl($config['id_user'], 0, 'AW')) {
@ -34,7 +49,8 @@ if (is_ajax()) {
if ($get_agents) {
$id_group = (int) get_parameter('id_group', 0);
// Is is possible add keys prefix to avoid auto sorting in js object conversion
// Is is possible add keys prefix to avoid auto
// sorting in js object conversion.
$keys_prefix = (string) get_parameter('keys_prefix', '');
if ($id_group == 0) {
@ -62,7 +78,7 @@ if (is_ajax()) {
);
}
// Add keys prefix
// Add keys prefix.
if ($keys_prefix !== '') {
foreach ($agents as $k => $v) {
$agents[$keys_prefix.$k] = $v;
@ -92,8 +108,8 @@ function process_manage_add($id_alert_template, $id_agents, $module_names)
foreach ($module_names as $module) {
foreach ($id_agents as $id_agent) {
$module_id = modules_get_agentmodule_id($module, $id_agent);
$modules_id[] = $module_id['id_agente_modulo'];
$module_id = modules_get_agentmodule_id($module, $id_agent);
$modules_id[] = $module_id['id_agente_modulo'];
}
}
@ -148,6 +164,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
$return_all_group = true;
}
$table = new stdClass();
$table->id = 'add_table';
$table->class = 'databox filters';
$table->width = '100%';
@ -251,10 +268,10 @@ html_print_submit_button(__('Add'), 'go', false, 'class="sub add"');
echo '</div>';
echo '</form>';
// TODO: Change to iu_print_error system
// TODO: Change to iu_print_error system.
echo '<h3 class="error invisible" id="message"> </h3>';
// Hack to translate text "none" in PHP to javascript
// Hack to translate text "none" in PHP to javascript.
echo '<span id ="none_text" style="display: none;">'.__('None').'</span>';
ui_require_jquery_file('form');
@ -270,42 +287,40 @@ $(document).ready (function () {
var get_parameters_count = window.location.href.slice(
window.location.href.indexOf('?') + 1).split('&').length;
var post_parameters_count = $("#form_alerts").serializeArray().length;
var count_parameters =
get_parameters_count + post_parameters_count;
if (count_parameters > limit_parameters_massive) {
alert("<?php echo __('Unsucessful sending the data, please contact with your administrator or make with less elements.'); ?>");
return false;
}
});
$("#checkbox-recursion").click(function () {
$("#id_group").trigger("change");
});
$("#id_agents").change(agent_changed_by_multiple_agents);
$("#id_group").change (function () {
var $select = $("#id_agents").enable ();
$("#agent_loading").show ();
$("option", $select).remove ();
jQuery.post ("ajax.php",
{"page" : "godmode/massive/massive_add_alerts",
"get_agents" : 1,
"id_group" : this.value,
"recursion" : $("#checkbox-recursion").is(":checked") ? 1 : 0,
// Add a key prefix to avoid auto sorting in js object conversion
// Add a key prefix to avoid auto sorting in js object conversion.
"keys_prefix" : "_"
},
function (data, status) {
options = "";
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
// Remove keys_prefix from the index.
id = id.substring(1);
options += "<option value=\""+id+"\">"+value+"</option>";
});
$("#id_agents").append (options);
@ -315,40 +330,39 @@ $(document).ready (function () {
"json"
);
});
$("#id_group").value = "0";
$("#id_group").click (
function () {
$(this).css ("width", "auto");
});
$("#id_group").blur (function () {
$(this).css ("width", "180px");
});
$("#id_agents").click (
function () {
$(this).css ("width", "auto");
});
$("#id_agents").blur (function () {
$(this).css ("width", "180px");
});
$("#module").click (
function () {
$(this).css ("width", "auto");
});
$("#module").blur (function () {
$(this).css ("width", "180px");
});
$("#modules_selection_mode").change (function() {
$("#id_agents").trigger('change');
});
});
/* ]]> */
</script>

View File

@ -1,17 +1,32 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2012 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.
// Load global vars
global $config;
check_login();
@ -37,13 +52,19 @@ $user_groups_w = array_keys($user_groups_w);
$user_groups_r = users_get_groups(false, 'AW', true, false, null, 'id_grupo');
$user_groups_r = array_keys($user_groups_r);
// Headers
// ui_print_page_header (__('Manage recontask'), "images/gm_servers.png", false, "", true);
ui_print_page_header(__('Manage recontask'), 'images/gm_servers.png', false, '', true, $options);
// Headers.
ui_print_page_header(
__('Manage recontask'),
'images/gm_servers.png',
false,
'',
true,
$options
);
// --------------------------------
// DELETE A RECON TASKs
// DELETE A RECON TASKs.
// --------------------------------
if (isset($_GET['delete'])) {
$id = get_parameter_get('delete');
@ -59,11 +80,15 @@ if (isset($_GET['delete'])) {
$id = get_parameter_get('id');
$disabled = get_parameter_get('disabled');
$result = db_process_sql_update('trecon_task', ['disabled' => $disabled], ['id_rt' => $id]);
$result = db_process_sql_update(
'trecon_task',
['disabled' => $disabled],
['id_rt' => $id]
);
if ($result !== false) {
ui_print_success_message(__('Successfully updated recon task'));
// If the action is enabled, we force recon_task to be queued asap
// If the action is enabled, we force recon_task to be queued asap.
if ($disabled == 0) {
servers_force_recon_task($id);
}
@ -73,9 +98,9 @@ if (isset($_GET['delete'])) {
}
// --------------------------------
// GET PARAMETERS IF UPDATE OR CREATE
// GET PARAMETERS IF UPDATE OR CREATE.
// --------------------------------
if ((isset($_GET['update'])) or ((isset($_GET['create'])))) {
if ((isset($_GET['update'])) || ((isset($_GET['create'])))) {
$name = get_parameter_post('name');
$network = get_parameter_post('network');
$description = get_parameter_post('description');
@ -115,14 +140,16 @@ if ((isset($_GET['update'])) or ((isset($_GET['create'])))) {
$alias_as_name = (int) get_parameter('alias_as_name', 0);
$snmp_enabled = (int) get_parameter('snmp_enabled', 0);
$vlan_enabled = (int) get_parameter('vlan_enabled', 0);
// Get macros
// Get macros.
$macros = (string) get_parameter('macros');
if (!empty($macros)) {
$macros = json_decode(base64_decode($macros), true);
foreach ($macros as $k => $m) {
$macros[$k]['value'] = get_parameter($m['macro'], '');
if (isset($macros) === true && is_array($macros) === true) {
foreach ($macros as $k => $m) {
$macros[$k]['value'] = get_parameter($m['macro'], '');
}
}
}
@ -130,7 +157,7 @@ if ((isset($_GET['update'])) or ((isset($_GET['create'])))) {
}
// --------------------------------
// UPDATE A RECON TASK
// UPDATE A RECON TASK.
// --------------------------------
if (isset($_GET['update'])) {
$id = get_parameter_get('update');
@ -193,10 +220,18 @@ if (isset($_GET['update'])) {
$reason = __('Wrong format in Subnet field');
$result = false;
} else {
$result = db_process_sql_update('trecon_task', $values, $where);
$result = db_process_sql_update(
'trecon_task',
$values,
$where
);
}
} else {
$result = db_process_sql_update('trecon_task', $values, $where);
$result = db_process_sql_update(
'trecon_task',
$values,
$where
);
}
} else {
$result = false;
@ -314,9 +349,9 @@ if (isset($_GET['create'])) {
}
// --------------------------------
// SHOW TABLE WITH ALL RECON TASKs
// SHOW TABLE WITH ALL RECON TASKs.
// --------------------------------
// Pandora Admin must see all columns
// Pandora Admin must see all columns.
if (! check_acl($config['id_user'], 0, 'PM')) {
$sql = sprintf(
'SELECT *
@ -377,26 +412,26 @@ if ($result !== false) {
if ($row['id_recon_script'] == 0) {
// Network recon task
// Network recon task.
$data[2] = html_print_image('images/network.png', true, ['title' => __('Network recon task')]).'&nbsp;&nbsp;';
$data[2] .= network_profiles_get_name($row['id_network_profile']);
$mode_name = '';
} else {
// APP recon task
// APP recon task.
$data[2] = html_print_image('images/plugin.png', true).'&nbsp;&nbsp;';
$mode_name = db_get_sql(sprintf('SELECT name FROM trecon_script WHERE id_recon_script = %d', $row['id_recon_script']));
$data[2] .= $mode_name;
}
// GROUP
// GROUP.
if ($row['id_recon_script'] == 0) {
$data[3] = ui_print_group_icon($row['id_group'], true);
} else {
$data[3] = '-';
}
// SNMP VERSION
// SNMP VERSION.
if ($row['snmp_version'] == '1') {
$data[4] = 'v. 1';
} else if ($row['snmp_version'] == '2') {
@ -409,31 +444,31 @@ if ($result !== false) {
// INCIDENT
// INCIDENT.
$data[5] = (($row['create_incident'] == 1) ? __('Yes') : __('No'));
// OS
// OS.
if ($row['id_recon_script'] == 0) {
$data[6] = (($row['id_os'] > 0) ? ui_print_os_icon($row['id_os'], false, true) : __('Any'));
} else {
$data[6] = '-';
}
// INTERVAL
// INTERVAL.
if ($row['interval_sweep'] == 0) {
$data[7] = __('Manual');
} else {
$data[7] = human_time_description_raw($row['interval_sweep']);
}
// PORTS
// PORTS.
if ($row['id_recon_script'] == 0) {
$data[8] = substr($row['recon_ports'], 0, 15);
} else {
$data[8] = '-';
}
// ACTION
// ACTION.
$task_group = $row['id_group'];
if (in_array($task_group, $user_groups_w)) {

View File

@ -1,17 +1,32 @@
<?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 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.
// Load global vars
global $config;
check_login();
@ -36,7 +51,12 @@ if (is_ajax()) {
if ($get_explanation) {
$id = (int) get_parameter('id', 0);
$explanation = db_get_value('description', 'trecon_script', 'id_recon_script', $id);
$explanation = db_get_value(
'description',
'trecon_script',
'id_recon_script',
$id
);
echo io_safe_output($explanation);
@ -49,17 +69,42 @@ if (is_ajax()) {
$id_recon_task = (int) get_parameter('id_rt');
if (!empty($id_recon_task) && empty($id_recon_script)) {
$recon_script_macros = db_get_value('macros', 'trecon_task', 'id_rt', $id_recon_task);
$recon_script_macros = db_get_value(
'macros',
'trecon_task',
'id_rt',
$id_recon_task
);
} else if (!empty($id_recon_task)) {
$recon_task_id_rs = (int) db_get_value('id_recon_script', 'trecon_task', 'id_rt', $id_recon_task);
$recon_task_id_rs = (int) db_get_value(
'id_recon_script',
'trecon_task',
'id_rt',
$id_recon_task
);
if ($id_recon_script == $recon_task_id_rs) {
$recon_script_macros = db_get_value('macros', 'trecon_task', 'id_rt', $id_recon_task);
$recon_script_macros = db_get_value(
'macros',
'trecon_task',
'id_rt',
$id_recon_task
);
} else {
$recon_script_macros = db_get_value('macros', 'trecon_script', 'id_recon_script', $id_recon_script);
$recon_script_macros = db_get_value(
'macros',
'trecon_script',
'id_recon_script',
$id_recon_script
);
}
} else if (!empty($id_recon_script)) {
$recon_script_macros = db_get_value('macros', 'trecon_script', 'id_recon_script', $id_recon_script);
$recon_script_macros = db_get_value(
'macros',
'trecon_script',
'id_recon_script',
$id_recon_script
);
} else {
$recon_script_macros = [];
}
@ -75,7 +120,7 @@ if (is_ajax()) {
return;
}
// Edit mode
// Edit mode.
if (isset($_GET['update']) || (isset($_GET['upd']))) {
$update_recon = true;
if (isset($_GET['upd'])) {
@ -174,9 +219,7 @@ if (isset($_GET['update']) || (isset($_GET['upd']))) {
$snmp3_security_level = '';
$id_network_profile = 0;
$id_os = -1;
// Any
$recon_ports = '';
// Any
$field1 = '';
$field2 = '';
$field3 = '';
@ -200,7 +243,7 @@ if (isset($_GET['update']) || (isset($_GET['upd']))) {
}
if (!$modify) {
// Headers
// Headers.
ui_print_page_header(__('Manage recontask'), '', false, 'recontask', true);
}
@ -244,11 +287,11 @@ $table->rowclass[14] = 'recon_script';
$table->rowclass[15] = 'recon_script';
$table->rowclass[16] = 'recon_script';
$table->rowclass[17] = 'recon_script';
// Name
// Name.
$table->data[0][0] = '<b>'.__('Task name').'</b>';
$table->data[0][1] = html_print_input_text('name', $name, '', 25, 0, true);
// Recon server
// Recon server.
$table->data[1][0] = '<b>'.__('Recon server').ui_print_help_tip(
__('You must select a Recon Server for the Task, otherwise the Recon Task will never run'),
true
@ -258,7 +301,15 @@ $sql = 'SELECT id_server, name
FROM tserver
WHERE server_type = 3
ORDER BY name';
$table->data[1][1] = html_print_select_from_sql($sql, 'id_recon_server', $id_recon_server, '', '', '', true);
$table->data[1][1] = html_print_select_from_sql(
$sql,
'id_recon_server',
$id_recon_server,
'',
'',
'',
true
);
$fields['network_sweep'] = __('Network sweep');
if (!$is_windows) {
@ -267,44 +318,94 @@ if (!$is_windows) {
$table->data[2][0] = '<b>'.__('Mode').'</b>';
$table->data[2][1] = html_print_select($fields, 'mode', $mode, '', '', 0, true);
$table->data[2][1] = html_print_select(
$fields,
'mode',
$mode,
'',
'',
0,
true
);
// Network
// Network.
$table->data[3][0] = '<b>'.__('Network').'</b>';
$table->data[3][0] .= ui_print_help_tip(__('You can specify several networks, separated by commas, for example: 192.168.50.0/24,192.168.60.0/24'), true);
$table->data[3][1] = html_print_input_text('network', $network, '', 25, 0, true);
$table->data[3][0] .= ui_print_help_tip(
__('You can specify several networks, separated by commas, for example: 192.168.50.0/24,192.168.60.0/24'),
true
);
$table->data[3][1] = html_print_input_text(
'network',
$network,
'',
25,
0,
true
);
// Interval
// Interval.
$interv_manual = 0;
if ((int) $interval == 0) {
$interv_manual = 1;
}
$table->data[4][0] = '<b>'.__('Interval');
$table->data[4][0] .= ui_print_help_tip(__('Manual interval means that it will be executed only On-demand'), true);
$table->data[4][0] .= ui_print_help_tip(
__('Manual interval means that it will be executed only On-demand'),
true
);
$values = [
0 => __('Defined'),
1 => __('Manual'),
];
$table->data[4][1] = html_print_select($values, 'interval_manual_defined', $interv_manual, '', '', '', true);
$table->data[4][1] = html_print_select(
$values,
'interval_manual_defined',
$interv_manual,
'',
'',
'',
true
);
$table->data[4][1] .= '<span id="interval_manual_container">';
$table->data[4][1] .= html_print_extended_select_for_time('interval', $interval, '', '', '0', false, true, false, false);
$table->data[4][1] .= ui_print_help_tip(__('The minimum recomended interval for Recon Task is 5 minutes'), true);
$table->data[4][1] .= html_print_extended_select_for_time(
'interval',
$interval,
'',
'',
'0',
false,
true,
false,
false
);
$table->data[4][1] .= ui_print_help_tip(
__('The minimum recomended interval for Recon Task is 5 minutes'),
true
);
$table->data[4][1] .= '</span>';
// Module template
// Module template.
$table->data[5][0] = '<b>'.__('Module template').'</b>';
$sql = 'SELECT id_np, name
FROM tnetwork_profile
ORDER BY name';
$table->data[5][1] = html_print_select_from_sql($sql, 'id_network_profile', $id_network_profile, '', __('None'), 0, true);
$table->data[5][1] = html_print_select_from_sql(
$sql,
'id_network_profile',
$id_network_profile,
'',
__('None'),
0,
true
);
// Recon script
// Recon script.
$data[1] = '';
$table->data[6][0] = '<b>'.__('Recon script').'</b>';
@ -314,35 +415,72 @@ $sql = "SELECT id_recon_script, name
WHERE name <> 'IPAM Recon'
ORDER BY name";
if ($name_script != 'IPAM Recon') {
$table->data[6][1] = html_print_select_from_sql($sql, 'id_recon_script', $id_recon_script, '', '', '', true);
$table->data[6][1] = html_print_select_from_sql(
$sql,
'id_recon_script',
$id_recon_script,
'',
'',
'',
true
);
$table->data[6][1] .= "<span id='spinner_recon_script' style='display: none;'>".html_print_image('images/spinner.gif', true).'</span>';
$table->data[6][1] .= $data[1] .= html_print_input_hidden('macros', base64_encode($macros), true);
$table->data[6][1] .= $data[1] .= html_print_input_hidden(
'macros',
base64_encode($macros),
true
);
} else {
$table->data[6][1] = 'IPAM Recon';
}
// OS
// OS.
$table->data[7][0] = '<b>'.__('OS').'</b>';
$sql = 'SELECT id_os, name
FROM tconfig_os
ORDER BY name';
$table->data[7][1] = html_print_select_from_sql($sql, 'id_os', $id_os, '', __('Any'), -1, true);
$table->data[7][1] = html_print_select_from_sql(
$sql,
'id_os',
$id_os,
'',
__('Any'),
-1,
true
);
// Recon ports
// Recon ports.
$table->data[8][0] = '<b>'.__('Ports').'</b>';
$table->data[8][1] = html_print_input_text('recon_ports', $recon_ports, '', 25, 0, true);
$table->data[8][1] = html_print_input_text(
'recon_ports',
$recon_ports,
'',
25,
0,
true
);
$table->data[8][1] .= ui_print_help_tip(
__('Ports defined like: 80 or 80,443,512 or even 0-1024 (Like Nmap command line format). If dont want to do a sweep using portscan, left it in blank'),
true
);
// Group
// Group.
$table->data[9][0] = '<b>'.__('Group');
$groups = users_get_groups(false, 'PM', false);
$table->data[9][1] = html_print_select_groups(false, 'PM', false, 'id_group', $id_group, '', '', 0, true);
$table->data[9][1] = html_print_select_groups(
false,
'PM',
false,
'id_group',
$id_group,
'',
'',
0,
true
);
// Incident
// Incident.
$values = [
0 => __('No'),
1 => __('Yes'),
@ -356,24 +494,50 @@ $table->data[10][1] = html_print_select(
'',
'',
true
).' '.ui_print_help_tip(__('Choose if the discovery of a new system creates an incident or not.'), true);
).' '.ui_print_help_tip(
__('Choose if the discovery of a new system creates an incident or not.'),
true
);
// snmp_enabled
// Snmp_enabled.
$table->data[11][0] = '<b>'.__('SNMP enabled');
$table->data[11][1] = html_print_checkbox('snmp_enabled', 1, $snmp_enabled, true);
$table->data[11][1] = html_print_checkbox(
'snmp_enabled',
1,
$snmp_enabled,
true
);
// SNMP default community
// SNMP default community.
$table->data[12][0] = '<b>'.__('SNMP Default community');
$table->data[12][0] .= ui_print_help_tip(__('You can specify several values, separated by commas, for example: public,mysecret,1234'), true);
$table->data[12][1] = html_print_input_text('snmp_community', $snmp_community, '', 35, 0, true);
$table->data[12][0] .= ui_print_help_tip(
__('You can specify several values, separated by commas, for example: public,mysecret,1234'),
true
);
$table->data[12][1] = html_print_input_text(
'snmp_community',
$snmp_community,
'',
35,
0,
true
);
// SNMP version
// SNMP version.
$snmp_versions['1'] = 'v. 1';
$snmp_versions['2'] = 'v. 2';
$snmp_versions['2c'] = 'v. 2c';
$snmp_versions['3'] = 'v. 3';
$table->data[24][0] = '<b>'._('SNMP version');
$table->data[24][1] = html_print_select($snmp_versions, 'snmp_version', $snmp_version, '', '', 0, true);
$table->data[24][1] = html_print_select(
$snmp_versions,
'snmp_version',
$snmp_version,
'',
'',
0,
true
);
$table->data[25][0] = '<b>'.__('Auth user');
$table->data[25][1] = html_print_input_text(
@ -400,10 +564,30 @@ $table->data[26][1] = html_print_input_password(
false,
''
);
$table->data[26][1] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_mmen', true);
$table->data[26][1] .= html_print_input_hidden_extended(
'active_snmp_v3',
0,
'active_snmp_v3_mmen',
true
);
$table->data[27][0] = '<b>'.__('Privacy method');
$table->data[27][1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp_privacy_method', $snmp3_privacy_method, '', '', '', true, false, false, '', '');
$table->data[27][1] = html_print_select(
[
'DES' => __('DES'),
'AES' => __('AES'),
],
'snmp_privacy_method',
$snmp3_privacy_method,
'',
'',
'',
true,
false,
false,
'',
''
);
$table->data[28][0] = '<b>'.__('Privacy pass').ui_print_help_tip(__('The pass length must be eight character minimum.'), true);
$table->data[28][1] = html_print_input_password(
'snmp_privacy_pass',
@ -417,7 +601,22 @@ $table->data[28][1] = html_print_input_password(
''
);
$table->data[29][0] = '<b>'.__('Auth method');
$table->data[29][1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp_auth_method', $snmp3_auth_method, '', '', '', true, false, false, '', '');
$table->data[29][1] = html_print_select(
[
'MD5' => __('MD5'),
'SHA' => __('SHA'),
],
'snmp_auth_method',
$snmp3_auth_method,
'',
'',
'',
true,
false,
false,
'',
''
);
$table->data[30][0] = '<b>'.__('Security level');
$table->data[30][1] = html_print_select(
[
@ -437,75 +636,139 @@ $table->data[30][1] = html_print_select(
''
);
// Explanation
$explanation = db_get_value('description', 'trecon_script', 'id_recon_script', $id_recon_script);
// Explanation.
$explanation = db_get_value(
'description',
'trecon_script',
'id_recon_script',
$id_recon_script
);
$table->data[13][0] = '<b>'.__('Explanation').'</b>';
$table->data[13][1] = "<span id='spinner_layout' style='display: none;'>".html_print_image('images/spinner.gif', true).'</span>'.html_print_textarea('explanation', 4, 60, $explanation, 'style="width: 388px;"', true);
// A hidden "model row" to clone it from javascript to add fields dynamicaly
// A hidden "model row" to clone it from javascript to add fields dynamicaly.
$data = [];
$data[0] = 'macro_desc';
$data[0] .= ui_print_help_tip('macro_help', true);
$data[1] = html_print_input_text('macro_name', 'macro_value', '', 100, 255, true);
$data[1] = html_print_input_text(
'macro_name',
'macro_value',
'',
100,
255,
true
);
$table->colspan['macro_field'][1] = 3;
$table->rowstyle['macro_field'] = 'display:none';
$table->data['macro_field'] = $data;
// If there are $macros, we create the form fields
// If there are $macros, we create the form fields.
if (!empty($macros)) {
$macros = json_decode($macros, true);
foreach ($macros as $k => $m) {
$data = [];
$data[0] = '<b>'.$m['desc'].'</b>';
if (!empty($m['help'])) {
$data[0] .= ui_print_help_tip($m['help'], true);
if (isset($macros) === true
&& is_array($macros) === true
) {
foreach ($macros as $k => $m) {
$data = [];
$data[0] = '<b>'.$m['desc'].'</b>';
if (!empty($m['help'])) {
$data[0] .= ui_print_help_tip($m['help'], true);
}
if ($m['hide']) {
$data[1] = html_print_input_password(
$m['macro'],
$m['value'],
'',
100,
255,
true
);
} else {
$data[1] = html_print_input_text(
$m['macro'],
$m['value'],
'',
100,
255,
true
);
}
$table->colspan['macro'.$m['macro']][1] = 3;
$table->rowclass['macro'.$m['macro']] = 'macro_field';
$table->data['macro'.$m['macro']] = $data;
}
if ($m['hide']) {
$data[1] = html_print_input_password($m['macro'], $m['value'], '', 100, 255, true);
} else {
$data[1] = html_print_input_text($m['macro'], $m['value'], '', 100, 255, true);
}
$table->colspan['macro'.$m['macro']][1] = 3;
$table->rowclass['macro'.$m['macro']] = 'macro_field';
$table->data['macro'.$m['macro']] = $data;
}
}
// Comments
// Comments.
$table->data[18][0] = '<b>'.__('Comments');
$table->data[18][1] = html_print_input_text('description', $description, '', 45, 0, true);
$table->data[18][1] = html_print_input_text(
'description',
$description,
'',
45,
0,
true
);
// OS detection
// OS detection.
$table->data[19][0] = '<b>'.__('OS detection');
$table->data[19][1] = html_print_checkbox('os_detect', 1, $os_detect, true);
$table->data[19][1] = html_print_checkbox(
'os_detect',
1,
$os_detect,
true
);
// Name resolution
// Name resolution.
$table->data[20][0] = '<b>'.__('Name resolution');
$table->data[20][1] = html_print_checkbox('resolve_names', 1, $resolve_names, true);
$table->data[20][1] = html_print_checkbox(
'resolve_names',
1,
$resolve_names,
true
);
// Parent detection
// Parent detection.
$table->data[21][0] = '<b>'.__('Parent detection');
$table->data[21][1] = html_print_checkbox('parent_detection', 1, $parent_detection, true);
$table->data[21][1] = html_print_checkbox(
'parent_detection',
1,
$parent_detection,
true
);
// Parent recursion
// Parent recursion.
$table->data[22][0] = '<b>'.__('Parent recursion');
$table->data[22][1] = html_print_input_text('parent_recursion', $parent_recursion, '', 5, 0, true).ui_print_help_tip(__('Maximum number of parent hosts that will be created if parent detection is enabled.'), true);
$table->data[22][1] = html_print_input_text(
'parent_recursion',
$parent_recursion,
'',
5,
0,
true
).ui_print_help_tip(
__('Maximum number of parent hosts that will be created if parent detection is enabled.'),
true
);
// vlan_enabled
// Vlan_enabled.
$table->data[23][0] = '<b>'.__('Vlan enabled');
$table->data[23][1] = html_print_checkbox('vlan_enabled', 1, $vlan_enabled, true);
$table->data[23][1] = html_print_checkbox(
'vlan_enabled',
1,
$vlan_enabled,
true
);
// Alias as name
// NOTE: The 7.0NG Recon Server will not generate random names, since IP
// address collisions could have other consequences.
// $table->data[22][0] = "<b>".__('Alias as Name');
// $table->data[22][1] = html_print_checkbox ('alias_as_name', 1, $alias_as_name, true);
// Different Form url if it's a create or if it's a update form
// Different Form url if it's a create or if it's a update form.
echo '<form name="modulo" method="post" action="index.php?sec=gservers&sec2=godmode/servers/manage_recontask&'.(($id_rt != -1) ? 'update='.$id_rt : 'create=1').'">';
html_print_table($table);
echo '<div class="action-buttons" style="width: '.$table->width.'">';
@ -529,23 +792,23 @@ ui_require_javascript_file('pandora_modules');
<script type="text/javascript">
/* <![CDATA[ */
$(document).ready (function () {
});
var xhrManager = function () {
var manager = {};
manager.tasks = [];
manager.addTask = function (xhr) {
manager.tasks.push(xhr);
}
manager.stopTasks = function () {
while (manager.tasks.length > 0)
manager.tasks.pop().abort();
}
return manager;
};
@ -591,7 +854,7 @@ $('select#mode').change(function() {
if (type == 'recon_script') {
$(".recon_script").show();
$(".network_sweep").hide();
get_explanation_recon_script($("#id_recon_script").val());
}
else if (type == 'network_sweep') {
@ -603,13 +866,13 @@ $('select#mode').change(function() {
}).change();
function get_explanation_recon_script (id) {
// Stop old ajax tasks
// Stop old ajax tasks.
taskManager.stopTasks();
// Show the spinners
// Show the spinners.
$("#textarea_explanation").hide();
$("#spinner_layout").show();
var xhr = jQuery.ajax ({
data: {
'page': 'godmode/servers/manage_recontask_form',
@ -632,11 +895,11 @@ function get_explanation_recon_script (id) {
}
});
taskManager.addTask(xhr);
// Delete all the macro fields
// Delete all the macro fields.
$('.macro_field').remove();
$("#spinner_recon_script").show();
var xhr = jQuery.ajax ({
data: {
'page': 'godmode/servers/manage_recontask_form',
@ -654,7 +917,7 @@ function get_explanation_recon_script (id) {
success: function (data, textStatus, xhr) {
if (data.array !== null) {
$('#hidden-macros').val(data.base64);
jQuery.each (data.array, function (i, macro) {
if (macro.desc != '') {
add_macro_field(macro, 'table_recon-macro');

View File

@ -2316,9 +2316,8 @@ function events_page_custom_fields($event)
{
global $config;
//
// Custom fields
//
// Custom fields.
$table = new stdClass;
$table->cellspacing = 2;
$table->cellpadding = 2;
$table->width = '100%';
@ -2402,9 +2401,8 @@ function events_page_details($event, $server='')
$serverstring = '';
}
//
// Details
//
// Details.
$table_details = new stdClass;
$table_details->width = '100%';
$table_details->data = [];
$table_details->head = [];
@ -2773,9 +2771,8 @@ function events_page_general($event)
// $group_rep = $event['similar_ids'] == -1 ? 1 : count(explode(',',$event['similar_ids']));
global $group_rep;
//
// General
//
// General.
$table_general = new stdClass;
$table_general->cellspacing = 2;
$table_general->cellpadding = 2;
$table_general->width = '100%';
@ -2926,11 +2923,10 @@ function events_page_general($event)
function events_page_comments($event, $childrens_ids=[])
{
//
// Comments
//
// Comments.
global $config;
$table_comments = new stdClass;
$table_comments->width = '100%';
$table_comments->data = [];
$table_comments->head = [];
@ -2941,13 +2937,15 @@ function events_page_comments($event, $childrens_ids=[])
$event_comments = $event['user_comment'];
$event_comments = str_replace(["\n", '&#x0a;'], '<br>', $event_comments);
// If comments are not stored in json, the format is old
// If comments are not stored in json, the format is old.
$event_comments_array = json_decode($event_comments, true);
// Show the comments more recent first
$event_comments_array = array_reverse($event_comments_array);
// Show the comments more recent first.
if (is_array($event_comments_array)) {
$event_comments_array = array_reverse($event_comments_array);
}
if (is_null($event_comments_array)) {
if ($event_comments_array === true) {
$comments_format = 'old';
} else {
$comments_format = 'new';
@ -2963,18 +2961,22 @@ function events_page_comments($event, $childrens_ids=[])
$table_comments->data[] = $data;
}
foreach ($event_comments_array as $c) {
$data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>';
$data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>';
$data[1] = $c['comment'];
$table_comments->data[] = $data;
if (isset($event_comments_array) === true
&& is_array($event_comments_array) === true
) {
foreach ($event_comments_array as $c) {
$data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>';
$data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>';
$data[1] = $c['comment'];
$table_comments->data[] = $data;
}
}
break;
case 'old':
$comments_array = explode('<br>', $event_comments);
// Split comments and put in table
// Split comments and put in table.
$col = 0;
$data = [];

View File

@ -1365,117 +1365,137 @@ function clean_duplicate_links($relations)
}
$final_links = [];
/*
---------------------------------------------------------------- */
/*
--------------------- Clean duplicate links -------------------- */
// ----------------------------------------------------------------
// --------------------- Clean duplicate links --------------------
// ----------------------------------------------------------------
$duplicated = false;
$index_to_del = 0;
$index = 0;
foreach ($segregation_links['aa'] as $link) {
foreach ($segregation_links['aa'] as $link2) {
if ($link['id_parent'] == $link2['id_child'] && $link['id_child'] == $link2['id_parent']) {
if (enterprise_installed()) {
delete_link($segregation_links['aa'][$index_to_del]);
if (isset($segregation_links['aa']) === true
&& is_array($segregation_links['aa']) === true
) {
foreach ($segregation_links['aa'] as $link) {
foreach ($segregation_links['aa'] as $link2) {
if ($link['id_parent'] == $link2['id_child']
&& $link['id_child'] == $link2['id_parent']
) {
if (enterprise_installed()) {
delete_link($segregation_links['aa'][$index_to_del]);
}
unset($segregation_links['aa'][$index_to_del]);
}
unset($segregation_links['aa'][$index_to_del]);
$index_to_del++;
}
$index_to_del++;
$final_links['aa'][$index] = $link;
$index++;
$duplicated = false;
$index_to_del = 0;
}
$final_links['aa'][$index] = $link;
$index++;
$duplicated = false;
$index_to_del = 0;
}
$duplicated = false;
$index_to_del = 0;
$index2 = 0;
foreach ($segregation_links['mm'] as $link) {
foreach ($segregation_links['mm'] as $link2) {
if ($link['id_parent'] == $link2['id_child'] && $link['id_child'] == $link2['id_parent']) {
if (enterprise_installed()) {
delete_link($segregation_links['mm'][$index_to_del]);
if (isset($segregation_links['mm']) === true
&& is_array($segregation_links['mm']) === true
) {
foreach ($segregation_links['mm'] as $link) {
foreach ($segregation_links['mm'] as $link2) {
if ($link['id_parent'] == $link2['id_child']
&& $link['id_child'] == $link2['id_parent']
) {
if (enterprise_installed()) {
delete_link($segregation_links['mm'][$index_to_del]);
}
}
// unset($segregation_links['mm'][$index_to_del]);
$index_to_del++;
}
$index_to_del++;
$final_links['mm'][$index2] = $link;
$index2++;
$duplicated = false;
$index_to_del = 0;
}
$final_links['mm'][$index2] = $link;
$index2++;
$duplicated = false;
$index_to_del = 0;
}
$duplicated = false;
$index_to_del = 0;
$index3 = 0;
foreach ($segregation_links['ff'] as $link) {
foreach ($segregation_links['ff'] as $link2) {
if ($link['id_parent'] == $link2['id_child'] && $link['id_child'] == $link2['id_parent']) {
if (enterprise_installed()) {
delete_link($segregation_links['ff'][$index_to_del]);
if (isset($segregation_links['ff']) === true
&& is_array($segregation_links['ff']) === true
) {
foreach ($segregation_links['ff'] as $link) {
foreach ($segregation_links['ff'] as $link2) {
if ($link['id_parent'] == $link2['id_child']
&& $link['id_child'] == $link2['id_parent']
) {
if (enterprise_installed()) {
delete_link($segregation_links['ff'][$index_to_del]);
}
unset($segregation_links['ff'][$index_to_del]);
}
unset($segregation_links['ff'][$index_to_del]);
$index_to_del++;
}
$index_to_del++;
$final_links['ff'][$index3] = $link;
$index3++;
$duplicated = false;
$index_to_del = 0;
}
$final_links['ff'][$index3] = $link;
$index3++;
$duplicated = false;
$index_to_del = 0;
}
$final_links['am'] = $segregation_links['am'];
/*
---------------------------------------------------------------- */
/*
----------------- AA, AM and MM links management --------------- */
/*
------------------ Priority: ----------------------------------- */
/*
-------------------- 1 -> MM (module - module) ----------------- */
/*
-------------------- 2 -> AM (agent - module) ------------------ */
/*
-------------------- 3 -> AA (agent - agent) ------------------- */
// ----------------------------------------------------------------
----------------------------------------------------------------
----------------- AA, AM and MM links management ---------------
------------------ Priority: -----------------------------------
-------------------- 1 -> MM (module - module) -----------------
-------------------- 2 -> AM (agent - module) ------------------
-------------------- 3 -> AA (agent - agent) -------------------
----------------------------------------------------------------
*/
$final_links2 = [];
$index = 0;
$l3_link = [];
$agent1 = 0;
$agent2 = 0;
foreach ($final_links['mm'] as $rel_mm) {
$module_parent = $rel_mm['id_parent_source_data'];
$module_children = $rel_mm['id_child_source_data'];
$agent1 = (int) agents_get_agent_id_by_module_id($module_parent);
$agent2 = (int) agents_get_agent_id_by_module_id($module_children);
foreach ($final_links['aa'] as $key => $rel_aa) {
$l3_link = $rel_aa;
$id_p_source_data = (int) $rel_aa['id_parent_source_data'];
$id_c_source_data = (int) $rel_aa['id_child_source_data'];
if ((($id_p_source_data == $agent1) && ($id_c_source_data == $agent2))
|| (($id_p_source_data == $agent2) && ($id_c_source_data == $agent1))
) {
if (enterprise_installed()) {
delete_link($final_links['aa'][$key]);
}
unset($final_links['aa'][$key]);
if (isset($final_links['mm']) === true
&& is_array($final_links['mm']) === true
) {
foreach ($final_links['mm'] as $rel_mm) {
$module_parent = $rel_mm['id_parent_source_data'];
$module_children = $rel_mm['id_child_source_data'];
$agent1 = (int) agents_get_agent_id_by_module_id($module_parent);
$agent2 = (int) agents_get_agent_id_by_module_id($module_children);
foreach ($final_links['aa'] as $key => $rel_aa) {
$l3_link = $rel_aa;
$id_p_source_data = (int) $rel_aa['id_parent_source_data'];
$id_c_source_data = (int) $rel_aa['id_child_source_data'];
if ((($id_p_source_data == $agent1)
&& ($id_c_source_data == $agent2))
|| (($id_p_source_data == $agent2)
&& ($id_c_source_data == $agent1))
) {
if (enterprise_installed()) {
delete_link($final_links['aa'][$key]);
}
unset($final_links['aa'][$key]);
}
}
}
}
@ -1487,14 +1507,18 @@ function clean_duplicate_links($relations)
$same_m = [];
$index = 0;
foreach ($final_links2['am'] as $rel_am) {
foreach ($final_links2['am'] as $rel_am2) {
if (($rel_am['id_child_source_data'] == $rel_am2['id_child_source_data'])
&& ($rel_am['id_parent_source_data'] != $rel_am2['id_parent_source_data'])
) {
$same_m[$index]['rel'] = $rel_am2;
$same_m[$index]['agent_parent'] = $rel_am['id_parent_source_data'];
$index++;
if (isset($final_links2['am']) === true
&& is_array($final_links2['am']) === true
) {
foreach ($final_links2['am'] as $rel_am) {
foreach ($final_links2['am'] as $rel_am2) {
if (($rel_am['id_child_source_data'] == $rel_am2['id_child_source_data'])
&& ($rel_am['id_parent_source_data'] != $rel_am2['id_parent_source_data'])
) {
$same_m[$index]['rel'] = $rel_am2;
$same_m[$index]['agent_parent'] = $rel_am['id_parent_source_data'];
$index++;
}
}
}
}
@ -1503,19 +1527,23 @@ function clean_duplicate_links($relations)
$index = 0;
$l3_link = [];
$have_l3 = false;
foreach ($final_links2['aa'] as $key => $rel_aa) {
$l3_link = $rel_aa;
foreach ($same_m as $rel_am) {
if ((($rel_aa['id_parent_source_data'] == $rel_am['parent']['id_parent_source_data'])
&& ($rel_aa['id_child_source_data'] == $rel_am['rel']['id_parent_source_data']))
|| (($rel_aa['id_child_source_data'] == $rel_am['parent']['id_parent_source_data'])
&& ($rel_aa['id_parent_source_data'] == $rel_am['rel']['id_parent_source_data']))
) {
if (enterprise_installed()) {
delete_link($final_links2['aa'][$key]);
}
if (isset($final_links2['aa']) === true
&& is_array($final_links2['aa']) === true
) {
foreach ($final_links2['aa'] as $key => $rel_aa) {
$l3_link = $rel_aa;
foreach ($same_m as $rel_am) {
if ((($rel_aa['id_parent_source_data'] == $rel_am['parent']['id_parent_source_data'])
&& ($rel_aa['id_child_source_data'] == $rel_am['rel']['id_parent_source_data']))
|| (($rel_aa['id_child_source_data'] == $rel_am['parent']['id_parent_source_data'])
&& ($rel_aa['id_parent_source_data'] == $rel_am['rel']['id_parent_source_data']))
) {
if (enterprise_installed()) {
delete_link($final_links2['aa'][$key]);
}
unset($final_links2['aa'][$key]);
unset($final_links2['aa'][$key]);
}
}
}
}
@ -1526,20 +1554,36 @@ function clean_duplicate_links($relations)
$final_links3['ff'] = $final_links2['ff'];
$cleaned_links = [];
foreach ($final_links3['aa'] as $link) {
$cleaned_links[] = $link;
if (isset($final_links3['aa']) === true
&& is_array($final_links3['aa']) === true
) {
foreach ($final_links3['aa'] as $link) {
$cleaned_links[] = $link;
}
}
foreach ($final_links3['am'] as $link) {
$cleaned_links[] = $link;
if (isset($final_links3['am']) === true
&& is_array($final_links3['am']) === true
) {
foreach ($final_links3['am'] as $link) {
$cleaned_links[] = $link;
}
}
foreach ($final_links3['mm'] as $link) {
$cleaned_links[] = $link;
if (isset($final_links3['mm']) === true
&& is_array($final_links3['mm']) === true
) {
foreach ($final_links3['mm'] as $link) {
$cleaned_links[] = $link;
}
}
foreach ($final_links3['ff'] as $link) {
$cleaned_links[] = $link;
if (isset($final_links3['ff']) === true
&& is_array($final_links3['ff']) === true
) {
foreach ($final_links3['ff'] as $link) {
$cleaned_links[] = $link;
}
}
return $cleaned_links;
@ -1677,34 +1721,34 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
stroke: #fff;
stroke-width: 1px;
}
.node_over {
stroke: #999;
}
.node_selected {
stroke:#343434;
stroke-width:5;
}
.node_children {
stroke: #00f;
}
.link {
stroke-opacity: .6;
}
.link_over {
stroke: #000;
stroke-opacity: .6;
}
.holding_area {
stroke: #0f0;
stroke-dasharray: 12,3;
}
.holding_area_link {
stroke-dasharray: 12,3;
}
@ -1730,7 +1774,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
init_drag_and_drop();
init_minimap();
function_open_minimap();
$(document.body).on("mouseleave",
".context-menu-list",
function(e) {
@ -1757,7 +1801,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
<div id="dialog_node_edit" style="display: none;" title="<?php echo __('Edit node'); ?>">
<div style="text-align: left; width: 100%;">
<?php
$table = null;
$table = new stdClass();
$table->id = 'node_details';
$table->width = '100%';
@ -1778,7 +1822,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
false
);
$table = null;
$table = new stdClass();
$table->id = 'interface_information';
$table->width = '100%';
@ -1802,7 +1846,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
true
);
$table = null;
$table = new stdClass();
$table->id = 'node_options';
$table->width = '100%';
@ -1820,7 +1864,24 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
'',
0,
true
).'&nbsp;'.'<span id="shape_icon_in_progress" style="display: none;">'.html_print_image('images/spinner.gif', true).'</span>'.'<span id="shape_icon_correct" style="display: none;">'.html_print_image('images/dot_green.png', true).'</span>'.'<span id="shape_icon_fail" style="display: none;">'.html_print_image('images/dot_red.png', true).'</span>';
);
$table->data[0][1] .= '&nbsp;<span id="shape_icon_in_progress" style="display: none;">';
$table->data[0][1] .= html_print_image(
'images/spinner.gif',
true
);
$table->data[0][1] .= '</span><span id="shape_icon_correct" style="display: none;">';
$table->data[0][1] .= html_print_image(
'images/dot_green.png',
true
);
$table->data[0][1] .= '</span><span id="shape_icon_fail" style="display: none;">';
$table->data[0][1] .= html_print_image(
'images/dot_red.png',
true
);
$table->data[0][1] .= '</span>';
$table->data['node_name'][0] = __('Name');
$table->data['node_name'][1] = html_print_input_text(
'edit_name_node',
@ -1875,7 +1936,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
true
);
$table = null;
$table = new stdClass();
$table->id = 'relations_table';
$table->width = '100%';
@ -1990,7 +2051,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
<div id="dialog_node_add" style="display: none;" title="<?php echo __('Add node'); ?>">
<div style="text-align: left; width: 100%;">
<?php
$table = null;
$table = new stdClass();
$table->width = '100%';
$table->data = [];
@ -2033,7 +2094,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
false
);
$table = null;
$table = new stdClass();
$table->width = '100%';
$table->data = [];
$table->data[0][0] = __('Group');
@ -2083,7 +2144,7 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
true
);
$table = null;
$table = new stdClass();
$table->width = '100%';
$table->data = [];
$table->data[0][0] = __('Name');
@ -2126,5 +2187,3 @@ function show_networkmap($id=0, $user_readonly=false, $nodes_and_relations=[], $
</div>
<?php
}

View File

@ -1,18 +1,35 @@
<?php
// ______ __ _______ _______ _______
// | __ \.---.-.-----.--| |.-----.----.---.-. | ___| | | __|
// | __/| _ | | _ || _ | _| _ | | ___| |__ |
// |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
//
// ============================================================================
// Copyright (c) 2007-2010 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.
// ============================================================================
// Load global variables
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
global $config;
// Check user credentials
// Check user credentials.
check_login();
$id = (int) get_parameter('id_networkmap', 0);
@ -63,8 +80,7 @@ if ($edit_networkmap) {
} else {
$id_group = $values['id_group'];
// ACL for the network map
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
// ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM');
@ -221,7 +237,7 @@ if (!empty($result)) {
if ($not_found) {
ui_print_error_message(__('Not found networkmap.'));
} else {
$table = null;
$table = new stdClass();
$table->id = 'form_editor';
$table->width = '98%';

View File

@ -1,15 +1,32 @@
<?php
// ______ __ _______ _______ _______
// | __ \.---.-.-----.--| |.-----.----.---.-. | ___| | | __|
// | __/| _ | | _ || _ | _| _ | | ___| |__ |
// |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
//
// ============================================================================
// Copyright (c) 2007-2010 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.
// ============================================================================
// Load global variables
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
global $config;
require_once 'include/functions_pandora_networkmap.php';
@ -19,9 +36,9 @@ require_once 'include/functions_modules.php';
$public_hash = get_parameter('hash', false);
// Try to authenticate by hash on public dashboards
// Try to authenticate by hash on public dashboards.
if ($public_hash === false) {
// Login check
// Login check.
check_login();
} else {
$validate_hash = enterprise_hook(
@ -33,7 +50,10 @@ if ($public_hash === false) {
]
);
if ($validate_hash === false || $validate_hash === ENTERPRISE_NOT_HOOK) {
db_pandora_audit('Invalid public hash', 'Trying to access report builder');
db_pandora_audit(
'Invalid public hash',
'Trying to access report builder'
);
include 'general/noaccess.php';
exit;
}
@ -117,7 +137,7 @@ if (is_ajax()) {
);
$row['style'] = json_decode($row['style'], true);
$row['style']['shape'] = $shape;
// WORK AROUND FOR THE JSON ENCODE WITH FOR EXAMPLE Ñ OR Á
// WORK AROUND FOR THE JSON ENCODE WITH FOR EXAMPLE Ñ OR Á.
$row['style']['label'] = 'json_encode_crash_with_ut8_chars';
$row['style']['color'] = $color;
$row['style']['networkmap'] = $networkmap;
@ -215,52 +235,17 @@ if (is_ajax()) {
if ($get_tooltip_content) {
$id = (int) get_parameter('id', 0);
// Get all module from agent
switch ($config['dbtype']) {
case 'mysql':
case 'postgresql':
$sql = sprintf(
'
SELECT *
FROM tagente_estado, tagente_modulo
LEFT JOIN tmodule_group
ON tmodule_group.id_mg = tagente_modulo.id_module_group
WHERE tagente_modulo.id_agente_modulo = '.$id.'
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_modulo.delete_pending = 0
AND tagente_estado.utimestamp != 0'
);
break;
// If Dbms is Oracle then field_list in sql statement has to be recoded. See oracle_list_all_field_table()
case 'oracle':
$fields_tagente_estado = oracle_list_all_field_table(
'tagente_estado',
'string'
);
$fields_tagente_modulo = oracle_list_all_field_table(
'tagente_modulo',
'string'
);
$fields_tmodule_group = oracle_list_all_field_table(
'tmodule_group',
'string'
);
$sql = sprintf(
'
SELECT '.$fields_tagente_estado.', '.$fields_tagente_modulo.', '.$fields_tmodule_group.' FROM tagente_estado, tagente_modulo
LEFT JOIN tmodule_group
ON tmodule_group.id_mg = tagente_modulo.id_module_group
WHERE tagente_modulo.id_agente_modulo = '.$id.'
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_modulo.delete_pending = 0
AND tagente_estado.utimestamp != 0'
);
break;
}
$sql = sprintf(
'SELECT *
FROM tagente_estado, tagente_modulo
LEFT JOIN tmodule_group
ON tmodule_group.id_mg = tagente_modulo.id_module_group
WHERE tagente_modulo.id_agente_modulo = '.$id.'
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_modulo.delete_pending = 0
AND tagente_estado.utimestamp != 0'
);
$modules = db_get_all_rows_sql($sql);
if (empty($modules)) {
@ -377,7 +362,7 @@ if (is_ajax()) {
$return['content'] .= '<b>'.__('Status: ').'</b>'.ui_print_status_image($status, $title, true).'<br />';
if ($module['id_tipo_modulo'] == 24) {
// log4x
// Log4x.
switch ($module['datos']) {
case 10:
$salida = 'TRACE';
@ -410,7 +395,7 @@ if (is_ajax()) {
break;
}
$salida = "<span style='$style'>$salida</span>";
$salida = "<span style='".$style."'>".$salida.'</span>';
} else {
if (is_numeric($module['datos'])) {
$salida = format_numeric($module['datos']);
@ -513,7 +498,7 @@ if (is_ajax()) {
include_once 'include/functions_agents.php';
$id = (int) get_parameter('id', 0);
// q is what autocomplete plugin gives
// Q is what autocomplete plugin gives.
$string = (string) get_parameter('q');
$agents = db_get_all_rows_filter(
@ -586,8 +571,7 @@ if (is_ajax()) {
$filter = json_encode($array_filter);
// ACL for the network map
// $networkmap_read = check_acl ($config['id_user'], $networkmap['id_group'], "MR");
// ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM');
@ -641,7 +625,7 @@ if (is_ajax()) {
return;
}
// Popup
// Popup.
$get_status_node = (bool) get_parameter('get_status_node', false);
$get_status_module = (bool) get_parameter(
'get_status_module',
@ -763,13 +747,9 @@ if (is_ajax()) {
}
// --------------END AJAX------------------------------------------------
if (_id_ != '_id_') {
$id = _id_;
} else {
$id = (int) get_parameter('id_networkmap', 0);
}
$id = (int) get_parameter('id_networkmap', 0);
// Print some params to handle it in js
// Print some params to handle it in js.
html_print_input_hidden('product_name', get_product_name());
html_print_input_hidden('center_logo', ui_get_full_url(ui_get_logo_to_center_networkmap()));
@ -823,7 +803,7 @@ if ($networkmap === false) {
return;
} else {
// ACL for the network map
// 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');
@ -841,11 +821,11 @@ if ($networkmap === false) {
$pure = (int) get_parameter('pure', 0);
// Main code
// Main code.
if ($pure == 1) {
$buttons['screen'] = [
'active' => false,
'text' => '<a href="index.php?sec=networkmapconsole&amp;'.'sec2=operation/agentes/pandora_networkmap&amp;'.'tab=view&amp;id_networkmap='.$id.'">'.html_print_image(
'text' => '<a href="index.php?sec=networkmapconsole&amp;sec2=operation/agentes/pandora_networkmap&amp;tab=view&amp;id_networkmap='.$id.'">'.html_print_image(
'images/normal_screen.png',
true,
['title' => __('Normal screen')]
@ -855,7 +835,7 @@ if ($networkmap === false) {
if (!$dash_mode) {
$buttons['screen'] = [
'active' => false,
'text' => '<a href="index.php?sec=networkmapconsole&amp;'.'sec2=operation/agentes/pandora_networkmap&amp;'.'pure=1&amp;tab=view&amp;id_networkmap='.$id.'">'.html_print_image(
'text' => '<a href="index.php?sec=networkmapconsole&amp;sec2=operation/agentes/pandora_networkmap&amp;pure=1&amp;tab=view&amp;id_networkmap='.$id.'">'.html_print_image(
'images/full_screen.png',
true,
['title' => __('Full screen')]
@ -863,7 +843,7 @@ if ($networkmap === false) {
];
$buttons['list'] = [
'active' => false,
'text' => '<a href="index.php?sec=networkmapconsole&amp;'.'sec2=operation/agentes/pandora_networkmap">'.html_print_image(
'text' => '<a href="index.php?sec=networkmapconsole&amp;sec2=operation/agentes/pandora_networkmap">'.html_print_image(
'images/list.png',
true,
['title' => __('List of networkmap')]
@ -895,23 +875,18 @@ if ($networkmap === false) {
<script>
$(document).ready(function() {
$("*").on("click", function(){
if($("[aria-describedby=dialog_node_edit]").css('display') == 'block'){
$('#foot').css({'top':parseInt($("[aria-describedby=dialog_node_edit]").css('height')+$("[aria-describedby=dialog_node_edit]").css('top')),'position':'relative'});
}
else{
$('#foot').css({'position':'','top':'0'});
}
if($("[aria-describedby=dialog_node_edit]").css('display') == 'block'){
$('#foot').css({'top':parseInt($("[aria-describedby=dialog_node_edit]").css('height')+$("[aria-describedby=dialog_node_edit]").css('top')),'position':'relative'});
}
else{
$('#foot').css({'position':'','top':'0'});
}
});
$("[aria-describedby=dialog_node_edit]").on('dialogclose', function(event) {
$('#foot').css({'position':'','top':'0'});
$('#foot').css({'position':'','top':'0'});
});
});
</script>
</script>