Merge branch 'develop' into ent-3594-Unificacion-de-tamaños-de-checkbox-switch

Conflicts:
pandora_console/install.php


Former-commit-id: 3dee86da8f6b6b1c2caa5e6e1529acd7f60c1433
This commit is contained in:
manuel 2019-02-28 13:36:18 +01:00
commit 46089b31a8
69 changed files with 1489 additions and 1257 deletions

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, AIX version # Version 7.0NG.732, AIX version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, FreeBSD Version # Version 7.0NG.732, FreeBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, HP-UX Version # Version 7.0NG.732, HP-UX Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, GNU/Linux # Version 7.0NG.732, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, GNU/Linux # Version 7.0NG.732, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, Solaris Version # Version 7.0NG.732, Solaris Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent # Base config file for Pandora FMS Windows Agent
# (c) 2006-2010 Artica Soluciones Tecnologicas # (c) 2006-2010 Artica Soluciones Tecnologicas
# Version 7.0NG.731 # Version 7.0NG.732
# This program is Free Software, you can redistribute it and/or modify it # This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software # under the terms of the GNU General Public Licence as published by the Free Software

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.731, AIX version # Version 7.0NG.732, AIX version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.731 # Version 7.0NG.732
# FreeBSD/IPSO version # FreeBSD/IPSO version
# Licenced under GPL licence, 2003-2007 Sancho Lerena # Licenced under GPL licence, 2003-2007 Sancho Lerena

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.731, HPUX Version # Version 7.0NG.732, HPUX Version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731 # Version 7.0NG.732
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2010 Artica Soluciones Tecnologicas # (c) 2003-2010 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731 # Version 7.0NG.732
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2009 Artica Soluciones Tecnologicas # (c) 2003-2009 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731 # Version 7.0NG.732
# Licensed under GPL license v2, # Licensed under GPL license v2,
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.731, Solaris version # Version 7.0NG.732, Solaris version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, AIX version # Version 7.0NG.732, AIX version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.731-190226 Version: 7.0NG.732-190228
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, GNU/Linux # Version 7.0NG.732, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2012 Artica Soluciones Tecnologicas # Copyright (c) 2003-2012 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, FreeBSD Version # Version 7.0NG.732, FreeBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2016 Artica Soluciones Tecnologicas # Copyright (c) 2003-2016 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, HP-UX Version # Version 7.0NG.732, HP-UX Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, GNU/Linux # Version 7.0NG.732, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2014 Artica Soluciones Tecnologicas # Copyright (c) 2003-2014 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, GNU/Linux # Version 7.0NG.732, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, NetBSD Version # Version 7.0NG.732, NetBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.731, Solaris Version # Version 7.0NG.732, Solaris Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -41,8 +41,8 @@ my $Sem = undef;
# Semaphore used to control the number of threads # Semaphore used to control the number of threads
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.731'; use constant AGENT_VERSION => '7.0NG.732';
use constant AGENT_BUILD => '190226'; use constant AGENT_BUILD => '190228';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent #Pandora FMS Linux Agent
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent #Pandora FMS Linux Agent
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -9,8 +9,8 @@
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license. # Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.731" PI_VERSION="7.0NG.732"
PI_BUILD="190226" PI_BUILD="190228"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent # Base config file for Pandora FMS Windows Agent
# (c) 2006-2017 Artica Soluciones Tecnologicas # (c) 2006-2017 Artica Soluciones Tecnologicas
# Version 7.0NG.731 # Version 7.0NG.732
# This program is Free Software, you can redistribute it and/or modify it # This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software # under the terms of the GNU General Public Licence as published by the Free Software

View File

@ -3,7 +3,7 @@ AllowLanguageSelection
{Yes} {Yes}
AppName AppName
{Pandora FMS Windows Agent v7.0NG.731} {Pandora FMS Windows Agent v7.0NG.732}
ApplicationID ApplicationID
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F} {17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{190226} {190228}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils; using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1 #define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.731(Build 190226)") #define PANDORA_VERSION ("7.0NG.732(Build 190228)")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

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

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.731-190226 Version: 7.0NG.732-190228
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -1199,13 +1199,13 @@ ALTER TABLE titem MODIFY `source_data` int(10) unsigned;
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 24); INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 25);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager'; UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise'; DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '731'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '732');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------

View File

@ -294,6 +294,9 @@ config_check();
<!-- Notifications content wrapper--> <!-- Notifications content wrapper-->
<div id='notification-content' style='display:none;' /></div> <div id='notification-content' style='display:none;' /></div>
<!-- Old style div wrapper -->
<div id="alert_messages" style="display: none"></div>;
<script type="text/javascript"> <script type="text/javascript">
/* <![CDATA[ */ /* <![CDATA[ */

View File

