Merge branch 'develop' into 'ent-7683-switch-en-consola-para-desactivar-la-actualizacion-automatica-de-la-ip-principal'

# Conflicts:
#   pandora_console/extras/mr/56.sql
This commit is contained in:
Luis 2022-08-10 11:26:05 +00:00
commit de1977fec1
52 changed files with 2253 additions and 1008 deletions

View File

@ -72,7 +72,7 @@ check_pre_pandora () {
export MYSQL_PWD=$DBPASS
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
rpm -qa | grep 'pandorafms_' &>> /dev/null && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true

View File

@ -76,7 +76,7 @@ check_pre_pandora () {
export MYSQL_PWD=$DBPASS
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
rpm -qa | grep 'pandorafms_' &>> /dev/null && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
@ -350,8 +350,8 @@ vmware_dependencies=" \
perl-Crypt-Random-Seed \
perl-Math-Random-ISAAC \
perl-JSON \
perl-Crypt-SSLeay \
http://firefly.artica.es/centos8/perl-Crypt-OpenSSL-AES-0.02-1.el8.x86_64.rpm \
http://mirror.ghettoforge.org/distributions/gf/el/8/gf/x86_64/perl-Crypt-SSLeay-0.73_07-1.gf.el8.x86_64.rpm \
http://firefly.artica.es/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm"
execute_cmd "dnf install -y $vmware_dependencies" "Installing SDK VMware perl dependencies"

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.763-220729
Version: 7.0NG.763-220810
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.763-220729"
pandora_version="7.0NG.763-220810"
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.763';
use constant AGENT_BUILD => '220729';
use constant AGENT_BUILD => '220810';
# 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.763
%define release 220729
%define release 220810
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

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

View File

@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.763"
PI_BUILD="220729"
PI_BUILD="220810"
OS_NAME=`uname -s`
FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{220729}
{220810}
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.763 Build 220729")
#define PANDORA_VERSION ("7.0NG.763 Build 220810")
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.763(Build 220729))"
VALUE "ProductVersion", "(7.0NG.763(Build 220810))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.763-220729
Version: 7.0NG.763-220810
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.763-220729"
pandora_version="7.0NG.763-220810"
package_pear=0
package_pandora=1

View File

@ -40,6 +40,9 @@ ALTER TABLE `tautoconfig` ADD COLUMN `executed` TINYINT UNSIGNED NOT NULL DEFAUL
ALTER TABLE `tusuario` DROP COLUMN `metaconsole_assigned_server`;
ALTER TABLE `tagente` ADD COLUMN `fixed_ip` TINYINT UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `tipam_network` DROP FOREIGN KEY `tipam_network_ibfk_1`;
ALTER TABLE `tipam_network` MODIFY COLUMN `id_recon_task` INT UNSIGNED DEFAULT 0;
ALTER TABLE `tipam_network` ADD CONSTRAINT `tipam_network_ibfk_1` FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `tevent_filter` ADD COLUMN `search_secondary_groups` INT NOT NULL DEFAULT 0;

View File

@ -436,9 +436,22 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
);
$header_logout .= '</a></div>';
if (is_reporting_console_node() === true) {
echo '<div class="header_left">';
echo '<span class="header_title">';
echo $config['custom_title_header'];
echo '</span>';
echo '<span class="header_subtitle">';
echo $config['custom_subtitle_header'];
echo '</span>';
echo '</div>';
echo '<div class="header_center"></div>';
echo '<div class="header_right">'.$header_support, $header_docu, $header_user, $header_logout.'</div>';
} else {
echo '<div class="header_left"><span class="header_title">'.$config['custom_title_header'].'</span><span class="header_subtitle">'.$config['custom_subtitle_header'].'</span></div>
<div class="header_center">'.$header_searchbar.'</div>
<div class="header_right">'.$header_autorefresh, $header_autorefresh_counter, $header_discovery, $servers_list, $header_feedback, $header_support, $header_docu, $header_user, $header_logout.'</div>';
}
?>
</div> <!-- Closes #table_header_inner -->
</div> <!-- Closes #table_header -->

View File

