Merge remote-tracking branch 'origin' into ent-7514-pasar-networkmaps-a-open

This commit is contained in:
Jose Gonzalez 2021-09-10 12:50:23 +02:00
commit a774d67f2a
167 changed files with 3636 additions and 2034 deletions

View File

@ -151,7 +151,7 @@ execute_cmd "yum install -y $extra_repos" "Installing extra repositories"
execute_cmd "yum-config-manager --enable remi-php73" "Configuring PHP"
# Install percona Database
[ -f /etc/resolv.conf ] && rm -rf /etc/my.cnf
[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
execute_cmd "yum install -y Percona-Server-server-57" "Installing Percona Server"
# Console dependencies
@ -429,6 +429,7 @@ sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
sed -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
sed -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
sed -i -e "s/^memory_limit.*/memory_limit = 800M/g" /etc/php.ini
sed -i -e "s/.*post_max_size =.*/post_max_size = 800M/" /etc/php.ini
cat > /var/www/html/index.html << EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/pandora_console/">

View File

@ -149,6 +149,7 @@ EOF_INDEX
sed -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
sed -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
sed -i -e "s/^memory_limit.*/memory_limit = 800M/g" /etc/php.ini
sed -i -e "s/.*post_max_size =.*/post_max_size = 800M/" /etc/php.ini
echo "- Setting Public URL: $PUBLICURL"
q=$(mysql -u$DBUSER -p$DBPASS $DBNAME -h$DBHOST -sNe "select token from tconfig;" | grep public_url)

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.756-210726
Version: 7.0NG.756-210910
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.756-210726"
pandora_version="7.0NG.756-210910"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -1015,7 +1015,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.756';
use constant AGENT_BUILD => '210726';
use constant AGENT_BUILD => '210910';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.756
%define release 210726
%define release 210910
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.756
%define release 210726
%define release 210910
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.756"
PI_BUILD="210726"
PI_BUILD="210910"
OS_NAME=`uname -s`
FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{210726}
{210910}
ViewReadme
{Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.756 Build 210726")
#define PANDORA_VERSION ("7.0NG.756 Build 210910")
string pandora_path;
string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.756(Build 210726))"
VALUE "ProductVersion", "(7.0NG.756(Build 210910))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.756-210726
Version: 7.0NG.756-210910
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.756-210726"
pandora_version="7.0NG.756-210910"
package_pear=0
package_pandora=1

View File

@ -33,10 +33,19 @@ function users_extension_main_god($god=true)
$image = 'images/user.png';
}
// Header
// Header.
ui_print_page_header(__('Users connected'), $image, false, '', $god);
// Get groups user has permission
$check_profile = db_get_row('tusuario_perfil', 'id_usuario', $config['id_user'], 'id_up');
if ($check_profile === false && !users_is_admin()) {
return ui_print_error_message(
__('This user does not have any associated profile'),
'',
false
);
}
// Get groups user has permission.
$group_um = users_get_groups_UM($config['id_user']);
// Is admin or has group permissions all.
$groups = implode(',', array_keys($group_um, 1));
@ -44,51 +53,85 @@ function users_extension_main_god($god=true)
// Get user conected last 5 minutes.Show only those on which the user has permission.
switch ($config['dbtype']) {
case 'mysql':
$sql = sprintf(
'SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (UNIX_TIMESTAMP(NOW()) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
if (users_is_admin()) {
$sql = sprintf(
'SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
WHERE last_connect > (UNIX_TIMESTAMP(NOW()) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC'
);
} else {
$sql = sprintf(
'SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (UNIX_TIMESTAMP(NOW()) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
}
break;
case 'postgresql':
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - ".SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
if (users_is_admin()) {
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
WHERE last_connect > (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - ".SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC'
);
} else {
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - ".SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
}
break;
case 'oracle':
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
if (users_is_admin()) {
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
WHERE last_connect > (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC'
);
} else {
$sql = sprintf(
"SELECT tusuario.id_user, tusuario.last_connect
FROM tusuario
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
AND tusuario_perfil.id_grupo IN (%s)
WHERE last_connect > (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - '.SECONDS_5MINUTES.')
GROUP BY tusuario.id_user
ORDER BY last_connect DESC',
$groups
);
}
break;
default:
// Nothing to do.
break;
}
$rows = db_get_all_rows_sql($sql);
if (empty($rows)) {
$rows = [];
echo "<div class='nf'>".__('No other users connected').'</div>';
} else {
$table = new StdClass();
$table->cellpadding = 0;
$table->cellspacing = 0;
$table->width = '100%';
@ -105,7 +148,7 @@ function users_extension_main_god($god=true)
$rowPair = true;
$iterator = 0;
// Get data
// Get data.
foreach ($rows as $row) {
// Get data of user's last login.
switch ($config['dbtype']) {
@ -135,6 +178,10 @@ function users_extension_main_god($god=true)
)
);
break;
default:
// Nothing to do.
break;
}
if ($rowPair) {

View File

@ -1,5 +1,7 @@
START TRANSACTION;
ALTER TABLE `tevento` MODIFY `data` TINYTEXT default NULL;
ALTER TABLE `tmetaconsole_event` MODIFY `data` TINYTEXT default NULL;
ALTER TABLE `tmetaconsole_setup` ADD COLUMN `unified` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `tlayout` ADD COLUMN `auto_adjust` INTEGER UNSIGNED NOT NULL default 0;
ALTER TABLE `tlayout_data` ADD COLUMN `title` TEXT default '';

View File

@ -0,0 +1,7 @@
START TRANSACTION;
UPDATE `tconfig` set value = 'Lato-Regular.ttf' WHERE token LIKE 'custom_report_front_font';
UPDATE `tconfig` set value = 'Lato-Regular.ttf' WHERE token LIKE 'fontpath';
UPDATE `tlanguage` SET `name` = 'Deutsch' WHERE `id_language` = 'de';
COMMIT;

View File

@ -1,35 +0,0 @@
CREATE PROCEDURE updateSnmpAlerts()
BEGIN
DECLARE tokenId INT DEFAULT 0;
DECLARE procedureRun INT DEFAULT 0;
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE a, b INT DEFAULT 0;
DECLARE alertsCur CURSOR FOR SELECT id, id_alert_command FROM talert_actions;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SELECT id_config, value INTO tokenId, procedureRun FROM tconfig WHERE token = 'update_snmp_alerts_procedure_already_run' LIMIT 1;
IF procedureRun < 1 THEN
SET done = FALSE;
OPEN alertsCur;
read_loop: LOOP
FETCH alertsCur INTO a, b;
IF done THEN
LEAVE read_loop;
END IF;
UPDATE talert_snmp SET id_alert = b WHERE id_alert = a;
UPDATE talert_snmp_action SET alert_type = b WHERE alert_type = a;
END LOOP;
CLOSE alertsCur;
IF tokenId < 1 THEN
INSERT INTO tconfig (id_config, token, value) VALUES ('', 'update_snmp_alerts_procedure_already_run', '1');
ELSE
UPDATE tconfig SET value = 1 WHERE token = 'update_snmp_alerts_procedure_already_run';
END IF;
END IF;
END

View File

@ -1028,6 +1028,7 @@ ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_timestamp_idx` (`timestamp`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_module_status_idx` (`module_status`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_criticity_idx` (`criticity`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_agent_name_idx` (`agent_name`);
ALTER TABLE `tmetaconsole_event` MODIFY `data` TINYTEXT default NULL;
-- ---------------------------------------------------------------------
-- Table `tmetaconsole_event_history`
@ -2350,6 +2351,8 @@ ALTER TABLE `tevento` ADD COLUMN `data` double(50,5) default NULL;
ALTER TABLE `tevento` ADD COLUMN `module_status` int(4) NOT NULL default '0';
ALTER TABLE `tevento` MODIFY `data` TINYTEXT default NULL;
-- ---------------------------------------------------------------------
-- Table `tevent_extended`
-- ---------------------------------------------------------------------
@ -4075,3 +4078,5 @@ CREATE TABLE IF NOT EXISTS `talert_execution_queue` (
`utimestamp` bigint(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
UPDATE `tlanguage` SET `name` = 'Deutsch' WHERE `id_language` = 'de';

View File

@ -23,13 +23,8 @@ ui_require_css_file('order_interpreter');
// Global errors/warnings checking.
config_check();
echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
if ($config['menu_type'] == 'classic') {
echo '<div id="header_table" class="header_table_classic">';
} else {
echo '<div id="header_table" class="header_table_collapsed">';
}
?>
<div id="header_table_inner">
<?php

View File

@ -63,6 +63,7 @@ switch ($login_screen) {
case 'error_perms':
case 'homedir_bad_defined':
case 'homeurl_bad_defined':
case 'disabled_access_node':
$logo_link = 'index.php';
$logo_title = __('Go to Login');
break;
@ -208,6 +209,7 @@ if (is_metaconsole() === true) {
switch ($login_screen) {
case 'logout':
case 'login':
case 'disabled_access_node':
if (!empty($page) && !empty($sec)) {
foreach ($_POST as $key => $value) {
html_print_input_hidden(io_safe_input($key), io_safe_input($value));
@ -508,9 +510,29 @@ if ($login_screen == 'logout') {
echo '</div>';
}
if ($login_screen === 'disabled_access_node') {
echo '<div id="disabled_access_node" title="'.__('User node access not enabled').'">';
echo '<div class="content_alert">';
echo '<div class="icon_message_alert">';
echo html_print_image('images/icono_logo_pandora.png', true, ['alt' => __('Centralized user in metaconsole'), 'border' => 0]);
echo '</div>';
echo '<div class="content_message_alert">';
echo '<div class="text_message_alert">';
echo '<h1>'.__('Centralized user in metaconsole').'</h1>';
echo '<p>'.__('This user does not have access on node, please enable node access on this user from metaconsole.').'</p>';
echo '</div>';
echo '<div class="button_message_alert">';
html_print_submit_button('Ok', 'hide-login-logout', false);
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
switch ($login_screen) {
case 'error_dbconfig':
case 'error_authconfig':
case 'disabled_node_access':
if (!isset($config['rb_product_name_alt'])) {
$title = __('Problem with %s database', get_product_name());
} else {
@ -694,6 +716,29 @@ html_print_div(['id' => 'forced_title_layer', 'class' => 'forced_title_layer', '
});
break;
case 'disabled_access_node':
$(document).ready (function () {
$(function() {
$("#disabled_access_node").dialog({
resizable: true,
draggable: true,
modal: true,
height: 220,
width: 528,
clickOutside: true,
overlay: {
opacity: 0.5,
background: "black"
}
});
});
$("#submit-hide-login-logout").click (function () {
document.location = "<?php echo ui_get_full_url('index.php'); ?>";
});
});
break;
default:
$(document).ready (function () {
// IE9- modal warning window

View File

@ -1,17 +1,33 @@
<?php
/**
* Lateral Main Menu.
*
* @category Main Menu.
* @package Pandora FMS.
* @subpackage OpenSource.
* @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 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.
if (! isset($config['id_user'])) {
// Begin.
if (isset($config['id_user']) === false) {
include 'general/login_page.php';
exit();
}
@ -20,9 +36,9 @@ if (! isset($config['id_user'])) {
<script type="text/javascript" language="javascript">
$(document).ready(function(){
var menuType_value = "<?php echo $config['menu_type']; ?>";
var menuType_value = "<?php echo $_SESSION['menu_type']; ?>";
if (menuType_value == 'classic') {
if (menuType_value === '' || menuType_value === 'classic') {
$('ul.submenu').css('left', '214px');
}
else{
@ -34,26 +50,22 @@ $(document).ready(function(){
<?php
$autohidden_menu = 0;
if (isset($config['autohidden_menu']) && $config['autohidden_menu']) {
if (isset($config['autohidden_menu']) === true && (bool) $config['autohidden_menu'] === true) {
$autohidden_menu = 1;
}
// Menu container prepared to autohide menu
if ($config['menu_type'] == 'classic') {
echo '<div id="menu_full" class="menu_full_classic">';
} else {
echo '<div id="menu_full" class="menu_full_collapsed">';
}
// Start of full lateral menu.
echo sprintf('<div id="menu_full" class="menu_full_%s">', $menuTypeClass);
$custom_logo = 'images/custom_logo/'.$config['custom_logo'];
$custom_logo_collapsed = 'images/custom_logo/'.$config['custom_logo_collapsed'];
if (!defined('PANDORA_ENTERPRISE')) {
if (defined('PANDORA_ENTERPRISE') === false) {
$logo_title = get_product_name().' Opensource';
$custom_logo = 'images/custom_logo/pandora_logo_head_3.png';
$custom_logo_collapsed = 'images/custom_logo/pandora_logo_green_collapsed.png';
} else {
if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo)) {
if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo) === true) {
$custom_logo = ENTERPRISE_DIR.'/'.$custom_logo;
}
@ -61,54 +73,48 @@ if (!defined('PANDORA_ENTERPRISE')) {
}
echo '<div class="logo_green"><a href="index.php?sec=main">';
if (isset($config['custom_logo'])) {
if ($config['menu_type'] == 'classic') {
echo html_print_image($custom_logo, true, ['border' => '0', 'width' => '215', 'alt' => $logo_title, 'class' => 'logo_full', 'style' => 'display:block']);
} else {
echo html_print_image($custom_logo, true, ['border' => '0', 'width' => '215', 'alt' => $logo_title, 'class' => 'logo_full', 'style' => 'display:none']);
}
if (isset($config['custom_logo']) === true) {
echo html_print_image(
$custom_logo,
true,
[
'border' => '0',
'width' => '215',
'alt' => $logo_title,
'class' => 'logo_full',
'style' => ($menuCollapsed === true) ? 'display:none' : 'display:block',
]
);
}
if (isset($config['custom_logo_collapsed'])) {
if ($config['menu_type'] == 'classic') {
echo html_print_image($custom_logo_collapsed, true, ['border' => '0', 'width' => '60', 'alt' => $logo_title, 'class' => 'logo_icon', 'style' => 'display:none']);
} else {
echo html_print_image($custom_logo_collapsed, true, ['border' => '0', 'width' => '60', 'alt' => $logo_title, 'class' => 'logo_icon', 'style' => 'display:block']);
}
if (isset($config['custom_logo_collapsed']) === true) {
echo html_print_image(
$custom_logo_collapsed,
true,
[
'border' => '0',
'width' => '60',
'alt' => $logo_title,
'class' => 'logo_icon',
'style' => ($menuCollapsed === true) ? 'display:block' : 'display:none',
]
);
}
echo '</a></div>';
// echo '<div class="tit bg titop">:: '.__('Operation').' ::</div>';
require 'operation/menu.php';
// Check all enterprise ACL used in godmenu items to print menu headers
if (check_acl($config['id_user'], 0, 'AW')
|| check_acl($config['id_user'], 0, 'PM')
|| check_acl($config['id_user'], 0, 'LM')
|| check_acl($config['id_user'], 0, 'UM')
|| check_acl($config['id_user'], 0, 'LW')
|| check_acl($config['id_user'], 0, 'EW')
|| check_acl($config['id_user'], 0, 'DW')
) {
// echo '<div class="tit bg3">:: '.__('Administration').' ::</div>';
}
require 'godmode/menu.php';
if ($config['menu_type'] == 'classic') {
echo '<div id="button_collapse" class="button_classic button_collapse"></div>';
} else {
echo '<div id="button_collapse" class="button_collapsed button_collapse"></div>';
}
echo sprintf('<div id="button_collapse" class="button_%s button_collapse"></div>', $menuTypeClass);
// require ("links_menu.php");
echo '</div>';
// menu_container
// Menu_container.
ui_require_jquery_file('cookie');
$config_fixed_header = false;
if (isset($config['fixed_header'])) {
if (isset($config['fixed_header']) === true) {
$config_fixed_header = $config['fixed_header'];
}
?>

View File

@ -349,7 +349,14 @@ if (isset($groups[$grupo]) || $new_agent) {
}
$table_primary_group .= '<div class="label_select_child_icons"><span id="group_preview">';
$table_primary_group .= ui_print_group_icon($grupo, true);
if ($id_agente === 0) {
$hidden = 'display: none;';
} else {
$hidden = '';
}
$table_primary_group .= ui_print_group_icon($grupo, true, 'groups_small', $hidden);
$table_primary_group .= '</span></div></div></div>';
$table_interval = '<div class="label_select"><p class="input_label">'.__('Interval').'</p>';
@ -500,7 +507,10 @@ if (enterprise_installed()) {
false,
// Delete_groups.
// Do not show the primary group in this selection.
array_merge(($secondary_groups_selected['plain'] ?? []), [$agent['id_grupo']])
array_merge(
(empty($secondary_groups_selected['plain']) === false) ? $secondary_groups_selected['plain'] : [],
[$agent['id_grupo']]
)
// Include_groups.
// Size.
// Simple_multiple_options.
@ -1243,6 +1253,9 @@ ui_require_jquery_file('bgiframe');
});
$("select#id_os").pandoraSelectOS ();
$('select#grupo').pandoraSelectGroupIcon ();
var checked = $("#checkbox-cascade_protection").is(":checked");
if (checked) {

View File

@ -2095,7 +2095,7 @@ if ($delete_module) {
exit;
}
// Also call base function to delete modules madafakas de los cojones.
// Also call base function to delete modules.
modules_delete_agent_module($id_borrar_modulo);
// Check for errors.
@ -2368,7 +2368,7 @@ switch ($tab) {
var aget_id_os = '<?php echo agents_get_os(modules_get_agentmodule_agent(get_parameter('id_agent_module'))); ?>';
if('<?php echo html_entity_decode(modules_get_agentmodule_name(get_parameter('id_agent_module'))); ?>' != $('#text-name').val() &&
if('<?php echo modules_get_agentmodule_name(get_parameter('id_agent_module')); ?>' != $('#text-name').val() &&
'<?php echo agents_get_os(modules_get_agentmodule_agent(get_parameter('id_agent_module'))); ?>' == 19){
event.preventDefault();
@ -2402,7 +2402,7 @@ switch ($tab) {
var module_type_snmp = '<?php echo modules_get_agentmodule_type(get_parameter('id_agent_module')); ?>';
if('<?php echo html_entity_decode(modules_get_agentmodule_name(get_parameter('id_agent_module'))); ?>' != $('#text-name').val() && (
if('<?php echo modules_get_agentmodule_name(get_parameter('id_agent_module')); ?>' != $('#text-name').val() && (
module_type_snmp == 15 || module_type_snmp == 16 || module_type_snmp == 17 || module_type_snmp == 18)){
event.preventDefault();

View File

@ -215,7 +215,7 @@ $table_simple->colspan[3][1] = 3;
$table_simple->data[0][0] = __('Name');
$table_simple->data[0][1] = html_print_input_text_extended(
'name',
io_safe_input(html_entity_decode($name, ENT_QUOTES, 'UTF-8')),
$name,
'text-name',
'',
45,

View File

@ -443,6 +443,13 @@ $data[1] = html_print_input_text_extended(
$largeClassDisabledBecauseInPolicy,
true
);
$data[1] .= ui_print_help_tip(
__(
'Please use single quotation marks when necessary. '."\n".'
If double quotation marks are needed, please escape them with a backslash (\&quot;)'
),
true
);
$table_simple->colspan['row-cmd-row-1'][1] = 3;
push_table_simple($data, 'row-cmd-row-1');
@ -577,12 +584,7 @@ $(document).ready (function () {
$('#text-ip_target').keyup(function() {
$('#text-target_ip').val($(this).val());
});
$('#text-target_ip').keyup(function() {
$('#text-ip_target').val($(this).val());
});
$('#text-community').keyup(function() {
$('#text-snmp_community').val($(this).val());
});
$('#text-snmp_community').keyup(function() {
$('#text-community').val($(this).val());
});
@ -591,61 +593,25 @@ $(document).ready (function () {
// Display or collapse the SNMP browser's v3 options
checkSNMPVersion ();
});
$('#snmp_browser_version').change(function() {
$('#snmp_version').val($(this).val());
// Display or collapse the SNMP v3 options in the main window
if ($(this).val() == "3") {
$("#simple-field_snmpv3_row1").attr("style", "");
$("#simple-field_snmpv3_row2").attr("style", "");
$("#simple-field_snmpv3_row3").attr("style", "");
$("input[name=active_snmp_v3]").val(1);
$("input[name=snmp_community]").attr("disabled", true);
}
else {
$("#simple-field_snmpv3_row1").css("display", "none");
$("#simple-field_snmpv3_row2").css("display", "none");
$("#simple-field_snmpv3_row3").css("display", "none");
$("input[name=active_snmp_v3]").val(0);
$("input[name=snmp_community]").removeAttr('disabled');
}
});
$('#snmp3_auth_user').keyup(function() {
$('#snmp3_browser_auth_user').val($(this).val());
});
$('#snmp3_browser_auth_user').keyup(function() {
$('#snmp3_auth_user').val($(this).val());
});
$('#snmp3_security_level').change(function() {
$('#snmp3_browser_security_level').val($(this).val());
});
$('#snmp3_browser_security_level').change(function() {
$('#snmp3_security_level').val($(this).val());
});
$('#snmp3_auth_method').change(function() {
$('#snmp3_browser_auth_method').val($(this).val());
});
$('#snmp3_browser_auth_method').change(function() {
$('#snmp3_auth_method').val($(this).val());
});
$('#snmp3_auth_pass').keyup(function() {
$('#snmp3_browser_auth_pass').val($(this).val());
});
$('#snmp3_browser_auth_pass').keyup(function() {
$('#snmp3_auth_pass').val($(this).val());
});
$('#snmp3_privacy_method').change(function() {
$('#snmp3_browser_privacy_method').val($(this).val());
});
$('#snmp3_browser_privacy_method').change(function() {
$('#snmp3_privacy_method').val($(this).val());
});
$('#snmp3_privacy_pass').keyup(function() {
$('#snmp3_browser_privacy_pass').val($(this).val());
});
$('#snmp3_browser_privacy_pass').keyup(function() {
$('#snmp3_privacy_pass').val($(this).val());
});
var custom_ip_target = "<?php echo $custom_ip_target; ?>";
if(custom_ip_target == ''){
$("#text-custom_ip_target").hide();

View File

@ -708,7 +708,7 @@ foreach ($simple_alerts as $alert) {
$data[3] .= '<div id="add_action-div-'.$alert['id'].'" class="invisible left">';
$data[3] .= '<form id="add_action_form-'.$alert['id'].'" method="post">';
$data[3] .= '<table class="databox_color w100p">';
$data[3] .= '<table class="databox_color w100p bg_color222">';
$data[3] .= html_print_input_hidden('add_action', 1, true);
$data[3] .= html_print_input_hidden('id_alert_module', $alert['id'], true);
@ -1120,6 +1120,12 @@ function show_add_action(id_alert) {
opacity: 0.5,
background: "black"
},
open: function() {
$("#action_select, #action_select").select2({
tags: true,
dropdownParent: $("#add_action-div-" + id_alert)
});
},
width: 500,
height: 300
})
@ -1150,6 +1156,12 @@ function show_display_update_action(id_module_action, alert_id, alert_id_agent_m
opacity: 0.5,
background: "black"
},
open: function() {
$("#action_select_ajax, #action_select_ajax").select2({
tags: true,
dropdownParent: $("#update_action-div")
});
},
width: 500,
height: 300
})

View File

@ -135,6 +135,10 @@ if ($id) {
$create_wu_integria = $action['create_wu_integria'];
}
if (users_can_manage_group_all('LW') === false && !$id) {
$group = users_get_first_group(false, 'LW', false);
}
// Hidden div with help hint to fill with javascript.
html_print_div(
[
@ -623,9 +627,6 @@ $(document).ready (function () {
$("#group option").each(function(index, value) {
var current_group = $(value).val();
});
if (data.id_group != 0 && $("#group").val() != data.id_group) {
$("#group").val(0);
}
var integria_custom_fields_values = [];
var integria_custom_fields_rvalues = [];

View File

@ -105,6 +105,7 @@ if ($update_command) {
$alert['command'] = $command;
$alert['description'] = $description;
$alert['id_group'] = $id_group;
$alert['fields_hidden'] = io_json_mb_encode($fields_hidden);
}
}

View File

@ -95,6 +95,7 @@ $fields_available['id_evento'] = __('Event Id');
$fields_available['evento'] = __('Event Name');
$fields_available['id_agente'] = __('Agent ID');
$fields_available['agent_name'] = __('Agent Name');
$fields_available['direccion'] = __('Agent IP');
$fields_available['id_usuario'] = __('User');
$fields_available['id_grupo'] = __('Group');
$fields_available['estado'] = __('Status');

View File

@ -404,7 +404,8 @@ $(document).ready (function () {
"get_agent_modules_json" : 1,
"get_id_and_name" : 1,
"disabled" : 0,
"id_agent" : id_agent
"id_agent" : id_agent,
"safe_name": 1,
};
var tags_to_search = $('#tags').val();
@ -434,7 +435,7 @@ $(document).ready (function () {
jQuery.each (data, function (i, val) {
option = $("<option></option>")
.attr ("value", val["id_agente_modulo"])
.append (val["nombre"]);
.append (val["safe_name"]);
$("#target_modules").append (option);
});

View File

@ -685,7 +685,8 @@ $(document).ready (function () {
"get_agent_modules_json" : 1,
"get_distinct_name" : 1,
"indexed" : 0,
"privilege" : "AW"
"privilege" : "AW",
"safe_name": 1
};
if (this.value != '0')
@ -712,7 +713,7 @@ $(document).ready (function () {
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr("value", value["nombre"])
.html(value["nombre"]);
.html(value["safe_name"]);
$("#module_name").append (option);
});
hideSpinner();

View File

@ -1326,12 +1326,13 @@ $(document).ready (function () {
"page" : "operation/agentes/ver_agente",
"get_agent_modules_json" : 1,
"get_distinct_name" : 1,
"indexed" : 0
"indexed" : 0,
"safe_name" : 1
};
if (this.value != '0')
params['id_tipo_modulo'] = this.value;
var status_module = $('#status_module').val();
if (status_module != '-1')
params['status_module'] = status_module;
@ -1342,16 +1343,16 @@ $(document).ready (function () {
params['tags'] = tags_to_search;
}
}
showSpinner();
$("tr#delete_table-edit1, tr#delete_table-edit0, tr#delete_table-edit2").hide ();
$("#module_name").attr ("disabled", "disabled")
$("#module_name option[value!=0]").remove ();
$("#module_name option[value!=0]").remove();
jQuery.post ("ajax.php",
params,
function (data, status) {
jQuery.each (data, function (id, value) {
option = $("<option></option>").attr ("value", value["nombre"]).html (value["nombre"]);
option = $("<option></option>").attr("value", value["nombre"]).html(value["safe_name"]);
$("#module_name").append (option);
});
hideSpinner();

View File

@ -525,10 +525,8 @@ if (check_acl($config['id_user'], 0, 'PM') && $config['enable_update_manager'])
$menu_godmode['messages']['id'] = 'god-um_messages';
$sub = [];
if ($config['enterprise_installed']) {
$sub['godmode/update_manager/update_manager&tab=offline']['text'] = __('Update Manager offline');
$sub['godmode/update_manager/update_manager&tab=offline']['id'] = 'Offline';
}
$sub['godmode/update_manager/update_manager&tab=offline']['text'] = __('Update Manager offline');
$sub['godmode/update_manager/update_manager&tab=offline']['id'] = 'Offline';
$sub['godmode/update_manager/update_manager&tab=online']['text'] = __('Update Manager online');
$sub['godmode/update_manager/update_manager&tab=online']['id'] = 'Online';

View File

@ -182,6 +182,7 @@ if (isset($id)) {
$snmp3_privacy_pass = io_output_password(
$component['custom_string_2']
);
unset($tcp_send);
$snmp3_security_level = $component['custom_string_3'];
} else if ($type >= MODULE_TYPE_REMOTE_CMD && $type <= MODULE_TYPE_REMOTE_CMD_INC) {
$command_text = $component['tcp_send'];

View File

@ -331,9 +331,9 @@ echo "<form method='post' action='index.php?sec=reporting&sec2=godmode/reporting
echo "<table width='100%' cellpadding='4' cellpadding='4' class='databox filters'>";
echo '<tr>';
echo "<td colspan='3'>".__('Filter group').'</td>';
echo "<td colspan='1'>".__('Filter group').'</td>';
echo '</tr><tr>';
echo "<td colspan='3'>".html_print_select_groups(
echo "<td colspan='1'>".html_print_select_groups(
$config['id_user'],
($report_w == true) ? 'RW' : (($report_m == true) ? 'RM' : 'RW'),
true,

View File

@ -748,6 +748,7 @@ switch ($action) {
$selected_agent_group_filter = $es['agent_group_filter'];
$selected_agents_inventory_display_options = $es['agents_inventory_display_options'];
$selected_agent_os_filter = $es['agent_os_filter'];
$selected_agent_custom_fields = $es['agent_custom_fields'];
$selected_agent_custom_field_filter = $es['agent_custom_field_filter'];
$selected_agent_status_filter = $es['agent_status_filter'];
$selected_agent_module_search_filter = $es['agent_module_search_filter'];
@ -3080,14 +3081,15 @@ $class = 'databox filters';
</tr>
<?php
$server_fields = [];
if (is_metaconsole()) {
$server_fields = [];
$server_fields[0] = __('All');
$servers = metaconsole_get_servers();
foreach ($servers as $key => $server) {
$server_fields[$key] = $server['server_name'];
}
foreach ($servers as $key => $server) {
$server_fields[$key] = $server['server_name'];
}
$server_filter_markup = '
<tr id="row_agent_server_filter" class="datos">
@ -3106,10 +3108,9 @@ $class = 'databox filters';
'min-width: 180px'
).'</td></tr>';
if (is_metaconsole()) {
echo $server_filter_markup;
}
?>
echo $server_filter_markup;
}
?>
<tr id="row_agent_group_filter" class="datos">
<td class="bolder">
@ -3158,6 +3159,28 @@ $class = 'databox filters';
</tr>
<tr id="row_custom_field" class="datos">
<td class="bolder">
<?php
echo __('Agent custom field');
?>
</td>
<td >
<?php
html_print_select_from_sql(
'SELECT id_field, name FROM tagent_custom_fields',
'agent_custom_fields[]',
$selected_agent_custom_fields,
'',
__('All'),
'0',
false,
true
);
?>
</td>
</tr>
<tr id="row_custom_field_filter" class="datos">
<td class="bolder">
<?php
echo __('Agent custom field filter');
@ -5159,7 +5182,6 @@ function addSLARow() {
$("input[name=id_agent_failover]").val('');
$("input[name=id_server]").val('');
$("input[name=agent_sla]").val('');
$("input[name=agent_sla]").css("background","url('<?php echo $autocompleteImage; ?>') right center no-repeat")
$("input[name=agent_failover]").val('');
$("#id_agent_module_sla").empty();
$("#id_agent_module_sla").attr('disabled', 'true');
@ -5486,6 +5508,7 @@ function chooseType() {
$("#row_agent_server_filter").hide();
$("#row_agent_group_filter").hide();
$("#row_os").hide();
$("#row_custom_field_filter").hide();
$("#row_custom_field").hide();
$("#row_agent_status").hide();
$("#row_agent_version").hide();
@ -6039,11 +6062,26 @@ function chooseType() {
$("#row_group").show();
$("#row_os").show();
$("#row_custom_field").show();
$("#row_custom_field_filter").show();
$("#row_agent_status").show();
$("#row_agent_version").show();
$("#row_agent_remote_conf").show();
$("#row_module_free_search").show();
if ($('#agent_custom_fields :selected').length > 0) {
$('#text-agent_custom_field_filter').removeAttr('disabled');
} else {
$('#text-agent_custom_field_filter').prop('disabled', true);
}
$("#agent_custom_fields").change(function(e) {
if ($('#agent_custom_fields :selected').length > 0) {
$('#text-agent_custom_field_filter').removeAttr('disabled');
} else {
$('#text-agent_custom_field_filter').prop('disabled', true);
}
});
break;
case 'inventory':

View File

@ -2219,6 +2219,7 @@ switch ($action) {
$es['agents_inventory_display_options'] = get_parameter('agents_inventory_display_options');
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
$es['agent_os_filter'] = get_parameter('agent_os_filter');
$es['agent_custom_fields'] = get_parameter('agent_custom_fields');
$es['agent_status_filter'] = get_parameter('agent_status_filter');
$es['agent_version_filter'] = get_parameter('agent_version_filter');
$es['agent_module_search_filter'] = get_parameter('agent_module_search_filter');
@ -2858,6 +2859,7 @@ switch ($action) {
$es['agents_inventory_display_options'] = get_parameter('agents_inventory_display_options');
$es['agent_custom_field_filter'] = get_parameter('agent_custom_field_filter');
$es['agent_os_filter'] = get_parameter('agent_os_filter');
$es['agent_custom_fields'] = get_parameter('agent_custom_fields');
$es['agent_status_filter'] = get_parameter('agent_status_filter');
$es['agent_version_filter'] = get_parameter('agent_version_filter');
$es['agent_module_search_filter'] = get_parameter('agent_module_search_filter');
@ -3370,7 +3372,7 @@ $buttons['view'] = [
$buttons[$activeTab]['active'] = true;
if ($idReport != 0) {
$textReportName = $reportName;
$textReportName = (empty($reportName) === false) ? $reportName : $report['name'];
} else {
$temp = $buttons['main'];
$buttons = null;

View File

@ -219,34 +219,15 @@ if ($filemanager) {
$id_plugin = (int) get_parameter('id_plugin', 0);
// Add custom directories here
// Add custom directories here.
$fallback_directory = 'attachment/plugin';
$directory = (string) get_parameter('directory', $fallback_directory);
$directory = str_replace('\\', '/', $directory);
// A miminal security check to avoid directory traversal
if (preg_match('/\.\./', $directory)) {
$directory = $fallback_directory;
}
if (preg_match('/^\//', $directory)) {
$directory = $fallback_directory;
}
if (preg_match('/^manager/', $directory)) {
$directory = $fallback_directory;
}
$banned_directories['include'] = true;
$banned_directories['godmode'] = true;
$banned_directories['operation'] = true;
$banned_directories['reporting'] = true;
$banned_directories['general'] = true;
$banned_directories[ENTERPRISE_DIR] = true;
if (isset($banned_directories[$directory])) {
// Get directory.
$directory = (string) get_parameter('directory');
if (empty($directory) === true) {
$directory = $fallback_directory;
} else {
$directory = str_replace('\\', '/', $directory);
$directory = filemanager_safe_directory($directory, $fallback_directory);
}
$real_directory = realpath($config['homedir'].'/'.$directory);
@ -263,12 +244,12 @@ if ($filemanager) {
$default_real_directory = realpath($config['homedir'].'/'.$fallback_directory);
if ($upload_file_or_zip) {
upload_file($upload_file_or_zip, $default_real_directory);
if ($upload_file_or_zip === true) {
upload_file($upload_file_or_zip, $default_real_directory, $real_directory);
}
if ($create_text_file) {
create_text_file($default_real_directory);
if ($create_text_file === true) {
create_text_file($default_real_directory, $real_directory);
}
filemanager_file_explorer(

View File

@ -47,26 +47,15 @@ if (isset($config['filemanager']['message']) === true) {
$config['filemanager']['message'] = null;
}
$directory = (string) get_parameter('directory');
if (empty($directory) === true) {
$directory = 'images';
} else {
$directory = str_replace('\\', '/', $directory);
$directory = filemanager_safe_directory($directory, 'images');
}
// Add custom directories here.
$fallback_directory = 'images';
// Banned directories.
$banned_directories['include'] = true;
$banned_directories['godmode'] = true;
$banned_directories['operation'] = true;
$banned_directories['reporting'] = true;
$banned_directories['general'] = true;
$banned_directories[ENTERPRISE_DIR] = true;
if (isset($banned_directories[$directory]) === true) {
// Get directory.
$directory = (string) get_parameter('directory');
if (empty($directory) === true) {
$directory = $fallback_directory;
} else {
$directory = str_replace('\\', '/', $directory);
$directory = filemanager_safe_directory($directory, $fallback_directory);
}
$real_directory = realpath($config['homedir'].'/'.$directory);
@ -76,14 +65,14 @@ echo '<h4>'.__('Index of %s', $directory).'</h4>';
$upload_file_or_zip = (bool) get_parameter('upload_file_or_zip');
$create_text_file = (bool) get_parameter('create_text_file');
$default_real_directory = realpath($config['homedir'].'/'.$fallback_directory);
$default_real_directory = realpath($config['homedir'].'/');
if ($upload_file_or_zip === true) {
upload_file($upload_file_or_zip, $default_real_directory);
upload_file($upload_file_or_zip, $default_real_directory, $real_directory);
}
if ($create_text_file === true) {
create_text_file($default_real_directory);
create_text_file($default_real_directory, $real_directory);
}
filemanager_file_explorer(
@ -96,5 +85,6 @@ filemanager_file_explorer(
'',
false,
'',
false,
false
);

View File

@ -986,12 +986,11 @@ if ($create_alert || $update_alert) {
echo html_print_select(get_priorities(), 'priority', $priority, '', '', '0', false, false, false);
echo '</td></tr>';
// Alert type (e-mail, event etc.)
echo '<tr><td class="datos">'.__('Alert commands').'</td><td class="datos">';
// Alert type (e-mail, event etc.).
echo '<tr><td class="datos">'.__('Alert action').'</td><td class="datos">';
html_print_select_from_sql(
'SELECT id, name
FROM talert_commands
FROM talert_actions
ORDER BY name',
'alert_type',
$alert_type,
@ -1481,7 +1480,7 @@ $(document).ready (function () {
value: "1"
});
values.push ({
name: "id",
name: "id_action",
value: this.value
});
values.push ({

View File

@ -231,6 +231,21 @@ if (is_ajax() !== true) {
}
}
}
$PHPmemory_limit_min = config_return_in_bytes('800M');
$PHPmemory_limit = config_return_in_bytes(ini_get('memory_limit'));
if ($PHPmemory_limit < $PHPmemory_limit_min && $PHPmemory_limit !== -1) {
$msg = __(
'\'%s\' recommended value is %s or greater. Please, change it on your PHP configuration file (php.ini) or contact with administrator',
'memory_limit',
'800M'
);
if (function_exists('ui_print_warning_message') === true) {
ui_print_warning_message($msg);
} else {
echo $msg;
}
}
}
// Load styles.
@ -312,6 +327,12 @@ if (is_array($config) === true) {
) {
ui_print_error_message(__('Update manager online requires registration.'));
}
if ($mode === Manager::MODE_OFFLINE) {
ui_print_warning_message(
__('Applying offline patches may make your console unusable, we recommend to completely backup your files before applying any patch.')
);
}
}
$url_update_manager = $config['url_update_manager'];
@ -366,19 +387,18 @@ if (is_array($config) === true) {
}
}
$PHPmemory_limit_min = config_return_in_bytes('800M');
$PHPmemory_limit = config_return_in_bytes(ini_get('memory_limit'));
if ($PHPmemory_limit < $PHPmemory_limit_min && $PHPmemory_limit !== '-1') {
$msg = __(
'\'%s\' recommended value is %s or greater. Please, change it on your PHP configuration file (php.ini) or contact with administrator',
'memory_limit',
'800M'
);
if (function_exists('ui_print_warning_message') === true) {
ui_print_warning_message($msg);
} else {
echo $msg;
}
$proxy = null;
if (empty($config['update_manager_proxy_server']) === false
|| empty($config['update_manager_proxy_port']) === false
|| empty($config['update_manager_proxy_user']) === false
|| empty($config['update_manager_proxy_password']) === false
) {
$proxy = [
'host' => $config['update_manager_proxy_server'],
'port' => $config['update_manager_proxy_port'],
'user' => $config['update_manager_proxy_user'],
'password' => $config['update_manager_proxy_password'],
];
}
$ui = new Manager(
@ -400,6 +420,7 @@ $ui = new Manager(
'registration_code' => $puid,
'remote_config' => $remote_config,
'propagate_updates' => $is_metaconsole,
'proxy' => $proxy,
'set_maintenance_mode' => function () {
if (function_exists('config_update_value') === true) {
config_update_value('maintenance_mode', 1);

View File

@ -666,6 +666,7 @@ class Client
$target = __('console update %d', $request['version']);
}
// phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.Found
curl_setopt(
$ch,
CURLOPT_PROGRESSFUNCTION,
@ -941,7 +942,7 @@ class Client
$queries = preg_split("/(;\n)|(;\n\r)/", $sql);
foreach ($queries as $query) {
if (empty($query) !== true) {
if (preg_match('/^\s*LOAD\s+(.*)$/i', $query, $matches) > 0) {
if (preg_match('/^\s*SOURCE\s+(.*)$/i', $query, $matches) > 0) {
$filepath = dirname($mr_file).'/'.$matches[1];
if (file_exists($filepath) === true) {
$query = file_get_contents($filepath);
@ -1342,14 +1343,14 @@ class Client
function ($errno, $errstr) {
throw new \Exception($errstr, $errno);
},
E_ERROR
(E_ALL ^ E_NOTICE)
);
register_shutdown_function(
function () {
$error = error_get_last();
if (null !== $error
&& $error['type'] === E_ERROR
&& $error['type'] === (E_ALL ^ E_NOTICE)
) {
echo __('Failed to analyze package: %s', $error['message']);
}
@ -1434,7 +1435,7 @@ class Client
function ($errno, $errstr) {
throw new \Exception($errstr, $errno);
},
E_ERROR
(E_ALL ^ E_NOTICE)
);
if ($package === null) {
@ -1673,7 +1674,7 @@ class Client
);
$this->updateMR(
$this->productPath.'/extras/mr/'.$mr,
$this->extract_to.'/extras/mr/'.$mr,
$this->dbhHistory,
$historical_MR
);

View File

@ -34,7 +34,7 @@
<script type="text/javascript">
if (typeof $ != "function") {
// Dynamically include jquery if not added to this page.
document.write('<script type="text/javascript" src="<?php echo $asset('resources/javascript/jquery-3.3.1.min.js'); ?>"></'+'script>');
document.write('<script type="text/javascript" src="<?php echo $asset('resources/javascript/jquery.current.js'); ?>"></'+'script>');
}
</script>
<script src="<?php $asset('resources/javascript/umc.js'); ?>" type="text/javascript"></script>

View File

@ -34,7 +34,7 @@ $product_name = get_product_name(); ?>
<script type="text/javascript">
if (typeof $ != "function") {
// Dynamically include jquery if not added to this page.
document.write('<script type="text/javascript" src="<?php echo $asset('resources/javascript/jquery-3.3.1.min.js'); ?>"></'+'script>');
document.write('<script type="text/javascript" src="<?php echo $asset('resources/javascript/jquery.current.js'); ?>"></'+'script>');
document.write('<script type="text/javascript" src="<?php echo $asset('resources/javascript/jquery-ui.min.js'); ?>"></'+'script>');
}
</script>

View File

@ -37,12 +37,10 @@ $buttons['setup'] = [
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=setup">'.html_print_image('images/gm_setup.png', true, ['title' => __('Options'), 'class' => 'invert_filter']).'</a>',
];
if (enterprise_installed()) {
$buttons['offline'] = [
'active' => ($tab == 'offline') ? true : false,
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=offline">'.html_print_image('images/box.png', true, ['title' => __('Offline update manager'), 'class' => 'invert_filter']).'</a>',
];
}
$buttons['offline'] = [
'active' => ($tab == 'offline') ? true : false,
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=offline">'.html_print_image('images/box.png', true, ['title' => __('Offline update manager'), 'class' => 'invert_filter']).'</a>',
];
$buttons['online'] = [
'active' => ($tab == 'online') ? true : false,
@ -60,6 +58,7 @@ switch ($tab) {
break;
case 'online':
default:
$title = __('Update manager » Online');
break;
}

View File

@ -30,6 +30,7 @@
global $config;
require_once __DIR__.'/../../include/functions_users.php';
require_once __DIR__.'/../../include/functions_update_manager.php';
check_login();

View File

@ -100,7 +100,7 @@ $update_profile = (bool) get_parameter('update_profile');
$id_profile = (int) get_parameter('id');
$is_management_allowed = true;
if (is_management_allowed() === false) {
if (is_metaconsole() === false && is_management_allowed() === false) {
$is_management_allowed = false;
ui_print_warning_message(
__(

View File

@ -129,7 +129,7 @@ switch ($sortField) {
break;
default:
// Not possible.
// Nothing to do.
break;
}
break;
@ -153,7 +153,7 @@ switch ($sortField) {
break;
default:
// Not possible.
// Nothing to do.
break;
}
break;
@ -177,7 +177,7 @@ switch ($sortField) {
break;
default:
// Not possible.
// Nothing to do.
break;
}
break;
@ -395,7 +395,7 @@ $table->data[0][4] = html_print_submit_button(
);
$is_management_allowed = true;
if (is_management_allowed() === false) {
if (is_metaconsole() === false && is_management_allowed() === false) {
$is_management_allowed = false;
ui_print_warning_message(
__(
@ -585,11 +585,11 @@ foreach ($info as $user_id => $user_info) {
$cont++;
// Manual pagination due the complicated process of the ACL data.
if ($cont <= $offset) {
if ($cont <= $offset && $search !== true) {
continue;
}
if ($cont > ($limit + $offset)) {
if ($cont > ($limit + $offset) && $search !== true) {
break;
}
@ -820,6 +820,9 @@ foreach ($info as $user_id => $user_info) {
$data[6] .= '';
// Delete button not in this mode.
}
} else {
$data[6] .= '';
// Delete button not in this mode.
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -423,7 +423,7 @@ if ($show_update_action_menu) {
);
$data .= '<form id="update_action-'.$alert['id'].'" method="post">';
$data .= '<table class="databox_color w100p">';
$data .= '<table class="databox_color w100p bg_color222">';
$data .= html_print_input_hidden(
'update_action',
1,

View File

@ -1599,7 +1599,6 @@ if ($get_extended_event) {
page: "include/ajax/events",
get_comments: 1,
event: '.json_encode($event).',
filter: '.json_encode($filter).'
},
dataType : "html",
success: function (data) {

View File

@ -105,19 +105,19 @@ if ($info == 'version') {
if (empty($apiPassword) === true
|| (empty($apiPassword) === false && $api_password === $apiPassword)
&& (enterprise_hook('metaconsole_validate_origin', [get_parameter('server_auth')]) === true
|| enterprise_hook('console_validate_origin', [get_parameter('server_auth')]) === true)
) {
// Allow internal direct node -> metaconsole connection
// or node -> own console connection.
$config['__internal_call'] = true;
$config['id_usuario'] = 'admin';
// Compat.
$config['id_user'] = 'admin';
$correctLogin = true;
} else if ((bool) isInACL($ipOrigin) === true) {
// External access.
if (empty($apiPassword) === true || (empty($apiPassword) === false && $api_password === $apiPassword)) {
if (enterprise_hook('metaconsole_validate_origin', [get_parameter('server_auth')]) === true
|| enterprise_hook('console_validate_origin', [get_parameter('server_auth')]) === true
) {
// Allow internal direct node -> metaconsole connection
// or node -> own console connection.
$config['__internal_call'] = true;
$config['id_usuario'] = 'admin';
// Compat.
$config['id_user'] = 'admin';
$correctLogin = true;
} else if ((bool) isInACL($ipOrigin) === true) {
// External access.
$user_in_db = process_user_login($user, $password, true);
if ($user_in_db !== false) {
$config['id_usuario'] = $user_in_db;
@ -138,10 +138,10 @@ if (empty($apiPassword) === true
$no_login_msg = 'Incorrect user credentials';
}
} else {
$no_login_msg = 'Incorrect given API password';
$no_login_msg = 'IP '.$ipOrigin.' is not in ACL list';
}
} else {
$no_login_msg = 'IP '.$ipOrigin.' is not in ACL list';
$no_login_msg = 'Incorrect given API password';
}
if ($correctLogin) {

View File

@ -319,7 +319,7 @@ function process_user_login_remote($login, $pass, $api=false)
defined('METACONSOLE')
);
if ($return === 'error_permissions') {
if ($result === 'error_permissions') {
$config['auth_error'] = __('Problems with configuration permissions. Please contact with Administrator');
return false;
}
@ -735,7 +735,14 @@ function ldap_process_user_login($login, $password)
}
// Connect to the LDAP server
$ds = @ldap_connect($config['ldap_server'], $config['ldap_port']);
if (stripos($config['ldap_server'], 'ldap://') !== false
|| stripos($config['ldap_server'], 'ldaps://') !== false
|| stripos($config['ldap_server'], 'ldapi://') !== false
) {
$ds = @ldap_connect($config['ldap_server'].':'.$config['ldap_port']);
} else {
$ds = @ldap_connect($config['ldap_server'], $config['ldap_port']);
}
if (!$ds) {
$config['auth_error'] = 'Error connecting to LDAP server';
@ -1393,7 +1400,7 @@ function local_ldap_search($ldap_host, $ldap_port=389, $ldap_version=3, $dn, $ac
}
if (!empty($ldap_admin_pass)) {
$ldap_admin_pass = ' -w '.$ldap_admin_pass;
$ldap_admin_pass = ' -w '.escapeshellarg($ldap_admin_pass);
}
$dn = " -b '".$dn."'";

View File

@ -95,7 +95,7 @@ if (check_login(false) === false) {
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery.current.js'></script>
</head>
<body>
<h1>Access is not granted</h1>
@ -153,7 +153,7 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery.current.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery.pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-ui.min.js'></script>
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.js"></script>

View File

@ -810,7 +810,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.LICENSE.LIMITED',
'title' => __('Limited mode.'),
'message' => io_safe_output($config['limited_mode']),
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/license'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
]
);
} else {
@ -836,7 +836,7 @@ class ConsoleSupervisor
$msg,
$days_to_expiry
),
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/license'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
]
);
} else if ($days_to_expiry < 0) {
@ -854,7 +854,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.LICENSE.EXPIRATION',
'title' => $title,
'message' => $msg,
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/license'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/license',
]
);
return false;
@ -931,7 +931,7 @@ class ConsoleSupervisor
'Directory %s is not writable. Please, configure corresponding permissions.',
$config['attachment_store']
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
]
);
return;
@ -953,7 +953,7 @@ class ConsoleSupervisor
'There are more than %d files in attachment, consider cleaning up attachment directory manually.',
$config['num_files_attachment']
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=perf'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
]
);
} else {
@ -987,7 +987,7 @@ class ConsoleSupervisor
'Remote configuration directory %s is not readable. Please, adjust configuration.',
$remote_config_dir
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
]
);
return;
@ -1006,7 +1006,7 @@ class ConsoleSupervisor
'Remote configuration directory %s is not writable. Please, adjust configuration.',
$remote_config_dir.'/conf'
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
]
);
} else {
@ -1024,7 +1024,7 @@ class ConsoleSupervisor
'Collections directory %s is not writable. Please, adjust configuration.',
$remote_config_dir.'/collections'
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
]
);
} else {
@ -1042,7 +1042,7 @@ class ConsoleSupervisor
'MD5 directory %s is not writable. Please, adjust configuration.',
$remote_config_dir.'/md5'
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=general',
]
);
} else {
@ -1073,7 +1073,7 @@ class ConsoleSupervisor
$MAX_FILES_DATA_IN,
$remote_config_dir
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=perf'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
]
);
} else {
@ -1096,7 +1096,7 @@ class ConsoleSupervisor
$MAX_BADXML_FILES_DATA_IN,
$remote_config_dir
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=perf'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
]
);
} else {
@ -1188,7 +1188,7 @@ class ConsoleSupervisor
$modules_queued,
$queue['queued_modules']
),
'url' => ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60'),
'url' => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
]
);
} else {
@ -1324,7 +1324,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.SERVER.STATUS.'.$server['id_server'],
'title' => $msg,
'message' => $description,
'url' => ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60'),
'url' => '__url__/index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60',
]
);
}
@ -1636,7 +1636,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.HISTORYDB',
'title' => __('Historical database not available'),
'message' => __('Historical database is enabled, though not accessible with the current configuration.'),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=hist_db'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
]
);
} else {
@ -1683,7 +1683,7 @@ class ConsoleSupervisor
'Your database hasn\'t been through maintenance for 48hrs. Please, check documentation on how to perform this maintenance process on %s and enable it as soon as possible.',
io_safe_output(get_product_name())
),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=perf'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
]
);
} else {
@ -1743,7 +1743,7 @@ class ConsoleSupervisor
'Historical database maintenance problem.'
),
'message' => __('Your historical database hasn\'t been through maintenance for 48hrs. Please, check documentation on how to perform this maintenance process on %s and enable it as soon as possible.', get_product_name()),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=perf'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=perf',
]
);
} else {
@ -1782,7 +1782,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.HISTORYDB.MR',
'title' => __('Historical database MR mismatch'),
'message' => __('Your historical database is not using the same schema as the main DB. This could produce anomalies while storing historical data.'),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=hist_db'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=hist_db',
]
);
} else {
@ -1823,7 +1823,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.EXT.ELASTICSEARCH',
'title' => __('Log collector cannot connect to ElasticSearch'),
'message' => __('ElasticSearch is not available using current configuration.'),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=log'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=log',
]
);
} else {
@ -1893,7 +1893,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.METACONSOLE.DB_CONNECTION',
'title' => __('Metaconsole DB is not available.'),
'message' => __('Cannot connect with Metaconsole DB using current configuration.'),
'url' => ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup&section=enterprise'),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup&section=enterprise',
]
);
}
@ -1922,7 +1922,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.DOWNTIME',
'title' => __('Scheduled downtime running.'),
'message' => __('A scheduled downtime is running. Some monitoring data won\'t be available while downtime is taking place.'),
'url' => ui_get_full_url('index.php?sec=gagente&sec2=godmode/agentes/planned_downtime.list'),
'url' => '__url__/index.php?sec=gagente&sec2=godmode/agentes/planned_downtime.list',
]
);
return;
@ -2083,7 +2083,7 @@ class ConsoleSupervisor
date('M j, G:i:s ', $next_downtime_begin),
date('M j, G:i:s ', $next_downtime_end)
),
'url' => ui_get_full_url('index.php?sec=gagente&sec2=godmode/agentes/planned_downtime.list'),
'url' => '__url__/index.php?sec=gagente&sec2=godmode/agentes/planned_downtime.list',
]
);
return;
@ -2144,7 +2144,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.SECURITY.DEFAULT_PASSWORD',
'title' => __('Default password for "Admin" user has not been changed'),
'message' => __('Please, change the default password since it is a commonly reported vulnerability.'),
'url' => ui_get_full_url('index.php?sec=gusuarios&sec2=godmode/users/user_list'),
'url' => '__url__/index.php?sec=gusuarios&sec2=godmode/users/user_list',
]
);
} else {
@ -2180,7 +2180,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.MISC.FONTPATH',
'title' => __('Default font doesn\'t exist'),
'message' => __('Your defined font doesn\'t exist or is not defined. Please, check font parameters in your config'),
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup&section=vis'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=vis',
]
);
} else {
@ -2207,7 +2207,7 @@ class ConsoleSupervisor
'Your %s has the "develop_bypass" mode enabled. This is a developer mode and should be disabled in a production environment. This value is located in the main index.php file',
get_product_name()
),
'url' => ui_get_full_url('index.php'),
'url' => '__url__/index.php',
]
);
} else {
@ -2230,7 +2230,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.MISC.EVENTSTORMPROTECTION',
'title' => __('Event storm protection is enabled.'),
'message' => __('Some events may get lost while this mode is enabled. The server must be restarted after altering this setting.'),
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=general',
]
);
} else {
@ -2257,7 +2257,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.UPDATEMANAGER.OPENSETUP',
'title' => __('Failed to retrieve updates, please configure utility'),
'message' => $message,
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/setup/setup&section=general'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=general',
]
);
}
@ -2277,7 +2277,7 @@ class ConsoleSupervisor
get_product_name()
),
'message' => __('There is a new update available. Please<a class="bolder" href="'.ui_get_full_url('index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online').'"> go to Administration:Setup:Update Manager</a> for more details.'),
'url' => ui_get_full_url('index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online'),
'url' => '__url__/index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online',
]
);
} else {
@ -2315,7 +2315,7 @@ class ConsoleSupervisor
'There is one or more minor releases available. <a id="aviable_updates" target="blank" href="%s">.About minor release update</a>.',
$url
),
'url' => ui_get_full_url('index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online'),
'url' => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
]
);
} else {
@ -2336,7 +2336,7 @@ class ConsoleSupervisor
// Check if DiscoveryCronTasks is running. Warn user if not.
if ($config['cron_last_run'] == 0
|| (get_system_time() - $config['cron_last_run']) > 3600
|| (get_system_time() - $config['cron_last_run']) > SECONDS_10MINUTES
) {
$message_conf_cron = __('DiscoveryConsoleTasks is not running properly');
if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') {
@ -2359,12 +2359,17 @@ class ConsoleSupervisor
$message_conf_cron .= __('Please, make sure process is not locked.');
}
$url = '__url__/index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist';
if (is_metaconsole() === true) {
$url = '__url__index.php?sec=extensions&sec2=enterprise/extensions/cron';
}
$this->notify(
[
'type' => 'NOTIF.CRON.CONFIGURED',
'title' => __('DiscoveryConsoleTasks is not configured.'),
'message' => __($message_conf_cron),
'url' => ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist'),
'url' => $url,
]
);
} else {
@ -2468,7 +2473,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.SERVER.MISALIGNED',
'title' => __($title_ver_misaligned),
'message' => __($message_ver_misaligned),
'url' => ui_get_full_url('index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online'),
'url' => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
]
);
}
@ -2513,7 +2518,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.ALLOWOVERRIDE.MESSAGE',
'title' => __('AllowOverride is disabled'),
'message' => __($message),
'url' => ui_get_full_url('index.php'),
'url' => '__url__/index.php',
]
);
}
@ -2559,7 +2564,7 @@ class ConsoleSupervisor
'type' => 'NOTIF.HAMASTER.MESSAGE',
'title' => __('Desynchronized operation on the node '.$node['host']),
'message' => __($message),
'url' => ui_get_full_url('index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster'),
'url' => '__url__/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster',
]
);
} else {

View File

@ -3043,6 +3043,7 @@ class NetworkMap
$table->data = [];
$table->rowstyle['template_row'] = 'display: none;';
$table->data['template_row']['node_source'] = '';
// Inputs must be not select2, cause duplication make issues.
$table->data['template_row']['interface_source'] = html_print_select(
[],
'interface_source',
@ -3050,7 +3051,21 @@ class NetworkMap
'',
__('None'),
0,
true
true,
false,
true,
'',
false,
false,
false,
false,
false,
'',
false,
false,
false,
false,
false
);
$table->data['template_row']['interface_target'] = html_print_select(
[],
@ -3059,7 +3074,21 @@ class NetworkMap
'',
__('None'),
0,
true
true,
false,
true,
'',
false,
false,
false,
false,
false,
'',
false,
false,
false,
false,
false
);
$table->data['template_row']['node_target'] = '';
@ -3414,7 +3443,7 @@ class NetworkMap
).'" />'."\n";
$output .= '<div id="simple_map" data-id="'.$this->idMap.'" ';
$output .= 'class="border_1px_dd';
$output .= 'class="border_1px_dd" style="';
if ($this->fullSize) {
$output .= ' width:100%';

View File

@ -593,7 +593,7 @@ class Tree
$module['type'] = 'module';
$module['id'] = (int) $module['id'];
$module['name'] = io_safe_output($module['name']);
$module['name'] = $module['name'];
$module['id_module_type'] = (int) $module['id_tipo_modulo'];
$module['server_type'] = (int) $module['id_modulo'];
$module['status'] = $module['estado'];
@ -1097,7 +1097,7 @@ class Tree
protected function getThirdLevelSql()
{
// Get the server id
// Get the server id.
$serverID = $this->serverID;
$group_acl = $this->getGroupAclCondition();

View File

@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
$build_version = 'PC210726';
$build_version = 'PC210910';
$pandora_version = 'v7.0NG.756';
// Do not overwrite default timezone set if defined.
@ -306,7 +306,7 @@ switch ($config['dbtype']) {
// ======================================================================
// Menu display mode.
if (isset($_SESSION['meny_type']) === true && $_SESSION['menu_type']) {
if (isset($_SESSION['meny_type']) === true && empty($_SESSION['menu_type']) === false) {
$config['menu_type'] = $_SESSION['menu_type'];
} else {
$config['menu_type'] = 'classic';

View File

@ -1585,7 +1585,7 @@ function enterprise_include($filename, $variables=[])
extract($variables);
}
include $filepath;
include_once $filepath;
return true;
}

View File

@ -3187,6 +3187,7 @@ function agents_get_network_interfaces($agents=false, $agents_filter=false)
$module_description = $module['descripcion'];
$db_status = modules_get_agentmodule_status($module_id);
$module_value = modules_get_last_value($module_id);
$last_contact = modules_get_last_contact($module_id);
modules_get_status($module_id, $db_status, $module_value, $status, $title);
$status_image = ui_print_status_image($status, $title, true);
@ -3267,6 +3268,7 @@ function agents_get_network_interfaces($agents=false, $agents_filter=false)
$agent_interfaces[$interface_name]['status_module_name'] = $module_name;
$agent_interfaces[$interface_name]['ip'] = $ip_target;
$agent_interfaces[$interface_name]['mac'] = $mac;
$agent_interfaces[$interface_name]['last_contact'] = $last_contact;
if ($interface_traffic_modules !== false) {
$agent_interfaces[$interface_name]['traffic'] = [];

View File

@ -14821,6 +14821,9 @@ function api_get_module_graph($id_module, $thrash2, $other, $thrash4)
// Graph width (optional).
$width = (!empty($other) && isset($other['data'][4]) && $other['data'][4]) ? $other['data'][4] : '';
// If recive value its from mail call.
$graph_font_size = $other['data'][5];
} else {
// Fixed parameters for _modulegraph_nh_.
$graph_seconds = $other['data'];
@ -14857,6 +14860,7 @@ function api_get_module_graph($id_module, $thrash2, $other, $thrash4)
'fullscale' => false,
'return_img_base_64' => true,
'image_treshold' => $graph_threshold,
'graph_font_size' => $graph_font_size,
];
// Format MIME RFC 2045 (line break 76 chars).
@ -17337,7 +17341,7 @@ function remove_agent_from_policy($id_policy, $use_agent_name, $params)
$agent = db_get_row_filter('tmetaconsole_agent', ['id_tagente' => $id_agent, 'id_tmetaconsole_setup' => $id_node]);
}
$policy = policies_get_policy($id_policy, false, false);
$policy = policies_get_policy($id_policy);
$policy_agent = (is_metaconsole()) ? db_get_row_filter('tpolicy_agents', ['id_policy' => $id_policy, 'id_agent' => $id_agent, 'id_node' => $id_node]) : db_get_row_filter('tpolicy_agents', ['id_policy' => $id_policy, 'id_agent' => $id_agent]);

View File

@ -2243,7 +2243,7 @@ function config_process_config()
if (!isset($config['fontpath'])) {
config_update_value(
'fontpath',
'lato.ttf'
'Lato-Regular.ttf'
);
}
@ -3126,7 +3126,7 @@ function config_process_config()
}
if (!isset($config['custom_report_front_font'])) {
config_update_value('custom_report_front_font', 'lato.ttf');
config_update_value('custom_report_front_font', 'Lato-Regular.ttf');
}
if (!isset($config['custom_report_front_logo'])) {
@ -3386,7 +3386,7 @@ function config_user_set_custom_config()
}
}
if ((isset($userinfo['id_skin']) && $userinfo['id_skin'] !== 0)) {
if ((isset($userinfo['id_skin']) && (int) $userinfo['id_skin'] !== 0)) {
if ((int) $userinfo['id_skin'] === 1) {
$config['style'] = 'pandora';
}
@ -3402,12 +3402,10 @@ function config_user_set_custom_config()
if ($sec2_aux != 'godmode/groups/group_list' && $skin !== false) {
$id_user_aux = get_parameter('id');
if ($id_user_aux == $config['id_user']) {
if ((int) $skin === 1 || (int) $skin === 0) {
$config['style'] = 'pandora';
}
if ((int) $skin === 2) {
if ($config['style'] === 'pandora_black' && (int) $skin === 0 || (int) $skin === 2) {
$config['style'] = 'pandora_black';
} else if ((int) $skin === 1 || (int) $skin === 0) {
$config['style'] = 'pandora';
}
}
}

View File

@ -305,6 +305,9 @@ function events_get_column_name($field, $table_alias=false)
return __('Severity mini');
}
case 'direccion':
return __('Agent IP');
default:
return __($field);
}
@ -1151,7 +1154,12 @@ function events_get_all(
$tags_names[$id_tag] = tags_get_name($id_tag);
}
$_tmp .= ' AND ( ';
if ($tags[0] === $id_tag) {
$_tmp .= ' AND ( ';
} else {
$_tmp .= ' OR ( ';
}
$_tmp .= sprintf(
' tags LIKE "%s" OR',
$tags_names[$id_tag]
@ -3576,7 +3584,12 @@ function events_page_responses($event, $childrens_ids=[])
'',
__('None'),
-1,
true
true,
false,
true,
'',
false,
'width: 70%'
);
$data[2] .= html_print_button(
__('Update'),
@ -4843,7 +4856,7 @@ function events_page_general($event)
if (isset($event['id_agente']) && $event['id_agente'] > 0) {
enterprise_include_once('include/functions_agents.php');
$secondary_groups_selected = enterprise_hook('agents_get_secondary_groups', [$event['id_agente'], is_metaconsole()]);
if (!empty($secondary_groups_selected)) {
if (empty($secondary_groups_selected['for_select']) === false) {
$secondary_groups = implode(', ', $secondary_groups_selected['for_select']);
}
}
@ -4867,6 +4880,14 @@ function events_page_general($event)
$data[1] = '<span class="break_word">'.events_display_name($event['evento']).'</span>';
$table_general->data[] = $data;
// Show server name in metaconsole.
if (is_metaconsole() === true && $event['server_name'] !== '') {
$data = [];
$data[0] = __('Node');
$data[1] = '<span class="break_word">'.$event['server_name'].'</span>';
$table_general->data[] = $data;
}
$data = [];
$data[0] = __('Timestamp');

View File

@ -26,7 +26,6 @@
* ============================================================================
*/
// Get global data.
// Constants.
define('MIME_UNKNOWN', 0);
@ -129,15 +128,16 @@ require_once $config['homedir'].'/vendor/autoload.php';
*
* @param boolean $upload_file_or_zip Upload file or zip.
* @param string $default_real_directory String with default directory.
* @param string $destination_directory String with destination directory.
*
* @return void
*/
function upload_file($upload_file_or_zip, $default_real_directory)
function upload_file($upload_file_or_zip, $default_real_directory, $destination_directory)
{
global $config;
$config['filemanager'] = [];
$config['filemanager']['correct_upload_file'] = 0;
$config['filemanager']['message'] = null;
$config['filemanager']['message'] = '';
check_login();
@ -165,34 +165,43 @@ function upload_file($upload_file_or_zip, $default_real_directory)
if ($upload_file === true) {
if (isset($_FILES['file']) === true && empty($_FILES['file']['name']) === false) {
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
$directory = filemanager_safe_directory((string) get_parameter('directory'));
$real_directory = filemanager_safe_directory($destination_directory);
$umask = io_safe_output((string) get_parameter('umask'));
if (strpos($real_directory, $default_real_directory) !== 0) {
// Perform security check to determine whether received upload directory is part of the default path for caller uploader and user is not trying to access an external path (avoid execution of PHP files in directories that are not explicitly controlled by corresponding .htaccess).
ui_print_error_message(__('Security error'));
// Perform security check to determine whether received upload
// directory is part of the default path for caller uploader and
// user is not trying to access an external path (avoid
// execution of PHP files in directories that are not explicitly
// controlled by corresponding .htaccess).
$config['filemanager']['message'] = ui_print_error_message(__('Security error'));
} else {
// Copy file to directory and change name.
if (empty($directory) === true) {
$nombre_archivo = $real_directory.'/'.$filename;
} else {
$nombre_archivo = $default_real_directory.'/'.$directory.'/'.$filename;
$nombre_archivo = sprintf('%s/%s', $real_directory, $filename);
try {
$result = copy($_FILES['file']['tmp_name'], $nombre_archivo);
} catch (Exception $ex) {
$result = false;
}
if (! @copy($_FILES['file']['tmp_name'], $nombre_archivo)) {
$config['filemanager']['message'] = ui_print_error_message(__('Upload error'));
} else {
if ($result === true) {
// If umask is provided, set.
if (empty($umask) === false) {
chmod($nombre_archivo, $umask);
try {
chmod($nombre_archivo, $umask);
} catch (Exception $ex) {
$config['filemanager']['message'] = ui_print_error_message(__('Issue setting umask: %s', $ex->getMessage()));
}
}
// Upload performed properly.
$config['filemanager']['message'] .= ui_print_success_message(__('Upload correct'));
$config['filemanager']['correct_upload_file'] = 1;
ui_print_success_message(__('Upload correct'));
// Delete temporal file.
unlink($_FILES['file']['tmp_name']);
} else {
$config['filemanager']['message'] = ui_print_error_message(__('Upload error'));
}
}
}
@ -204,10 +213,8 @@ function upload_file($upload_file_or_zip, $default_real_directory)
&& empty($_FILES['file']['name']) === false
) {
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$filepath = $_FILES['file']['tmp_name'];
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
$directory = filemanager_safe_directory((string) get_parameter('directory'));
$real_directory = filemanager_safe_directory($destination_directory);
if (strpos($real_directory, $default_real_directory) !== 0) {
// Perform security check to determine whether received upload
@ -218,10 +225,10 @@ function upload_file($upload_file_or_zip, $default_real_directory)
ui_print_error_message(__('Security error'));
} else {
if (PandoraFMS\Tools\Files::unzip($filepath, $real_directory) === false) {
ui_print_error_message(__('No he podido descomprimir tu archivo de mierda'));
$config['filemanager']['message'] = ui_print_error_message(__('It was impossible to uncompress your file'));
} else {
unlink($_FILES['file']['tmp_name']);
ui_print_success_message(__('Upload correct'));
$config['filemanager']['message'] = ui_print_success_message(__('Upload correct'));
$config['filemanager']['correct_upload_file'] = 1;
}
}
@ -239,7 +246,7 @@ if (isset($_SERVER['CONTENT_LENGTH']) === true) {
}
function create_text_file($default_real_directory)
function create_text_file($default_real_directory, $destination_directory)
{
global $config;
@ -255,37 +262,42 @@ function create_text_file($default_real_directory)
return;
}
$filename = io_safe_output(get_parameter('name_file'));
$filename = filemanager_safe_directory((string) get_parameter('name_file'));
if (empty($filename) === false) {
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
$directory = filemanager_safe_directory((string) get_parameter('directory'));
$real_directory = filemanager_safe_directory($destination_directory);
$umask = (string) get_parameter('umask');
if (strpos($real_directory, $default_real_directory) !== 0) {
// Perform security check to determine whether received upload directory is part of the default path for caller uploader and user is not trying to access an external path (avoid execution of PHP files in directories that are not explicitly controlled by corresponding .htaccess).
// Perform security check to determine whether received upload
// directory is part of the default path for caller uploader and
// user is not trying to access an external path (avoid execution
// of PHP files in directories that are not explicitly controlled by
// corresponding .htaccess).
ui_print_error_message(__('Security error'));
} else {
if (empty($directory) === true) {
$nombre_archivo = $real_directory.'/'.$filename;
} else {
$nombre_archivo = $default_real_directory.'/'.$directory.'/'.$filename;
}
$nombre_archivo = $real_directory.'/'.$filename;
if (! @touch($nombre_archivo)) {
$config['filemanager']['message'] = ui_print_error_message(__('Error creating file'));
} else {
if ($umask !== '') {
chmod($nombre_archivo, $umask);
try {
// Create the file.
$result = touch($nombre_archivo);
if ($result === true) {
if ($umask !== '') {
chmod($nombre_archivo, $umask);
}
ui_print_success_message(__('File created correctly'));
$config['filemanager']['correct_upload_file'] = 1;
} else {
throw new Exception(__('Error creating file'));
}
ui_print_success_message(__('Upload correct'));
$config['filemanager']['correct_upload_file'] = 1;
} catch (Exception $ex) {
$config['filemanager']['message'] = ui_print_error_message($ex->getMessage());
}
}
} else {
ui_print_error_message(__('Error creating file with empty name'));
$config['filemanager']['message'] = ui_print_error_message(__('Error creating file with empty name'));
}
}
@ -295,13 +307,18 @@ $create_dir = (bool) get_parameter('create_dir');
if ($create_dir === true) {
global $config;
$homedir_filemanager = io_safe_output($config['attachment_store']).'/collection';
$sec2 = get_parameter('sec2');
if ($sec2 === 'enterprise/godmode/agentes/collections' || $sec2 === 'advanced/collections') {
$homedir_filemanager = io_safe_output($config['attachment_store']).'/collection';
} else {
$homedir_filemanager = io_safe_output($config['homedir']);
}
$config['filemanager'] = [];
$config['filemanager']['correct_create_dir'] = 0;
$config['filemanager']['message'] = null;
$directory = filemanager_safe_directory((string) get_parameter('directory', '/'));
$directory = filemanager_safe_directory((string) get_parameter('directory'));
$hash = (string) get_parameter('hash');
$testHash = md5($directory.$config['server_unique_identifier']);
@ -312,12 +329,23 @@ if ($create_dir === true) {
if (empty($dirname) === false) {
// Create directory.
@mkdir(
$homedir_filemanager.'/'.$directory.'/'.$dirname
);
$config['filemanager']['message'] = ui_print_success_message(__('Directory created'), '', true);
try {
// If directory exists, add an slash at end.
if (empty($directory) === false) {
$directory .= '/';
}
$config['filemanager']['correct_create_dir'] = 1;
$result = mkdir($homedir_filemanager.'/'.$directory.$dirname);
if ($result === true) {
$config['filemanager']['message'] = ui_print_success_message(__('Directory created'), '', true);
$config['filemanager']['correct_create_dir'] = 1;
} else {
throw new Exception(__('Something gone wrong creating directory'));
}
} catch (Exception $ex) {
$config['filemanager']['message'] = ui_print_error_message($ex->getMessage(), '', true);
}
} else {
$config['filemanager']['message'] = ui_print_error_message(__('Error creating file with empty name'), '', true);
}
@ -367,7 +395,9 @@ if ($delete_file === true) {
/**
* Recursive delete directory and empty or not directory.
*
* @param string $dir The dir to deletete
* @param string $dir The dir to deletete.
*
* @return void
*/
function filemanager_delete_directory($dir)
{
@ -397,8 +427,9 @@ function filemanager_delete_directory($dir)
* Read a directory recursibly and return a array with the files with
* the absolute path and relative
*
* @param string $dir absoute dir to scan
* @param string $relative_path Relative path to scan, by default ''
* @param string $dir Absoute dir to scan.
* @param string $relative_path Relative path to scan, by default ''.
* @param boolean $add_empty_dirs Add empty dirs.
*
* @return array The files in the dirs, empty array for empty dir of files.
*/
@ -406,14 +437,14 @@ function filemanager_read_recursive_dir($dir, $relative_path='', $add_empty_dirs
{
$return = [];
// Windows compatibility
// Windows compatibility.
$dir = str_replace('\\', '/', $dir);
$relative_path = str_replace('\\', '/', $relative_path);
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if (($entry != '.') && ($entry != '..')) {
if (is_dir($dir.$entry)) {
if (($entry !== '.') && ($entry !== '..')) {
if (is_dir($dir.$entry) === true) {
$return[] = [
'relative' => $relative_path.$entry,
'absolute' => $dir.$entry,
@ -449,14 +480,17 @@ function filemanager_read_recursive_dir($dir, $relative_path='', $add_empty_dirs
/**
* The main function to show the directories and files.
*
* @param string $real_directory The string of dir as realpath.
* @param string $relative_directory The string of dir as relative path.
* @param string $url The url to set in the forms and some links in the explorer.
* @param string $father The directory father don't navigate bottom this.
* @param boolean $editor The flag to set the edition of text files.
* @param string $url_file The url to put in the files instead the default. By default empty string and use the url of filemanager.
* @param boolean $download_button The flag to show download button, by default false.
* @param string $umask The umask as hex values to set the new files or updload.
* @param string $real_directory The string of dir as realpath.
* @param string $relative_directory The string of dir as relative path.
* @param string $url The url to set in the forms and some links in the explorer.
* @param string $father The directory father don't navigate bottom this.
* @param boolean $editor The flag to set the edition of text files.
* @param boolean $readOnly If true, only can read the files.
* @param string $url_file The url to put in the files instead the default. By default empty string and use the url of filemanager.
* @param boolean $download_button The flag to show download button, by default false.
* @param string $umask The umask as hex values to set the new files or updload.
* @param boolean $homedir_filemanager Homedir filemanager.
* @param boolean $allowCreateText If true, 'Create Text' button will be shown.
*/
function filemanager_file_explorer(
$real_directory,
@ -468,11 +502,12 @@ function filemanager_file_explorer(
$url_file='',
$download_button=false,
$umask='',
$homedir_filemanager=false
$homedir_filemanager=false,
$allowCreateText=true
) {
global $config;
// Windows compatibility
// Windows compatibility.
$real_directory = str_replace('\\', '/', $real_directory);
$relative_directory = str_replace('\\', '/', $relative_directory);
$father = str_replace('\\', '/', $father);
@ -481,10 +516,7 @@ function filemanager_file_explorer(
$homedir_filemanager = $config['homedir'];
}
$hack_metaconsole = '';
if (defined('METACONSOLE')) {
$hack_metaconsole = '../../';
}
$hack_metaconsole = (is_metaconsole() === true) ? '../../' : '';
?>
<script type="text/javascript">
@ -493,13 +525,13 @@ function filemanager_file_explorer(
$("#create_folder").css("display", "block");
check_opened_dialog('create_folder');
}
<?php if ($allowCreateText === true) : ?>
function show_create_text_file() {
actions_dialog('create_text_file');
$("#create_text_file").css("display", "block");
check_opened_dialog('create_text_file');
}
<?php endif ?>
function show_upload_file() {
actions_dialog('upload_file');
$("#upload_file").css("display", "block");
@ -512,12 +544,13 @@ function filemanager_file_explorer(
$('#create_folder').dialog('close');
}
}
<?php if ($allowCreateText === true) : ?>
if(check_opened !== 'create_text_file'){
if (($("#create_text_file").hasClass("ui-dialog-content") && $('#create_text_file').dialog('isOpen') === true)) {
$('#create_text_file').dialog('close');
}
}
<?php endif ?>
if(check_opened !== 'upload_file'){
if (($("#upload_file").hasClass("ui-dialog-content") && $('#upload_file').dialog('isOpen')) === true) {
$('#upload_file').dialog('close');
@ -532,11 +565,11 @@ function filemanager_file_explorer(
case 'create_folder':
title_action = "<?php echo __('Create a Directory'); ?>";
break;
<?php if ($allowCreateText === true) : ?>
case 'create_text_file':
title_action = "<?php echo __('Create a Text'); ?>";
break;
<?php endif ?>
case 'upload_file':
title_action = "<?php echo __('Upload Files'); ?>";
break;
@ -567,28 +600,21 @@ function filemanager_file_explorer(
}
</script>
<?php
// List files
if (! is_dir($real_directory)) {
// List files.
if (is_dir($real_directory) === false) {
echo __('Directory %s doesn\'t exist!', $relative_directory);
return;
}
$files = filemanager_list_dir($real_directory);
if (!empty($files)) {
if (empty($files) === false) {
$table = new stdClass();
$table->width = '100%';
$table->id = 'table_filemanager';
if (!defined('METACONSOLE')) {
$table->class = 'info_table';
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
}
if (defined('METACONSOLE')) {
$table->class = 'databox_tactical';
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
}
$table->class = (is_metaconsole() === true) ? 'databox_tactical' : 'info_table';
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
$table->colspan = [];
$table->data = [];
$table->head = [];
@ -608,10 +634,12 @@ function filemanager_file_explorer(
$table->head[4] = __('Actions');
$prev_dir = explode('/', $relative_directory);
$count_prev_dir = count($prev_dir);
$prev_dir_str = '';
for ($i = 0; $i < (count($prev_dir) - 1); $i++) {
$prev_dir_count = count($prev_dir);
for ($i = 0; $i < ($prev_dir_count - 1); $i++) {
$prev_dir_str .= $prev_dir[$i];
if ($i < (count($prev_dir) - 2)) {
if ($i < ($prev_dir_count - 2)) {
$prev_dir_str .= '/';
}
}
@ -649,16 +677,16 @@ function filemanager_file_explorer(
break;
case MIME_UNKNOWN:
if ($fileinfo['size'] == 0) {
if ((int) $fileinfo['size'] === 0) {
if ((strstr($fileinfo['name'], '.txt') !== false) || (strstr($fileinfo['name'], '.conf') !== false) || (strstr($fileinfo['name'], '.sql') !== false) || (strstr($fileinfo['name'], '.pl') !== false)) {
$fileinfo['mime'] = MIME_TEXT;
$data[0] = html_print_image('images/mimetypes/text.png', true, ['title' => __('Text file'), 'class' => 'invert_filter']);
} else {
// unknow
// Unknown.
$data[0] = '';
}
} else {
// pdf
// Pdf.
$data[0] = '';
}
break;
@ -670,8 +698,8 @@ function filemanager_file_explorer(
if ($fileinfo['is_dir']) {
$data[1] = '<a href="'.$url.'&directory='.$relative_directory.'/'.$fileinfo['name'].'&hash2='.md5($relative_directory.'/'.$fileinfo['name'].$config['server_unique_identifier']).'">'.$fileinfo['name'].'</a>';
} else if (!empty($url_file)) {
// Set the custom url file
} else if (empty($url_file) === false) {
// Set the custom url file.
$url_file_clean = str_replace('[FILE_FULLPATH]', $fileinfo['realpath'], $url_file);
$data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>';
@ -681,9 +709,9 @@ function filemanager_file_explorer(
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.$fileinfo['name'].'</a>';
}
// Notice that uploaded php files could be dangerous
if (pathinfo($fileinfo['realpath'], PATHINFO_EXTENSION) == 'php'
&& (is_readable($fileinfo['realpath']) || is_executable($fileinfo['realpath']))
// Notice that uploaded php files could be dangerous.
if (pathinfo($fileinfo['realpath'], PATHINFO_EXTENSION) === 'php'
&& (is_readable($fileinfo['realpath']) === true || is_executable($fileinfo['realpath']) === true)
) {
$error_message = __('This file could be executed by any user');
$error_message .= '. '.__('Make sure it can\'t perform dangerous tasks');
@ -702,12 +730,13 @@ function filemanager_file_explorer(
}
// Actions buttons
// Delete button
// Delete button.
$data[4] = '';
$data[4] .= '<span style="display: flex">';
$typefile = array_pop(explode('.', $fileinfo['name']));
if (is_writable($fileinfo['realpath'])
&& (! is_dir($fileinfo['realpath']) || count(scandir($fileinfo['realpath'])) < 3) && (!$readOnly)
if (is_writable($fileinfo['realpath']) === true
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
&& ($readOnly === false)
) {
$data[4] .= '<form method="post" action="'.$url.'" style="">';
$data[4] .= '<input type="image" class="invert_filter" src="images/cross.png" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
@ -717,7 +746,7 @@ function filemanager_file_explorer(
$relative_dir = str_replace($homedir_filemanager, '', str_replace('\\', '/', dirname($fileinfo['realpath'])));
if ($relative_dir[0] == '/') {
if ($relative_dir[0] === '/') {
$relative_dir = substr($relative_dir, 1);
}
@ -727,9 +756,9 @@ function filemanager_file_explorer(
$data[4] .= html_print_input_hidden('hash2', $hash2, true);
$data[4] .= '</form>';
if (($editor) && (!$readOnly)) {
if (($typefile != 'bin') && ($typefile != 'pdf') && ($typefile != 'png') && ($typefile != 'jpg')
&& ($typefile != 'iso') && ($typefile != 'docx') && ($typefile != 'doc') && ($fileinfo['mime'] != MIME_DIR)
if (($editor) && ($readOnly === false)) {
if (($typefile !== 'bin') && ($typefile !== 'pdf') && ($typefile !== 'png') && ($typefile !== 'jpg')
&& ($typefile !== 'iso') && ($typefile !== 'docx') && ($typefile !== 'doc') && ($fileinfo['mime'] != MIME_DIR)
) {
$hash = md5($fileinfo['realpath'].$config['server_unique_identifier']);
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&hash=".$hash.'&location_file='.$fileinfo['realpath']."' style='float: left;'>".html_print_image('images/edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file'), 'class' => 'invert_filter']).'</a>';
@ -740,7 +769,7 @@ function filemanager_file_explorer(
if ((!$fileinfo['is_dir']) && ($download_button)) {
$filename = base64_encode($fileinfo['name']);
$hash = md5($filename.$config['server_unique_identifier']);
$data[4] .= '<a href="include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'" style="vertical-align: 25%;">';
$data[4] .= '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'" style="vertical-align: 25%;">';
$data[4] .= html_print_image('images/file.png', true, ['class' => 'invert_filter']);
$data[4] .= '</a>';
}
@ -758,9 +787,9 @@ function filemanager_file_explorer(
);
}
if (!$readOnly) {
if (is_writable($real_directory)) {
// The buttons to make actions
if ($readOnly === false) {
if (is_writable($real_directory) === true) {
// The buttons to make actions.
$tabs_dialog = '<ul id="file_table_modal">
<li class="create_folder">
<a href="javascript: show_form_create_folder();">'.html_print_image(
@ -772,18 +801,24 @@ function filemanager_file_explorer(
]
).'<span>'.__('Create a Directory').'</span>
</a>
</li>
<li class="create_text_file">
<a href="javascript: show_create_text_file();">'.html_print_image(
'images/create_file.png',
true,
[
'title' => __('Create a Text'),
'class' => 'invert_filter',
]
).'<span>'.__('Create a Text').'</span>
</a>
</li>
</li>';
if ($allowCreateText === true) {
$tabs_dialog .= '
<li class="create_text_file">
<a href="javascript: show_create_text_file();">'.html_print_image(
'images/create_file.png',
true,
[
'title' => __('Create a Text'),
'class' => 'invert_filter',
]
).'<span>'.__('Create a Text').'</span>
</a>
</li>';
}
$tabs_dialog .= '
<li class="upload_file">
<a href="javascript: show_upload_file();">'.html_print_image(
'images/upload_file.png',
@ -794,7 +829,9 @@ function filemanager_file_explorer(
]
).'<span>'.__('Upload Files').'</span>
</a>
</li></ul>';
</li>';
$tabs_dialog .= '</ul>';
echo '<div id="create_folder" class="invisible">'.$tabs_dialog.'
<form method="post" action="'.$url.'">'.html_print_input_text('dirname', '', '', 30, 255, true).html_print_submit_button(__('Create'), 'crt', false, 'class="sub next"', true).html_print_input_hidden('directory', $relative_directory, true).html_print_input_hidden('create_dir', 1, true).html_print_input_hidden('hash', md5($relative_directory.$config['server_unique_identifier']), true).html_print_input_hidden('hash2', md5($relative_directory.$config['server_unique_identifier']), true).'</form></div>';
@ -802,8 +839,10 @@ function filemanager_file_explorer(
echo '<div id="upload_file" class="invisible"> '.$tabs_dialog.'
<form method="post" action="'.$url.'" enctype="multipart/form-data">'.ui_print_help_tip(__('The zip upload in this dir, easy to upload multiple files.'), true).html_print_input_file('file', true, false).html_print_input_hidden('umask', $umask, true).html_print_checkbox('decompress', 1, false, true).__('Decompress').html_print_submit_button(__('Go'), 'go', false, 'class="sub next"', true).html_print_input_hidden('real_directory', $real_directory, true).html_print_input_hidden('directory', $relative_directory, true).html_print_input_hidden('hash', md5($real_directory.$relative_directory.$config['server_unique_identifier']), true).html_print_input_hidden('hash2', md5($relative_directory.$config['server_unique_identifier']), true).html_print_input_hidden('upload_file_or_zip', 1, true).'</form></div>';
echo ' <div id="create_text_file" class="invisible">'.$tabs_dialog.'
<form method="post" action="'.$url.'">'.html_print_input_text('name_file', '', '', 30, 50, true).html_print_submit_button(__('Create'), 'create', false, 'class="sub next"', true).html_print_input_hidden('real_directory', $real_directory, true).html_print_input_hidden('directory', $relative_directory, true).html_print_input_hidden('hash', md5($real_directory.$relative_directory.$config['server_unique_identifier']), true).html_print_input_hidden('umask', $umask, true).html_print_input_hidden('create_text_file', 1, true).'</form></div>';
if ($allowCreateText === true) {
echo ' <div id="create_text_file" class="invisible">'.$tabs_dialog.'
<form method="post" action="'.$url.'">'.html_print_input_text('name_file', '', '', 30, 50, true).html_print_submit_button(__('Create'), 'create', false, 'class="sub next"', true).html_print_input_hidden('real_directory', $real_directory, true).html_print_input_hidden('directory', $relative_directory, true).html_print_input_hidden('hash', md5($real_directory.$relative_directory.$config['server_unique_identifier']), true).html_print_input_hidden('umask', $umask, true).html_print_input_hidden('create_text_file', 1, true).'</form></div>';
}
echo "<div style='width: ".$table->width.";' class='file_table_buttons'>";
@ -818,16 +857,18 @@ function filemanager_file_explorer(
);
echo '</a>';
echo "<a href='javascript: show_create_text_file();'>";
echo html_print_image(
'images/create_file.png',
true,
[
'title' => __('Create text'),
'class' => 'invert_filter',
]
);
echo '</a>';
if ($allowCreateText === true) {
echo "<a href='javascript: show_create_text_file();'>";
echo html_print_image(
'images/create_file.png',
true,
[
'title' => __('Create text'),
'class' => 'invert_filter',
]
);
echo '</a>';
}
echo "<a href='javascript: show_upload_file();'>";
echo html_print_image(
@ -855,18 +896,17 @@ function filemanager_file_explorer(
/**
* Check if a directory is writable.
*
* @param string Directory path to check.
* @param bool If set, it will try to make the directory writeable if it's not.
* @param string $filepath Directory path to check.
*
* @param bool Wheter the directory is writeable or not.
* @return boolean Wheter the directory is writeable or not.
*/
function filemanager_get_file_info($filepath)
function filemanager_get_file_info(string $filepath)
{
global $config;
$realpath = realpath($filepath);
$filepath = str_replace('\\', '/', $filepath);
// Windows compatibility
// Windows compatibility.
$info = [
'mime' => MIME_UNKNOWN,
'mime_extend' => mime_content_type($filepath),
@ -904,10 +944,9 @@ function filemanager_get_file_info($filepath)
/**
* Check if a directory is writable.
*
* @param string Directory path to check.
* @param bool If set, it will try to make the directory writeable if it's not.
* @param string $dirpath Directory path to check.
*
* @param bool Wheter the directory is writeable or not.
* @return array List with files.
*/
function filemanager_list_dir($dirpath)
{
@ -917,8 +956,8 @@ function filemanager_list_dir($dirpath)
$dirs = [];
$dir = opendir($dirpath);
while ($file = @readdir($dir)) {
// Ignore hidden files
if ($file[0] == '.') {
// Ignore hidden files.
if ($file[0] === '.') {
continue;
}
@ -953,9 +992,18 @@ function filemanager_safe_directory(
// Safe output.
$directory = io_safe_output($directory);
$forbiddenAttempting = false;
// Banned directories.
$bannedDirectory = [
'include',
'godmode',
'operation',
'reporting',
'general',
ENTERPRISE_DIR,
];
if ((bool) preg_match('/(\.){1,2}/', $directory) !== false) {
$directory = preg_replace('/(\.){1,2}/', '', (empty($safedDirectory) === true) ? $directory : $safedDirectory);
if ((bool) preg_match('/(\.){2}/', $directory) !== false) {
$directory = preg_replace('/(\.){2}/', '', (empty($safedDirectory) === true) ? $directory : $safedDirectory);
$forbiddenAttempting = true;
}
@ -964,6 +1012,12 @@ function filemanager_safe_directory(
$forbiddenAttempting = true;
}
if (in_array($directory, $bannedDirectory) === true) {
// Setted images for default (usually in file manager).
$directory = (empty($safedDirectory) === false) ? $safedDirectory : 'images';
$forbiddenAttempting = true;
}
if ($forbiddenAttempting === true) {
db_pandora_audit('File manager', 'Attempting to use a forbidden file or directory name');
}

View File

@ -735,7 +735,7 @@ function grafico_modulo_sparse($params)
$params['backgroundColor'] = 'white';
}
if (isset($params['only_image']) === true) {
if (isset($params['only_image']) === true && $params['vconsole'] !== true) {
$params['backgroundColor'] = 'transparent';
}
@ -829,7 +829,11 @@ function grafico_modulo_sparse($params)
$params['stacked'] = 0;
}
$font_size = $config['font_size'];
if (isset($params['graph_font_size']) === true) {
$font_size = $params['graph_font_size'];
} else {
$font_size = $config['font_size'];
}
// If is metaconsole set 10pt size value.
if (is_metaconsole()) {

View File

@ -436,6 +436,7 @@ function html_print_select_style($fields, $name, $selected='', $style='', $scrip
* @param string $size Style, size (width) of element.
* @param boolean $simple_multiple_options Discovery simple multiple inputs.
* @param boolean $required Required input.
* @param string $inverse Change All to None with inverse condition.
*
* @return string HTML code if return parameter is true.
*/
@ -462,7 +463,8 @@ function html_print_select_groups(
$include_groups=false,
$size=false,
$simple_multiple_options=false,
$required=false
$required=false,
$inverse=''
) {
$output = '';
@ -522,7 +524,11 @@ function html_print_select_groups(
if (empty($selected) === false) {
$fields = [ $selected => groups_get_name($selected) ];
} else if ($returnAllGroup === true && $multiple === false) {
$fields = [ $selected => groups_get_name(null, true) ];
if ($selected === 0 && $inverse !== '') {
$fields = [ $selected => 'None' ];
} else {
$fields = [ $selected => groups_get_name(null, true) ];
}
}
} else {
foreach ($selected as $k) {
@ -595,7 +601,9 @@ function html_print_select_groups(
</style>
<script type="text/javascript">
$(document).ready(function() {
$('select[name="<?php echo $name; ?>"]').each(
function() {
$(this).select2({
@ -625,6 +633,7 @@ function html_print_select_groups(
inclusions: '<?php echo $json_inclusions; ?>',
step: params.page || 1,
strict: "<?php echo $strict_user; ?>",
not_condition: $('#not_condition_switch').prop('checked'),
returnAllGroup: <?php echo (int) $returnAllGroup; ?>
}
@ -781,7 +790,7 @@ function html_print_select(
$required = 'required';
}
$output .= '<select '.$required.' id="'.$id.'" name="'.$name.'"'.$attributes.' '.$styleText.'>';
$output .= '<select '.$required.' onclick="'.$script.'" id="'.$id.'" name="'.$name.'"'.$attributes.' '.$styleText.'>';
if ($nothing !== false) {
if ($nothing != '' || empty($fields)) {
@ -2365,12 +2374,13 @@ function html_print_div(
/**
* Render an anchor <a> html element.
*
* @param array $options Parameters
* @param array $options Parameters.
* - id: string.
* - style: string.
* - title: string.
* - href: string.
* - content: string.
* - onClick: string.
* @param boolean $return Return or echo flag.
*
* @return string HTML code if return parameter is true.
@ -2387,6 +2397,7 @@ function html_print_anchor(
'style',
'class',
'title',
'onClick',
];
$output .= (isset($options['href']) === true) ? 'href="'.io_safe_input_html($options['href']).'"' : ui_get_full_url();

View File

@ -199,7 +199,7 @@ function integria_api_call($api_hostname=null, $user=null, $user_pass=null, $api
'user_pass' => $user_pass,
'pass' => $api_pass,
'op' => $operation,
'params' => html_entity_decode($params),
'params' => io_safe_output($params),
];
if ($return_type !== '') {

View File

@ -30,7 +30,7 @@
global $config;
// Set variable to store menu type (classic or collapsed).
if (!empty(get_parameter('menuType'))) {
if (is_ajax() === true && empty(get_parameter('menuType')) === false) {
$_SESSION['menu_type'] = get_parameter('menuType', 'classic');
return;
}
@ -39,11 +39,14 @@ if (!empty(get_parameter('menuType'))) {
/**
* Prints a complete menu structure.
*
* @param array Menu structure to print.
* @param array $menu Menu structure to print.
*
* @return void
*/
function menu_print_menu(&$menu)
{
global $config;
global $menuTypeClass;
static $idcounter = 0;
echo '<div class="menu">';
@ -108,7 +111,7 @@ function menu_print_menu(&$menu)
$submenu = false;
if ($config['menu_type'] == 'classic') {
if ($menuTypeClass === 'classic') {
$classes = [
'menu_icon',
'no_hidden_menu',
@ -120,12 +123,12 @@ function menu_print_menu(&$menu)
];
}
if (isset($main['sub'])) {
if (isset($main['sub']) === true) {
$classes[] = '';
$submenu = true;
}
if (!isset($main['refr'])) {
if (isset($main['refr']) === false) {
$main['refr'] = 0;
}
@ -409,23 +412,14 @@ function menu_print_menu(&$menu)
// Print out the first level.
$output .= '<li title="'.$main['text'].'" class="'.implode(' ', $classes).' '.$seleccionado.'" id="icon_'.$id.'">';
// onclick="location.href=\'index.php?sec='.$mainsec.'&amp;sec2='.$main["sec2"].($main["refr"] ? '&amp;refr='.$main["refr"] : '').'\'">';
$length = strlen(__($main['text']));
$padding_top = ( $length >= 18) ? 6 : 12;
if ($config['menu_type'] == 'classic') {
$output .= '<div id="title_menu" class="title_menu_classic">'.$main['text'].'</div>';
} else {
$output .= '<div id="title_menu" class="title_menu_collapsed">'.$main['text'].'</div>';
}
$output .= sprintf('<div id="title_menu" class="title_menu_%s">%s</div>', $menuTypeClass, $main['text']);
// Add the notification ball if defined
if (isset($main['notification'])) {
// Add the notification ball if defined.
if (isset($main['notification']) === true) {
$output .= '<div class="notification_ball">'.$main['notification'].'</div>';
}
$padding_top = 0;
$length = 0;
if ($submenu_output != '') {
// WARNING: IN ORDER TO MODIFY THE VISIBILITY OF MENU'S AND SUBMENU'S (eg. with cookies) YOU HAVE TO ADD TO THIS ELSEIF. DON'T MODIFY THE CSS.
if ($visible || in_array('selected', $classes)) {
@ -436,10 +430,7 @@ function menu_print_menu(&$menu)
$visible = false;
}
// $output .= '<ul id="subicon_'.$id.'" class="submenu'.($visible ? '' : ' invisible').'">';
$output .= '<ul id="subicon_'.$id.'" class="submenu">';
$output .= $submenu_output;
$output .= '</ul>';
$output .= sprintf('<ul id="subicon_%s" class="submenu">%s</ul>', $id, $submenu_output);
}
$config['count_main_menu']++;

View File

@ -662,7 +662,7 @@ function messages_get_url($message_id)
// Return URL stored if is set in database.
if (isset($messages['url'])) {
return $messages['url'];
return str_replace('__url__', ui_get_full_url('/'), $messages['url']);
}
// Return the message direction.

View File

@ -2295,17 +2295,19 @@ function modules_get_agentmodule_data(
$search_in_history_db = db_search_in_history_db($datelimit);
switch ($module['id_tipo_modulo']) {
// generic_data_string
// Generic_data_string.
case 3:
// remote_tcp_string
// Remote_tcp_string.
case 10:
// remote_snmp_string
// Remote_snmp_string.
case 17:
// async_string
// Async_string.
case 36:
// remote_cmd_string
// Remote_cmd_string.
case 23:
// Free search is a json with value and exact modifier
// Web content string.
case 33:
// Free search is a json with value and exact modifier.
$freesearch = json_decode($freesearch, true);
$freesearch_sql = '';
if (isset($freesearch['value']) && !empty($freesearch['value'])) {

View File

@ -600,7 +600,7 @@ function netflow_get_stats(
global $config, $nfdump_date_format;
// Requesting remote data.
if (defined('METACONSOLE') && $connection_name != '') {
if (is_metaconsole() === true && empty($connection_name) === false) {
$data = metaconsole_call_remote_api($connection_name, 'netflow_get_stats', "$start_date|$end_date|".base64_encode(json_encode($filter))."|$aggregate|$max|$absolute|".(int) $address_resolution);
return json_decode($data, true);
}
@ -612,7 +612,7 @@ function netflow_get_stats(
// Execute nfdump.
exec($command, $string);
if (! is_array($string)) {
if (is_array($string) === false) {
return [];
}
@ -1062,7 +1062,7 @@ function netflow_draw_item(
) {
$aggregate = $filter['aggregate'];
$interval = ($end_date - $start_date);
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$width = 950;
} else {
$width = 850;
@ -1084,12 +1084,13 @@ function netflow_draw_item(
$connection_name,
$address_resolution
);
if (empty($data)) {
if (empty($data) === true) {
break;
}
if ($output == 'HTML' || $output == 'PDF') {
$html .= graph_netflow_aggregate_area(
if ($output === 'HTML' || $output === 'PDF') {
return graph_netflow_aggregate_area(
$data,
$interval,
$width,
@ -1098,9 +1099,8 @@ function netflow_draw_item(
($output === 'HTML'),
$end_date
);
return $html;
} else if ($output == 'XML') {
$xml .= '<aggregate>'.$aggregate."</aggregate>\n";
} else if ($output === 'XML') {
$xml = '<aggregate>'.$aggregate."</aggregate>\n";
$xml .= '<resolution>'.$interval_length."</resolution>\n";
$xml .= netflow_aggregate_area_xml($data);
return $xml;
@ -1119,18 +1119,19 @@ function netflow_draw_item(
$connection_name,
$address_resolution
);
if (empty($data)) {
if (empty($data) === true) {
break;
}
if ($output == 'HTML' || $output == 'PDF') {
$html .= "<div class='w100p overflow'>";
if ($output === 'HTML' || $output === 'PDF') {
$html = "<div class='w100p overflow'>";
$html .= netflow_data_table($data, $start_date, $end_date, $aggregate);
$html .= '</div>';
return $html;
} else if ($output == 'XML') {
$xml .= '<aggregate>'.$aggregate."</aggregate>\n";
} else if ($output === 'XML') {
$xml = '<aggregate>'.$aggregate."</aggregate>\n";
$xml .= '<resolution>'.$interval_length."</resolution>\n";
// Same as netflow_aggregate_area_xml.
$xml .= netflow_aggregate_area_xml($data);
@ -1159,7 +1160,8 @@ function netflow_draw_item(
$connection_name,
$address_resolution
);
if (empty($data_pie)) {
if (empty($data_pie) === true) {
break;
}
@ -1222,51 +1224,56 @@ function netflow_draw_item(
$connection_name,
$address_resolution
);
switch ($aggregate) {
case 'srcip':
case 'srcport':
$address_type = 'source_address';
$port_type = 'source_port';
$type = __('Sent');
break;
default:
case 'dstip':
case 'dstport':
$address_type = 'destination_address';
$port_type = 'destination_port';
$type = __('Received');
break;
}
if (empty($data_stats) === false) {
switch ($aggregate) {
case 'srcip':
case 'srcport':
$address_type = 'source_address';
$port_type = 'source_port';
$type = __('Sent');
break;
$data_graph = [
'name' => __('Host detailed traffic').': '.$type,
'children' => [],
];
$id = -1;
default:
case 'dstip':
case 'dstport':
$address_type = 'destination_address';
$port_type = 'destination_port';
$type = __('Received');
break;
}
foreach ($data_stats as $sdata) {
$data_graph['children'][] = [
'id' => $i++,
'name' => $sdata['agg'],
'children' => [
[
'id' => $i++,
'name' => $sdata['agg'],
'value' => $sdata['data'],
'tooltip_content' => network_format_bytes($sdata['data']),
],
],
$data_graph = [
'name' => __('Host detailed traffic').': '.$type,
'children' => [],
];
$id = -1;
foreach ($data_stats as $sdata) {
$data_graph['children'][] = [
'id' => $id++,
'name' => $sdata['agg'],
'children' => [
[
'id' => $id++,
'name' => $sdata['agg'],
'value' => $sdata['data'],
'tooltip_content' => network_format_bytes($sdata['data']),
],
],
];
}
return graph_netflow_host_traffic($data_graph, 'auto', 400);
}
return graph_netflow_host_traffic($data_graph, 'auto', 400);
break;
default:
// Nothing to do.
break;
}
if ($output == 'HTML' || $output == 'PDF') {
if ($output === 'HTML' || $output === 'PDF') {
return graph_nodata_image(300, 110, 'data');
}
}

View File

@ -264,7 +264,19 @@ function show_configuration_wizard() {
background: "black"
},
closeOnEscape: false,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
open: function(event, ui) {
$(".ui-dialog-titlebar-close").hide();
if ($.ui && $.ui.dialog && $.ui.dialog.prototype._allowInteraction) {
var ui_dialog_interaction = $.ui.dialog.prototype._allowInteraction;
$.ui.dialog.prototype._allowInteraction = function(e) {
if ($(e.target).closest('.select2-dropdown').length) return true;
return ui_dialog_interaction.apply(this, arguments);
};
}
},
_allowInteraction: function (event) {
return !!$(event.target).is(".select2-input") || this._super(event);
}
});
default_language_displayed = $("#language").val();

View File

@ -1845,14 +1845,25 @@ function reporting_event_report_group(
}
$id_meta = 0;
$node_historical_event_enbled = '';
if (is_metaconsole() === true && empty($content['server_name']) === false) {
$id_meta = metaconsole_get_id_server($content['server_name']);
$server = metaconsole_get_connection_by_id($id_meta);
metaconsole_connect($server);
// Check if node historical event is enable.
$sql = sprintf(
'SELECT value
FROM tconfig
WHERE token LIKE "history_event_enabled"'
);
$result = db_get_row_sql($sql);
$node_historical_event_enbled = $result['value'];
}
$history = false;
if ($config['history_event_enabled']) {
if ($config['history_event_enabled'] || $node_historical_event_enbled) {
$history = true;
}
@ -2274,6 +2285,7 @@ function reporting_agents_inventory($report, $content)
$external_source = io_safe_input(json_decode($content['external_source'], true));
$es_agents_inventory_display_options = $external_source['agents_inventory_display_options'];
$es_agent_custom_fields = $external_source['agent_custom_fields'];
$es_custom_fields = $external_source['agent_custom_field_filter'];
$es_os_filter = $external_source['agent_os_filter'];
$es_agent_status_filter = $external_source['agent_status_filter'];
@ -2288,10 +2300,20 @@ function reporting_agents_inventory($report, $content)
$es_agents_inventory_display_options = [];
}
$custom_field_sql = '';
$search_sql = '';
if ($es_custom_fields != '') {
$search_sql .= ' AND id_os = '.$es_custom_fields;
if (!empty($es_agent_custom_fields)) {
$custom_field_sql = 'INNER JOIN tagent_custom_data tacd ON tacd.id_agent = tagente.id_agente';
if ($es_agent_custom_fields[0] != 0) {
$custom_field_sql .= ' AND tacd.id_field IN ('.implode(',', $es_agent_custom_fields).')';
}
if (!empty($es_custom_fields)) {
$custom_field_sql .= ' AND tacd.description like "%'.$es_custom_fields.'%"';
} else {
$custom_field_sql .= ' AND tacd.description <> ""';
}
}
if (in_array('0', $es_os_filter) === false) {
@ -2330,8 +2352,10 @@ function reporting_agents_inventory($report, $content)
ON tagente.id_agente = tasg.id_agent
LEFT JOIN tagente_modulo tam
ON tam.id_agente = tagente.id_agente
%s
WHERE (tagente.id_grupo IN (%s) OR tasg.id_group IN (%s))
%s',
$custom_field_sql,
$user_groups_to_sql,
$user_groups_to_sql,
$search_sql

View File

@ -2559,12 +2559,19 @@ function reporting_html_last_value($table, $item, $pdf=0)
'Y-m-d H:i:s',
$item['data']['utimestamp']
);
$table_data->data[1][2] = remove_right_zeros(
number_format(
$item['data']['datos'],
$config['graph_precision']
)
);
if (is_numeric($item['data']['datos']) === true) {
$dataDatos = remove_right_zeros(
number_format(
$item['data']['datos'],
$config['graph_precision']
)
);
} else {
$dataDatos = trim($item['data']['datos']);
}
$table_data->data[1][2] = $dataDatos;
switch ($item['data']['estado']) {
case AGENT_MODULE_STATUS_CRITICAL_BAD:

View File

@ -665,7 +665,7 @@ function reports_get_report_types($template=false, $not_editor=false)
];
$types['sql_graph_hbar'] = [
'optgroup' => __('Graphs'),
'name' => __('SQL horizonal bar graph'),
'name' => __('SQL horizontal bar graph'),
];
}
@ -723,15 +723,15 @@ function reports_get_report_types($template=false, $not_editor=false)
$types['avg_value'] = [
'optgroup' => __('Modules'),
'name' => __('Avg. Value'),
'name' => __('Avg. value'),
];
$types['max_value'] = [
'optgroup' => __('Modules'),
'name' => __('Max. Value'),
'name' => __('Max. value'),
];
$types['min_value'] = [
'optgroup' => __('Modules'),
'name' => __('Min. Value'),
'name' => __('Min. value'),
];
$types['monitor_report'] = [
'optgroup' => __('Modules'),

View File

@ -511,6 +511,11 @@ function tags_update_policy_module_tag($id_policy_module, $tags, $autocommit=fal
}
}
if ($errn > 0) {
return false;
} else {
return true;
}
}

View File

@ -69,9 +69,9 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
// Module name
if ($module['disabled']) {
$cellName = '<em>'.ui_print_truncate_text(io_safe_output($module['nombre']), GENERIC_SIZE_TEXT, true, true, true, '[&hellip;]', 'text-transform: uppercase;').ui_print_help_tip(__('Disabled'), true).'<em>';
$cellName = '<em>'.ui_print_truncate_text($module['nombre'], GENERIC_SIZE_TEXT, true, true, true, '[&hellip;]', 'text-transform: uppercase;').ui_print_help_tip(__('Disabled'), true).'<em>';
} else {
$cellName = ui_print_truncate_text(io_safe_output($module['nombre']), GENERIC_SIZE_TEXT, true, true, true, '[&hellip;]', 'text-transform: uppercase;');
$cellName = ui_print_truncate_text($module['nombre'], GENERIC_SIZE_TEXT, true, true, true, '[&hellip;]', 'text-transform: uppercase;');
}
$row = [];
@ -817,7 +817,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
$events_graph .= graph_graphic_agentevents(
$id_agente,
'340px;margin:0',
45,
'130px',
SECONDS_1DAY,
'',
true,

View File

@ -1041,7 +1041,7 @@ function ui_format_alert_row(
$styleDisabled = '';
}
if (empty($alert)) {
if (empty($alert) === true) {
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
return [
'',
@ -1066,7 +1066,7 @@ function ui_format_alert_row(
}
}
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$server = db_get_row('tmetaconsole_setup', 'id', $alert['server_data']['id']);
if (metaconsole_connect($server) == NOERR) {
@ -1087,7 +1087,7 @@ function ui_format_alert_row(
$data = [];
// Validate checkbox.
if (!defined('METACONSOLE')) {
if (is_metaconsole() === false) {
if (check_acl($config['id_user'], $id_group, 'LW')
|| check_acl($config['id_user'], $id_group, 'LM')
) {
@ -1106,7 +1106,7 @@ function ui_format_alert_row(
}
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
if (is_metaconsole()) {
if (is_metaconsole() === true && (int) $alert['server_data']['id'] !== 0) {
$node = metaconsole_get_connection_by_id($alert['server_data']['id']);
if (metaconsole_load_external_db($node) !== NOERR) {
// Restore the default connection.
@ -1121,14 +1121,14 @@ function ui_format_alert_row(
$data[$index['policy']] = '';
} else {
$img = 'images/policies_mc.png';
if (!is_metaconsole()) {
if (is_metaconsole() === false) {
$data[$index['policy']] = '<a href="?sec=gmodules&amp;sec2=enterprise/godmode/policies/policies&amp;id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
} else {
$data[$index['policy']] = '<a href="?sec=gmodules&amp;sec2=advanced/policymanager&amp;id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
}
}
if (is_metaconsole()) {
if (is_metaconsole() === true) {
metaconsole_restore_db();
}
}
@ -1139,7 +1139,7 @@ function ui_format_alert_row(
$data[$index['standby']] = html_print_image('images/bell_pause.png', true, ['title' => __('Standby on')]);
}
if (!defined('METACONSOLE')) {
if (is_metaconsole() === false) {
// Force alert execution.
if (check_acl($config['id_user'], $id_group, 'AW') || check_acl($config['id_user'], $id_group, 'LM')) {
if ($alert['force_execution'] == 0) {
@ -1154,7 +1154,7 @@ function ui_format_alert_row(
if ($agent == 0) {
$data[$index['module_name']] .= ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', '');
} else {
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$agent_name = $alert['agent_name'];
$id_agent = $alert['id_agent'];
} else {
@ -1162,7 +1162,7 @@ function ui_format_alert_row(
$id_agent = modules_get_agentmodule_agent($alert['id_agent_module']);
}
if (defined('METACONSOLE') || !can_user_access_node()) {
if (is_metaconsole() === true || !can_user_access_node()) {
$data[$index['agent_name']] = ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]', '');
} else {
if ($agent_style !== false) {
@ -1179,7 +1179,7 @@ function ui_format_alert_row(
$data[$index['description']] = '';
if (defined('METACONSOLE')) {
if (is_metaconsole() === true) {
$data[$index['template']] .= '<a class="template_details" href="'.ui_get_full_url('/', false, false, false).'/ajax.php?page=enterprise/meta/include/ajax/tree_view.ajax&action=get_template_tooltip&id_template='.$template['id'].'&server_name='.$alert['server_data']['server_name'].'">';
} else {
$data[$index['template']] .= '<a class="template_details" href="ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$template['id'].'">';
@ -1196,7 +1196,7 @@ function ui_format_alert_row(
$actions = alerts_get_alert_agent_module_actions($alert['id'], false, $alert['server_data']['id']);
if (!empty($actions)) {
if (empty($actions) === false) {
$actionText = '<div><ul class="action_list">';
foreach ($actions as $action) {
$actionText .= '<div class="mrgn_btn_5px" ><span class="action_name"><li>'.$action['name'];
@ -1869,7 +1869,7 @@ function ui_process_page_head($string, $bitfield)
} else {
$config['jquery'] = array_merge(
[
'jquery' => 'include/javascript/jquery-3.3.1.min.js',
'jquery' => 'include/javascript/jquery.current.js',
'pandora' => 'include/javascript/jquery.pandora.js',
'jquery-ui' => 'include/javascript/jquery-ui.min.js',
],
@ -4438,19 +4438,27 @@ function ui_print_standard_header(
true
);
// Create the header.
$output = ui_print_page_header(
$title,
$icon,
true,
$help,
$godmode,
$options,
false,
'',
GENERIC_SIZE_TEXT,
'',
$headerInformation->printHeader(true)
);
if (is_metaconsole() === true) {
$output = ui_meta_print_header(
$title,
false,
$options
);
} else {
$output = ui_print_page_header(
$title,
$icon,
true,
$help,
$godmode,
$options,
false,
'',
GENERIC_SIZE_TEXT,
'',
$headerInformation->printHeader(true)
);
}
if ($return !== true) {
echo $output;
@ -5047,11 +5055,7 @@ function ui_print_agent_autocomplete_input($parameters)
$metaconsole_enabled = $parameters['metaconsole_enabled'];
} else {
// If metaconsole_enabled param is not setted then pick source configuration.
if (defined('METACONSOLE')) {
$metaconsole_enabled = true;
} else {
$metaconsole_enabled = false;
}
$metaconsole_enabled = is_metaconsole();
}
$get_only_string_modules = false;
@ -5161,15 +5165,22 @@ function ui_print_agent_autocomplete_input($parameters)
}
';
} else if ($from_wux_transaction != '') {
if (is_metaconsole() === true) {
$inputNode = 'inputs.push ("server_id=" + $("#'.$input_id_server_id.'").val());';
} else {
$inputNode = '';
}
$javascript_code_function_select = '
function function_select_'.$input_name.'(agent_name) {
$("#'.$selectbox_id.'").empty();
var inputs = [];
inputs.push ("id_agent=" + $("#'.$hidden_input_idagent_id.'").val());
inputs.push ("get_agent_transactions=1");
inputs.push ("get_agent_transactions=1");
inputs.push ("page=enterprise/include/ajax/wux_transaction.ajax");
'.$inputNode.'
jQuery.ajax ({
data: inputs.join ("&"),
type: "POST",
@ -5457,14 +5468,11 @@ function ui_print_agent_autocomplete_input($parameters)
server_name = ui.item.ip;
}
if (('.((int) $use_input_id_server).')
|| ('.((int) $print_input_id_server).')) {
server_id = ui.item.id_server;
}
//Put the name
$(this).val(agent_name);

View File

@ -55,6 +55,10 @@ if ($file === '' || $hash === '' || $hash !== md5($file_raw.$config['server_uniq
$downloadable_file = $_SERVER['DOCUMENT_ROOT'].'/pandora_console/attachment/files_repo/'.$file;
break;
case 'godmode/servers/plugin':
$downloadable_file = $_SERVER['DOCUMENT_ROOT'].'/pandora_console/attachment/plugin/'.$file;
break;
case $main_collections:
$downloadable_file = $_SERVER['DOCUMENT_ROOT'].'/pandora_console/attachment/collection/'.$file;
break;

View File

@ -169,6 +169,11 @@ function pandoraFlotPieCustom(
var label_conf;
var show_legend = true;
// Set default value if not come like a number.
if (isNaN(width) === true) {
width = 451;
}
if (width <= 450) {
show_legend = false;
label_conf = {
@ -222,6 +227,9 @@ function pandoraFlotPieCustom(
conf_pie.series.pie.label = { show: false };
}
// Avoid issues with 0 width values.
$("#" + graph_id).width(width);
var plot = $.plot($("#" + graph_id), data, conf_pie);
if (no_data == data.length) {
$("#" + graph_id + " .overlay").remove();

View File

@ -118,6 +118,7 @@ function flot_area_graph(
$array_events_alerts
) {
global $config;
global $is_mobile;
// Get a unique identifier to graph.
$graph_id = uniqid('graph_');
@ -145,7 +146,7 @@ function flot_area_graph(
break;
}
if ($config['style'] === 'pandora_black' && ($params['pdf'] === false || $params['pdf'] === null )
if ($config['style'] === 'pandora_black' && ($params['pdf'] === false || $params['pdf'] === null) && (isset($is_mobile) === false || $is_mobile === false)
) {
$background_style = '#222';
$params['grid_color'] = '#fff';
@ -170,7 +171,7 @@ function flot_area_graph(
// Set some containers to legend, graph, timestamp tooltip, etc.
if ($params['show_legend']) {
$return .= '<p id="legend_'.$graph_id.'" style="text-align:left; width: '.$params['width'].'px;"></p>';
$return .= '<p id="legend_'.$graph_id.'" class="legend_background" style="text-align:left; width: '.$params['width'].'px;"></p>';
}
if (isset($params['graph_combined']) === true && $params['graph_combined']
@ -760,10 +761,23 @@ function flot_slicesbar_graph(
$graph_id = uniqid('graph_');
// Set some containers to legend, graph, timestamp tooltip, etc.
$height = ((int) $height + 15);
if (is_numeric($height) === true) {
$height = ((int) $height + 15);
}
$style = 'width:'.$width.'%;';
$style .= 'height:'.$height.'px;';
// Fixed height size.
if (empty($height) === true) {
$style .= 'height: 100%;';
} else {
if (is_numeric($height) === true) {
$style .= 'height: '.$height.'px;';
} else {
$style .= 'height: '.$height.';';
}
}
$return = "<div id='".$graph_id."' class='noresizevc graph ".$adapt_key."' style='".$style."'></div>";
$return .= "<div id='value_".$graph_id."' class='flot_container'></div>";

View File

@ -2784,7 +2784,7 @@ function donutNarrowGraph(
arc = d3.svg
.arc()
.outerRadius(radius)
.innerRadius(radius - radius / 2.5);
.innerRadius(radius - radius / 6);
svg = donutbody
.append("svg")

View File

@ -1113,6 +1113,10 @@ function load_interfaces(selected_links) {
);
$("#relations_table tbody").append(template_relation_row);
// Update input for transform in select2.
$("#interface_source_" + i).select2();
$("#interface_target_" + i).select2();
template_relation_row = null;
});
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -281,11 +281,11 @@ function agent_changed_by_multiple_agents(event, id_agent, selected) {
$.each(data, function(i, val) {
var s = js_html_entity_decode(val);
s = s.replace(/"/g, "&quot;").replace(/'/g, "&apos;");
i = i.replace(/"/g, "&quot;").replace(/'/g, "&apos;");
$("#module").append(
$("<option></option>")
.html(s)
.attr("value", i)
.attr("title", s)
$('<option value="' + i + '" title="' + s + '"></option>').text(val)
);
all_common_modules.push(i);
@ -385,12 +385,11 @@ function agent_changed_by_multiple_agents_with_alerts(
}
}
jQuery.each(data, function(i, val) {
s = js_html_entity_decode(val);
$("#module").append(
$("<option></option>")
.html(s)
.attr("value", val)
);
var s = js_html_entity_decode(val);
s = s.replace(/"/g, "&quot;").replace(/'/g, "&apos;");
$("#module").append($('<option value="' + s + '"></option>').text(val));
$("#module").fadeIn("normal");
});
if (selected != undefined) $("#module").attr("value", selected);
@ -481,12 +480,22 @@ function alert_templates_changed_by_multiple_agents_with_alerts(
}
}
jQuery.each(data, function(i, val) {
s = js_html_entity_decode(val);
var decoded_val = js_html_entity_decode(val);
decoded_val = decoded_val
.replace(/"/g, "&quot;")
.replace(/'/g, "&apos;");
$("#module").append(
$("<option></option>")
.html(s)
.attr("value", val)
$(
'<option value="' +
decoded_val +
'" title="' +
decoded_val +
'"></option>'
).text(val)
);
$("#module").fadeIn("normal");
});
if (selected != undefined) $("#module").attr("value", selected);
@ -1324,9 +1333,13 @@ function defineTinyMCE(added_config) {
theme_advanced_buttons1: buttons1,
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "none",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true,
convert_urls: false,
element_format: "html"
element_format: "html",
object_resizing: true,
autoresize_bottom_margin: 50,
autoresize_on_init: true
});
if (!isEmptyObject(added_config)) {
@ -1376,6 +1389,8 @@ function removeTinyMCE(elementID) {
function addTinyMCE(elementID) {
if (elementID.length > 0 && !isEmptyObject(tinyMCE))
tinyMCE.EditorManager.execCommand("mceAddControl", true, elementID);
tinyMCE.EditorManager.execCommand("mceAutoResize");
tinymce.EditorManager.execCommand("mceTableSizingMode", false, "responsive");
}
function toggle_full_value(id) {

View File

@ -12,7 +12,6 @@ function parse_alert_command(command, classs) {
// Only render values different from ''
var field = "_field" + nfield + "_";
var regex = new RegExp(field, "gi");
console.log($(this).val());
if ($(this).val() == "") {
if (
classs == "fields_recovery" &&

View File

@ -809,6 +809,7 @@ function dashboardLoadWuxStats(settings) {
page: settings.page,
wux_transaction_stats: 1,
id_agent: settings.id_agent,
server_id: settings.server_id,
transaction: settings.transaction,
view_all_stats: settings.view_all_stats,
auth_class: settings.auth_class,
@ -844,6 +845,8 @@ function processTreeSearch(settings) {
filters.statusModule = settings.statusModule;
filters.groupID = settings.searchGroup;
filters.searchHirearchy = 1;
filters.show_not_init_agents = 1;
filters.show_not_init_modules = 1;
$.ajax({
type: "POST",
@ -1144,6 +1147,11 @@ function dashboardLoadVC(settings) {
return item;
});
settings.items.map(function(item) {
item["cellId"] = settings.cellId;
return item;
});
createVisualConsole(
container,
settings.props,
@ -1161,6 +1169,10 @@ function dashboardLoadVC(settings) {
// eslint-disable-next-line no-unused-vars
function dashboardShowEventDialog(settings) {
settings = JSON.parse(atob(settings));
var dialog_exist = $("div[aria-describedby='event_details_window']");
if (dialog_exist.length == 1) {
$("div[aria-describedby='event_details_window']").remove();
}
$.ajax({
method: "post",
url: settings.ajaxUrl,

View File

@ -66,16 +66,26 @@ function snmpBrowse() {
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$("#spinner").css("display", "none");
$("#snmp_browser").html(
"<p>Status: " +
var htmlError = "";
if (XMLHttpRequest.responseText) {
htmlError =
"<p><b>Status:</b> " +
textStatus +
"</p><p>" +
"Error: " +
errorThrown +
"</p><p>" +
XMLHttpRequest.responseText +
"</p>"
);
"</p>";
} else {
htmlError =
"<p><b>Status:</b> " +
textStatus +
"</p><p>" +
"<b>Error:</b> " +
errorThrown +
"</p>";
}
$("#snmp_browser").html(htmlError);
}
});
}

View File

@ -721,6 +721,7 @@ final class DBMaintainer
$umc->updateMR($path);
} catch (\Exception $e) {
// TODO: Send an event to notify errors.
$this->lastError = $e->getMessage();
$return = false;
}
} else {

View File

@ -315,9 +315,9 @@ class AgentModuleWidget extends Widget
function ($carry, $item) {
$d = explode('|', $item);
if (isset($d[1]) === true) {
$carry[] = $d[1];
$carry[] = \io_safe_output($d[1]);
} else {
$carry[] = $item;
$carry[] = \io_safe_output($item);
}
return $carry;
@ -413,7 +413,7 @@ class AgentModuleWidget extends Widget
array $visualData,
array $allModules
):string {
$style = 'display:flex; width:100%; height:100%; margin: 10px;';
$style = 'display:flex; width:100%; margin: 10px;';
$table_data = '<div style="'.$style.'">';
$table_data .= '<table class="widget_agent_module transparent mrgn_0px" cellpadding="1" cellspacing="0" border="0">';
@ -424,7 +424,7 @@ class AgentModuleWidget extends Widget
foreach ($allModules as $module_name) {
$file_name = ui_print_truncate_text(
$module_name,
\io_safe_output($module_name),
'module_small',
false,
true,
@ -466,7 +466,7 @@ class AgentModuleWidget extends Widget
}
$file_name = \ui_print_truncate_text(
$row['agent_alias'],
\io_safe_output($row['agent_alias']),
'agent_small',
false,
true,
@ -636,18 +636,27 @@ class AgentModuleWidget extends Widget
}
// Extract info all modules selected.
$target_modules = explode(
self::MODULE_SEPARATOR,
$this->values['mModules']
);
if (is_metaconsole() === true
&& $this->values['mShowCommonModules'] === '0'
) {
$target_modules = $this->values['mModules'];
if (is_metaconsole() === true) {
$target_modules = explode(
self::MODULE_SEPARATOR,
$this->values['mModules']
);
$all_modules = $target_modules;
} else {
$all_modules = Module::search(
['id_agente_modulo' => $target_modules]
);
if (is_array($target_modules) === true
|| is_numeric($target_modules) === true
) {
$all_modules = Module::search(
['id_agente_modulo' => $target_modules]
);
} else {
// From previous definitions.
$all_modules = Module::search(
['id_agente_modulo' => explode(',', $target_modules)]
);
}
}
if ($all_modules !== null) {
@ -661,7 +670,12 @@ class AgentModuleWidget extends Widget
if (is_object($item) === true) {
$carry[$item->name()] = null;
} else {
$carry[$item] = null;
if ((is_metaconsole() === true
&& $this->values['mShowCommonModules'] !== '1')
|| is_metaconsole() === false
) {
$carry[$item] = null;
}
}
return $carry;
@ -699,9 +713,19 @@ class AgentModuleWidget extends Widget
if (is_metaconsole() === true
&& $this->values['mShowCommonModules'] === '1'
) {
// MC should connect to nodes and retrieve information
// from targets.
$modules = $agent->searchModules(
['id_agente_modulo' => $target_modules]
);
foreach ($modules as $module) {
if ($module === null) {
$reduceAllModules[] = null;
} else {
$reduceAllModules[$module->name()] = null;
}
}
} else {
$modules = $agent->searchModules(
['nombre' => array_keys($reduceAllModules)]
@ -714,10 +738,6 @@ class AgentModuleWidget extends Widget
continue;
}
if ((bool) is_metaconsole() === true) {
$reduceAllModules[$module->name()] = null;
}
$visualData[$agent_id]['modules'][$module->name()] = $module->getStatus()->estado();
}
@ -729,7 +749,6 @@ class AgentModuleWidget extends Widget
}
}
ksort($reduceAllModules);
$allModules = array_keys($reduceAllModules);
if ($allModules === null) {
$allModules = [];

View File

@ -529,11 +529,11 @@ class EventsListWidget extends Widget
if ($customFilter !== false) {
$filter = $customFilter;
$filter['tag_with'] = base64_encode(
json_encode($filter['tag_with'])
io_safe_output($filter['tag_with'])
);
$filter['tag_without'] = base64_encode(
json_encode($filter['tag_without'])
io_safe_output($filter['tag_without'])
);
if (!empty($filter['id_agent_module'])) {
@ -613,6 +613,8 @@ class EventsListWidget extends Widget
'tg.nombre as group_name',
];
$home_url = $config['homeurl'];
if ((bool) \is_metaconsole() === false
|| $this->nodeId > 0
) {
@ -676,6 +678,14 @@ class EventsListWidget extends Widget
$table->size = [];
$table->rowclass = [];
// If its node, get direccion value and construct rute.
if ($this->nodeId !== null && $this->nodeId > 0) {
metaconsole_restore_db();
$result = db_get_all_rows_sql('SELECT server_url FROM tmetaconsole_setup WHERE id = '.$this->nodeId.'');
$home_url = $result[0]['server_url'];
metaconsole_connect(null, $this->nodeId);
}
foreach ($events as $event) {
$data = [];
$event['evento'] = \io_safe_output($event['evento']);
@ -684,8 +694,8 @@ class EventsListWidget extends Widget
$agent_alias = \agents_get_alias($event['id_agente']);
if ($agent_alias !== '') {
$data[1] = '<a href="'.$config['homeurl'];
$data[1] .= 'index.php?sec=estado';
$data[1] = '<a href="'.$home_url;
$data[1] .= '/index.php?sec=estado';
$data[1] .= '&sec2=operation/agentes/ver_agente';
$data[1] .= '&id_agente='.$event['id_agente'];
$data[1] .= '" title="'.$event['evento'].'">';
@ -761,11 +771,6 @@ class EventsListWidget extends Widget
$output .= "<div id='event_response_window'></div>";
$output .= "<div id='event_response_command_window' title='";
$output .= \__('Parameters')."'></div>";
$output .= \ui_require_javascript_file(
'pandora_events',
'include/javascript/',
true
);
} else {
$output .= '<div class="container-center">';
$output .= \ui_print_info_message(

View File

@ -396,9 +396,20 @@ class ModuleValueWidget extends Widget
$output .= '<div class="container-icon">';
// Div value.
$output .= '<div style="flex: 0 1 '.$sizeValue.'px; font-size:'.$sizeValue.'px;">';
$output .= remove_right_zeros(
number_format($data_module, $config['graph_precision'])
);
if (is_numeric($data_module) === true) {
$dataDatos = remove_right_zeros(
number_format(
$data_module,
$config['graph_precision']
)
);
} else {
$dataDatos = trim($data_module);
}
$output .= $dataDatos;
$output .= '</div>';
if (empty($label) === false) {

View File

@ -414,10 +414,32 @@ class TopNWidget extends Widget
$quantity
);
$modules = @db_get_all_rows_sql(
$sql,
$search_in_history_db
);
if (is_metaconsole() === true) {
$servers = metaconsole_get_servers();
$modules = [];
foreach ($servers as $server) {
if (metaconsole_connect(null, $server['id']) !== NOERR) {
continue;
}
$modules = array_merge(
$modules,
@db_get_all_rows_sql(
$sql,
$search_in_history_db
)
);
metaconsole_restore_db();
}
} else {
$modules = @db_get_all_rows_sql(
$sql,
$search_in_history_db
);
}
if (empty($modules) === true) {
$output .= '<div class="container-center">';

View File

@ -367,6 +367,8 @@ class TopNEventByGroupWidget extends Widget
$this->values['groupId'] = explode(',', $this->values['groupId'][0]);
$event_table = (is_metaconsole() === true) ? 'tmetaconsole_event' : 'tevento';
if (empty($this->values['groupId']) === true) {
$output .= '<div class="container-center">';
$output .= \ui_print_info_message(
@ -388,12 +390,13 @@ class TopNEventByGroupWidget extends Widget
if ($all_group === false) {
$sql = sprintf(
'SELECT id_agente, COUNT(*) AS count
FROM tevento
FROM %s
WHERE utimestamp >= %d
AND id_grupo IN (%s)
GROUP BY id_agente
ORDER BY count DESC
LIMIT %d',
$event_table,
$timestamp,
implode(',', $this->values['groupId']),
$this->values['amountShow']
@ -401,11 +404,12 @@ class TopNEventByGroupWidget extends Widget
} else {
$sql = sprintf(
'SELECT id_agente, COUNT(*) AS count
FROM tevento
FROM %s
WHERE utimestamp >= %d
GROUP BY id_agente
ORDER BY count DESC
LIMIT %d',
$event_table,
$timestamp,
$this->values['amountShow']
);
@ -428,9 +432,18 @@ class TopNEventByGroupWidget extends Widget
if ($row['id_agente'] == 0) {
$name = __('System');
} else {
$name = io_safe_output(
agents_get_alias($row['id_agente'])
);
if (is_metaconsole() === true) {
$name = (string) db_get_value(
'alias',
'tmetaconsole_agent',
'id_tagente',
(int) $row['id_agente']
);
} else {
$name = io_safe_output(
agents_get_alias($row['id_agente'])
);
}
}
$name .= ' ('.$row['count'].')';

View File

@ -365,6 +365,8 @@ class TopNEventByModuleWidget extends Widget
$this->values['groupId'] = explode(',', $this->values['groupId'][0]);
$event_table = (is_metaconsole() === true) ? 'tmetaconsole_event' : 'tevento';
if (empty($this->values['groupId']) === true) {
$output = '<div class="container-center">';
$output .= \ui_print_info_message(
@ -389,12 +391,13 @@ class TopNEventByModuleWidget extends Widget
id_agentmodule,
event_type,
COUNT(*) AS count
FROM tevento
FROM %s
WHERE utimestamp >= %d
AND id_grupo IN (%s)
GROUP BY id_agentmodule, event_type
ORDER BY count DESC
LIMIT %d',
$event_table,
$timestamp,
implode(',', $this->values['groupId']),
$this->values['amountShow']
@ -405,11 +408,12 @@ class TopNEventByModuleWidget extends Widget
id_agentmodule,
event_type,
COUNT(*) AS count
FROM tevento
FROM %s
WHERE utimestamp >= %d
GROUP BY id_agentmodule, event_type
ORDER BY count DESC
LIMIT %d',
$event_table,
$timestamp,
$this->values['amountShow']
);

View File

@ -259,7 +259,7 @@ class WuxWidget extends Widget
'label' => __('Wux transaction'),
'arguments' => [
'type' => 'autocomplete_module',
'fields' => $fields,
'fields' => [],
'name' => 'transactionId',
'selected' => $values['transactionId'],
'return' => true,

Some files were not shown because too many files have changed in this diff Show More