@ -112,6 +112,7 @@ $edit_file = get_parameter('edit_file', false);
$update_file = get_parameter('update_file', false); $update_file = get_parameter('update_file', false);
$plugin_command = get_parameter('plugin_command', ''); $plugin_command = get_parameter('plugin_command', '');
$tab = get_parameter('tab', ''); $tab = get_parameter('tab', '');
$deploy_plugin = get_parameter('deploy_plugin', 0);
if ($view != '') { if ($view != '') {
$form_id = $view; $form_id = $view;
@ -192,9 +193,8 @@ if ($filemanager) {
// If is win compatible and the compatibility must be unix // If is win compatible and the compatibility must be unix
if ($is_win_compatible !== false && $compatibility == 'unix') { if ($is_win_compatible !== false && $compatibility == 'unix') {
$contentFile = str_replace("\r\n", "\n", $contentFile); $contentFile = str_replace("\r\n", "\n", $contentFile);
} } else if ($is_win_compatible === false && $compatibility == 'windows') {
// If is unix compatible and the compatibility must be win // If is unix compatible and the compatibility must be win
else if ($is_win_compatible === false && $compatibility == 'windows') {
$contentFile = str_replace("\n", "\r\n", $contentFile); $contentFile = str_replace("\n", "\r\n", $contentFile);
} }
@ -268,12 +268,16 @@ if ($filemanager) {
// ===================================================================== // =====================================================================
$sec = 'gservers'; $sec = 'gservers';
if (($create != '') or ($view != '')) { if (($create != '') || ($view != '')) {
enterprise_hook('open_meta_frame'); enterprise_hook('open_meta_frame');
if (defined('METACONSOLE')) { if (defined('METACONSOLE')) {
components_meta_print_header(); components_meta_print_header();
$sec = 'advanced'; $sec = 'advanced';
$management_allowed = is_management_allowed();
if (!$management_allowed) {
ui_print_warning_message(__('To manage plugin you must activate centralized management'));
}
} else { } else {
if ($create != '') { if ($create != '') {
ui_print_page_header( ui_print_page_header(
@ -292,6 +296,16 @@ if (($create != '') or ($view != '')) {
true true
); );
} }
$management_allowed = !is_central_policies_on_node();
if (!$management_allowed) {
ui_print_warning_message(
__(
'This console is not manager of this environment,
please manage this feature from centralized manager console (Metaconsole).'
)
);
}
} }
@ -564,9 +578,53 @@ if (($create != '') or ($view != '')) {
if (defined('METACONSOLE')) { if (defined('METACONSOLE')) {
components_meta_print_header(); components_meta_print_header();
$sec = 'advanced'; $sec = 'advanced';
$management_allowed = is_management_allowed();
if (!$management_allowed) {
ui_print_warning_message(__('To manage plugin you must activate centralized management'));
}
if (!$config['metaconsole_deploy_plugin_server'] && $management_allowed) {
$deploy_plugin_server = true;
echo '<div id="deploy_messages" style="display: none">';
echo '<span>'.__('The previous configuration of plugins has been imported from the nodes. Please check that the definitions are correct.').'</br></br>'.'<b>'.__('Note:').'</b>'.__(
'These definitions will not be operational until you manually
copy the files from the nodes to the atachment/plugin/ directory of the meta console.'
).'</br></br>'.__('You can find more information at:')."<a href='https://wiki.pandorafms.com'>https://wiki.pandorafms.com</a>".'</span>';
echo '</div>';
?>
<script type="text/javascript">
$(document).ready(function () {
$("#deploy_messages").dialog({
resizable: true,
draggable: true,
modal: true,
height: 220,
title: '<?php echo __('Warning'); ?>',
width: 528,
overlay: {
opacity: 0.5,
background: "black"
}
});
});
</script>
<?php
config_update_value('metaconsole_deploy_plugin_server', 1);
}
} else { } else {
ui_print_page_header(__('Plug-ins registered on %s', get_product_name()), 'images/gm_servers.png', false, '', true); ui_print_page_header(__('Plug-ins registered on %s', get_product_name()), 'images/gm_servers.png', false, '', true);
$management_allowed = !is_central_policies_on_node();
if (!$management_allowed) {
ui_print_warning_message(
__(
'This console is not manager of this environment,
please manage this feature from centralized manager console (Metaconsole).'
)
);
}
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'; $is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN';
if ($is_windows) { if ($is_windows) {
echo '<div class="notify">'; echo '<div class="notify">';
@ -576,9 +634,8 @@ if (($create != '') or ($view != '')) {
} }
// Update plugin // Update plugin.
if (isset($_GET['update_plugin'])) { if (isset($_GET['update_plugin'])) {
// if modified any parameter
$plugin_id = get_parameter('update_plugin', 0); $plugin_id = get_parameter('update_plugin', 0);
$plugin_name = get_parameter('form_name', ''); $plugin_name = get_parameter('form_name', '');
$plugin_description = get_parameter('form_description', ''); $plugin_description = get_parameter('form_description', '');
@ -709,11 +766,14 @@ if (($create != '') or ($view != '')) {
$result = db_process_sql_delete('tplugin', ['id' => $plugin_id]); $result = db_process_sql_delete('tplugin', ['id' => $plugin_id]);
if (! $result) { if (!is_metaconsole()) {
if (!$result) {
ui_print_error_message(__('Problem deleting plugin')); ui_print_error_message(__('Problem deleting plugin'));
} else { } else {
ui_print_success_message(__('Plugin deleted successfully')); ui_print_success_message(__('Plugin deleted successfully'));
} }
}
if ($plugin_id != 0) { if ($plugin_id != 0) {
// Delete all the modules with this plugin // Delete all the modules with this plugin
@ -737,6 +797,153 @@ if (($create != '') or ($view != '')) {
policies_change_delete_pending_module($policies_id['id']); policies_change_delete_pending_module($policies_id['id']);
} }
} }
if (is_metaconsole()) {
enterprise_include_once('include/functions_plugins.php');
$result = plugins_delete_plugin($plugin_id);
if (!$result) {
ui_print_error_message(__('Problem deleting plugin'));
} else {
ui_print_success_message(__('Plugin deleted successfully'));
}
}
}
}
if ($deploy_plugin) {
if (is_metaconsole()) {
enterprise_include_once('include/functions_plugins.php');
$result = plugins_deploy_plugin($deploy_plugin);
if (!$result) {
ui_print_error_message(__('Problem deploying plugin'));
} else {
ui_print_success_message(__('Plugin deployed successfully'));
}
}
}
if ($deploy_plugin_server) {
$setup = db_get_all_rows_in_table('tmetaconsole_setup');
// recorremos todos los nodos.
foreach ($setup as $key => $value) {
// Obtenemos los plugins de la meta.
$all_plugin_meta = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
// Conectamos con el nodo.
if (metaconsole_connect($value) == NOERR) {
$values = [];
// Obtenemos los plugin del nodo.
$node_plugin_server = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
foreach ($node_plugin_server as $key2 => $plugin) {
// Comprobamos si el id esta meta y nodo al mismo tiempo.
$key_exists = array_search($plugin['id'], array_column($all_plugin_meta, 'id'));
if ($key_exists !== false) {
// Si el plugin tiene el mismo id pero diferentes datos.
if ($all_plugin_meta[$key_exists] != $plugin) {
$old_id = $plugin['id'];
$new_id = ($plugin['id'] + (1000 * $value['id']));
// El plugin del nodo pasa a tener otro id y otro nombre.
$plugin['id'] = $new_id;
$plugin['name'] = $plugin['name'].'_'.$value['server_name'];
$result_update = db_process_sql_update(
'tplugin',
[
'id' => $new_id,
'name' => $plugin['name'],
],
['id' => $old_id]
);
if ($result_update) {
db_process_sql_update(
'tagente_modulo',
['id_plugin' => $new_id],
['id_plugin' => $old_id]
);
db_process_sql_update(
'tnetwork_component',
['id_plugin' => $new_id],
['id_plugin' => $old_id]
);
db_process_sql_update(
'tpolicy_modules',
['id_plugin' => $new_id],
['id_plugin' => $old_id]
);
}
// New plugins to insert in the metaconsole.
$values[$plugin['id']] = $plugin;
}
} else {
// Exists in the node, but does not exist in the metaconsole.
$values[$plugin['id']] = $plugin;
}
}
// Restore to metaconsole.
metaconsole_restore_db();
// Insert in metaconsole.
if (!empty($values)) {
foreach ($values as $key2 => $val) {
// Insert into metaconsole.
$result_insert = db_process_sql_insert('tplugin', $val);
}
}
}
}
$all_plugin_meta = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
foreach ($setup as $key => $value) {
if (metaconsole_connect($value) == NOERR) {
$all_plugin_node = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
$array_diff = array_diff(array_column($all_plugin_meta, 'id'), array_column($all_plugin_node, 'id'));
foreach ($array_diff as $key2 => $pluginid) {
$other = [];
$plugin_meta = $all_plugin_meta[$key2];
unset($plugin_meta['id']);
$other['name'] = urlencode($plugin_meta['name']);
$other['description'] = urlencode($plugin_meta['description']);
$other['max_timeout'] = $plugin_meta['max_timeout'];
$other['max_retries'] = $plugin_meta['max_retries'];
$other['execute'] = urlencode($plugin_meta['execute']);
$other['net_dst_opt'] = $plugin_meta['net_dst_opt'];
$other['net_port_opt'] = $plugin_meta['net_port_opt'];
$other['user_opt'] = $plugin_meta['user_opt'];
$other['pass_opt'] = $plugin_meta['pass_opt'];
$other['plugin_type'] = $plugin_meta['plugin_type'];
$other['macros'] = urlencode($plugin_meta['macros']);
$other['parameters'] = urlencode($plugin_meta['parameters']);
$other = implode('%7C', $other);
$auth_token = json_decode($value['auth_token']);
$url = $value['server_url'].'include/api.php?op=set&op2=push_plugin'.'&id='.$pluginid.'&other_mode=url_encode_separator_%7C&other='.$other."&apipass=$auth_token->api_password"."&user=$auth_token->console_user&pass=$auth_token->console_password";
$file_path = realpath($plugin_meta['execute']);
$post = '';
if (file_exists($file_path)) {
$post = ['file' => curl_file_create($file_path)];
}
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $url);
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $post);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, false);
$api_result = curl_exec($curlObj);
curl_close($curlObj);
}
}
// restore to metaconsole
metaconsole_restore_db();
} }
} }
@ -753,7 +960,10 @@ if (($create != '') or ($view != '')) {
echo '<th>'.__('Name').'</th>'; echo '<th>'.__('Name').'</th>';
echo '<th>'.__('Type').'</th>'; echo '<th>'.__('Type').'</th>';
echo '<th>'.__('Command').'</th>'; echo '<th>'.__('Command').'</th>';
echo "<th style='width: 90px;'>".'<span title="Operations">'.__('Op.').'</span>'.'</th>'; if ($management_allowed) {
echo "<th style='width: 120px;'>".'<span title="Operations">'.__('Op.').'</span>'.'</th>';
}
$color = 0; $color = 0;
foreach ($rows as $row) { foreach ($rows as $row) {
@ -767,7 +977,10 @@ if (($create != '') or ($view != '')) {
echo '<tr>'; echo '<tr>';
echo "<td class=$tdcolor>"; echo "<td class=$tdcolor>";
if ($management_allowed) {
echo "<b><a href='index.php?sec=$sec&sec2=godmode/servers/plugin&view=".$row['id'].'&tab=plugins&pure='.$config['pure']."'>"; echo "<b><a href='index.php?sec=$sec&sec2=godmode/servers/plugin&view=".$row['id'].'&tab=plugins&pure='.$config['pure']."'>";
}
echo $row['name']; echo $row['name'];
echo '</a></b></td>'; echo '</a></b></td>';
echo "<td class=$tdcolor>"; echo "<td class=$tdcolor>";
@ -780,6 +993,7 @@ if (($create != '') or ($view != '')) {
echo "</td><td class=$tdcolor>"; echo "</td><td class=$tdcolor>";
echo $row['execute']; echo $row['execute'];
echo '</td>'; echo '</td>';
if ($management_allowed) {
echo "<td class='$tdcolor' align='center'>"; echo "<td class='$tdcolor' align='center'>";
// Show it is locket // Show it is locket
@ -804,7 +1018,13 @@ if (($create != '') or ($view != '')) {
echo "<a href='index.php?sec=$sec&sec2=godmode/servers/plugin&tab=$tab&view=".$row['id'].'&tab=plugins&pure='.$config['pure']."'>".html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>&nbsp;&nbsp;'; echo "<a href='index.php?sec=$sec&sec2=godmode/servers/plugin&tab=$tab&view=".$row['id'].'&tab=plugins&pure='.$config['pure']."'>".html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>&nbsp;&nbsp;';
echo "<a href='index.php?sec=$sec&sec2=godmode/servers/plugin&tab=$tab&kill_plugin=".$row['id'].'&tab=plugins&pure='.$config['pure']."' onclick='javascript: if (!confirm(\"".__('All the modules that are using this plugin will be deleted').'. '.__('Are you sure?')."\")) return false;'>".html_print_image('images/cross.png', true, ['border' => '0']).'</a>'; echo "<a href='index.php?sec=$sec&sec2=godmode/servers/plugin&tab=$tab&kill_plugin=".$row['id'].'&tab=plugins&pure='.$config['pure']."' onclick='javascript: if (!confirm(\"".__('All the modules that are using this plugin will be deleted').'. '.__('Are you sure?')."\")) return false;'>".html_print_image('images/cross.png', true, ['border' => '0']).'</a>';
if (is_metaconsole()) {
echo "&nbsp;&nbsp;&nbsp;<a href='index.php?sec=$sec&sec2=godmode/servers/plugin&tab=$tab&deploy_plugin=".$row['id'].'&tab=plugins&pure='.$config['pure']."'>".html_print_image('images/deploy.png', true, ['title' => __('Deploy'), 'width' => '21 px']).'</a>&nbsp;&nbsp;';
}
echo '</td>'; echo '</td>';
}
echo '</tr>'; echo '</tr>';
} }
@ -813,12 +1033,15 @@ if (($create != '') or ($view != '')) {
ui_print_info_message(['no_close' => true, 'message' => __('There are no plugins in the system') ]); ui_print_info_message(['no_close' => true, 'message' => __('There are no plugins in the system') ]);
} }
if ($management_allowed) {
echo "<table width='100%'>"; echo "<table width='100%'>";
echo '<tr><td align=right>'; echo '<tr><td align=right>';
echo "<form name=plugin method='post' action='index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create=1&pure=".$config['pure']."'>"; echo "<form name=plugin method='post' action='index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create=1&pure=".$config['pure']."'>";
echo "<input name='crtbutton' type='submit' class='sub next' value='".__('Add')."'>"; echo "<input name='crtbutton' type='submit' class='sub next' value='".__('Add')."'>";
echo '</td></tr></table>'; echo '</td></tr></table>';
echo '<div id="deploy_messages" style="display: none">';
}
// The '%s' will be replaced in the javascript code of the function 'show_locked_dialog' // The '%s' will be replaced in the javascript code of the function 'show_locked_dialog'
echo "<div id='dialog_locked' title='".__('List of modules and components created by "%s" ')."' style='display: none; text-align: left;'>"; echo "<div id='dialog_locked' title='".__('List of modules and components created by "%s" ')."' style='display: none; text-align: left;'>";
@ -828,7 +1051,6 @@ if (($create != '') or ($view != '')) {
} }
ui_require_javascript_file('pandora_modules'); ui_require_javascript_file('pandora_modules');
?> ?>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -30,6 +30,7 @@ require_once __DIR__.'/Wizard.main.php';
require_once $config['homedir'].'/include/functions_users.php'; require_once $config['homedir'].'/include/functions_users.php';
require_once $config['homedir'].'/include/functions_reports.php'; require_once $config['homedir'].'/include/functions_reports.php';
require_once $config['homedir'].'/include/functions_cron.php'; require_once $config['homedir'].'/include/functions_cron.php';
enterprise_include('include/functions_tasklist.php');
/** /**
* Defined as wizard to guide user to explore running tasks. * Defined as wizard to guide user to explore running tasks.
@ -72,6 +73,9 @@ class DiscoveryTaskList extends Wizard
/** /**
* Implements run method. * Implements run method.
* *
* @param string $message Redirected input.
* @param boolean $status Redirected input.
*
* @return mixed Returns null if wizard is ongoing. Result if done. * @return mixed Returns null if wizard is ongoing. Result if done.
*/ */
public function run($message='', $status=null) public function run($message='', $status=null)
@ -115,43 +119,39 @@ class DiscoveryTaskList extends Wizard
if (enterprise_installed()) { if (enterprise_installed()) {
// This check only applies to enterprise users. // This check only applies to enterprise users.
// Check if DiscoveryCronTasks is running. Warn user if not. enterprise_hook('tasklist_checkrunning');
if ($config['cron_last_run'] == 0
|| (get_system_time() - $config['cron_last_run']) > 3600
) {
$message_conf_cron = __('DiscoveryConsoleTasks is not running properly').'. ';
if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') {
$message_conf_cron .= __('Discovery relies on a proper setup of cron, the time-based scheduling service');
$message_conf_cron .= '. '.__('Please, add the following line to your crontab file:');
$message_conf_cron .= '<b><pre style="color: #333;">* * * * * &lt;user&gt; wget -q -O - --no-check-certificate ';
$message_conf_cron .= str_replace(
ENTERPRISE_DIR.'/meta/',
'',
ui_get_full_url(false)
);
$message_conf_cron .= ENTERPRISE_DIR.'/'.EXTENSIONS_DIR;
$message_conf_cron .= '/cron/cron.php &gt;&gt; ';
$message_conf_cron .= $config['homedir'].'/pandora_console.log</pre></b>';
}
if (isset($config['cron_last_run']) === true
&& $config['cron_last_run'] > 0
) {
$message_conf_cron .= '<p style="color: #333;">'.__('Last execution').': ';
$message_conf_cron .= date('Y/m/d H:i:s', $config['cron_last_run']).'</p>';
$message_conf_cron .= '<p style="color: #333;">';
$message_conf_cron .= __('Please check process is no locked.').'</p>';
}
ui_print_warning_message($message_conf_cron, '', false);
}
}
$ret = $this->showListConsoleTask(); $ret = $this->showListConsoleTask();
} else {
$ret = false;
}
$ret2 = $this->showList(); $ret2 = $this->showList();
if ($ret === false && $ret2 === false) { if ($ret === false && $ret2 === false) {
include_once $config['homedir'].'/general/firts_task/recon_view.php'; include_once $config['homedir'].'/general/firts_task/recon_view.php';
} else {
$form = [
'form' => [
'method' => 'POST',
'action' => ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/discovery'
),
],
'inputs' => [
[
'arguments' => [
'name' => 'submit',
'label' => __('Go back'),
'type' => 'submit',
'attributes' => 'class="sub cancel"',
'return' => true,
],
],
],
];
$this->printForm($form);
} }
return $ret; return $ret;
@ -237,7 +237,7 @@ class DiscoveryTaskList extends Wizard
$id_console_task = (int) get_parameter('id_console_task'); $id_console_task = (int) get_parameter('id_console_task');
if ($id_console_task !== null) { if ($id_console_task !== null) {
cron_task_run($id_console_task, true); enterprise_include('cron_task_run', $id_console_task, true);
// Trick to avoid double execution. // Trick to avoid double execution.
header('Location: '.$this->url); header('Location: '.$this->url);
} }
@ -311,11 +311,8 @@ class DiscoveryTaskList extends Wizard
if ($servers === false) { if ($servers === false) {
$servers = []; $servers = [];
ui_print_error_message(__('Discovery Server is disabled')); ui_print_error_message(__('Discovery Server is disabled'));
return false; $check = db_get_all_rows_sql('SELECT * FROM trecon_task');
} else { return (bool) $check;
$recon_task = db_get_all_rows_sql('SELECT * FROM trecon_task');
if ($recon_task === false) {
return false;
} else { } else {
include_once $config['homedir'].'/include/functions_graph.php'; include_once $config['homedir'].'/include/functions_graph.php';
include_once $config['homedir'].'/include/functions_servers.php'; include_once $config['homedir'].'/include/functions_servers.php';
@ -343,12 +340,7 @@ class DiscoveryTaskList extends Wizard
foreach ($servers as $serverItem) { foreach ($servers as $serverItem) {
$id_server = $serverItem['id_server']; $id_server = $serverItem['id_server'];
$server_name = servers_get_name($id_server); $server_name = servers_get_name($id_server);
$recon_tasks = db_get_all_rows_field_filter( $recon_tasks = db_get_all_rows_sql('SELECT * FROM trecon_task');
'trecon_task',
'id_recon_server',
$id_server
);
$user_groups = implode(',', array_keys(users_get_groups())); $user_groups = implode(',', array_keys(users_get_groups()));
$defined_tasks = db_get_all_rows_filter( $defined_tasks = db_get_all_rows_filter(
'tuser_task_scheduled', 'tuser_task_scheduled',
@ -528,39 +520,17 @@ class DiscoveryTaskList extends Wizard
array_push($table->data, $data); array_push($table->data, $data);
} }
echo '<h2>'.__('Server tasks').'</h2>';
if (empty($table->data)) { if (empty($table->data)) {
echo '<div class="nf">'.__('Server').' '.$server_name.' '.__('has no recon tasks assigned').'</div>'; echo '<div class="nf">'.__('Server').' '.$server_name.' '.__('has no discovery tasks assigned').'</div>';
return false;
} else { } else {
echo '<h2>'.__('Server task').'</h2>';
html_print_table($table); html_print_table($table);
} }
unset($table); unset($table);
} }
} }
}
$form = [
'form' => [
'method' => 'POST',
'action' => ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/discovery'
),
],
'inputs' => [
[
'arguments' => [
'name' => 'submit',
'label' => __('Go back'),
'type' => 'submit',
'attributes' => 'class="sub cancel"',
'return' => true,
],
],
],
];
$this->printForm($form);
return true; return true;
} }
@ -573,385 +543,7 @@ class DiscoveryTaskList extends Wizard
*/ */
public function showListConsoleTask() public function showListConsoleTask()
{ {
global $config; return enterprise_hook('tasklist_showListConsoleTask', [$this]);
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
'Trying to access recon task viewer'
);
include 'general/noaccess.php';
return false;
}
$read_perms = check_acl(
$config['id_user'],
0,
'RR'
);
$write_perms = check_acl(
$config['id_user'],
0,
'RW'
);
$manage_perms = check_acl(
$config['id_user'],
0,
'RM'
);
$manage_pandora = check_acl(
$config['id_user'],
0,
'PM'
);
$url = 'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist&';
$user_groups = implode(
',',
array_keys(users_get_groups())
);
$defined_tasks = db_get_all_rows_filter(
'tuser_task_scheduled',
'id_grupo IN ('.$user_groups.')'
);
if (!check_acl($config['id_user'], 0, 'PM')) {
$read_tasks = [];
foreach ($defined_tasks as $task) {
$function_name = db_get_value(
'function_name',
'tuser_task',
'id',
$task['id_user_task']
);
if (($function_name != 'cron_task_execute_custom_script')
&& ($function_name != 'cron_task_do_backup')
) {
$read_tasks[] = $task;
}
}
$defined_tasks = $read_tasks;
if (empty($defined_tasks)) {
$defined_tasks = false;
}
}
if ($defined_tasks !== false) {
echo '<h2>'.__('Console task').'</h2>';
$table = new stdClass();
$table->class = 'databox data';
$table->width = '100%';
$table->data = [];
$table->head = [];
$table->head[0] = '';
$table->head[1] = __('User');
$table->head[2] = __('Task');
$table->head[3] = __('Scheduled');
$table->head[4] = __('Next execution');
$table->head[5] = __('Last run');
$table->head[6] = __('Group');
$table->head[7] = __('Operations');
$table->align[7] = 'left';
foreach ($defined_tasks as $task) {
$data = [];
$function_name = db_get_value(
'function_name',
'tuser_task',
'id',
$task['id_user_task']
);
switch ($function_name) {
case 'cron_task_generate_report':
if ($write_perms || $manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value(
'name',
'tuser_task',
'id',
$task['id_user_task']
);
$args = unserialize($task['args']);
$report = reports_get_report($args[0]);
// Check ACL in reports_get_report return false.
if ($report === false) {
continue;
}
$email = $args[1];
$data[2] .= '<br>- '.__('Report').": <a href='index.php?sec=reporting&sec2=operation/reporting/reporting_viewer&id=".$args[0]."'>";
$data[2] .= $report['name'].'</a>';
$data[2] .= '<br>- '.__('Email').": <a href='mailto:".$email."'>";
$data[2] .= ui_print_truncate_text(
$email,
60,
false
).'</a>';
break;
case 'cron_task_generate_report_by_template':
if ($write_perms || $manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value(
'name',
'tuser_task',
'id',
$task['id_user_task']
);
$args = unserialize($task['args']);
$filter = [];
$filter['id_report'] = $args[0];
$template = db_get_row_filter(
'treport_template',
$filter,
false
);
// Check ACL in reports_get_report return false.
if ($template === false) {
continue;
}
$agents_id = $args[1];
$id_group = $args[2];
$report_per_agent = $args[0];
$report_name = $args[3];
$email = $args[4];
$data[2] .= '<br>- '.__('Template').": <a href='index.php?sec=reporting&sec2=operation/reporting/reporting_viewer";
$data[2] .= '&id='.$args[0]."'>".$template['name'].'</a>';
$data[2] .= '<br>- '.__('Agents').': '.$agents_id.'</a>';
$data[2] .= '<br>- '.__('Report per agent').': '.$report_per_agent.'</a>';
$data[2] .= '<br>- '.__('Report name').': '.$report_name.'</a>';
$data[2] .= '<br>- '.__('Email').": <a href='mailto:".$email."'>".$email.'</a>';
break;
case 'cron_task_execute_custom_script':
if ($manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value(
'name',
'tuser_task',
'id',
$task['id_user_task']
);
$args = unserialize($task['args']);
$data[2] .= '<br>- '.__('Custom script').': '.$args[0];
break;
case 'cron_task_save_report_to_disk':
if ($write_perms || $manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value(
'name',
'tuser_task',
'id',
$task['id_user_task']
);
$args = unserialize($task['args']);
$report = reports_get_report($args[0]);
// Check ACL in reports_get_report return false.
if ($report === false) {
continue;
}
$path = $args[1];
$data[2] .= '<br>- '.__('Report').": <a href='index.php?sec=reporting&sec2=operation/reporting/reporting_viewer";
$data[2] .= '&id='.$args[0]."'>".$report['name'].'</a>';
$data[2] .= '<br>- '.__('Path').': '.$path.'</a>';
break;
case 'cron_task_save_xml_report_to_disk':
if ($write_perms || $manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value('name', 'tuser_task', 'id', $task['id_user_task']);
$args = unserialize($task['args']);
$report = reports_get_report($args[0]);
// Check ACL in reports_get_report return false.
if ($report === false) {
continue;
}
$path = $args[1];
$data[2] .= '<br>- '.__('Report').": <a href='index.php?sec=reporting&sec2=operation/reporting/reporting_viewer";
$data[2] .= '&id='.$args[0]."'>".$report['name'].'</a>';
$data[2] .= '<br>- '.__('Path').': '.$path.'</a>';
break;
case 'cron_task_do_backup':
if ($manage_pandora) {
$data[0] = '<a href="'.$url;
$data[0] .= 'force_run=1&id_console_task='.$task['id'].'">';
$data[0] .= html_print_image(
'images/target.png',
true,
['title' => __('Force run')]
);
$data[0] .= '</a>';
} else {
$data[0] = '';
}
$data[1] = $task['id_usuario'];
$data[2] = db_get_value(
'name',
'tuser_task',
'id',
$task['id_user_task']
);
$args = unserialize($task['args']);
break;
default:
// Ignore.
break;
}
$data[3] = cron_get_scheduled_string($task['scheduled']);
$data[4] = date('Y/m/d H:i:s', $args['first_execution']);
$data[5] = empty($task['last_run']) ? __('Never') : date('Y/m/d H:i:s', $task['last_run']);
$data[6] = ui_print_group_icon($task['id_grupo'], true);
if ($function_name == 'cron_task_do_backup' || $function_name == 'cron_task_execute_custom_script') {
if ($manage_pandora) {
$data[7] = '<a href="'.ui_get_full_url(
sprintf(
'index.php?sec=gservers&sec2=godmode/servers/discovery&%s&task=%d',
$this->getTargetWiz(['description' => 'console_task']),
$task['id']
)
).'">';
$data[7] .= html_print_image(
'images/config.png',
true,
['title' => __('Edit')]
).'</a>';
}
if ($manage_pandora) {
$data[7] .= '<a href="'.$url;
$data[7] .= 'delete_console_task=1&id_console_task='.$task['id'].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
$data[7] .= html_print_image(
'images/cross.png',
true,
['title' => __('Delete')]
);
$data[7] .= '</a>';
}
} else {
if ($write_perms || $manage_pandora) {
$data[7] = '<a href="'.ui_get_full_url(
sprintf(
'index.php?sec=gservers&sec2=godmode/servers/discovery&%s&task=%d',
$this->getTargetWiz(['description' => 'console_task']),
$task['id']
)
).'">';
$data[7] .= html_print_image(
'images/config.png',
true,
['title' => __('Edit')]
).'</a>';
}
if ($manage_perms || $manage_pandora) {
$data[7] .= '<a href="'.$url;
$data[7] .= 'delete_console_task=1&id_console_task='.$task['id'].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
$data[7] .= html_print_image(
'images/cross.png',
true,
['title' => __('Delete')]
);
$data[7] .= '</a>';
}
}
array_push($table->data, $data);
}
html_print_table($table);
} else {
return false;
}
return true;
} }

View File

@ -29,6 +29,7 @@
require_once __DIR__.'/Wizard.main.php'; require_once __DIR__.'/Wizard.main.php';
require_once $config['homedir'].'/include/functions_users.php'; require_once $config['homedir'].'/include/functions_users.php';
enterprise_include('include/class/CSVImportAgents.class.php'); enterprise_include('include/class/CSVImportAgents.class.php');
enterprise_include_once('include/functions_hostdevices.php');
/** /**
* Wizard section Host&devices. * Wizard section Host&devices.
@ -476,6 +477,10 @@ class HostDevices extends Wizard
$task_url = '&task='.$this->task['id_rt']; $task_url = '&task='.$this->task['id_rt'];
} }
$breadcrum[] = [
'link' => 'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd',
'label' => __($this->label),
];
for ($i = 0; $i < $this->maxPagesNetScan; $i++) { for ($i = 0; $i < $this->maxPagesNetScan; $i++) {
$breadcrum[] = [ $breadcrum[] = [
'link' => 'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd&mode=netscan&page='.$i.$task_url, 'link' => 'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd&mode=netscan&page='.$i.$task_url,
@ -710,9 +715,6 @@ $("select#interval_manual_defined").change(function() {
// XXX: Could be improved validating inputs before continue (JS) // XXX: Could be improved validating inputs before continue (JS)
// Print NetScan page 0. // Print NetScan page 0.
$this->printForm($form); $this->printForm($form);
$this->printGoBackButton(
$this->url.'&page='.($this->page - 1).$task_url
);
} }
} }
@ -779,266 +781,17 @@ $("select#interval_manual_defined").change(function() {
]; ];
} }
if (enterprise_installed()) {
// Feature configuration. // Feature configuration.
// Input: SNMP enabled. $extra = enterprise_hook('hd_showextrainputs', [$this]);
$form['inputs'][] = [ if (is_array($extra) === true) {
'label' => __('SNMP enabled'), $form['inputs'] = array_merge(
'arguments' => [ $form['inputs'],
'name' => 'snmp_enabled', $extra['inputs']
'type' => 'switch', );
'return' => true, $form['js'] = $extra['js'];
'value' => (isset($this->task['snmp_enabled'])) ? $this->task['snmp_enabled'] : 1, }
'onclick' => 'extraSNMP();', }
],
];
// SNMP CONFIGURATION.
$form['inputs'][] = [
'hidden' => 1,
'block_id' => 'snmp_extra',
'block_content' => [
[
'label' => __('SNMP version'),
'arguments' => [
'name' => 'snmp_version',
'fields' => [
'1' => 'v. 1',
'2c' => 'v. 2c',
'3' => 'v. 3',
],
'type' => 'select',
'script' => 'SNMPExtraShow(this.value)',
'selected' => $this->task['snmp_version'],
'return' => true,
],
],
],
];
// SNMP Options pack v1.
$form['inputs'][] = [
'hidden' => 1,
'block_id' => 'snmp_options_basic',
'block_content' => [
[
'label' => '<b>'.__('SNMP Default community').'</b>'.ui_print_help_tip(
__(
'You can specify several values, separated by commas, for example: public,mysecret,1234'
),
true
),
'arguments' => [
'name' => 'community',
'type' => 'text',
'value' => $this->task['snmp_community'],
'size' => 25,
'return' => true,
],
],
],
];
// SNMP Options pack v3.
$form['inputs'][] = [
'hidden' => 1,
'block_id' => 'snmp_options_v3',
'block_content' => [
[
'label' => '<b>'.__('Context').'</b>',
'arguments' => [
'name' => 'snmp_context',
'type' => 'text',
'value' => $this->task['snmp_community'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Auth user').'</b>',
'arguments' => [
'name' => 'snmp_auth_user',
'type' => 'text',
'value' => $this->task['snmp_auth_user'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Auth password').'</b>'.ui_print_help_tip(
__(
'The pass length must be eight character minimum.'
),
true
),
'arguments' => [
'name' => 'snmp_auth_pass',
'type' => 'password',
'value' => $this->task['snmp_auth_pass'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Privacy method').'</b>',
'arguments' => [
'name' => 'snmp_privacy_method',
'type' => 'select',
'fields' => [
'DES' => __('DES'),
'AES' => __('AES'),
],
'selected' => $this->task['snmp_privacy_method'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Privacy pass').'</b>'.ui_print_help_tip(
__(
'The pass length must be eight character minimum.'
),
true
),
'arguments' => [
'name' => 'snmp_privacy_pass',
'type' => 'password',
'value' => $this->task['snmp_privacy_pass'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Auth method').'</b>',
'arguments' => [
'name' => 'snmp_auth_method',
'type' => 'select',
'fields' => [
'MD5' => __('MD5'),
'SHA' => __('SHA'),
],
'selected' => $this->task['snmp_auth_method'],
'size' => 15,
'return' => true,
],
],
[
'label' => '<b>'.__('Security level').'</b>',
'arguments' => [
'name' => 'snmp_security_level',
'type' => 'select',
'fields' => [
'noAuthNoPriv' => __('Not auth and not privacy method'),
'authNoPriv' => __('Auth and not privacy method'),
'authPriv' => __('Auth and privacy method'),
],
'selected' => $this->task['snmp_security_level'],
'size' => 15,
'return' => true,
],
],
],
];
// Input: WMI enabled.
$form['inputs'][] = [
'label' => __('WMI enabled'),
'arguments' => [
'name' => 'wmi_enabled',
'type' => 'switch',
'value' => (isset($this->task['wmi_enabled'])) ? $this->task['wmi_enabled'] : 0,
'return' => true,
'onclick' => 'toggleWMI();',
],
];
// WMI CONFIGURATION.
$form['inputs'][] = [
'block_id' => 'wmi_extra',
'hidden' => 1,
'block_content' => [
[
'label' => '<b>'.__('WMI Auth. strings').'</b>'.ui_print_help_tip(
__(
'Auth strings must be defined as user%pass, comma separated as many you need.'
),
true
),
'arguments' => [
'name' => 'auth_strings',
'type' => 'text',
'value' => $this->task['auth_strings'],
'return' => true,
],
],
],
];
// Input: Enforce os detection.
$form['inputs'][] = [
'label' => __('OS detection'),
'arguments' => [
'name' => 'os_detect',
'type' => 'switch',
'return' => true,
'value' => (isset($this->task['os_detect'])) ? $this->task['os_detect'] : 1,
],
];
// Input: Name resolution.
$form['inputs'][] = [
'label' => __('Name resolution'),
'arguments' => [
'name' => 'resolve_names',
'type' => 'switch',
'return' => true,
'value' => (isset($this->task['resolve_names'])) ? $this->task['resolve_names'] : 0,
],
];
// Input: Parent detection.
$form['inputs'][] = [
'label' => __('Parent detection'),
'arguments' => [
'name' => 'parent_detection',
'type' => 'switch',
'return' => true,
'value' => (isset($this->task['parent_detection'])) ? $this->task['parent_detection'] : 1,
],
];
// Input: Parent recursion.
$form['inputs'][] = [
'label' => __('Parent recursion'),
'arguments' => [
'name' => 'parent_recursion',
'type' => 'switch',
'return' => true,
'value' => (isset($this->task['parent_recursion'])) ? $this->task['parent_recursion'] : 1,
],
];
// Input: VLAN enabled.
$form['inputs'][] = [
'label' => __('VLAN enabled'),
'arguments' => [
'name' => 'vlan_enabled',
'type' => 'switch',
'return' => true,
'value' => (isset($this->task['vlan_enabled'])) ? $this->task['vlan_enabled'] : 1,
],
];
// Submit button. // Submit button.
$form['inputs'][] = [ $form['inputs'][] = [
@ -1051,57 +804,6 @@ $("select#interval_manual_defined").change(function() {
], ],
]; ];
$form['js'] = '
function SNMPExtraShow(target) {
$("#snmp_options_basic").hide();
$("#snmp_options_v3").hide();
if (document.getElementsByName("snmp_enabled")[0].checked) {
$("#snmp_extra").show();
if (target == 3) {
$("#snmp_options_v3").show();
} else {
$("#snmp_options_basic").show();
}
}
}
function extraSNMP() {
if (document.getElementsByName("snmp_enabled")[0].checked) {
SNMPExtraShow($("#snmp_version").val());
$("#snmp_extra").show();
} else {
// Hide unusable sections
$("#snmp_extra").hide();
$("#snmp_options_basic").hide();
$("#snmp_options_v3").hide();
// Disable snmp dependant checks
if (document.getElementsByName("parent_recursion")[0].checked)
$("input[name=parent_recursion]").click();
if (document.getElementsByName("parent_detection")[0].checked)
$("input[name=parent_detection]").click();
if (document.getElementsByName("vlan_enabled")[0].checked)
$("input[name=vlan_enabled]").click();
}
}
function toggleWMI() {
if (document.getElementsByName("wmi_enabled")[0].checked)
$("#wmi_extra").show();
else
$("#wmi_extra").hide();
}
$(function() {
SNMPExtraShow($("#snmp_version").val());
toggleWMI();
});
';
$form['form'] = [ $form['form'] = [
'method' => 'POST', 'method' => 'POST',
'action' => $this->url.'&mode=netscan&page='.($this->page + 1).'&task='.$this->task['id_rt'], 'action' => $this->url.'&mode=netscan&page='.($this->page + 1).'&task='.$this->task['id_rt'],

View File

@ -1,11 +1,39 @@
<?php <?php
/** /**
* Interfaz tope gama que obliga a implementar metodos. * Extension to schedule tasks on Pandora FMS Console
*
* @category Wizard
* @package Pandora FMS
* @subpackage Wizard skel
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/ */
define('CLOUDWIZARD_AWS_DESCRIPTION', 'Discovery.Cloud.AWS.EC2'); define('CLOUDWIZARD_AWS_DESCRIPTION', 'Discovery.Cloud.AWS.EC2');
/**
* Global Wizard generic class. Needs to be inherited.
*
* Used in Hostdevices class, Applications class and others, is the core of
* Discovery proyect.
*/
class Wizard class Wizard
{ {
@ -17,9 +45,9 @@ class Wizard
public $breadcrum; public $breadcrum;
/** /**
* Undocumented variable * Current page
* *
* @var [type] * @var integer
*/ */
public $page; public $page;
@ -498,6 +526,8 @@ class Wizard
/** /**
* Prints a go back button redirecting to main page. * Prints a go back button redirecting to main page.
* *
* @param string $url Optional target url.
*
* @return void * @return void
*/ */
public function printGoBackButton($url=null) public function printGoBackButton($url=null)

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@ -580,7 +580,6 @@ if ($get_extended_event) {
dataType : "html", dataType : "html",
success: function (data) { success: function (data) {
$("#related_data").html(data); $("#related_data").html(data);
console.log("vamos puta");
} }
}); });
});'; });';

View File

@ -43,6 +43,7 @@ if (is_ajax()) {
include_once $config['homedir'].'/include/class/TreeModule.class.php'; include_once $config['homedir'].'/include/class/TreeModule.class.php';
include_once $config['homedir'].'/include/class/TreeTag.class.php'; include_once $config['homedir'].'/include/class/TreeTag.class.php';
include_once $config['homedir'].'/include/class/TreeGroup.class.php'; include_once $config['homedir'].'/include/class/TreeGroup.class.php';
include_once $config['homedir'].'/include/class/TreeService.class.php';
include_once $config['homedir'].'/include/class/TreeGroupEdition.class.php'; include_once $config['homedir'].'/include/class/TreeGroupEdition.class.php';
enterprise_include_once('include/class/TreePolicies.class.php'); enterprise_include_once('include/class/TreePolicies.class.php');
enterprise_include_once('include/class/TreeGroupMeta.class.php'); enterprise_include_once('include/class/TreeGroupMeta.class.php');
@ -120,6 +121,10 @@ if (is_ajax()) {
$tree = new TreeGroupEdition($type, $rootType, $id, $rootID, $serverID, $childrenMethod, $access); $tree = new TreeGroupEdition($type, $rootType, $id, $rootID, $serverID, $childrenMethod, $access);
break; break;
case 'services':
$tree = new TreeService($type, $rootType, $id, $rootID, $serverID, $childrenMethod, $access);
break;
default: default:
// FIXME. No error handler // FIXME. No error handler
return; return;
@ -127,6 +132,7 @@ if (is_ajax()) {
$tree->setFilter($filter); $tree->setFilter($filter);
ob_clean(); ob_clean();
echo json_encode(['success' => 1, 'tree' => $tree->getArray()]); echo json_encode(['success' => 1, 'tree' => $tree->getArray()]);
return; return;
} }

View File

@ -1369,8 +1369,12 @@ function local_ldap_search($ldap_host, $ldap_port=389, $ldap_version=3, $dn, $ac
$tls = ' -ZZ '; $tls = ' -ZZ ';
} }
$ldap_host = ' -h '.$ldap_host; if (stripos($ldap_host, 'ldap') !== false) {
$ldap_port = ' -p '.$ldap_port; $ldap_host = ' -H '.$ldap_host.':'.$ldap_port;
} else {
$ldap_host = ' -h '.$ldap_host.' -p '.$ldap_port;
}
$ldap_version = ' -P '.$ldap_version; $ldap_version = ' -P '.$ldap_version;
if (!empty($ldap_admin_user)) { if (!empty($ldap_admin_user)) {
$ldap_admin_user = " -D '".$ldap_admin_user."'"; $ldap_admin_user = " -D '".$ldap_admin_user."'";
@ -1382,7 +1386,7 @@ function local_ldap_search($ldap_host, $ldap_port=389, $ldap_version=3, $dn, $ac
$dn = " -b '".$dn."'"; $dn = " -b '".$dn."'";
$shell_ldap_search = explode("\n", shell_exec('ldapsearch -LLL -o ldif-wrap=no -x'.$ldap_host.$ldap_port.$ldap_version.' -E pr=10000/noprompt '.$ldap_admin_user.$ldap_admin_pass.$dn.$filter.$tls.' | grep -v "^#\|^$" | sed "s/:\+ /=>/g"')); $shell_ldap_search = explode("\n", shell_exec('ldapsearch -LLL -o ldif-wrap=no -x'.$ldap_host.$ldap_version.' -E pr=10000/noprompt '.$ldap_admin_user.$ldap_admin_pass.$dn.$filter.$tls.' | grep -v "^#\|^$" | sed "s/:\+ /=>/g"'));
foreach ($shell_ldap_search as $line) { foreach ($shell_ldap_search as $line) {
$values = explode('=>', $line); $values = explode('=>', $line);
if (!empty($values[0]) && !empty($values[1])) { if (!empty($values[0]) && !empty($values[1])) {

View File

@ -57,6 +57,8 @@ class Tree
protected $L2inner = ''; protected $L2inner = '';
protected $avoid_condition = false;
protected $L3forceTagCondition = false; protected $L3forceTagCondition = false;
const TV_DEFAULT_AGENT_STATUS = -1; const TV_DEFAULT_AGENT_STATUS = -1;
@ -77,6 +79,7 @@ class Tree
$this->access = $access; $this->access = $access;
$userGroupsACL = users_get_groups(false, $this->access); $userGroupsACL = users_get_groups(false, $this->access);
$this->userGroupsACL = empty($userGroupsACL) ? false : $userGroupsACL; $this->userGroupsACL = empty($userGroupsACL) ? false : $userGroupsACL;
$this->userGroups = $this->userGroupsACL; $this->userGroups = $this->userGroupsACL;
$this->userGroupsArray = array_keys($this->userGroups); $this->userGroupsArray = array_keys($this->userGroups);
@ -947,7 +950,6 @@ class Tree
} }
$this->processAgents($data); $this->processAgents($data);
$this->tree = $data; $this->tree = $data;
} }
@ -1032,7 +1034,6 @@ class Tree
$data = $this->getProcessedModules($data); $data = $this->getProcessedModules($data);
$this->processModules($data); $this->processModules($data);
$this->tree = $data; $this->tree = $data;
} }
@ -1051,8 +1052,13 @@ class Tree
$tag_condition = $this->getTagCondition(); $tag_condition = $this->getTagCondition();
$tag_join = empty($tag_condition) && (!$this->L3forceTagCondition) ? '' : $this->getTagJoin(); $tag_join = empty($tag_condition) && (!$this->L3forceTagCondition) ? '' : $this->getTagJoin();
if ($this->avoid_condition === true) {
$condition = '';
$inner = '';
} else {
$condition = $this->L2condition; $condition = $this->L2condition;
$inner = $this->L2inner; $inner = $this->L2inner;
}
$columns = 'DISTINCT(tam.id_agente_modulo) AS id, tam.nombre AS name, $columns = 'DISTINCT(tam.id_agente_modulo) AS id, tam.nombre AS name,
tam.id_tipo_modulo, tam.id_modulo, tae.estado, tae.datos, tam.id_tipo_modulo, tam.id_modulo, tae.estado, tae.datos,
@ -1076,10 +1082,10 @@ class Tree
$group_acl $group_acl
$agent_search_filter $agent_search_filter
$agent_status_filter $agent_status_filter
$module_status_filter
$module_search_filter $module_search_filter
$tag_condition $tag_condition
ORDER BY tam.nombre ASC, tam.id_agente_modulo ASC"; ORDER BY tam.nombre ASC, tam.id_agente_modulo ASC";
return $sql; return $sql;
} }

View File

@ -0,0 +1,352 @@
<?php
// Pandora FMS- http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2018 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation; version 2
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
global $config;
require_once $config['homedir'].'/include/class/Tree.class.php';
class TreeService extends Tree
{
protected $propagateCounters = true;
protected $displayAllGroups = false;
public function __construct($type, $rootType='', $id=-1, $rootID=-1, $serverID=false, $childrenMethod='on_demand', $access='AR')
{
global $config;
parent::__construct($type, $rootType, $id, $rootID, $serverID, $childrenMethod, $access);
$this->L1fieldName = 'id_group';
$this->L1extraFields = [
'ts.name AS `name`',
'ts.id AS `sid`',
];
$this->filter['statusAgent'] = AGENT_STATUS_ALL;
$this->avoid_condition = true;
$this->L2inner = 'LEFT JOIN tservice_element tse
ON tse.id_agent = ta.id_agente';
$this->L2condition = 'AND tse.id_service='.$this->id;
}
public function setPropagateCounters($value)
{
$this->propagateCounters = (bool) $value;
}
public function setDisplayAllGroups($value)
{
$this->displayAllGroups = (bool) $value;
}
protected function getData()
{
if ($this->id == -1) {
$this->getFirstLevel();
} else if ($this->type == 'services') {
$this->getSecondLevel();
} else if ($this->type == 'agent') {
$this->getThirdLevel();
}
}
protected function getFirstLevel()
{
$processed_items = $this->getProcessedServices();
$ids = array_keys($processed_items);
$filter = ['id' => $ids];
$own_info = get_user_info($config['id_user']);
if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
$display_all_services = true;
} else {
$display_all_services = false;
}
$this->tree = [];
$services = services_get_services($filter, false, $display_all_services);
foreach ($services as $row) {
$status = services_get_status($row, true);
switch ($status) {
case SERVICE_STATUS_NORMAL:
$processed_items[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_ok_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
break;
case SERVICE_STATUS_CRITICAL:
$processed_items[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_critical_ball.png" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
break;
case SERVICE_STATUS_WARNING:
$processed_items[$row['id']][$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_warning_ball.png" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
break;
case SERVICE_STATUS_UNKNOWN:
default:
$processed_items[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_no_data_ball.png" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
break;
}
}
$this->tree = $processed_items;
}
protected function getProcessedServices()
{
$fields = $this->getFirstLevelFields();
if (users_can_manage_group_all('AR')) {
$groups_acl = '';
} else {
$groups_acl = 'AND ts.id_group IN ('.implode(',', $this->userGroupsArray).')';
}
$sql = sprintf(
"SELECT t1.*
FROM tservice_element tss
RIGHT JOIN
(SELECT ts.id, ts.id_agent_module, ts.name, ts.name AS `alias`, ts.id AS `rootID`,
'services' AS rootType, 'services' AS type,
0 AS quiet,
SUM(if((tse.id_agent<>0), 1, 0)) AS `total_agents`,
SUM(if((tse.id_agente_modulo<>0), 1, 0)) AS `total_modules`,
SUM(if((tse.id_service_child<>0), 1, 0)) AS `total_services`
FROM tservice ts
LEFT JOIN tservice_element tse
ON ts.id=tse.id_service
GROUP BY id
) as t1
ON tss.id_service_child = t1.id
WHERE tss.id_service_child IS NULL
%s
",
$groups_acl
);
$stats = db_get_all_rows_sql($sql);
$services = [];
foreach ($stats as $service) {
$services[$service['id']] = $this->getProcessedItem($services[$service['id']]);
if (($service['total_services'] + $service['total_agents'] + $service['total_modules']) > 0) {
$services[$service['id']]['searchChildren'] = 1;
} else {
$services[$service['id']]['searchChildren'] = 0;
}
$services[$service['id']]['counters'] = [
'total_services' => $service['total_services'],
'total_agents' => $service['total_agents'],
'total_modules' => $service['total_modules'],
];
$services[$service['id']]['name'] = $service['name'];
$services[$service['id']]['id'] = $service['id'];
$services[$service['id']]['serviceDetail'] = 'index.php?sec=network&sec2=enterprise/operation/services/services&tab=service_map&id_service='.(int) $service['id'];
}
return $services;
}
protected function getFirstLevelFields()
{
$fields = [];
return implode(',', array_merge($fields, $this->L1extraFields));
}
protected function getSecondLevel()
{
$data = [];
$data_agents = [];
$data_modules = [];
$data_services = [];
$sql = $this->getSecondLevelSql();
$data_agents = db_process_sql($sql);
if (empty($data_agents)) {
$data_agents = [];
}
$this->processAgents($data_agents);
foreach ($data_agents as $key => $agent) {
$data_agents[$key]['showEventsBtn'] = 1;
$data_agents[$key]['eventAgent'] = $agent['id'];
}
$sql = $this->getSecondLevelModulesSql();
$data_modules = db_process_sql($sql);
if (empty($data_modules)) {
$data_modules = [];
} else {
foreach ($data_modules as $key => $module) {
switch ($module['estado']) {
case '0':
$data_modules[$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_ok_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
break;
case '1':
$data_modules[$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_critical_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
break;
case '2':
$data_modules[$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_warning_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
break;
case '4':
$data_modules[$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_no_data_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
break;
default:
// code...
break;
}
$data_modules[$key]['showEventsBtn'] = 1;
$data_modules[$key]['eventModule'] = $module['id_agente_modulo'];
}
}
$sql = $this->getSecondLevelServicesSql();
$data_services = db_process_sql($sql);
$service_stats = [];
foreach ($data_services as $service) {
$service_stats[$service['id']]['id'] = (int) $service['id'];
$service_stats[$service['id']]['name'] = $service['name'];
$service_stats[$service['id']]['alias'] = $service['name'];
if (($service['total_services'] + $service['total_agents'] + $service['total_modules']) > 0) {
$service_stats[$service['id']]['searchChildren'] = 1;
} else {
$services[$service['id']]['searchChildren'] = 0;
}
$service_stats[$service['id']]['rootID'] = $service['rootID'];
$service_stats[$service['id']]['rootType'] = $service['rootType'];
$service_stats[$service['id']]['type'] = 'services';
$service_stats[$service['id']]['children'] = [];
$service_stats[$service['id']]['serviceDetail'] = 'index.php?sec=network&sec2=enterprise/operation/services/services&tab=service_map&id_service='.(int) $service['id'];
$service_stats[$service['id']]['counters'] = [
'total_services' => $service['total_services'],
'total_agents' => $service['total_agents'],
'total_modules' => $service['total_modules'],
];
}
$own_info = get_user_info($config['id_user']);
if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
$display_all_services = true;
} else {
$display_all_services = false;
}
$services = services_get_services($filter, false, $display_all_services);
foreach ($services as $row) {
if (!array_key_exists($row['id'], $service_stats)) {
continue;
}
$status = services_get_status($row, true);
switch ($status) {
case SERVICE_STATUS_NORMAL:
$service_stats[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_ok_ball.png" data-title="NORMAL status." data-use_title_for_force_title="1" class="forced_title" alt="NORMAL status." />';
break;
case SERVICE_STATUS_CRITICAL:
$service_stats[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_critical_ball.png" data-title="CRITICAL status." data-use_title_for_force_title="1" class="forced_title" alt="CRITICAL status." />';
break;
case SERVICE_STATUS_WARNING:
$service_stats[$row['id']][$key]['statusImageHTML'] = '<img src="images/status_sets/default/agent_warning_ball.png" data-title="WARNING status." data-use_title_for_force_title="1" class="forced_title" alt="WARNING status." />';
break;
case SERVICE_STATUS_UNKNOWN:
default:
$service_stats[$row['id']]['statusImageHTML'] = '<img src="images/status_sets/default/agent_no_data_ball.png" data-title="UNKNOWN status." data-use_title_for_force_title="1" class="forced_title" alt="UNKNOWN status." />';
break;
}
}
$data_services = array_values($service_stats);
$data = array_merge($data_services, $data_agents, $data_modules);
if (empty($data)) {
$this->tree = [];
return;
}
$this->tree = $data;
}
protected function getSecondLevelServicesSql()
{
$group_acl = $this->getGroupAclCondition();
$sql = "SELECT ts.id, ts.name, tse1.id_service AS `rootID`, 'services' AS rootType, 'services' AS type, 0 AS quiet, SUM(if((tse2.id_agent<>0), 1, 0)) AS `total_agents`, SUM(if((tse2.id_agente_modulo<>0), 1, 0)) AS `total_modules`, SUM(if((tse2.id_service_child<>0), 1, 0)) AS `total_services`, 0 AS fired_count, 0 AS normal_count, 0 AS warning_count, 0 AS critical_count, 0 AS unknown_count, 0 AS notinit_count, 0 AS state_critical, 0 AS state_warning, 0 AS state_unknown, 0 AS state_notinit, 0 AS state_normal, 0 AS state_total, '' AS statusImageHTML, '' AS alertImageHTML
FROM tservice_element tse1
LEFT JOIN tservice_element tse2 ON tse1.id_service_child=tse2.id_service
LEFT JOIN tservice ts ON tse1.id_service_child=ts.id
WHERE tse1.id_service=$this->id AND tse1.id_service_child<>0
GROUP BY tse1.id_service_child
";
return $sql;
}
protected function getSecondLevelModulesSql()
{
$sql = "SELECT tse.id_agente_modulo, nombre AS `name`, nombre AS `alias`, tse.id_service AS `rootID`, 'services' AS `rootType`, 'modules' AS `type`, estado
FROM tservice_element tse
INNER JOIN tagente_modulo tam ON tse.id_agente_modulo=tam.id_agente_modulo
INNER JOIN tagente_estado tae ON tam.id_agente_modulo=tae.id_agente_estado
WHERE tse.id_service=$this->id AND tse.id_agente_modulo<>0
";
return $sql;
}
protected function getAgentStatusFilter($status=self::TV_DEFAULT_AGENT_STATUS)
{
return '';
}
}

View File

@ -20,8 +20,8 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC190226'; $build_version = 'PC190228';
$pandora_version = 'v7.0NG.731'; $pandora_version = 'v7.0NG.732';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.
$script_tz = @date_default_timezone_get(); $script_tz = @date_default_timezone_get();

View File

@ -1,23 +1,31 @@
<?php <?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation; version 2
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
/** /**
* Pandora FMS - http://pandorafms.com
* ==================================================
* Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; version 2
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* @package Include * @package Include
* @subpackage Clippy * @subpackage Clippy
*/ */
// Begin.
/**
* Starts clippy.
*
* @param string $sec2 Section.
* @return void
*/
function clippy_start($sec2) function clippy_start($sec2)
{ {
global $config; global $config;
@ -28,7 +36,7 @@ function clippy_start($sec2)
$sec2 = str_replace('/', '_', $sec2); $sec2 = str_replace('/', '_', $sec2);
// Avoid some case the other parameters in the url // Avoid some case the other parameters in the url.
if (strstr($sec2, '&') !== false) { if (strstr($sec2, '&') !== false) {
$chunks = explode('&', $sec2); $chunks = explode('&', $sec2);
$sec2 = $chunks[0]; $sec2 = $chunks[0];
@ -42,7 +50,7 @@ function clippy_start($sec2)
clippy_write_javascript_helps_steps($tours); clippy_write_javascript_helps_steps($tours);
} }
// Add homepage for all pages for to show the "task sugestions" // Add homepage for all pages for to show the "task sugestions".
include 'include/help/clippy/homepage.php'; include 'include/help/clippy/homepage.php';
$tours = clippy_start_page_homepage(); $tours = clippy_start_page_homepage();
@ -56,12 +64,24 @@ function clippy_start($sec2)
} }
/**
* Undocumented function
*
* @return void
*/
function clippy_clean_help() function clippy_clean_help()
{ {
set_cookie('clippy', null); set_cookie('clippy', null);
} }
/**
* Undocumented function
*
* @param something $tours Tour.
*
* @return void
*/
function clippy_write_javascript_helps_steps($tours) function clippy_write_javascript_helps_steps($tours)
{ {
global $config; global $config;
@ -71,7 +91,7 @@ function clippy_write_javascript_helps_steps($tours)
$first_step_by_default = $tours['first_step_by_default']; $first_step_by_default = $tours['first_step_by_default'];
} }
// For the help context instead the clippy // For the help context instead the clippy.
$help_context = false; $help_context = false;
if (isset($tours['help_context'])) { if (isset($tours['help_context'])) {
$help_context = $tours['help_context']; $help_context = $tours['help_context'];
@ -86,7 +106,7 @@ function clippy_write_javascript_helps_steps($tours)
$clippy = get_cookie('clippy', false); $clippy = get_cookie('clippy', false);
set_cookie('clippy', null); set_cookie('clippy', null);
// Get the help steps from a task // Get the help steps from a task.
$steps = null; $steps = null;
if (isset($tours['tours'][$clippy])) { if (isset($tours['tours'][$clippy])) {
$steps = $tours['tours'][$clippy]['steps']; $steps = $tours['tours'][$clippy]['steps'];
@ -94,7 +114,7 @@ function clippy_write_javascript_helps_steps($tours)
if ($first_step_by_default) { if ($first_step_by_default) {
if (empty($steps)) { if (empty($steps)) {
// Get the first by default // Get the first by default.
$temp = reset($tours['tours']); $temp = reset($tours['tours']);
$steps = $temp['steps']; $steps = $temp['steps'];
} }
@ -121,7 +141,7 @@ function clippy_write_javascript_helps_steps($tours)
if ($first_step_by_default) { if ($first_step_by_default) {
if (empty($conf)) { if (empty($conf)) {
// Get the first by default // Get the first by default.
$temp = reset($tours['tours']); $temp = reset($tours['tours']);
$conf = $temp['conf']; $conf = $temp['conf'];
} }
@ -137,7 +157,7 @@ function clippy_write_javascript_helps_steps($tours)
} }
$autostart = true; $autostart = true;
if (!is_null($conf['autostart'])) { if (isset($conf['autostart'])) {
$autostart = $conf['autostart']; $autostart = $conf['autostart'];
} }
@ -185,9 +205,25 @@ function clippy_write_javascript_helps_steps($tours)
<?php echo $name_obj_js_tour; ?> = introJs(); <?php echo $name_obj_js_tour; ?> = introJs();
<?php echo $name_obj_js_tour; ?>.setOptions({ <?php echo $name_obj_js_tour; ?>.setOptions({
steps: <?php echo json_encode((bool) $steps); ?>, steps: <?php echo json_encode($steps); ?>,
showBullets: <?php echo json_encode((bool) $show_bullets); ?>, showBullets:
showStepNumbers: <?php echo json_encode((bool) $show_step_numbers); ?>, <?php
if ($show_bullets) {
echo 'true';
} else {
echo 'false';
}
?>
,
showStepNumbers:
<?php
if ($show_step_numbers) {
echo 'true';
} else {
echo 'false';
}
?>
,
nextLabel: "<?php echo __('Next &rarr;'); ?>", nextLabel: "<?php echo __('Next &rarr;'); ?>",
prevLabel: "<?php echo __('&larr; Back'); ?>", prevLabel: "<?php echo __('&larr; Back'); ?>",
skipLabel: "<?php echo $skipLabel; ?>", skipLabel: "<?php echo $skipLabel; ?>",
@ -205,13 +241,22 @@ function clippy_write_javascript_helps_steps($tours)
return exit; return exit;
}); });
if (<?php echo json_encode(!empty($conf['next_help'])); ?>) { <?php
if (!empty($conf['next_help'])) {
?>
clippy_set_help('<?php echo $conf['next_help']; ?>'); clippy_set_help('<?php echo $conf['next_help']; ?>');
<?php
} }
?>
if (<?php echo json_encode((bool) $autostart); ?>) { <?php
<?php echo $name_obj_js_tour; ?>.start(); if ($autostart) {
echo $name_obj_js_tour;
?>
.start();
<?php
} }
?>
}); });
<?php echo $other_js; ?> <?php echo $other_js; ?>
@ -221,6 +266,13 @@ function clippy_write_javascript_helps_steps($tours)
} }
/**
* Undocumented function
*
* @param string $help Help.
*
* @return void
*/
function clippy_context_help($help=null) function clippy_context_help($help=null)
{ {
global $config; global $config;
@ -244,10 +296,10 @@ function clippy_context_help($help=null)
$code = str_replace('{clippy}', '#'.$id, $code); $code = str_replace('{clippy}', '#'.$id, $code);
$code = str_replace('{clippy_obj}', 'intro_'.$id, $code); $code = str_replace('{clippy_obj}', 'intro_'.$id, $code);
$return = $code.'<div id="'.$id.'" style="display: inline;">'.'<a onclick="show_'.$id.'();" href="javascript: void(0);" >'.html_print_image( $return = $code.'<div id="'.$id.'" style="display: inline;"><a onclick="show_'.$id.'();" href="javascript: void(0);" >'.html_print_image(
'images/clippy_icon.png', 'images/clippy_icon.png',
true true
).'</a>'.'</div> ).'</a></div>
<script type="text/javascript"> <script type="text/javascript">
function show_'.$id.'() { function show_'.$id.'() {

View File

@ -755,6 +755,10 @@ function config_update_config()
if (!config_update_value('max_graph_container', get_parameter('max_graph_container'))) { if (!config_update_value('max_graph_container', get_parameter('max_graph_container'))) {
$error_update[] = __('Graph container - Max. Items'); $error_update[] = __('Graph container - Max. Items');
} }
if (!config_update_value('max_execution_event_response', get_parameter('max_execution_event_response'))) {
$error_update[] = __('Max execution event response');
}
break; break;
case 'vis': case 'vis':
@ -1547,6 +1551,10 @@ function config_process_config()
config_update_value('max_graph_container', 10); config_update_value('max_graph_container', 10);
} }
if (!isset($config['max_execution_event_response'])) {
config_update_value('max_execution_event_response', 10);
}
if (!isset($config['max_macro_fields'])) { if (!isset($config['max_macro_fields'])) {
config_update_value('max_macro_fields', 10); config_update_value('max_macro_fields', 10);
} }

View File

@ -115,8 +115,21 @@ var TreeController = {
} }
}; };
var serviceCounterTitles = {
total_services: {
totals: "Services"
},
total_agents: {
totals: "Agents"
},
total_modules: {
totals: "Modules"
}
};
try { try {
var title = ""; var title = "";
switch (elementType) { switch (elementType) {
case "group": case "group":
if ( if (
@ -144,6 +157,9 @@ var TreeController = {
title = defaultCounterTitles[counterType].modules; title = defaultCounterTitles[counterType].modules;
} }
break; break;
case "services":
title = serviceCounterTitles[counterType].totals;
break;
default: default:
if ( if (
typeof controller.counterTitles != "undefined" && typeof controller.counterTitles != "undefined" &&
@ -169,6 +185,123 @@ var TreeController = {
} }
} }
if (type == "services") {
var $counters = $("<div></div>");
$counters.addClass("tree-node-counters");
if (
counters.total_services +
counters.total_agents +
counters.total_modules >
0
) {
// Open the parentheses
$counters.append(" (");
if (
typeof counters.total_services != "undefined" &&
counters.total_services >= 0
) {
var $servicesCounter = $("<div></div>");
$servicesCounter
.addClass("tree-node-counter")
.addClass("total")
.html(counters.total_services);
_processNodeCounterTitle(
$servicesCounter,
type,
"total_services"
);
$counters.append($servicesCounter);
} else {
var $servicesCounter = $("<div></div>");
$servicesCounter
.addClass("tree-node-counter")
.addClass("total")
.html("0");
_processNodeCounterTitle(
$servicesCounter,
type,
"total_services"
);
$counters.append($servicesCounter);
}
if (
typeof counters.total_agents != "undefined" &&
counters.total_agents > 0
) {
var $agentsCounter = $("<div></div>");
$agentsCounter
.addClass("tree-node-counter")
.html(counters.total_agents);
_processNodeCounterTitle(
$agentsCounter,
type,
"total_agents"
);
$counters.append(" : ").append($agentsCounter);
} else {
var $agentsCounter = $("<div></div>");
$agentsCounter
.addClass("tree-node-counter")
.addClass("total")
.html("0");
_processNodeCounterTitle(
$agentsCounter,
type,
"total_agents"
);
$counters.append(" : ").append($agentsCounter);
}
if (
typeof counters.total_modules != "undefined" &&
counters.total_modules > 0
) {
var $modulesCounter = $("<div></div>");
$modulesCounter
.addClass("tree-node-counter")
.addClass("total")
.html(counters.total_modules);
_processNodeCounterTitle(
$modulesCounter,
type,
"total_modules"
);
$counters.append(" : ").append($modulesCounter);
} else {
var $modulesCounter = $("<div></div>");
$modulesCounter
.addClass("tree-node-counter")
.addClass("total")
.html("0");
_processNodeCounterTitle(
$modulesCounter,
type,
"total_modules"
);
$counters.append(" : ").append($modulesCounter);
}
// Close the parentheses
$counters.append(")");
hasCounters = true;
}
} else {
var $counters = $("<div></div>"); var $counters = $("<div></div>");
$counters.addClass("tree-node-counters"); $counters.addClass("tree-node-counters");
@ -273,6 +406,7 @@ var TreeController = {
$counters.append(" : ").append($okCounter); $counters.append(" : ").append($okCounter);
} }
}
// Close the parentheses // Close the parentheses
$counters.append(")"); $counters.append(")");
@ -436,7 +570,120 @@ var TreeController = {
$content.append($alertImage); $content.append($alertImage);
} }
$content.append(element.alias);
// Events by agent
if (element.showEventsBtn == 1) {
if (typeof element.eventAgent != "undefined") {
$content.append(
'<form method="post" id="hiddenAgentsEventsForm-' +
element.eventAgent +
'" style="display: none;" action="index.php?sec=eventos&sec2=operation/events/events&refr=0&pure=&section=list&history=0"><input type="hidden" name="id_agent" value="' +
element.eventAgent +
'"></form>'
);
var $eventImage = $(
'<img src="' +
(controller.baseURL.length > 0
? controller.baseURL
: "") +
'images/tree_events.png" /> '
);
$eventImage.addClass("agent-alerts-fired");
$eventImage
.click(function(e) {
e.preventDefault();
document
.getElementById(
"hiddenAgentsEventsForm-" + element.eventAgent
)
.submit();
})
.css("cursor", "pointer");
$content.append($eventImage);
}
}
$content.append(" " + element.alias);
break;
case "services":
if (
typeof element.statusImageHTML != "undefined" &&
element.statusImageHTML.length > 0
) {
var $statusImage = $(element.statusImageHTML);
$statusImage.addClass("agent-status");
$content.append($statusImage);
}
var $serviceDetailImage = $(
'<img src="' +
(controller.baseURL.length > 0 ? controller.baseURL : "") +
'images/tree_service_map.png" /> '
);
if (typeof element.serviceDetail != "undefined") {
$serviceDetailImage
.click(function(e) {
e.preventDefault();
window.location.href = element.serviceDetail;
})
.css("cursor", "pointer");
$content.append($serviceDetailImage);
}
$content.append(" " + element.name);
break;
case "modules":
if (
typeof element.statusImageHTML != "undefined" &&
element.statusImageHTML.length > 0
) {
var $statusImage = $(element.statusImageHTML);
$statusImage.addClass("agent-status");
$content.append($statusImage);
}
// Events by module
if (element.showEventsBtn == 1) {
if (typeof element.eventModule != "undefined") {
$content.append(
'<form method="post" id="hiddenModulesEventsForm-' +
element.eventModule +
'" style="display: none;" action="index.php?sec=eventos&sec2=operation/events/events&refr=0&pure=&section=list&history=0"><input type="hidden" name="module_search_hidden" value="' +
element.eventModule +
'"></form>'
);
var $moduleImage = $(
'<img src="' +
(controller.baseURL.length > 0
? controller.baseURL
: "") +
'images/tree_events.png" /> '
);
$moduleImage
.click(function(e) {
e.preventDefault();
document
.getElementById(
"hiddenModulesEventsForm-" + element.eventModule
)
.submit();
})
.css("cursor", "pointer");
$content.append($moduleImage);
}
}
$content.append(" " + element.name);
break; break;
case "module": case "module":
// Status image // Status image
@ -617,6 +864,19 @@ var TreeController = {
} }
$content.append(element.name); $content.append(element.name);
break; break;
case "services":
// Status image
if (
typeof element.statusImageHTML != "undefined" &&
element.statusImageHTML.length > 0
) {
var $statusImage = $(element.statusImageHTML);
$statusImage.addClass("agent-status");
$content.append($statusImage);
}
$content.append(element.name);
break;
default: default:
$content.append(element.name); $content.append(element.name);
break; break;
@ -820,6 +1080,7 @@ var TreeController = {
} }
controller.recipient.empty(); controller.recipient.empty();
if (controller.tree.length !== undefined) {
controller.recipient.html( controller.recipient.html(
"<div> " + "<div> " +
controller.foundMessage + controller.foundMessage +
@ -828,6 +1089,7 @@ var TreeController = {
"</div>" + "</div>" +
"<br/>" "<br/>"
); );
}
var $children = _processGroup(this.recipient, this.tree, true); var $children = _processGroup(this.recipient, this.tree, true);
$children.show(); $children.show();

View File

@ -128,8 +128,8 @@
</div> </div>
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.731'; $version = '7.0NG.732';
$build = '190226'; $build = '190228';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -294,6 +294,8 @@ enterprise_hook('close_meta_frame');
$(".loading_tree").show(); $(".loading_tree").show();
var parameters = {}; var parameters = {};
parameters['page'] = "include/ajax/tree.ajax"; parameters['page'] = "include/ajax/tree.ajax";
parameters['getChildren'] = 1; parameters['getChildren'] = 1;

View File

@ -2,8 +2,8 @@
# Pandora FMS Console # Pandora FMS Console
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -2,8 +2,8 @@
# Pandora FMS Console # Pandora FMS Console
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -9,7 +9,7 @@
# This code is licensed under GPL 2.0 license. # This code is licensed under GPL 2.0 license.
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.731" PI_VERSION="7.0NG.732"
FORCE=0 FORCE=0
DESTDIR="" DESTDIR=""
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"` LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`

View File

@ -111,10 +111,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''), ('custom_report_front_header', ''),
('custom_report_front_footer', ''), ('custom_report_front_footer', ''),
('MR', 24), ('MR', 25),
('identification_reminder', 1), ('identification_reminder', 1),
('identification_reminder_timestamp', 0), ('identification_reminder_timestamp', 0),
('current_package_enterprise', '731'), ('current_package_enterprise', '732'),
('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'), ('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'),
('custom_docs_logo', 'default_docs.png'), ('custom_docs_logo', 'default_docs.png'),
('custom_support_logo', 'default_support.png'), ('custom_support_logo', 'default_support.png'),

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.731-190226 Version: 7.0NG.732-190228
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.731-190226" pandora_version="7.0NG.732-190228"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -1,7 +1,7 @@
############################################################################# #############################################################################
# Pandora FMS Server Parameters # Pandora FMS Server Parameters
# Pandora FMS, the Flexible Monitoring System. # Pandora FMS, the Flexible Monitoring System.
# Version 7.0NG.731 # Version 7.0NG.732
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2017 Artica Soluciones Tecnologicas # (c) 2003-2017 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -44,8 +44,8 @@ our @EXPORT = qw(
); );
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.731"; my $pandora_version = "7.0NG.732";
my $pandora_build = "190226"; my $pandora_build = "190228";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -31,8 +31,8 @@ use base 'Exporter';
our @ISA = qw(Exporter); our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.731"; my $pandora_version = "7.0NG.732";
my $pandora_build = "190226"; my $pandora_build = "190228";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -216,7 +216,7 @@ sub new {
$self->{'snmp_security_level'} = ''; $self->{'snmp_security_level'} = '';
# Disable SNMP scans if no community was given. # Disable SNMP scans if no community was given.
if (scalar(@{$self->{'communities'}}) == 0) { if (ref($self->{'communities'}) ne "ARRAY" || scalar(@{$self->{'communities'}}) == 0) {
$self->{'snmp_enabled'} = 0; $self->{'snmp_enabled'} = 0;
$self->call('message', "There is not any SNMP community configured.", 5); $self->call('message', "There is not any SNMP community configured.", 5);

View File

@ -2,8 +2,8 @@
# Pandora FMS Server # Pandora FMS Server
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -2,8 +2,8 @@
# Pandora FMS Server # Pandora FMS Server
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.731 %define version 7.0NG.732
%define release 190226 %define release 190228
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -8,8 +8,8 @@
# This code is licensed under GPL 2.0 license. # This code is licensed under GPL 2.0 license.
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.731" PI_VERSION="7.0NG.732"
PI_BUILD="190226" PI_BUILD="190228"
MODE=$1 MODE=$1
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.731 PS190226"; my $version = "7.0NG.732 PS190228";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv; Encode::Locale::decode_argv;
# version: define current version # version: define current version
my $version = "7.0NG.731 PS190226"; my $version = "7.0NG.732 PS190228";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);
@ -200,7 +200,7 @@ sub help_screen{
print "\nINCIDENTS:\n\n" unless $param ne ''; print "\nINCIDENTS:\n\n" unless $param ne '';
help_screen_line('--create_incident', "<title> <description> <origin> <status> <priority 0 for Informative, \n\t 1 for Low, 2 for Medium, 3 for Serious, 4 for Very serious or 5 for Maintenance>\n\t <group> [<owner>]", 'Create incidents'); help_screen_line('--create_incident', "<title> <description> <origin> <status> <priority 0 for Informative, \n\t 1 for Low, 2 for Medium, 3 for Serious, 4 for Very serious or 5 for Maintenance>\n\t <group> [<owner>]", 'Create incidents');
print "\nPOLICIES:\n\n" unless $param ne ''; print "\nPOLICIES:\n\n" unless $param ne '';
help_screen_line('--apply_policy', '<policy_name>', 'Force apply a policy'); help_screen_line('--apply_policy', '<id_policy> [<id_agent> <name(boolean)> <id_server>]', 'Force apply a policy in an agent');
help_screen_line('--apply_all_policies', '', 'Force apply to all the policies'); help_screen_line('--apply_all_policies', '', 'Force apply to all the policies');
help_screen_line('--add_agent_to_policy', '<agent_name> <policy_name>', 'Add an agent to a policy'); help_screen_line('--add_agent_to_policy', '<agent_name> <policy_name>', 'Add an agent to a policy');
help_screen_line('--remove_agent_from_policy', '<policy_id> <agent_id>', 'Delete an agent to a policy'); help_screen_line('--remove_agent_from_policy', '<policy_id> <agent_id>', 'Delete an agent to a policy');
@ -3606,19 +3606,11 @@ sub cli_delete_data($) {
############################################################################## ##############################################################################
sub cli_apply_policy() { sub cli_apply_policy() {
my $policy_name = @ARGV[2]; my ($id_policy, $id_agent, $name, $id_server) = @ARGV[2..5];
my $policy_id = enterprise_hook('get_policy_id',[$dbh, safe_input($policy_name)]); # Call the API.
exist_check($policy_id,'policy',$policy_name); my $result = api_call(\%conf, 'set', 'apply_policy', $id_policy, $id_agent, "$name|$id_server");
print "\n$result\n";
my $ret = enterprise_hook('pandora_add_policy_queue', [$dbh, $conf, $policy_id, 'apply', 0, 1]);
if($ret == -1) {
print_log "[ERROR] Operation 'apply' cannot be added to policy '$policy_name' because is duplicated in queue or incompatible with others operations\n\n";
exit;
}
print_log "[INFO] Added operation 'apply' to policy '$policy_name'\n\n";
} }
############################################################################## ##############################################################################
@ -6031,7 +6023,7 @@ sub pandora_manage_main ($$$) {
cli_delete_data($ltotal); cli_delete_data($ltotal);
} }
elsif ($param eq '--apply_policy') { elsif ($param eq '--apply_policy') {
param_check($ltotal, 1); param_check($ltotal, 4, 3);
cli_apply_policy(); cli_apply_policy();
} }
elsif ($param eq '--disable_policy_alerts') { elsif ($param eq '--disable_policy_alerts') {