@ -58,6 +58,10 @@ if (isset($config['autohidden_menu']) === true && (bool) $config['autohidden_men
// Start of full lateral menu.
echo sprintf('<div id="menu_full" class="menu_full_%s">', $menuTypeClass);
$url_logo = ui_get_full_url('index.php');
if (is_reporting_console_node() === true) {
$url_logo = 'index.php?logged=1&sec=discovery&sec2=godmode/servers/discovery&wiz=tasklist';
}
// Header logo.
html_print_div(
@ -65,7 +69,7 @@ html_print_div(
'class' => 'logo_green',
'content' => html_print_anchor(
[
'href' => ui_get_full_url('index.php'),
'href' => $url_logo,
'content' => html_print_header_logo_image(
$menuCollapsed,
true

View File

@ -0,0 +1,103 @@
<?php
/**
* Static page to lock access to console but console reporting
*
* @category Reporting
* @package Pandora FMS
* @subpackage Applications
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
global $config;
// Begin.
echo ui_require_css_file('maintenance', 'include/styles/', true);
$data = [];
$data['id_node'] = $config['metaconsole_node_id'];
$data['check_ver'] = $config['current_package'];
$data['check_mr'] = $config['MR'];
$data['collection_max_size'] = $config['collection_max_size'];
$data['check_post_max_size'] = ini_get('post_max_size');
$data['check_upload_max_filesize'] = ini_get('upload_max_filesize');
$data['check_memory_limit'] = ini_get('memory_limit');
$data['check_php_version'] = phpversion();
?>
<html>
<body class="responsive-height">
<div class="responsive center padding-6">
<p><?php echo __('Console only reporting node'); ?></p>
<br>
<br>
<?php
html_print_image(
'images/maintenance.png',
false,
[
'class' => 'responsive',
'width' => 800,
]
);
?>
<br>
<br>
<p><?php echo __('Info'); ?></p>
<ul class="container-list">
<li>
<span class=title>
<?php echo __('Version'); ?>:
</span>
<span>
<?php echo $config['current_package']; ?>
</span>
</li>
<li>
<span class=title>
<?php echo __('Mr'); ?>:
</span>
<span>
<?php echo $config['MR']; ?>
</span>
</li>
<li>
<span class=title>
<?php echo __('Memory limit'); ?>:
</span>
<span>
<?php echo ini_get('memory_limit'); ?>
</span>
</li>
<li>
<span class=title>
<?php echo __('Php version'); ?>:
</span>
<span>
<?php echo phpversion(); ?>
</span>
</li>
</ul>
</div>
</body>
</html>

View File

@ -1518,7 +1518,7 @@ $(document).ready (function () {
}
else{
window.open(
'https://pandorafms.com/manual/en/documentation/03_monitoring/03_remote_monitorins#monitoring_through_network_modules_with_snmp',
'https://pandorafms.com/manual/en/documentation/03_monitoring/03_remote_monitoring#monitoring_through_network_modules_with_snmp',
'_blank',
'width=800,height=600'
);

View File

@ -28,15 +28,18 @@
// Begin.
require_once 'include/config.php';
require_once 'include/functions_menu.php';
check_login();
enterprise_include('godmode/menu.php');
require_once 'include/functions_menu.php';
$access_console_node = !is_reporting_console_node();
$menu_godmode = [];
$menu_godmode['class'] = 'godmode';
if ($access_console_node === true) {
enterprise_include('godmode/menu.php');
}
if ((bool) check_acl($config['id_user'], 0, 'AR') === true
|| (bool) check_acl($config['id_user'], 0, 'AW') === true
|| (bool) check_acl($config['id_user'], 0, 'RR') === true
@ -46,9 +49,11 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
$sub = [];
$sub['godmode/servers/discovery&wiz=main']['text'] = __('Start');
$sub['godmode/servers/discovery&wiz=main']['id'] = 'Discovery';
$sub['godmode/servers/discovery&wiz=tasklist']['text'] = __('Task list');
$sub['godmode/servers/discovery&wiz=tasklist']['id'] = 'tasklist';
if ($access_console_node === true) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true
|| (bool) check_acl($config['id_user'], 0, 'PM') === true
) {
@ -73,6 +78,7 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
enterprise_hook('cloud_menu');
enterprise_hook('console_task_menu');
}
}
// Add to menu.
$menu_godmode['discovery']['text'] = __('Discovery');
@ -81,15 +87,15 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
$menu_godmode['discovery']['sub'] = $sub;
}
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'AW') === true || (bool) check_acl($config['id_user'], 0, 'AD') === true) {
if ($access_console_node === true) {
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'AW') === true || (bool) check_acl($config['id_user'], 0, 'AD') === true) {
$sub['godmode/agentes/modificar_agente']['text'] = __('Manage agents');
$sub['godmode/agentes/modificar_agente']['id'] = 'Manage agents';
$sub['godmode/agentes/modificar_agente']['subsecs'] = ['godmode/agentes/configurar_agente'];
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub['godmode/agentes/fields_manager']['text'] = __('Custom fields');
$sub['godmode/agentes/fields_manager']['id'] = 'Custom fields';
@ -105,57 +111,57 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub['godmode/groups/modu_group_list']['text'] = __('Module groups');
$sub['godmode/groups/modu_group_list']['id'] = 'Module groups';
}
}
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
// Netflow.
if ((bool) $config['activate_netflow'] === true) {
$sub['godmode/netflow/nf_edit']['text'] = __('Netflow filters');
$sub['godmode/netflow/nf_edit']['id'] = 'Netflow filters';
}
}
}
if (empty($sub) === false) {
if (empty($sub) === false) {
$menu_godmode['gagente']['text'] = __('Resources');
$menu_godmode['gagente']['sec2'] = 'godmode/agentes/modificar_agente';
$menu_godmode['gagente']['id'] = 'god-resources';
$menu_godmode['gagente']['sub'] = $sub;
}
}
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub['godmode/groups/group_list']['text'] = __('Manage agents groups');
$sub['godmode/groups/group_list']['id'] = 'Manage agents groups';
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
// Tag.
$sub['godmode/tag/tag']['text'] = __('Module tags');
$sub['godmode/tag/tag']['id'] = 'Module tags';
$sub['godmode/tag/tag']['subsecs'] = 'godmode/tag/edit_tag';
enterprise_hook('enterprise_acl_submenu');
}
}
if ((bool) check_acl($config['id_user'], 0, 'UM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'UM') === true) {
$sub['godmode/users/user_list']['text'] = __('Users management');
$sub['godmode/users/user_list']['id'] = 'Users management';
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub['godmode/users/profile_list']['text'] = __('Profile management');
$sub['godmode/users/profile_list']['id'] = 'Profile management';
}
}
if (empty($sub) === false) {
if (empty($sub) === false) {
$menu_godmode['gusuarios']['sub'] = $sub;
$menu_godmode['gusuarios']['text'] = __('Profiles');
$menu_godmode['gusuarios']['sec2'] = 'godmode/users/user_list';
$menu_godmode['gusuarios']['id'] = 'god-users';
}
}
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub['templates']['text'] = __('Templates');
$sub['templates']['id'] = 'Templates';
$sub['templates']['type'] = 'direct';
@ -174,18 +180,18 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
enterprise_hook('inventory_submenu');
enterprise_hook('autoconfiguration_menu');
enterprise_hook('agent_repository_menu');
}
}
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
enterprise_hook('policies_menu');
enterprise_hook('agents_submenu');
}
}
if ((bool) check_acl($config['id_user'], 0, 'NW') === true) {
if ((bool) check_acl($config['id_user'], 0, 'NW') === true) {
enterprise_hook('agents_ncm_submenu');
}
}
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
$sub['gmassive']['text'] = __('Bulk operations');
$sub['gmassive']['id'] = 'Bulk operations';
$sub['gmassive']['type'] = 'direct';
@ -206,48 +212,48 @@ if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
$sub['gmassive']['sub2'] = $sub2;
$sub2 = [];
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'UM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'UM') === true) {
$sub['godmode/groups/group_list&tab=credbox']['text'] = __('Credential store');
$sub['godmode/groups/group_list&tab=credbox']['id'] = 'credential store';
}
}
// Manage events.
$sub2 = [];
if ((bool) check_acl($config['id_user'], 0, 'EW') === true || (bool) check_acl($config['id_user'], 0, 'EM') === true) {
// Manage events.
$sub2 = [];
if ((bool) check_acl($config['id_user'], 0, 'EW') === true || (bool) check_acl($config['id_user'], 0, 'EM') === true) {
// Custom event fields.
$sub2['godmode/events/events&section=filter']['text'] = __('Event filters');
$sub2['godmode/events/events&section=filter']['id'] = 'Event filters';
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$sub2['godmode/events/events&section=fields']['text'] = __('Custom columns');
$sub2['godmode/events/events&section=fields']['id'] = 'Custom events';
$sub2['godmode/events/events&section=responses']['text'] = __('Event responses');
$sub2['godmode/events/events&section=responses']['id'] = 'Event responses';
}
}
if (empty($sub2) === false) {
if (empty($sub2) === false) {
$sub['geventos']['text'] = __('Events');
$sub['geventos']['id'] = 'events';
$sub['geventos']['sec2'] = 'godmode/events/events&section=filter';
$sub['geventos']['type'] = 'direct';
$sub['geventos']['subtype'] = 'nolink';
$sub['geventos']['sub2'] = $sub2;
}
}
if (empty($sub) === false) {
if (empty($sub) === false) {
$menu_godmode['gmodules']['text'] = __('Configuration');
$menu_godmode['gmodules']['sec2'] = 'godmode/modules/manage_network_templates';
$menu_godmode['gmodules']['id'] = 'god-configuration';
$menu_godmode['gmodules']['sub'] = $sub;
}
}
if ((bool) check_acl($config['id_user'], 0, 'LW') === true
if ((bool) check_acl($config['id_user'], 0, 'LW') === true
|| (bool) check_acl($config['id_user'], 0, 'LM') === true
|| (bool) check_acl($config['id_user'], 0, 'AD') === true
) {
) {
$menu_godmode['galertas']['text'] = __('Alerts');
$menu_godmode['galertas']['sec2'] = 'godmode/alerts/alert_list';
$menu_godmode['galertas']['id'] = 'god-alerts';
@ -279,9 +285,9 @@ if ((bool) check_acl($config['id_user'], 0, 'LW') === true
}
$menu_godmode['galertas']['sub'] = $sub;
}
}
if ((bool) check_acl($config['id_user'], 0, 'AW') === true || (bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true || (bool) check_acl($config['id_user'], 0, 'PM') === true) {
// Servers.
$menu_godmode['gservers']['text'] = __('Servers');
$menu_godmode['gservers']['sec2'] = 'godmode/servers/modificar_server';
@ -310,9 +316,9 @@ if ((bool) check_acl($config['id_user'], 0, 'AW') === true || (bool) check_acl($
}
$menu_godmode['gservers']['sub'] = $sub;
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
// Setup.
$menu_godmode['gsetup']['text'] = __('Setup');
$menu_godmode['gsetup']['sec2'] = 'general';
@ -382,8 +388,10 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
enterprise_hook('skins_submenu');
$menu_godmode['gsetup']['sub'] = $sub;
}
}
if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($config['id_user'], 0, 'DM') === true) {
$menu_godmode['gextensions']['text'] = __('Admin tools');
$menu_godmode['gextensions']['sec2'] = 'godmode/extensions';
@ -392,6 +400,7 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
$sub = [];
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
if ($access_console_node === true) {
// Audit //meter en extensiones.
$sub['godmode/audit_log']['text'] = __('System audit log');
$sub['godmode/audit_log']['id'] = 'System audit log';
@ -404,9 +413,12 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
$sub['godmode/setup/news']['text'] = __('Site news');
$sub['godmode/setup/news']['id'] = 'Site news';
}
$sub['godmode/setup/file_manager']['text'] = __('File manager');
$sub['godmode/setup/file_manager']['id'] = 'File manager';
if ($access_console_node === true) {
if (is_user_admin($config['id_user']) === true) {
$sub['extensions/db_status']['text'] = __('DB Schema Check');
$sub['extensions/db_status']['id'] = 'DB Schema Check';
@ -418,11 +430,13 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
enterprise_hook('elasticsearch_interface_menu');
}
}
}
$menu_godmode['gextensions']['sub'] = $sub;
}
if (is_array($config['extensions']) === true) {
if ($access_console_node === true) {
if (is_array($config['extensions']) === true) {
$sub = [];
$sub2 = [];
@ -506,28 +520,28 @@ if (is_array($config['extensions']) === true) {
$menu_godmode['gextensions']['sub'] = $submenu;
}
}
}
}
$menu_godmode['links']['text'] = __('Links');
$menu_godmode['links']['sec2'] = '';
$menu_godmode['links']['id'] = 'god-links';
$menu_godmode['links']['text'] = __('Links');
$menu_godmode['links']['sec2'] = '';
$menu_godmode['links']['id'] = 'god-links';
$sub = [];
$rows = db_get_all_rows_in_table('tlink', 'name');
foreach ($rows as $row) {
$sub = [];
$rows = db_get_all_rows_in_table('tlink', 'name');
foreach ($rows as $row) {
// Audit //meter en extensiones.
$sub[$row['link']]['text'] = $row['name'];
$sub[$row['link']]['id'] = $row['name'];
$sub[$row['link']]['type'] = 'direct';
$sub[$row['link']]['subtype'] = 'new_blank';
}
}
$menu_godmode['links']['sub'] = $sub;
$menu_godmode['links']['sub'] = $sub;
}
// Warp Manager.
if ((bool) check_acl($config['id_user'], 0, 'PM') === true && (bool) $config['enable_update_manager'] === true) {
$menu_godmode['messages']['text'] = __('Warp Update');
;
$menu_godmode['messages']['id'] = 'god-um_messages';
$menu_godmode['messages']['sec2'] = '';
@ -547,8 +561,9 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true && (bool) $config['en
$menu_godmode['messages']['sub'] = $sub;
}
// Module library.
if ((bool) check_acl($config['id_user'], 0, 'AR') === true) {
if ($access_console_node === true) {
// Module library.
if ((bool) check_acl($config['id_user'], 0, 'AR') === true) {
$menu_godmode['gmodule_library']['text'] = __('Module library');
$menu_godmode['gmodule_library']['id'] = 'god-module_library';
@ -560,6 +575,7 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true) {
$sub['godmode/module_library/module_library_view&tab=categories']['id'] = 'categories';
$menu_godmode['gmodule_library']['sub'] = $sub;
}
}
if ((bool) $config['pure'] === false) {

View File

@ -158,6 +158,12 @@ if ($classname_selected === null) {
// Load classes and print selector.
$wiz_data = [];
foreach ($classes as $classpath) {
if (is_reporting_console_node() === true) {
if ($classpath !== '/var/www/html/pandora_console/godmode/wizards/DiscoveryTaskList.class.php') {
continue;
}
}
$classname = basename($classpath, '.class.php');
$obj = new $classname();

View File

@ -122,7 +122,6 @@ if (isset($_GET['server'])) {
$buttons = '';
if ($server_type !== 13) {
// Buttons.
$buttons = [
'standard_editor' => [
@ -135,13 +134,32 @@ if (isset($_GET['server'])) {
],
];
$buttons[$tab]['active'] = true;
if ($server_type === SERVER_TYPE_ENTERPRISE_SATELLITE) {
$buttons['agent_editor'] = [
'active' => false,
'text' => '<a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$id_server.'&ext='.$ext.'&tab=agent_editor&pure='.$pure.'">'.html_print_image('images/agent.png', true, ['title' => __('Advanced editor')]).'</a>',
];
}
$buttons[$tab]['active'] = true;
ui_print_page_header(__('Remote Configuration'), 'images/gm_servers.png', false, 'servers', true, $buttons);
if ($server_type !== 13 && $tab == 'standard_editor') {
if ($tab === 'standard_editor') {
$advanced_editor = false;
if ($server_type === 13) {
echo "<table cellpadding='4' cellspacing='4' class='databox filters font_bold margin-bottom-10' width='100%'>
<tr>";
echo '<td class="w100p">';
echo __('Dynamic search').'&nbsp;&nbsp;';
html_print_input_text('search_config_token', $search, '', 12);
echo '</td>';
echo '</tr></table>';
}
} else if ($tab === 'agent_editor' && $server_type === SERVER_TYPE_ENTERPRISE_SATELLITE) {
$advanced_editor = 'agent_editor';
}
enterprise_include('godmode/servers/server_disk_conf_editor.php');

View File

@ -497,6 +497,17 @@ $table->data[$i++][1] = html_print_checkbox_switch(
true
);
$table->data[$i][0] = __('Enable console report').ui_print_help_tip(
__('Enable console report'),
true
);
$table->data[$i++][1] = html_print_checkbox_switch(
'reporting_console_enable',
1,
$config['reporting_console_enable'],
true
);
echo '<form id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&amp;section=general&amp;pure='.$config['pure'].'">';
echo '<fieldset>';

View File

@ -162,7 +162,9 @@ class DiscoveryTaskList extends HTML
$ret = false;
}
if (is_reporting_console_node() === false) {
$ret2 = $this->showList();
}
if ($ret === false && $ret2 === false) {
include_once $config['homedir'].'/general/first_task/recon_view.php';

View File

@ -90,6 +90,7 @@ $node_id = (int) get_parameter('node_id', 0);
if ($get_comments === true) {
$event = get_parameter('event', false);
$event_rep = get_parameter('event_rep', false);
if ($event === false) {
return __('Failed to retrieve comments');
}
@ -97,12 +98,11 @@ if ($get_comments === true) {
$eventsGrouped = [];
// Consider if the event is grouped.
$whereGrouped = '1=1';
if (isset($event_rep) === true && $event_rep > 0) {
// Default grouped message filtering (evento and estado).
$whereGrouped = sprintf(
'`evento` = "%s" AND `estado` = "%s" AND `event_type` = "%s" ',
$event['evento'],
$event['estado'],
$event['event_type']
'`evento` = "%s"',
$event['evento']
);
// If id_agente is reported, filter the messages by them as well.
@ -119,6 +119,9 @@ if ($get_comments === true) {
(int) $event['id_agentmodule']
);
}
} else {
$whereGrouped = sprintf('`id_evento` = %d', $event['id_evento']);
}
try {
if (is_metaconsole() === true
@ -1629,7 +1632,7 @@ if ($get_extended_event) {
$filter = get_parameter('filter', []);
$similar_ids = get_parameter('similar_ids', $event_id);
$group_rep = $filter['group_rep'];
$event_rep = $event['event_rep'];
$event_rep = $group_rep;
$timestamp_first = $event['timestamp_first'];
$timestamp_last = $event['timestamp_last'];
$server_id = $event['server_id'];
@ -1964,7 +1967,8 @@ if ($get_extended_event) {
data : {
page: "include/ajax/events",
get_comments: 1,
event: '.json_encode($event).'
event: '.json_encode($event).',
event_rep: '.$event_rep.'
},
dataType : "html",
success: function (data) {

View File

@ -0,0 +1,768 @@
<?php
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
/**
* Controller for Audit Logs
*
* @category Controller
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 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.
* ============================================================================
*/
use Mpdf\Tag\Address;
use PandoraFMS\Agent as PandoraFMSAgent;
use PandoraFMS\Enterprise\Agent;
use function Composer\Autoload\includeFile;
// Begin.
global $config;
// Necessary classes for extends.
require_once $config['homedir'].'/include/class/HTML.class.php';
require_once $config['homedir'].'/include/functions_servers.php';
enterprise_include_once('include/functions_satellite.php');
/**
* Class SatelliteAgent
*/
class SatelliteAgent extends HTML
{
/**
* Allowed methods to be called using AJAX request.
*
* @var array
*/
public $AJAXMethods = [
'draw',
'addAgent',
'deleteAgent',
'loadModal',
];
/**
* Ajax page.
*
* @var string
*/
private $ajaxController;
/**
* Class constructor
*
* @param string $ajaxController Ajax controller.
*/
public function __construct(string $ajaxController)
{
global $config;
check_login();
if (check_acl($config['id_user'], 0, 'PM') === false
&& is_user_admin($config['id_user']) === true
) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Satellite agents'
);
include 'general/noaccess.php';
return;
}
// Set the ajax controller.
$this->ajaxController = $ajaxController;
// Capture all parameters before start.
$this->satellite_server = (int) get_parameter('server_remote');
if ($this->satellite_server !== 0) {
$this->satellite_name = servers_get_name($this->satellite_server);
$this->satellite_config = (array) config_satellite_get_config_file($this->satellite_name);
}
}
/**
* Run view
*
* @return void
*/
public function run()
{
// Javascript.
ui_require_jquery_file('pandora');
// CSS.
ui_require_css_file('wizard');
ui_require_css_file('discovery');
global $config;
// Datatables list.
try {
$columns = [
'name',
'address',
'actions',
];
$column_names = [
__('Agent Name'),
__('IP Adrress'),
__('Actions'),
];
$this->tableId = 'satellite_agents';
if (is_metaconsole() === true) {
// Only in case of Metaconsole, format the frame.
open_meta_frame();
}
// Load datatables user interface.
ui_print_datatable(
[
'id' => $this->tableId,
'class' => 'info_table',
'style' => 'width: 100%',
'columns' => $columns,
'column_names' => $column_names,
'ajax_url' => $this->ajaxController,
'ajax_data' => [
'method' => 'draw',
'server_remote' => $this->satellite_server,
],
'ajax_postprocces' => 'process_datatables_item(item)',
'no_sortable_columns' => [
0,
1,
2,
],
'search_button_class' => 'sub filter float-right',
'form' => [
'inputs' => [
[
'label' => __('Search').ui_print_help_tip(
__('Search filter by alias, name, description, IP address or custom fields content'),
true
),
'type' => 'text',
'name' => 'filter_search',
'size' => 12,
],
],
],
]
);
} catch (Exception $e) {
echo $e->getMessage();
}
if (is_metaconsole() === true) {
// Close the frame.
close_meta_frame();
}
// Auxiliar div.
$modal = '<div id="modal" class="invisible"></div>';
$msg = '<div id="msg" class="invisible"></div>';
$aux = '<div id="aux" class="invisible"></div>';
echo $modal.$msg.$aux;
// Create button.
echo '<div class="w100p flex-content-right">';
html_print_submit_button(
__('Add host'),
'create',
false,
'class="sub next"'
);
echo '</div>';
// Load own javascript file.
echo $this->loadJS();
}
/**
* Get the data for draw the table.
*
* @return void.
*/
public function draw()
{
global $config;
// Initialice filter.
$filter = '1=1';
// Init data.
$data = [];
// Count of total records.
$count = 0;
// Catch post parameters.
$start = get_parameter('start', 0);
$length = get_parameter('length', $config['block_size']);
$order = get_datatable_order(true);
$filters = get_parameter('filter', []);
try {
ob_start();
$data = [];
foreach ($this->satellite_config as $line) {
$re = '/^#*add_host \b(\S+) (\S*)$/m';
if (preg_match($re, $line, $matches, PREG_OFFSET_CAPTURE, 0) > 0) {
$agent['address'] = $matches[1][0];
if (isset($matches[2][0]) === false || empty($matches[2][0]) === true) {
$agent['name'] = '';
} else {
$agent['name'] = $matches[2][0];
}
if (empty($filters['filter_search']) === false) {
if (empty(preg_grep('/'.$filters['filter_search'].'?/mi', array_values($agent))) === true) {
continue;
}
}
array_push($data, $agent);
}
}
if (empty($data) === false) {
$data = array_reduce(
$data,
function ($carry, $item) {
global $config;
// Transforms array of arrays $data into an array
// of objects, making a post-process of certain fields.
$tmp = (object) $item;
$tmp->actions .= html_print_image(
'images/cross.png',
true,
[
'border' => '0',
'class' => 'action_button_img invert_filter',
'onclick' => 'delete_agent(\''.$tmp->address.'\',\''.$tmp->name.'\')',
]
);
$carry[] = $tmp;
return $carry;
}
);
}
$data = array_slice($data, $start, $length, true);
$total = count($data);
echo json_encode(
[
'data' => $data,
'recordsTotal' => $total,
'recordsFiltered' => $total,
]
);
// Capture output.
$response = ob_get_clean();
} catch (Exception $e) {
echo json_encode(['error' => $e->getMessage()]);
exit;
}
// If not valid, show error with issue.
json_decode($response);
if (json_last_error() == JSON_ERROR_NONE) {
// If valid dump.
echo $response;
} else {
echo json_encode(
['error' => $response]
);
}
exit;
}
/**
* Prints inputs for modal "Add agent".
*
* @return void
*/
public function loadModal()
{
$values['address'] = get_parameter('address', null);
$values['name'] = get_parameter('name', null);
echo $this->printInputs($values);
}
/**
* Generates inputs for new/update agents.
*
* @param array $values Values or null.
*
* @return string Inputs.
*/
public function printInputs($values=null)
{
if (!is_array($values)) {
$values = [];
}
$return_all_group = false;
if (users_can_manage_group_all('AR') === true) {
$return_all_group = true;
}
$form = [
'action' => '#',
'id' => 'modal_form',
'onsubmit' => 'return false;',
'class' => 'modal',
];
$inputs = [];
$inputs[] = [
'label' => __('Agent address'),
'id' => 'div-identifier',
'arguments' => [
'name' => 'address',
'type' => 'text',
'value' => $values['address'],
'return' => true,
],
];
$inputs[] = [
'label' => __('Agent name'),
'id' => 'div-identifier',
'arguments' => [
'name' => 'name',
'type' => 'text',
'value' => $values['name'],
'return' => true,
],
];
return $this->printForm(
[
'form' => $form,
'inputs' => $inputs,
],
true
);
}
/**
* Add agent to satellite conf.
*
* @return void
*/
public function addAgent()
{
global $config;
$values['address'] = get_parameter('address');
$values['name'] = get_parameter('name');
if ($this->parseSatelliteConf('save', $values) === false) {
$this->ajaxMsg('error', __('Error saving agent'));
} else {
$this->ajaxMsg('result', _('Host '.$values['addres'].' added.'));
}
exit;
}
/**
* Delete agent from satellite conf.
*
* @return void
*/
public function deleteAgent()
{
$values['address'] = get_parameter('address', '');
$values['name'] = get_parameter('name', '');
if ($this->parseSatelliteConf('delete', $values) === false) {
$this->ajaxMsg('error', __('Error saving agent'));
} else {
$this->ajaxMsg('result', _('Host '.$values['addres'].' added.'));
}
exit;
}
/**
* Parse satellite configuration .
*
* @param string $action Action to perform (save, delete).
* @param array $values.
* @return void
*/
private function parseSatelliteConf(string $action, array $values)
{
switch ($action) {
case 'save':
if (isset($values['address']) === true && empty($values['address']) === false) {
$string_hosts = 'add_host '.$values['address'].' '.$values['name']."\n";
// Add host to conf
array_push($this->satellite_config, $string_hosts);
// Check config.
if (empty($this->satellite_config)) {
return false;
}
$conf = implode('', $this->satellite_config);
} else {
return false;
}
break;
case 'delete':
$conf = implode('', $this->satellite_config);
// Find agent to mark for deletion.
$pattern = io_safe_expreg($values['address'].' '.$values['name']);
$re = "/add_host ($pattern)/m";
$subst = 'delete_host $1';
$conf = preg_replace($re, $subst, $conf);
break;
default:
$this->ajaxMsg('error', __('Error'));
exit;
}
return $this->saveAgent($conf);
}
/**
* Saves agent to satellite cofiguration file.
*
* @param array $values
* @return void
*/
private function saveAgent(string $new_conf)
{
global $config;
if (empty($new_conf)) {
return false;
}
db_pandora_audit(
AUDIT_LOG_SYSTEM,
'Update remote config for server '.$this->satellite_name
);
// Convert to config file encoding.
$encoding = config_satellite_get_encoding($new_conf);
if ($encoding !== false) {
$converted_server_config = mb_convert_encoding($new_conf, $encoding, 'UTF-8');
if ($converted_server_config !== false) {
$new_conf = $converted_server_config;
}
}
// Get filenames.
if ($this->satellite_server !== false) {
$files = config_satellite_get_satellite_config_filenames($this->satellite_name);
} else {
$files = [];
$files['conf'] = $config['remote_config'].'/conf/'.md5($this->satellite_name).'.srv.conf';
$files['md5'] = $config['remote_config'].'/md5/'.md5($this->satellite_name).'.srv.md5';
}
// Save configuration
$result = file_put_contents($files['conf'], $new_conf);
if ($result === false) {
return false;
}
// Save configuration md5
$result = file_put_contents($files['md5'], md5($new_conf));
}
/**
* Checks if target method is available to be called using AJAX.
*
* @param string $method Target method.
*
* @return boolean True allowed, false not.
*/
public function ajaxMethod(string $method)
{
return in_array($method, $this->AJAXMethods);
}
/**
* Minor function to dump json message as ajax response.
*
* @param string $type Type: result || error.
* @param string $msg Message.
* @param boolean $delete Deletion messages.
*
* @return void
*/
private function ajaxMsg($type, $msg, $delete=false)
{
$msg_err = 'Failed while saving: %s';
$msg_ok = 'Successfully saved agent ';
if ($delete) {
$msg_err = 'Failed while removing: %s';
$msg_ok = 'Successfully deleted ';
}
if ($type == 'error') {
echo json_encode(
[
$type => ui_print_error_message(
__(
$msg_err,
$msg
),
'',
true
),
]
);
} else {
echo json_encode(
[
$type => ui_print_success_message(
__(
$msg_ok,
$msg
),
'',
true
),
]
);
}
exit;
}
/**
* Load Javascript code.
*
* @return string.
*/
public function loadJS()
{
// Nothing for this moment.
ob_start();
// Javascript content.
?>
<script type="text/javascript">
/**
* Cleanup current dom entries.
*/
function cleanupDOM() {
$('#div-address').empty();
$('#div-name').empty();
}
/**
* Process ajax responses and shows a dialog with results.
*/
function showMsg(data) {
var title = "<?php echo __('Success'); ?>";
var dt_satellite_agents = $("#satellite_agents").DataTable();
var text = '';
var failed = 0;
try {
data = JSON.parse(data);
text = data['result'];
} catch (err) {
title = "<?php echo __('Failed'); ?>";
text = err.message;
failed = 1;
}
if (!failed && data['error'] != undefined) {
title = "<?php echo __('Failed'); ?>";
text = data['error'];
failed = 1;
}
if (data['report'] != undefined) {
data['report'].forEach(function (item){
text += '<br>'+item;
});
}
$('#msg').empty();
$('#msg').html(text);
$('#msg').dialog({
width: 450,
position: {
my: 'center',
at: 'center',
of: window,
collision: 'fit'
},
title: title,
buttons: [
{
class: "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: 'OK',
click: function(e) {
if (!failed) {
$(".ui-dialog-content").dialog("close");
$('.info').hide();
cleanupDOM();
dt_<?php echo $this->tableId; ?>.draw(false);
} else {
$(this).dialog('close');
}
}
}
]
});
}
/**
* Loads modal from AJAX to add a new agent.
*/
function show_form(address) {
var btn_ok_text = '<?php echo __('OK'); ?>';
var btn_cancel_text = '<?php echo __('Cancel'); ?>';
var title = '<?php echo __('Add agent to satellite'); ?>';
var method = 'addAgent';
load_modal({
target: $('#modal'),
form: 'modal_form',
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
ajax_callback: showMsg,
cleanup: cleanupDOM,
modal: {
title: title,
ok: btn_ok_text,
cancel: btn_cancel_text,
},
extradata: [
{
name: 'server_remote',
value: <?php echo $this->satellite_server; ?>,
}
],
onshow: {
page: '<?php echo $this->ajaxController; ?>',
method: 'loadModal'
},
onsubmit: {
page: '<?php echo $this->ajaxController; ?>',
method: method
}
});
}
/**
* Delete selected agent
*/
function delete_agent(address, name) {
$('#aux').empty();
$('#aux').text('<?php echo __('Are you sure?'); ?>');
$('#aux').dialog({
title: '<?php echo __('Delete'); ?> ' + address,
buttons: [
{
class: 'ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel',
text: '<?php echo __('Cancel'); ?>',
click: function(e) {
$(this).dialog('close');
cleanupDOM();
}
},
{
text: 'Delete',
class: 'ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next',
click: function(e) {
$.ajax({
method: 'post',
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
data: {
page: 'enterprise/godmode/servers/agents_satellite',
method: 'deleteAgent',
address: address,
name: name,
server_remote: <?php echo $this->satellite_server; ?>,
},
datatype: "json",
success: function (data) {
showMsg(data);
},
error: function(e) {
showMsg(e);
}
});
}
}
]
});
}
$(document).ready(function() {
$("#submit-create").on('click', function(){
show_form();
});
});
</script>
<?php
// EOF Javascript content.
return ob_get_clean();
}
}

View File

@ -20,7 +20,7 @@
/**
* Pandora build version and version
*/
$build_version = 'PC220729';
$build_version = 'PC220810';
$pandora_version = 'v7.0NG.763';
// Do not overwrite default timezone set if defined.

View File

@ -5996,6 +5996,26 @@ function send_test_email(
}
/**
* Check ip is valid into network
*
* @param string $ip Ip XXX.XXX.XXX.XXX.
* @param string $cidr Network XXX.XXX.XXX.XXX/XX.
*
* @return boolean
*/
function cidr_match($ip, $cidr)
{
list($subnet, $mask) = explode('/', $cidr);
if ((ip2long($ip) & ~((1 << (32 - $mask)) - 1) ) == ip2long($subnet)) {
return true;
}
return false;
}
/**
* Microtime float number.
*
@ -6077,3 +6097,123 @@ if (function_exists('str_contains') === false) {
}
/**
* Is reporting console node.
*
* @return boolean
*/
function is_reporting_console_node()
{
global $config;
if (isset($config['reporting_console_enable']) === true
&& (bool) $config['reporting_console_enable'] === true
&& isset($config['reporting_console_node']) === true
&& (bool) $config['reporting_console_node'] === true
) {
return true;
}
return false;
}
/**
* Acl reporting console node.
*
* @param string $path Path.
*
* @return boolean
*/
function acl_reporting_console_node($path, $tab='')
{
global $config;
if (is_reporting_console_node() === false) {
return true;
}
if (is_metaconsole() === true) {
if ($path === 'advanced/metasetup') {
switch ($tab) {
case 'update_manager_online':
case 'update_manager_offline':
case 'update_manager_history':
case 'update_manager_setup':
case 'file_manager':
return true;
default:
return false;
}
}
if ($path === 'advanced/users_setup') {
switch ($tab) {
case 'user_edit':
return true;
default:
return false;
}
}
if ($path === $config['homedir'].'/godmode/users/configure_user'
|| $path === 'advanced/links'
|| $path === $config['homedir'].'/enterprise/extensions/cron'
) {
return true;
}
} else {
if ($path === 'godmode/servers/discovery') {
switch ($tab) {
case 'main':
case 'tasklist':
return true;
default:
return false;
}
}
if ($path === 'operation/users/user_edit'
|| $path === 'operation/users/user_edit_notifications'
|| $path === 'godmode/setup/file_manager'
|| $path === 'godmode/update_manager/update_manager'
) {
return true;
}
}
return false;
}
/**
* Necessary checks for the reporting console.
*
* @return string
*/
function notify_reporting_console_node()
{
$return = '';
// Check php memory limit.
$PHPmemory_limit = config_return_in_bytes(ini_get('memory_limit'));
if ($PHPmemory_limit !== -1) {
$url = 'http://php.net/manual/en/ini.core.php#ini.memory-limit';
if ($config['language'] == 'es') {
$url = 'http://php.net/manual/es/ini.core.php#ini.memory-limit';
}
$msg = __("Not recommended '%s' value in PHP configuration", $PHPmemory_limit);
$msg .= '<br>'.__('Recommended value is: -1');
$msg .= '<br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator');
$msg .= '<br><a href="'.$url.'" target="_blank">'.__('Documentation').'</a>';
$return = ui_print_error_message($msg, '', true);
}
return $return;
}

View File

@ -358,6 +358,10 @@ function config_update_config()
$error_update[] = __('Module Custom ID read only');
}
if (config_update_value('reporting_console_enable', get_parameter('reporting_console_enable'), true) === false) {
$error_update[] = __('Enable console report');
}
if (config_update_value('unique_ip', get_parameter('unique_ip'), true) === false) {
$error_update[] = __('Unique IP');
}
@ -2193,6 +2197,10 @@ function config_process_config()
config_update_value('module_custom_id_ro', 0);
}
if (!isset($config['reporting_console_enable'])) {
config_update_value('reporting_console_enable', 0);
}
if (!isset($config['elasticsearch_ip'])) {
config_update_value('elasticsearch_ip', '');
}

View File

@ -422,10 +422,36 @@ function cron_list_table()
array_keys(users_get_groups())
);
$defined_tasks = db_get_all_rows_filter(
'tuser_task_scheduled',
'id_grupo IN ('.$user_groups.')'
$filter = '';
if (is_reporting_console_node() === true) {
$write_perms = false;
$manage_perms = false;
$manage_pandora = false;
$filter .= sprintf(
' AND (
tuser_task.function_name = "cron_task_generate_report"
OR tuser_task.function_name = "cron_task_generate_report_by_template"
OR tuser_task.function_name = "cron_task_save_report_to_disk"
)'
);
}
// Admin.
$sql = sprintf(
'SELECT tuser_task_scheduled.*
FROM tuser_task_scheduled
INNER JOIN tuser_task
ON tuser_task_scheduled.id_user_task = tuser_task.id
WHERE
id_grupo IN (%s)
%s
',
$user_groups,
$filter
);
$defined_tasks = db_get_all_rows_sql($sql);
if (!check_acl($config['id_user'], 0, 'PM')) {
$read_tasks = [];
@ -466,7 +492,10 @@ function cron_list_table()
$table->head[4] = __('Next execution');
$table->head[5] = __('Last run');
$table->head[6] = __('Group');
if ($manage_perms || $manage_pandora) {
$table->head[7] = __('Actions');
}
$table->align[7] = 'left';
foreach ($defined_tasks as $task) {
@ -521,7 +550,7 @@ function cron_list_table()
break;
case 'cron_task_generate_report':
if ((bool) $task['enabled'] === true && ($write_perms === true || $manage_pandora === true)) {
if ((bool) $task['enabled'] === true) {
$data[0] = html_print_anchor(
[
'href' => sprintf(
@ -576,7 +605,7 @@ function cron_list_table()
break;
case 'cron_task_generate_report_by_template':
if ((bool) $task['enabled'] === true && ($write_perms === true || $manage_pandora === true)) {
if ((bool) $task['enabled'] === true) {
$data[0] = html_print_anchor(
[
'href' => sprintf(
@ -928,6 +957,7 @@ function cron_list_table()
}
}
if ($manage_perms || $manage_pandora) {
$data[7] .= html_print_anchor(
[
'href' => sprintf(
@ -947,6 +977,7 @@ function cron_list_table()
],
true
);
}
array_push($table->data, $data);
}

View File

@ -1091,6 +1091,9 @@ function events_get_all(
// Custom data.
if (empty($filter['custom_data']) === false) {
if (isset($config['dbconnection']->server_version) === true
&& $config['dbconnection']->server_version > 80000
) {
if ($filter['custom_data_filter_type'] === '1') {
$sql_filters[] = sprintf(
' AND JSON_VALID(custom_data) = 1
@ -1104,6 +1107,21 @@ function events_get_all(
io_safe_output($filter['custom_data'])
);
}
} else {
if ($filter['custom_data_filter_type'] === '1') {
$sql_filters[] = sprintf(
' AND JSON_VALID(custom_data) = 1 AND JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") ',
$filter['custom_data'],
$filter['custom_data']
);
} else {
$sql_filters[] = sprintf(
' AND JSON_VALID(custom_data) = 1 AND JSON_KEYS(custom_data) REGEXP "%s" ',
$filter['custom_data'],
$filter['custom_data']
);
}
}
}
// Validated or in process by.
@ -1383,7 +1401,7 @@ function events_get_all(
case '1':
// Group by events.
$group_by .= 'te.evento, te.id_agente, te.id_agentmodule, te.estado';
$group_by .= 'te.evento, te.id_agente, te.id_agentmodule';
break;
case '2':
@ -3737,7 +3755,7 @@ function events_get_response_target(
// Parse the event custom data.
if (empty($event['custom_data']) === false) {
$custom_data = json_decode(base64_decode($event['custom_data']));
$custom_data = json_decode($event['custom_data']);
foreach ($custom_data as $key => $value) {
$target = str_replace('_customdata_'.$key.'_', $value, $target);
}
@ -4279,7 +4297,7 @@ function events_page_custom_data($event)
$table->head = [];
$table->class = 'table_modal_alternate';
$json_custom_data = base64_decode($event['custom_data']);
$json_custom_data = $event['custom_data'];
$custom_data = json_decode($json_custom_data);
if ($custom_data === null) {
@ -5290,7 +5308,7 @@ function events_get_field_value_by_event_id(
// Parse the event custom data.
if (!empty($event['custom_data'])) {
$custom_data = json_decode(base64_decode($event['custom_data']));
$custom_data = json_decode($event['custom_data']);
foreach ($custom_data as $key => $val) {
$value = str_replace('_customdata_'.$key.'_', $val, $value);
}

View File

@ -539,7 +539,7 @@ class BlockHistogram extends Widget
25,
false,
true,
true,
true
);
break;

View File

@ -10,6 +10,14 @@
height: auto;
}
.responsive-height {
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-content: center;
}
html {
font-size: 18px;
font-family: "lato-bolder", "Open Sans", sans-serif;
@ -58,3 +66,13 @@ a:hover {
color: #333;
text-decoration: none;
}
.container-list {
list-style: none;
width: 20%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: space-around;
margin: 0 auto;
}

View File

@ -605,6 +605,13 @@ if (isset($config['id_user']) === false) {
}
}
if (is_reporting_console_node() === true) {
$_GET['sec'] = 'discovery';
$_GET['sec2'] = 'godmode/servers/discovery';
$_GET['wiz'] = 'tasklist';
$home_page = '';
}
db_logon($nick_in_db, $_SERVER['REMOTE_ADDR']);
$_SESSION['id_usuario'] = $nick_in_db;
$config['id_user'] = $nick_in_db;
@ -624,8 +631,6 @@ if (isset($config['id_user']) === false) {
config_prepare_session();
}
// ==========================================================
// -------- SET THE CUSTOM CONFIGS OF USER ------------------
config_user_set_custom_config();
@ -1042,6 +1047,13 @@ if ((bool) ($config['maintenance_mode'] ?? false) === true
exit('</html>');
}
if (is_reporting_console_node() === true
&& (bool) users_is_admin() === false
) {
include 'general/reporting_console_node.php';
exit;
}
/*
* ----------------------------------------------------------------------
* EXTENSIONS
@ -1199,6 +1211,10 @@ if ($config['pure'] == 0) {
echo '<div id="main">';
}
if (is_reporting_console_node() === true) {
echo notify_reporting_console_node();
}
// Page loader / selector.
if ($searchPage) {
include 'operation/search_results.php';
@ -1224,6 +1240,17 @@ if ($searchPage) {
$sec2 = '';
}
$tab = get_parameter('tab', '');
if (empty($tab) === true) {
$tab = get_parameter('wiz', '');
}
$acl_reporting_console_node = acl_reporting_console_node($page, $tab);
if ($acl_reporting_console_node === false) {
include 'general/reporting_console_node.php';
exit;
}
$page .= '.php';
// Enterprise ACL check.

View File

@ -129,7 +129,7 @@
<div style='height: 10px'>
<?php
$version = '7.0NG.763';
$build = '220729';
$build = '220810';
$banner = "v$version Build $build";
error_reporting(0);

View File

@ -25,9 +25,11 @@ enterprise_include('operation/menu.php');
$menu_operation = [];
$menu_operation['class'] = 'operation';
// Agent read, Server read.
if (check_acl($config['id_user'], 0, 'AR')) {
// View agents
$access_console_node = !is_reporting_console_node();
if ($access_console_node === true) {
// Agent read, Server read.
if (check_acl($config['id_user'], 0, 'AR')) {
// View agents.
$menu_operation['estado']['text'] = __('Monitoring');
$menu_operation['estado']['sec2'] = 'operation/agentes/tactical';
$menu_operation['estado']['refr'] = 0;
@ -117,61 +119,61 @@ if (check_acl($config['id_user'], 0, 'AR')) {
}
// End of view agents.
}
}
// SNMP Console.
$sub2 = [];
if (check_acl($config['id_user'], 0, 'AR') || check_acl($config['id_user'], 0, 'AW')) {
// SNMP Console.
$sub2 = [];
if (check_acl($config['id_user'], 0, 'AR') || check_acl($config['id_user'], 0, 'AW')) {
$sub2['operation/snmpconsole/snmp_view']['text'] = __('SNMP console');
$sub2['operation/snmpconsole/snmp_browser']['text'] = __('SNMP browser');
enterprise_hook('snmpconsole_submenu');
}
}
if (check_acl($config['id_user'], 0, 'PM')) {
if (check_acl($config['id_user'], 0, 'PM')) {
$sub2['operation/snmpconsole/snmp_mib_uploader']['text'] = __('MIB uploader');
}
}
if (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], 0, 'LM')) {
if (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], 0, 'LM')) {
$sub2['godmode/snmpconsole/snmp_filters']['text'] = __('SNMP filters');
$sub2['godmode/snmpconsole/snmp_trap_generator']['text'] = __('SNMP trap generator');
}
}
if (!empty($sub2)) {
if (empty($sub2) === false) {
$sub['snmpconsole']['sub2'] = $sub2;
$sub['snmpconsole']['text'] = __('SNMP');
$sub['snmpconsole']['id'] = 'SNMP';
$sub['snmpconsole']['refr'] = 0;
$sub['snmpconsole']['type'] = 'direct';
$sub['snmpconsole']['subtype'] = 'nolink';
}
}
enterprise_hook('cluster_menu');
enterprise_hook('aws_menu');
enterprise_hook('SAP_view');
enterprise_hook('cluster_menu');
enterprise_hook('aws_menu');
enterprise_hook('SAP_view');
if (!empty($sub)) {
if (!empty($sub)) {
$menu_operation['estado']['text'] = __('Monitoring');
$menu_operation['estado']['sec2'] = 'operation/agentes/tactical';
$menu_operation['estado']['refr'] = 0;
$menu_operation['estado']['id'] = 'oper-agents';
$menu_operation['estado']['sub'] = $sub;
}
}
// Start network view.
$sub = [];
if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, 'MW') || check_acl($config['id_user'], 0, 'MM')) {
// Start network view.
$sub = [];
if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, 'MW') || check_acl($config['id_user'], 0, 'MM')) {
// Network enterprise.
$sub['operation/agentes/pandora_networkmap']['text'] = __('Network map');
$sub['operation/agentes/pandora_networkmap']['id'] = 'Network map';
$sub['operation/agentes/pandora_networkmap']['refr'] = 0;
enterprise_hook('transmap_console');
}
}
enterprise_hook('services_menu');
enterprise_hook('services_menu');
if (check_acl($config['id_user'], 0, 'VR') || check_acl($config['id_user'], 0, 'VW') || check_acl($config['id_user'], 0, 'VM')) {
if (check_acl($config['id_user'], 0, 'VR') || check_acl($config['id_user'], 0, 'VW') || check_acl($config['id_user'], 0, 'VM')) {
if (!isset($config['vc_favourite_view']) || $config['vc_favourite_view'] == 0) {
// Visual console.
$sub['godmode/reporting/map_builder']['text'] = __('Visual console');
@ -251,10 +253,9 @@ if (check_acl($config['id_user'], 0, 'VR') || check_acl($config['id_user'], 0, '
}
}
}
}
}
if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, 'MW') || check_acl($config['id_user'], 0, 'MM')) {
if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, 'MW') || check_acl($config['id_user'], 0, 'MM')) {
// INI GIS Maps.
if ($config['activate_gis']) {
$sub['gismaps']['text'] = __('GIS Maps');
@ -294,19 +295,19 @@ if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, '
}
// END GIS Maps.
}
}
if (!empty($sub)) {
if (!empty($sub)) {
$menu_operation['network']['text'] = __('Topology maps');
$menu_operation['network']['sec2'] = 'operation/agentes/networkmap_list';
$menu_operation['network']['refr'] = 0;
$menu_operation['network']['id'] = 'oper-networkconsole';
$menu_operation['network']['sub'] = $sub;
}
}
// End networkview.
// Reports read.
if (check_acl($config['id_user'], 0, 'RR') || check_acl($config['id_user'], 0, 'RW') || check_acl($config['id_user'], 0, 'RM')) {
// End networkview.
// Reports read.
if (check_acl($config['id_user'], 0, 'RR') || check_acl($config['id_user'], 0, 'RW') || check_acl($config['id_user'], 0, 'RM')) {
// Reporting.
$menu_operation['reporting']['text'] = __('Reporting');
$menu_operation['reporting']['sec2'] = 'godmode/reporting/reporting_builder';
@ -362,13 +363,13 @@ if (check_acl($config['id_user'], 0, 'RR') || check_acl($config['id_user'], 0, '
$menu_operation['reporting']['sub'] = $sub;
// End reporting.
}
}
// Events reading.
if (check_acl($config['id_user'], 0, 'ER')
// Events reading.
if (check_acl($config['id_user'], 0, 'ER')
|| check_acl($config['id_user'], 0, 'EW')
|| check_acl($config['id_user'], 0, 'EM')
) {
) {
// Events.
$menu_operation['eventos']['text'] = __('Events');
$menu_operation['eventos']['refr'] = 0;
@ -468,6 +469,7 @@ if (check_acl($config['id_user'], 0, 'ER')
</script>
<?php
$menu_operation['eventos']['sub'] = $sub;
}
}
// Workspace.
@ -487,48 +489,49 @@ $sub['operation/users/user_edit_notifications']['text'] = __('Configure user not
$sub['operation/users/user_edit_notifications']['id'] = 'Configure user notifications';
$sub['operation/users/user_edit_notifications']['refr'] = 0;
// Incidents.
$temp_sec2 = $sec2;
$sec2 = 'incident';
$sec2sub = 'operation/incidents/incident_statistics';
$sub[$sec2]['text'] = __('Incidents');
$sub[$sec2]['id'] = 'Incidents';
$sub[$sec2]['type'] = 'direct';
$sub[$sec2]['subtype'] = 'nolink';
$sub[$sec2]['refr'] = 0;
$sub[$sec2]['subsecs'] = [
if ($access_console_node === true) {
// Incidents.
$temp_sec2 = $sec2;
$sec2 = 'incident';
$sec2sub = 'operation/incidents/incident_statistics';
$sub[$sec2]['text'] = __('Incidents');
$sub[$sec2]['id'] = 'Incidents';
$sub[$sec2]['type'] = 'direct';
$sub[$sec2]['subtype'] = 'nolink';
$sub[$sec2]['refr'] = 0;
$sub[$sec2]['subsecs'] = [
'operation/incidents/incident_detail',
'operation/integria_incidents',
];
];
$sub2 = [];
$sub2[$sec2sub]['text'] = __('Integria IMS statistics');
$sub2['operation/incidents/list_integriaims_incidents']['text'] = __('Integria IMS ticket list');
$sub2 = [];
$sub2[$sec2sub]['text'] = __('Integria IMS statistics');
$sub2['operation/incidents/list_integriaims_incidents']['text'] = __('Integria IMS ticket list');
$sub[$sec2]['sub2'] = $sub2;
$sec2 = $temp_sec2;
$sub[$sec2]['sub2'] = $sub2;
$sec2 = $temp_sec2;
// Messages.
$sub['message_list']['text'] = __('Messages');
$sub['message_list']['id'] = 'Messages';
$sub['message_list']['refr'] = 0;
$sub['message_list']['type'] = 'direct';
$sub['message_list']['subtype'] = 'nolink';
$sub2 = [];
$sub2['operation/messages/message_list']['text'] = __('Messages List');
$sub2['operation/messages/message_edit&amp;new_msg=1']['text'] = __('New message');
// Messages.
$sub['message_list']['text'] = __('Messages');
$sub['message_list']['id'] = 'Messages';
$sub['message_list']['refr'] = 0;
$sub['message_list']['type'] = 'direct';
$sub['message_list']['subtype'] = 'nolink';
$sub2 = [];
$sub2['operation/messages/message_list']['text'] = __('Messages List');
$sub2['operation/messages/message_edit&amp;new_msg=1']['text'] = __('New message');
$sub['message_list']['sub2'] = $sub2;
$sub['message_list']['sub2'] = $sub2;
}
$menu_operation['workspace']['sub'] = $sub;
// End Workspace
// Rest of options, all with AR privilege (or should events be with incidents?)
// ~ if (check_acl ($config['id_user'], 0, "AR")) {
// Extensions menu additions.
if (is_array($config['extensions'])) {
if ($access_console_node === true) {
// Rest of options, all with AR privilege (or should events be with incidents?)
// ~ if (check_acl ($config['id_user'], 0, "AR")) {
// Extensions menu additions.
if (is_array($config['extensions'])) {
$sub = [];
$sub2 = [];
@ -618,9 +621,11 @@ if (is_array($config['extensions'])) {
$menu_operation['extensions']['id'] = 'oper-extensions';
$menu_operation['extensions']['sub'] = $sub;
}
}
// ~ }
}
// ~ }
// Save operation menu array to use in operation/extensions.php view
$operation_menu_array = $menu_operation;

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.763
%define release 220729
%define release 220810
# User and Group under which Apache is running
%define httpd_name httpd

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.763
%define release 220729
%define release 220810
# User and Group under which Apache is running
%define httpd_name httpd

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.763
%define release 220729
%define release 220810
%define httpd_name httpd
# User and Group under which Apache is running
%define httpd_name apache2

View File

@ -3890,7 +3890,7 @@ CREATE TABLE IF NOT EXISTS `tipam_network` (
`name_network` VARCHAR(255) DEFAULT '',
`description` TEXT,
`location` INT UNSIGNED NULL,
`id_recon_task` INT UNSIGNED NOT NULL,
`id_recon_task` INT UNSIGNED DEFAULT 0,
`scan_interval` TINYINT DEFAULT 1,
`monitoring` TINYINT DEFAULT 0,
`id_group` MEDIUMINT UNSIGNED NULL DEFAULT 0,
@ -3899,7 +3899,7 @@ CREATE TABLE IF NOT EXISTS `tipam_network` (
`id_site` BIGINT UNSIGNED,
`vrf` INT UNSIGNED,
PRIMARY KEY (`id`),
FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE CASCADE,
FOREIGN KEY (`id_recon_task`) REFERENCES trecon_task(`id_rt`) ON DELETE SET NULL ON UPDATE CASCADE,
FOREIGN KEY (`location`) REFERENCES `tipam_network_location`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`id_site`) REFERENCES `tipam_sites`(`id`) ON DELETE SET NULL ON UPDATE CASCADE,
FOREIGN KEY (`vrf`) REFERENCES `tagente`(`id_agente`) ON DELETE SET NULL ON UPDATE CASCADE

View File

@ -1,5 +1,5 @@
package: pandorafms-server
Version: 7.0NG.763-220729
Version: 7.0NG.763-220810
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.763-220729"
pandora_version="7.0NG.763-220810"
package_cpan=0
package_pandora=1

View File

@ -723,6 +723,9 @@ alertserver_threads 4
# Generate an hourly warning event if alert execution is being delayed more than alertserver_warn seconds.
alertserver_warn 180
# If set to 1, alerts are queued for the Pandora FMS Alert Server.If alertserver is set to 1, alerts are always queued.
alertserver_queue 0
# Pandora FMS HA MySQL cluster splitbrain auto-recovery (PANDORA FMS ENTERPRISE ONLY)
# IMPORTANT! Please understand and configure all settings from pandora_console/index.php?sec=gservers&sec2=enterprise/godmode/servers/HA_cluster&tab=setup
# before enable this feature.

View File

@ -46,7 +46,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.763";
my $pandora_build = "220729";
my $pandora_build = "220810";
our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash
@ -550,6 +550,7 @@ sub pandora_load_config {
$pa_config->{"alertserver"} = 0; # 7.0 756
$pa_config->{"alertserver_threads"} = 1; # 7.0 756
$pa_config->{"alertserver_warn"} = 180; # 7.0 756
$pa_config->{"alertserver_queue"} = 0; # 7.0 764
$pa_config->{'ncmserver'} = 0; # 7.0 758
$pa_config->{'ncmserver_threads'} = 1; # 7.0 758
@ -1284,6 +1285,9 @@ sub pandora_load_config {
elsif ($parametro =~ m/^alertserver_warn\s+([0-9]*)/i) {
$pa_config->{'alertserver_warn'}= clean_blank($1);
}
elsif ($parametro =~ m/^alertserver_queue\s+([0-1]*)/i) {
$pa_config->{'alertserver_queue'}= clean_blank($1);
}
elsif ($parametro =~ m/^ncmserver\s+([0-9]*)/i){
$pa_config->{'ncmserver'}= clean_blank($1);
}

View File

@ -795,7 +795,7 @@ sub pandora_process_alert ($$$$$$$$;$$) {
db_do($dbh, 'UPDATE talert_template_module_actions SET last_execution = 0 WHERE id_alert_template_module = ?', $id);
}
if ($pa_config->{'alertserver'} == 1) {
if ($pa_config->{'alertserver'} == 1 || $pa_config->{'alertserver_queue'} == 1) {
pandora_queue_alert($pa_config, $dbh, [$data, $agent, $module,
$alert, 0, $timestamp, 0, $extra_macros, $is_correlated_alert]);
} else {

View File

@ -1546,6 +1546,25 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($;$) {
);
}
# Update OS information.
foreach my $agent (@agents) {
# Avoid processing if does not exist.
next unless (defined($agent->{'agent_id'}));
# Make sure OS version information is available.
next unless (defined($agent->{'os_version'}));
# Is the agent in learning mode?
next unless ($agent->{'modo'} == 1);
# Set the OS version.
db_do($self->{'dbh'},
'UPDATE tagente SET os_version=? WHERE id_agente=?',
$agent->{'os_version'}, $agent->{'agent_id'}
);
}
# Connect agents.
my @connections = get_db_rows(
$self->{'dbh'},
@ -1595,9 +1614,12 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($;$) {
next if is_empty($label);
# Retrieve target agent OS version.
# Retrieve target agent OS.
$self->{'agents_found'}->{$addr}{'agent'}{'id_os'} = $self->guess_os($addr);
# Retrieve target agent OS version.
$self->{'agents_found'}->{$addr}{'agent'}{'os_version'} = $self->get_os_version($addr);
$self->call('update_progress', $progress);
$progress += $step;
# Store temporally. Wait user approval.

View File

@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.763";
my $pandora_build = "220729";
my $pandora_build = "220810";
our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -78,7 +78,7 @@ our $IPROUTEIFINDEX = ".1.3.6.1.2.1.4.21.1.2";
our $IPROUTENEXTHOP = ".1.3.6.1.2.1.4.21.1.7";
our $IPROUTETYPE = ".1.3.6.1.2.1.4.21.1.8";
our $PRTMARKERINDEX = ".1.3.6.1.2.1.43.10.2.1.1";
our $SYSDESCR = ".1.3.6.1.2.1.1.1";
our $SYSDESCR = ".1.3.6.1.2.1.1.1.0";
our $SYSSERVICES = ".1.3.6.1.2.1.1.7";
our $SYSUPTIME = ".1.3.6.1.2.1.1.3";
our $VTPVLANIFINDEX = ".1.3.6.1.4.1.9.9.46.1.3.1.1.18.1";
@ -554,6 +554,27 @@ sub gateway_connectivity($$) {
$self->mark_connected($gw, '', $host, '');
}
################################################################################
# Retrieve OS version via SNMP.
################################################################################
sub get_os_version($$) {
my ($self, $device) = @_;
# OS detection disabled.
return '' if ($self->{'os_detection'} == 0);
# Does the device respond to SNMP?
return '' unless ($self->is_snmp_discovered($device));
# Retrieve the system description, which should contain the OS version.
my $os_version = $self->snmp_get_value($device, "$PandoraFMS::Recon::Base::SYSDESCR");
# Remove leading and trailing quotes.
$os_version = $1 if ($os_version =~ /^"(.*)"$/);
return defined($os_version) ? $os_version : '';
}
################################################################################
# Find IP address aliases for the given device.
################################################################################

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.763
%define release 220729
%define release 220810
Summary: Pandora FMS Server
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_server
%define version 7.0NG.763
%define release 220729
%define release 220810
Summary: Pandora FMS Server
Name: %{name}

View File

@ -9,7 +9,7 @@
# **********************************************************************
PI_VERSION="7.0NG.763"
PI_BUILD="220729"
PI_BUILD="220810"
MODE=$1
if [ $# -gt 1 ]; then

View File

@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
my $version = "7.0NG.763 Build 220729";
my $version = "7.0NG.763 Build 220810";
# Pandora server configuration
my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv;
# version: define current version
my $version = "7.0NG.763 Build 220729";
my $version = "7.0NG.763 Build 220810";
# save program name for logging
my $progname = basename($0);