mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 08:45:12 +02:00
Merge remote-tracking branch 'origin/develop' into ent-5824-connection-lost-warn
This commit is contained in:
commit
d3087de163
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, AIX version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, FreeBSD Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, HP-UX Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, GNU/Linux
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, GNU/Linux
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, Solaris Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -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.746
|
# Version 7.0NG.747
|
||||||
|
|
||||||
# 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
|
||||||
|
@ -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.746, AIX version
|
# Version 7.0NG.747, AIX version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -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.746
|
# Version 7.0NG.747
|
||||||
# FreeBSD/IPSO version
|
# FreeBSD/IPSO version
|
||||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||||
|
|
||||||
|
@ -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.746, HPUX Version
|
# Version 7.0NG.747, HPUX Version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746
|
# Version 7.0NG.747
|
||||||
# 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746
|
# Version 7.0NG.747
|
||||||
# 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746
|
# Version 7.0NG.747
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# please visit http://pandora.sourceforge.net
|
# please visit http://pandora.sourceforge.net
|
||||||
|
|
||||||
|
@ -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.746, Solaris version
|
# Version 7.0NG.747, Solaris version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, AIX version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-agent-unix
|
package: pandorafms-agent-unix
|
||||||
Version: 7.0NG.746-200616
|
Version: 7.0NG.747-200706
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -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.746-200616"
|
pandora_version="7.0NG.747-200706"
|
||||||
|
|
||||||
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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, GNU/Linux
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, FreeBSD Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, HP-UX Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, GNU/Linux
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, GNU/Linux
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, NetBSD Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.746, Solaris Version
|
# Version 7.0NG.747, 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
|
||||||
|
@ -54,8 +54,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.746';
|
use constant AGENT_VERSION => '7.0NG.747';
|
||||||
use constant AGENT_BUILD => '200616';
|
use constant AGENT_BUILD => '200706';
|
||||||
|
|
||||||
# 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;
|
||||||
|
@ -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.746
|
%define version 7.0NG.747
|
||||||
%define release 200616
|
%define release 200706
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -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.746
|
%define version 7.0NG.747
|
||||||
%define release 200616
|
%define release 200706
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -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.746"
|
PI_VERSION="7.0NG.747"
|
||||||
PI_BUILD="200616"
|
PI_BUILD="200706"
|
||||||
OS_NAME=`uname -s`
|
OS_NAME=`uname -s`
|
||||||
|
|
||||||
FORCE=0
|
FORCE=0
|
||||||
|
@ -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.746
|
# Version 7.0NG.747
|
||||||
|
|
||||||
# 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
|
||||||
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
|||||||
{Yes}
|
{Yes}
|
||||||
|
|
||||||
AppName
|
AppName
|
||||||
{Pandora FMS Windows Agent v7.0NG.746}
|
{Pandora FMS Windows Agent v7.0NG.747}
|
||||||
|
|
||||||
ApplicationID
|
ApplicationID
|
||||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||||
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Version
|
Version
|
||||||
{200616}
|
{200706}
|
||||||
|
|
||||||
ViewReadme
|
ViewReadme
|
||||||
{Yes}
|
{Yes}
|
||||||
|
@ -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.746(Build 200616)")
|
#define PANDORA_VERSION ("7.0NG.747(Build 200706)")
|
||||||
|
|
||||||
string pandora_path;
|
string pandora_path;
|
||||||
string pandora_dir;
|
string pandora_dir;
|
||||||
|
@ -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.746(Build 200616))"
|
VALUE "ProductVersion", "(7.0NG.747(Build 200706))"
|
||||||
VALUE "FileVersion", "1.0.0.0"
|
VALUE "FileVersion", "1.0.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
3
pandora_console/.gitignore
vendored
3
pandora_console/.gitignore
vendored
@ -6,7 +6,10 @@ attachment/collection
|
|||||||
attachment/files_repo
|
attachment/files_repo
|
||||||
include/config.php
|
include/config.php
|
||||||
pandora_console.log
|
pandora_console.log
|
||||||
|
log/console.log
|
||||||
|
log/cron.log
|
||||||
enterprise
|
enterprise
|
||||||
*.bak
|
*.bak
|
||||||
audit.log
|
audit.log
|
||||||
|
log/audit.log
|
||||||
install_old.php
|
install_old.php
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-console
|
package: pandorafms-console
|
||||||
Version: 7.0NG.746-200616
|
Version: 7.0NG.747-200706
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -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.746-200616"
|
pandora_version="7.0NG.747-200706"
|
||||||
|
|
||||||
package_pear=0
|
package_pear=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -69,7 +69,11 @@ function pandoralogs_extension_main()
|
|||||||
|
|
||||||
$logs_directory = (!empty($config['server_log_dir'])) ? io_safe_output($config['server_log_dir']) : '/var/log/pandora';
|
$logs_directory = (!empty($config['server_log_dir'])) ? io_safe_output($config['server_log_dir']) : '/var/log/pandora';
|
||||||
|
|
||||||
view_logfile($config['homedir'].'/pandora_console.log');
|
// Do not attempt to show console log if disabled.
|
||||||
|
if ($config['console_log_enabled']) {
|
||||||
|
view_logfile($config['homedir'].'/log/console.log');
|
||||||
|
}
|
||||||
|
|
||||||
view_logfile($logs_directory.'/pandora_server.log');
|
view_logfile($logs_directory.'/pandora_server.log');
|
||||||
view_logfile($logs_directory.'/pandora_server.error');
|
view_logfile($logs_directory.'/pandora_server.error');
|
||||||
}
|
}
|
||||||
|
@ -199,8 +199,8 @@ function pandora_realtime_graphs()
|
|||||||
html_print_input_hidden('custom_action', urlencode(base64_encode(' <a href="javascript:realtimeGraphs.setOID();"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>')), false);
|
html_print_input_hidden('custom_action', urlencode(base64_encode(' <a href="javascript:realtimeGraphs.setOID();"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>')), false);
|
||||||
html_print_input_hidden('incremental_base', '0');
|
html_print_input_hidden('incremental_base', '0');
|
||||||
|
|
||||||
echo '<script type="text/javascript" src="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.js').'"></script>';
|
|
||||||
echo '<script type="text/javascript" src="'.ui_get_full_url('include/javascript/pandora_snmp_browser.js').'"></script>';
|
echo '<script type="text/javascript" src="'.ui_get_full_url('include/javascript/pandora_snmp_browser.js').'"></script>';
|
||||||
|
echo '<script type="text/javascript" src="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.js').'"></script>';
|
||||||
echo '<link rel="stylesheet" type="text/css" href="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.css').'"></style>';
|
echo '<link rel="stylesheet" type="text/css" href="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.css').'"></style>';
|
||||||
|
|
||||||
// Store servers timezone offset to be retrieved from js
|
// Store servers timezone offset to be retrieved from js
|
||||||
|
1050
pandora_console/extras/mr/39.sql
Normal file
1050
pandora_console/extras/mr/39.sql
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,66 +1,67 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
// Pandora FMS - http://pandorafms.com
|
* Wizard for SNMP / WMI discover.
|
||||||
// ==================================================
|
*
|
||||||
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas
|
* @category Agent Wizard
|
||||||
// Please see http://pandorafms.org for full contribution list
|
* @package Pandora FMS
|
||||||
// This program is free software; you can redistribute it and/or
|
* @subpackage Opensource
|
||||||
// modify it under the terms of the GNU General Public License
|
* @version 1.0.0
|
||||||
// as published by the Free Software Foundation; version 2
|
* @license See below
|
||||||
// This program is distributed in the hope that it will be useful,
|
*
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* ______ ___ _______ _______ ________
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
// GNU General Public License for more details.
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
global $config;
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
check_login();
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2020 Artica Soluciones Tecnologicas
|
||||||
$wizard_section = get_parameter('wizard_section', 'snmp_interfaces_explorer');
|
* Please see http://pandorafms.org for full contribution list
|
||||||
$idAgent = (int) get_parameter('id_agente', 0);
|
* This program is free software; you can redistribute it and/or
|
||||||
$ipAgent = db_get_value('direccion', 'tagente', 'id_agente', $idAgent);
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation for version 2.
|
||||||
switch ($wizard_section) {
|
* This program is distributed in the hope that it will be useful,
|
||||||
case 'snmp_interfaces_explorer':
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
$snmp_interfaces_explorer_style = 'font-weight: bold;';
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
$wmi_explorer_style = '';
|
* GNU General Public License for more details.
|
||||||
break;
|
* ============================================================================
|
||||||
|
|
||||||
case 'wmi_explorer':
|
|
||||||
$snmp_interfaces_explorer_style = '';
|
|
||||||
$wmi_explorer_style = 'font-weight: bold;';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'snmp_explorer':
|
|
||||||
$snmp_interfaces_explorer_style = '';
|
|
||||||
$wmi_explorer_style = 'font-weight: bold;';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
echo "<div style='text-align: right; width: 98%; padding-top: 10px; padding-bottom: 10px;'>";
|
|
||||||
echo "<a href='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=snmp_interfaces_explorer&id_agente=$idAgent' style='" . $snmp_interfaces_explorer_style . "'>" . __('SNMP Interfaces explorer') . "</a>";
|
|
||||||
echo " | ";
|
|
||||||
echo "<a href='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=wmi_explorer&id_agente=$idAgent' style='" . $wmi_explorer_style . "'>" . __('WMI explorer') . "</a>";
|
|
||||||
echo "</div>";
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require 'agent_wizard.'.$wizard_section.'.php';
|
// Begin.
|
||||||
|
global $config;
|
||||||
?>
|
// Require needed class.
|
||||||
<script language="javascript" type="text/javascript">
|
require_once $config['homedir'].'/include/class/AgentWizard.class.php';
|
||||||
|
// This page.
|
||||||
function satellite_remote_warn(id_satellite, remote)
|
$ajaxPage = 'godmode/agentes/agent_wizard';
|
||||||
{
|
$pageName = '[AgentWizard]';
|
||||||
if(!remote)
|
// Control call flow.
|
||||||
{
|
try {
|
||||||
$('#server_to_exec option[value='+id_satellite+']').prop('disabled', true);
|
// User access and validation is being processed on class constructor.
|
||||||
$('#satellite_remote_tip').removeAttr("style").show();
|
$obj = new AgentWizard($ajaxPage);
|
||||||
}
|
} catch (Exception $e) {
|
||||||
else
|
if (is_ajax()) {
|
||||||
{
|
echo json_encode(['error' => $pageName.$e->getMessage() ]);
|
||||||
$('#satellite_remote_tip').removeAttr("style").hide();
|
exit;
|
||||||
|
} else {
|
||||||
|
echo $pageName.$e->getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stop this execution, but continue 'globally'.
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
// AJAX controller.
|
||||||
|
if (is_ajax()) {
|
||||||
|
$method = get_parameter('method');
|
||||||
|
|
||||||
|
if (method_exists($obj, $method) === true) {
|
||||||
|
$obj->{$method}();
|
||||||
|
} else {
|
||||||
|
$obj->error('Method not found. ['.$method.']');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop any execution.
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
// Run.
|
||||||
|
$obj->run();
|
||||||
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,743 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Extension to manage a list of gateways and the node address where they should
|
|
||||||
* point to.
|
|
||||||
*
|
|
||||||
* @category SNMP interfaces.
|
|
||||||
* @package Pandora FMS
|
|
||||||
* @subpackage Community
|
|
||||||
* @version 1.0.0
|
|
||||||
* @license See below
|
|
||||||
*
|
|
||||||
* ______ ___ _______ _______ ________
|
|
||||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
|
||||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
|
||||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
|
||||||
*
|
|
||||||
* ============================================================================
|
|
||||||
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
|
|
||||||
* Please see http://pandorafms.org for full contribution list
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation for version 2.
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
* ============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
global $config;
|
|
||||||
require_once $config['homedir'].'/include/functions_agents.php';
|
|
||||||
require_once 'include/functions_modules.php';
|
|
||||||
require_once 'include/functions_alerts.php';
|
|
||||||
require_once 'include/functions_reporting.php';
|
|
||||||
require_once 'include/graphs/functions_utils.php';
|
|
||||||
|
|
||||||
|
|
||||||
$idAgent = (int) get_parameter('id_agente', 0);
|
|
||||||
$ipAgent = db_get_value('direccion', 'tagente', 'id_agente', $idAgent);
|
|
||||||
|
|
||||||
check_login();
|
|
||||||
$ip_target = (string) get_parameter('ip_target', $ipAgent);
|
|
||||||
$use_agent = get_parameter('use_agent');
|
|
||||||
$snmp_community = (string) get_parameter('snmp_community', 'public');
|
|
||||||
$server_to_exec = get_parameter('server_to_exec', 0);
|
|
||||||
$snmp_version = get_parameter('snmp_version', '1');
|
|
||||||
$snmp3_auth_user = io_safe_output(get_parameter('snmp3_auth_user'));
|
|
||||||
$snmp3_security_level = get_parameter('snmp3_security_level');
|
|
||||||
$snmp3_auth_method = get_parameter('snmp3_auth_method');
|
|
||||||
$snmp3_auth_pass = io_safe_output(get_parameter('snmp3_auth_pass'));
|
|
||||||
$snmp3_privacy_method = get_parameter('snmp3_privacy_method');
|
|
||||||
$snmp3_privacy_pass = io_safe_output(get_parameter('snmp3_privacy_pass'));
|
|
||||||
$tcp_port = (string) get_parameter('tcp_port');
|
|
||||||
|
|
||||||
// See if id_agente is set (either POST or GET, otherwise -1.
|
|
||||||
$id_agent = $idAgent;
|
|
||||||
|
|
||||||
// Get passed variables.
|
|
||||||
$snmpwalk = (int) get_parameter('snmpwalk', 0);
|
|
||||||
$create_modules = (int) get_parameter('create_modules', 0);
|
|
||||||
|
|
||||||
$interfaces = [];
|
|
||||||
$interfaces_ip = [];
|
|
||||||
|
|
||||||
if ($snmpwalk) {
|
|
||||||
// OID Used is for SNMP MIB-2 Interfaces.
|
|
||||||
$snmpis = get_snmpwalk(
|
|
||||||
$ip_target,
|
|
||||||
$snmp_version,
|
|
||||||
$snmp_community,
|
|
||||||
$snmp3_auth_user,
|
|
||||||
$snmp3_security_level,
|
|
||||||
$snmp3_auth_method,
|
|
||||||
$snmp3_auth_pass,
|
|
||||||
$snmp3_privacy_method,
|
|
||||||
$snmp3_privacy_pass,
|
|
||||||
0,
|
|
||||||
'.1.3.6.1.2.1.2',
|
|
||||||
$tcp_port,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
// IfXTable is also used.
|
|
||||||
$ifxitems = get_snmpwalk(
|
|
||||||
$ip_target,
|
|
||||||
$snmp_version,
|
|
||||||
$snmp_community,
|
|
||||||
$snmp3_auth_user,
|
|
||||||
$snmp3_security_level,
|
|
||||||
$snmp3_auth_method,
|
|
||||||
$snmp3_auth_pass,
|
|
||||||
$snmp3_privacy_method,
|
|
||||||
$snmp3_privacy_pass,
|
|
||||||
0,
|
|
||||||
'.1.3.6.1.2.1.31.1.1',
|
|
||||||
$tcp_port,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
// Get the interfaces IPV4/IPV6.
|
|
||||||
$snmp_int_ip = get_snmpwalk(
|
|
||||||
$ip_target,
|
|
||||||
$snmp_version,
|
|
||||||
$snmp_community,
|
|
||||||
$snmp3_auth_user,
|
|
||||||
$snmp3_security_level,
|
|
||||||
$snmp3_auth_method,
|
|
||||||
$snmp3_auth_pass,
|
|
||||||
$snmp3_privacy_method,
|
|
||||||
$snmp3_privacy_pass,
|
|
||||||
0,
|
|
||||||
'.1.3.6.1.2.1.4.34.1.3',
|
|
||||||
$tcp_port,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
// Build a [<interface id>] => [<interface ip>] array.
|
|
||||||
if (!empty($snmp_int_ip)) {
|
|
||||||
foreach ($snmp_int_ip as $key => $value) {
|
|
||||||
// The key is something like IP-MIB::ipAddressIfIndex.ipv4."<ip>".
|
|
||||||
// or IP-MIB::ipAddressIfIndex.ipv6."<ip>".
|
|
||||||
// The value is something like INTEGER: <interface id>.
|
|
||||||
$data = explode(': ', $value);
|
|
||||||
$interface_id = !empty($data) && isset($data[1]) ? $data[1] : false;
|
|
||||||
|
|
||||||
if (preg_match('/^.+"(.+)"$/', $key, $matches) && isset($matches[1])) {
|
|
||||||
$interface_ip = $matches[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the first ip.
|
|
||||||
if ($interface_id !== false && !empty($interface_ip) && !isset($interfaces_ip[$interface_id])) {
|
|
||||||
$interfaces_ip[$interface_id] = $interface_ip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($snmp_int_ip);
|
|
||||||
}
|
|
||||||
|
|
||||||
$snmpis = array_merge((($snmpis === false) ? [] : $snmpis), (($ifxitems === false) ? [] : $ifxitems));
|
|
||||||
|
|
||||||
$interfaces = [];
|
|
||||||
|
|
||||||
// We get here only the interface part of the MIB, not full mib.
|
|
||||||
foreach ($snmpis as $key => $snmp) {
|
|
||||||
$data = explode(': ', $snmp, 2);
|
|
||||||
$keydata = explode('::', $key);
|
|
||||||
$keydata2 = explode('.', $keydata[1]);
|
|
||||||
|
|
||||||
// Avoid results without index and interfaces without name.
|
|
||||||
if (!isset($keydata2[1]) || !isset($data[1])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (array_key_exists(1, $data)) {
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['type'] = $data[0];
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['value'] = $data[1];
|
|
||||||
} else {
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['type'] = '';
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['value'] = $data[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['oid'] = $key;
|
|
||||||
$interfaces[$keydata2[1]][$keydata2[0]]['checked'] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($interfaces[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($create_modules) {
|
|
||||||
$id_snmp_serialize = get_parameter_post('id_snmp_serialize');
|
|
||||||
$interfaces = unserialize_in_temp($id_snmp_serialize);
|
|
||||||
|
|
||||||
$id_snmp_int_ip_serialize = get_parameter_post('id_snmp_int_ip_serialize');
|
|
||||||
$interfaces_ip = unserialize_in_temp($id_snmp_int_ip_serialize);
|
|
||||||
|
|
||||||
if (!$interfaces) {
|
|
||||||
$interfaces = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$interfaces_ip) {
|
|
||||||
$interfaces_ip = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$values = [];
|
|
||||||
|
|
||||||
if ($tcp_port != '') {
|
|
||||||
$values['tcp_port'] = $tcp_port;
|
|
||||||
}
|
|
||||||
|
|
||||||
$values['snmp_community'] = $snmp_community;
|
|
||||||
if ($use_agent) {
|
|
||||||
$values['ip_target'] = 'auto';
|
|
||||||
} else {
|
|
||||||
$values['ip_target'] = $ip_target;
|
|
||||||
}
|
|
||||||
|
|
||||||
$values['tcp_send'] = $snmp_version;
|
|
||||||
|
|
||||||
if ($snmp_version == '3') {
|
|
||||||
$values['plugin_user'] = $snmp3_auth_user;
|
|
||||||
$values['plugin_pass'] = $snmp3_auth_pass;
|
|
||||||
$values['plugin_parameter'] = $snmp3_auth_method;
|
|
||||||
$values['custom_string_1'] = $snmp3_privacy_method;
|
|
||||||
$values['custom_string_2'] = $snmp3_privacy_pass;
|
|
||||||
$values['custom_string_3'] = $snmp3_security_level;
|
|
||||||
}
|
|
||||||
|
|
||||||
$oids = [];
|
|
||||||
foreach ($interfaces as $key => $interface) {
|
|
||||||
foreach ($interface as $key2 => $module) {
|
|
||||||
$oid = get_parameter($key.'-'.$key2, '');
|
|
||||||
if ($oid != '') {
|
|
||||||
$interfaces[$key][$key2]['checked'] = 1;
|
|
||||||
$oids[$key][] = $interfaces[$key][$key2]['oid'];
|
|
||||||
} else {
|
|
||||||
$interfaces[$key][$key2]['checked'] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$modules = get_parameter('module', []);
|
|
||||||
$id_snmp = get_parameter('id_snmp');
|
|
||||||
|
|
||||||
if ($id_snmp == false) {
|
|
||||||
ui_print_error_message(__('No modules selected'));
|
|
||||||
$id_snmp = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (agents_get_name($id_agent) == false) {
|
|
||||||
ui_print_error_message(__('No agent selected or the agent does not exist'));
|
|
||||||
$id_snmp = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = false;
|
|
||||||
|
|
||||||
$errors = [];
|
|
||||||
$done = 0;
|
|
||||||
|
|
||||||
foreach ($id_snmp as $id) {
|
|
||||||
$ifname = '';
|
|
||||||
$ifPhysAddress = '';
|
|
||||||
|
|
||||||
if (isset($interfaces[$id]['ifName']) && $interfaces[$id]['ifName']['value'] != '') {
|
|
||||||
$ifname = $interfaces[$id]['ifName']['value'];
|
|
||||||
} else if (isset($interfaces[$id]['ifDescr']) && $interfaces[$id]['ifDescr']['value'] != '') {
|
|
||||||
$ifname = $interfaces[$id]['ifDescr']['value'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($interfaces[$id]['ifPhysAddress']) && $interfaces[$id]['ifPhysAddress']['value'] != '') {
|
|
||||||
$ifPhysAddress = $interfaces[$id]['ifPhysAddress']['value'];
|
|
||||||
$ifPhysAddress = strtoupper($ifPhysAddress);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($modules as $module) {
|
|
||||||
$oid_array = explode('.', $module);
|
|
||||||
$oid_array[(count($oid_array) - 1)] = $id;
|
|
||||||
$oid = implode('.', $oid_array);
|
|
||||||
|
|
||||||
// Get the name.
|
|
||||||
$name_array = explode('::', $oid_array[0]);
|
|
||||||
$name = $ifname.'_'.$name_array[1];
|
|
||||||
|
|
||||||
// If you select "show all modules" and the module is not from the interface.
|
|
||||||
if (!array_key_exists($name_array[1], $interfaces[$id])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clean the name.
|
|
||||||
$name = str_replace('"', '', $name);
|
|
||||||
|
|
||||||
// Proc moduletypes.
|
|
||||||
if (preg_match('/Status/', $name_array[1])) {
|
|
||||||
$module_type = 18;
|
|
||||||
} else if (preg_match('/Present/', $name_array[1])) {
|
|
||||||
$module_type = 18;
|
|
||||||
} else if (preg_match('/PromiscuousMode/', $name_array[1])) {
|
|
||||||
$module_type = 18;
|
|
||||||
} else if (preg_match('/Alias/', $name_array[1])) {
|
|
||||||
// String moduletypes.
|
|
||||||
$module_type = 17;
|
|
||||||
} else if (preg_match('/Address/', $name_array[1])) {
|
|
||||||
$module_type = 17;
|
|
||||||
} else if (preg_match('/Name/', $name_array[1])) {
|
|
||||||
$module_type = 17;
|
|
||||||
} else if (preg_match('/Specific/', $name_array[1])) {
|
|
||||||
$module_type = 17;
|
|
||||||
} else if (preg_match('/Descr/', $name_array[1])) {
|
|
||||||
$module_type = 17;
|
|
||||||
} else if (preg_match('/s$/', $name_array[1])) {
|
|
||||||
// Specific counters (ends in s).
|
|
||||||
$module_type = 16;
|
|
||||||
} else {
|
|
||||||
// Otherwise, numeric.
|
|
||||||
$module_type = 15;
|
|
||||||
}
|
|
||||||
|
|
||||||
$values['unit'] = '';
|
|
||||||
if (preg_match('/Octets/', $name_array[1])) {
|
|
||||||
$values['unit'] = 'Bytes';
|
|
||||||
}
|
|
||||||
|
|
||||||
$module_server = 2;
|
|
||||||
|
|
||||||
if ($server_to_exec != 0) {
|
|
||||||
$sql = sprintf('SELECT server_type, ip_address FROM tserver WHERE id_server = %d', $server_to_exec);
|
|
||||||
$row = db_get_row_sql($sql);
|
|
||||||
|
|
||||||
if ($row['server_type'] == 13) {
|
|
||||||
if (preg_match('/ifPhysAddress/', $name_array[1])) {
|
|
||||||
$module_type = 3;
|
|
||||||
} else if (preg_match('/ifSpecific/', $name_array[1])) {
|
|
||||||
$module_type = 3;
|
|
||||||
} else if (preg_match('/ifType/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifSpeed/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifPromiscuousMode/', $name_array[1])) {
|
|
||||||
$module_type = 2;
|
|
||||||
} else if (preg_match('/ifOutQLen/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifName/', $name_array[1])) {
|
|
||||||
$module_type = 3;
|
|
||||||
} else if (preg_match('/ifMtu/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifLinkUpDownTrapEnable/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifLastChange/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifIndex/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifDescr/', $name_array[1])) {
|
|
||||||
$module_type = 3;
|
|
||||||
} else if (preg_match('/ifCounterDiscontinuityTime/', $name_array[1])) {
|
|
||||||
$module_type = 1;
|
|
||||||
} else if (preg_match('/ifConnectorPresent/', $name_array[1])) {
|
|
||||||
$module_type = 2;
|
|
||||||
} else if (preg_match('/ifAdminStatus/', $name_array[1])) {
|
|
||||||
$module_type = 2;
|
|
||||||
} else if (preg_match('/ifOperStatus/', $name_array[1])) {
|
|
||||||
$module_type = 2;
|
|
||||||
} else {
|
|
||||||
$module_type = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
$module_server = 1;
|
|
||||||
|
|
||||||
$output_oid = '';
|
|
||||||
|
|
||||||
exec('snmptranslate -On '.$oid, $output_oid, $rc);
|
|
||||||
|
|
||||||
$conf_oid = $output_oid[0];
|
|
||||||
$oid = $conf_oid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$values['id_tipo_modulo'] = $module_type;
|
|
||||||
|
|
||||||
if (!empty($ifPhysAddress) && isset($interfaces_ip[$id])) {
|
|
||||||
$values['descripcion'] = io_safe_input('(IP: '.$interfaces_ip[$id].' - MAC: '.$ifPhysAddress.' - '.$name.') '.$interfaces[$id]['ifDescr']['value']);
|
|
||||||
} else if (!empty($ifPhysAddress)) {
|
|
||||||
$values['descripcion'] = io_safe_input('(MAC: '.$ifPhysAddress.' - '.$name.') '.$interfaces[$id]['ifDescr']['value']);
|
|
||||||
} else if (isset($interfaces_ip[$id])) {
|
|
||||||
$values['descripcion'] = io_safe_input('(IP: '.$interfaces_ip[$id].' - '.$name.') '.$interfaces[$id]['ifDescr']['value']);
|
|
||||||
} else {
|
|
||||||
$values['descripcion'] = io_safe_input('('.$name.') '.$interfaces[$id]['ifDescr']['value']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$values['snmp_oid'] = $oid;
|
|
||||||
$values['id_modulo'] = $module_server;
|
|
||||||
|
|
||||||
$result = modules_create_agent_module($id_agent, io_safe_input($name), $values);
|
|
||||||
|
|
||||||
if (is_error($result)) {
|
|
||||||
if (!isset($errors[$result])) {
|
|
||||||
$errors[$result] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$errors[$result]++;
|
|
||||||
} else {
|
|
||||||
if ($server_to_exec != 0) {
|
|
||||||
$sql = sprintf('SELECT server_type FROM tserver WHERE id_server = %d', $server_to_exec);
|
|
||||||
$row = db_get_row_sql($sql);
|
|
||||||
|
|
||||||
if ($row['server_type'] == 13) {
|
|
||||||
$module_type_name = db_get_value_filter('nombre', 'ttipo_modulo', ['id_tipo' => $values['id_tipo_modulo']]);
|
|
||||||
|
|
||||||
$new_module_configuration_data = "module_begin\nmodule_name ".io_safe_input($name)."\nmodule_description ".io_safe_output($values['descripcion'])."\nmodule_type ".$module_type_name."\nmodule_snmp\nmodule_version ".$snmp_version."\nmodule_oid ".$conf_oid."\nmodule_community ".$values['snmp_community'];
|
|
||||||
|
|
||||||
if ($snmp_version == '3') {
|
|
||||||
$new_module_configuration_data .= "\nmodule_secname ".$snmp3_auth_user;
|
|
||||||
$new_module_configuration_data .= "\nmodule_seclevel ".$snmp3_security_level;
|
|
||||||
|
|
||||||
if ($snmp3_security_level == 'authNoPriv' || $snmp3_security_level == 'authPriv') {
|
|
||||||
$new_module_configuration_data .= "\nmodule_authpass ".$snmp3_auth_pass;
|
|
||||||
$new_module_configuration_data .= "\nmodule_authproto ".$snmp3_auth_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($snmp3_security_level == 'authPriv') {
|
|
||||||
$new_module_configuration_data .= "\nmodule_privproto ".$snmp3_privacy_method;
|
|
||||||
$new_module_configuration_data .= "\nmodule_privpass ".$snmp3_privacy_pass;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$new_module_configuration_data .= "\nmodule_end";
|
|
||||||
|
|
||||||
config_agents_add_module_in_conf($id_agent, $new_module_configuration_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$done++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($done > 0) {
|
|
||||||
ui_print_success_message(
|
|
||||||
__('Successfully modules created').' ('.$done.')'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($errors)) {
|
|
||||||
$msg = __('Could not be created').':';
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($errors as $code => $number) {
|
|
||||||
switch ($code) {
|
|
||||||
case ERR_EXIST:
|
|
||||||
$msg .= '<br>'.__('Another module already exists with the same name').' ('.$number.')';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ERR_INCOMPLETE:
|
|
||||||
$msg .= '<br>'.__('Some required fields are missed').': ('.__('name').') ('.$number.')';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ERR_DB:
|
|
||||||
case ERR_GENERIC:
|
|
||||||
default:
|
|
||||||
$msg .= '<br>'.__('Processing error').' ('.$number.')';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ui_print_error_message($msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the interface list for the interface.
|
|
||||||
$interfaces_list = [];
|
|
||||||
foreach ($interfaces as $interface) {
|
|
||||||
// Get the interface name, removing " " characters and avoid "blank" interfaces.
|
|
||||||
if (isset($interface['ifDescr']) && $interface['ifDescr']['value'] != '') {
|
|
||||||
$ifname = $interface['ifDescr']['value'];
|
|
||||||
} else if (isset($interface['ifName']) && $interface['ifName']['value'] != '') {
|
|
||||||
$ifname = $interface['ifName']['value'];
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$interfaces_list[$interface['ifIndex']['value']] = str_replace('"', '', $ifname);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '<span id ="none_text" style="display: none;">'.__('None').'</span>';
|
|
||||||
echo "<form method='post' id='walk_form' action='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=snmp_interfaces_explorer&id_agente=".$id_agent."'>";
|
|
||||||
|
|
||||||
$table->width = '100%';
|
|
||||||
$table->cellpadding = 0;
|
|
||||||
$table->cellspacing = 0;
|
|
||||||
$table->class = 'databox filters';
|
|
||||||
|
|
||||||
$table->data[0][0] = '<b>'.__('Target IP').'</b>';
|
|
||||||
$table->data[0][1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true);
|
|
||||||
|
|
||||||
$table->data[0][2] = '<b>'.__('Port').'</b>';
|
|
||||||
$table->data[0][3] = html_print_input_text('tcp_port', $tcp_port, '', 5, 20, true);
|
|
||||||
|
|
||||||
$table->data[1][0] = '<b>'.__('Use agent ip').'</b>';
|
|
||||||
$table->data[1][1] = html_print_checkbox('use_agent', 1, $use_agent, true);
|
|
||||||
|
|
||||||
$servers_to_exec = [];
|
|
||||||
$servers_to_exec[0] = __('Local console');
|
|
||||||
if (enterprise_installed()) {
|
|
||||||
enterprise_include_once('include/functions_satellite.php');
|
|
||||||
|
|
||||||
$rows = get_proxy_servers();
|
|
||||||
|
|
||||||
// Check if satellite server has remote configuration enabled.
|
|
||||||
$satellite_remote = config_agents_has_remote_configuration($id_agent);
|
|
||||||
|
|
||||||
foreach ($rows as $row) {
|
|
||||||
if ($row['server_type'] != 13) {
|
|
||||||
$s_type = ' (Standard)';
|
|
||||||
} else {
|
|
||||||
$id_satellite = $row['id_server'];
|
|
||||||
$s_type = ' (Satellite)';
|
|
||||||
}
|
|
||||||
|
|
||||||
$servers_to_exec[$row['id_server']] = $row['name'].$s_type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
|
|
||||||
$table->data[1][2] .= '<span id=satellite_remote_tip>'.ui_print_help_tip(__('In order to use remote executions you need to enable remote execution in satellite server'), true, 'images/tip_help.png', false, 'display:').'</span>';
|
|
||||||
$table->data[1][4] = html_print_select(
|
|
||||||
$servers_to_exec,
|
|
||||||
'server_to_exec',
|
|
||||||
$server_to_exec,
|
|
||||||
'satellite_remote_warn('.$id_satellite.','.$satellite_remote.')',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$snmp_versions['1'] = 'v. 1';
|
|
||||||
$snmp_versions['2'] = 'v. 2';
|
|
||||||
$snmp_versions['2c'] = 'v. 2c';
|
|
||||||
$snmp_versions['3'] = 'v. 3';
|
|
||||||
|
|
||||||
$table->data[2][0] = '<b>'.__('SNMP community').'</b>';
|
|
||||||
$table->data[2][1] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true);
|
|
||||||
|
|
||||||
$table->data[2][2] = '<b>'.__('SNMP version').'</b>';
|
|
||||||
$table->data[2][3] = html_print_select($snmp_versions, 'snmp_version', $snmp_version, '', '', '', true, false, false, '');
|
|
||||||
|
|
||||||
$table->data[2][3] .= '<div id="spinner_modules" style="float: left; display: none;">'.html_print_image('images/spinner.gif', true).'</div>';
|
|
||||||
html_print_input_hidden('snmpwalk', 1);
|
|
||||||
|
|
||||||
html_print_table($table);
|
|
||||||
|
|
||||||
unset($table);
|
|
||||||
|
|
||||||
// SNMP3 OPTIONS.
|
|
||||||
$table->width = '100%';
|
|
||||||
|
|
||||||
$table->data[2][1] = '<b>'.__('Auth user').'</b>';
|
|
||||||
$table->data[2][2] = html_print_input_text('snmp3_auth_user', $snmp3_auth_user, '', 15, 60, true);
|
|
||||||
$table->data[2][3] = '<b>'.__('Auth password').'</b>';
|
|
||||||
$table->data[2][4] = html_print_input_password('snmp3_auth_pass', $snmp3_auth_pass, '', 15, 60, true);
|
|
||||||
$table->data[2][4] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_awsie', true);
|
|
||||||
|
|
||||||
$table->data[5][0] = '<b>'.__('Privacy method').'</b>';
|
|
||||||
$table->data[5][1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_privacy_method', $snmp3_privacy_method, '', '', '', true);
|
|
||||||
$table->data[5][2] = '<b>'.__('privacy pass').'</b>';
|
|
||||||
$table->data[5][3] = html_print_input_password('snmp3_privacy_pass', $snmp3_privacy_pass, '', 15, 60, true);
|
|
||||||
|
|
||||||
$table->data[6][0] = '<b>'.__('Auth method').'</b>';
|
|
||||||
$table->data[6][1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true);
|
|
||||||
$table->data[6][2] = '<b>'.__('Security level').'</b>';
|
|
||||||
$table->data[6][3] = html_print_select(
|
|
||||||
[
|
|
||||||
'noAuthNoPriv' => __('Not auth and not privacy method'),
|
|
||||||
'authNoPriv' => __('Auth and not privacy method'),
|
|
||||||
'authPriv' => __('Auth and privacy method'),
|
|
||||||
],
|
|
||||||
'snmp3_security_level',
|
|
||||||
$snmp3_security_level,
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($snmp_version == 3) {
|
|
||||||
echo '<div id="snmp3_options">';
|
|
||||||
} else {
|
|
||||||
echo '<div id="snmp3_options" style="display: none;">';
|
|
||||||
}
|
|
||||||
|
|
||||||
html_print_table($table);
|
|
||||||
echo '</div>';
|
|
||||||
|
|
||||||
echo "<div style='text-align:right; width:".$table->width."'>";
|
|
||||||
echo '<span id="oid_loading" class="invisible">'.html_print_image('images/spinner.gif', true).'</span>';
|
|
||||||
html_print_submit_button(__('SNMP Walk'), 'snmp_walk', false, ['class' => 'sub next']);
|
|
||||||
echo '</div>';
|
|
||||||
|
|
||||||
if ($snmpwalk && !$snmpis) {
|
|
||||||
ui_print_error_message(__('Unable to do SNMP walk'));
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($table);
|
|
||||||
|
|
||||||
echo '</form>';
|
|
||||||
|
|
||||||
if (!empty($interfaces_list)) {
|
|
||||||
echo '<span id ="none_text" style="display: none;">'.__('None').'</span>';
|
|
||||||
echo "<form method='post' action='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=snmp_interfaces_explorer&id_agente=".$id_agent."'>";
|
|
||||||
echo '<span id="form_interfaces">';
|
|
||||||
|
|
||||||
$id_snmp_serialize = serialize_in_temp($interfaces, $config['id_user'].'_snmp');
|
|
||||||
html_print_input_hidden('id_snmp_serialize', $id_snmp_serialize);
|
|
||||||
|
|
||||||
$id_snmp_int_ip_serialize = serialize_in_temp($interfaces_ip, $config['id_user'].'_snmp_int_ip');
|
|
||||||
html_print_input_hidden('id_snmp_int_ip_serialize', $id_snmp_int_ip_serialize);
|
|
||||||
|
|
||||||
html_print_input_hidden('create_modules', 1);
|
|
||||||
html_print_input_hidden('ip_target', $ip_target);
|
|
||||||
html_print_input_hidden('use_agent', $use_agent);
|
|
||||||
html_print_input_hidden('tcp_port', $tcp_port);
|
|
||||||
html_print_input_hidden('snmp_community', $snmp_community);
|
|
||||||
html_print_input_hidden('snmp_version', $snmp_version);
|
|
||||||
html_print_input_hidden('snmp3_auth_user', $snmp3_auth_user);
|
|
||||||
html_print_input_hidden('snmp3_auth_pass', $snmp3_auth_pass);
|
|
||||||
html_print_input_hidden('snmp3_auth_method', $snmp3_auth_method);
|
|
||||||
html_print_input_hidden('snmp3_privacy_method', $snmp3_privacy_method);
|
|
||||||
html_print_input_hidden('snmp3_privacy_pass', $snmp3_privacy_pass);
|
|
||||||
html_print_input_hidden('snmp3_security_level', $snmp3_security_level);
|
|
||||||
html_print_input_hidden('server_to_exec', $server_to_exec);
|
|
||||||
|
|
||||||
$table->width = '100%';
|
|
||||||
|
|
||||||
// Agent selector.
|
|
||||||
$table->data[0][0] = '<b>'.__('Interfaces').'</b>';
|
|
||||||
$table->data[0][1] = '';
|
|
||||||
$table->data[0][2] = '<b>'.__('Modules').'</b>';
|
|
||||||
|
|
||||||
$table->data[1][0] = html_print_select($interfaces_list, 'id_snmp[]', 0, false, '', '', true, true, true, '', false, 'width:500px; overflow: auto;');
|
|
||||||
|
|
||||||
$table->data[1][1] = __('When selecting interfaces');
|
|
||||||
$table->data[1][1] .= '<br>';
|
|
||||||
$table->data[1][1] .= html_print_select(
|
|
||||||
[
|
|
||||||
1 => __('Show common modules'),
|
|
||||||
0 => __('Show all modules'),
|
|
||||||
],
|
|
||||||
'modules_selection_mode',
|
|
||||||
1,
|
|
||||||
false,
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[1][2] = html_print_select([], 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:200px;');
|
|
||||||
$table->data[1][2] .= html_print_input_hidden('agent', $id_agent, true);
|
|
||||||
|
|
||||||
html_print_table($table);
|
|
||||||
|
|
||||||
echo "<div style='text-align:right; width:".$table->width."'>";
|
|
||||||
html_print_submit_button(__('Create modules'), '', false, ['class' => 'sub add']);
|
|
||||||
echo '</div>';
|
|
||||||
unset($table);
|
|
||||||
|
|
||||||
echo '</span>';
|
|
||||||
echo '</form>';
|
|
||||||
echo '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
ui_require_jquery_file('pandora.controls');
|
|
||||||
ui_require_jquery_file('ajaxqueue');
|
|
||||||
ui_require_jquery_file('bgiframe');
|
|
||||||
?>
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
/* <![CDATA[ */
|
|
||||||
|
|
||||||
$(document).ready (function () {
|
|
||||||
var inputActive = true;
|
|
||||||
|
|
||||||
$('#server_to_exec option').trigger('change');
|
|
||||||
|
|
||||||
$(document).data('text_for_module', $("#none_text").html());
|
|
||||||
|
|
||||||
$("#id_snmp").change(snmp_changed_by_multiple_snmp);
|
|
||||||
|
|
||||||
$("#snmp_version").change(function () {
|
|
||||||
if (this.value == "3") {
|
|
||||||
$("#snmp3_options").css("display", "");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#snmp3_options").css("display", "none");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#walk_form").submit(function() {
|
|
||||||
$("#submit-snmp_walk").disable ();
|
|
||||||
$("#oid_loading").show ();
|
|
||||||
$("#no_snmp").hide ();
|
|
||||||
$("#form_interfaces").hide ();
|
|
||||||
});
|
|
||||||
|
|
||||||
// When select interfaces changes
|
|
||||||
$("#modules_selection_mode").change (function() {
|
|
||||||
$("#id_snmp").trigger('change');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function snmp_changed_by_multiple_snmp (event, id_snmp, selected) {
|
|
||||||
var idSNMP = Array();
|
|
||||||
var get_common_modules = $("#modules_selection_mode option:selected").val();
|
|
||||||
|
|
||||||
jQuery.each ($("#id_snmp option:selected"), function (i, val) {
|
|
||||||
idSNMP.push($(val).val());
|
|
||||||
});
|
|
||||||
$('#module').attr ('disabled', 1);
|
|
||||||
$('#module').empty ();
|
|
||||||
$('#module').append ($('<option></option>').html ("Loading...").attr ("value", 0));
|
|
||||||
|
|
||||||
jQuery.post ('ajax.php',
|
|
||||||
{"page" : "godmode/agentes/agent_manager",
|
|
||||||
"get_modules_json_for_multiple_snmp": 1,
|
|
||||||
"get_common_modules" : get_common_modules,
|
|
||||||
"id_snmp[]": idSNMP,
|
|
||||||
"id_snmp_serialize": $("#hidden-id_snmp_serialize").val()
|
|
||||||
},
|
|
||||||
function (data) {
|
|
||||||
$('#module').empty ();
|
|
||||||
c = 0;
|
|
||||||
jQuery.each (data, function (i, val) {
|
|
||||||
s = js_html_entity_decode(val);
|
|
||||||
$('#module').append ($('<option></option>').html (s).attr ("value", i));
|
|
||||||
$('#module').fadeIn ('normal');
|
|
||||||
c++;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (c == 0) {
|
|
||||||
if (typeof($(document).data('text_for_module')) != 'undefined') {
|
|
||||||
$('#module').append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (typeof(data['any_text']) != 'undefined') {
|
|
||||||
$('#module').append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var anyText = $("#any_text").html(); //Trick for catch the translate text.
|
|
||||||
|
|
||||||
if (anyText == null) {
|
|
||||||
anyText = 'Any';
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#module').append ($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (selected != undefined)
|
|
||||||
$('#module').attr ('value', selected);
|
|
||||||
$('#module').removeAttr('disabled');
|
|
||||||
},
|
|
||||||
"json");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
@ -1,873 +0,0 @@
|
|||||||
<?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 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/functions_agents.php';
|
|
||||||
require_once 'include/functions_modules.php';
|
|
||||||
require_once 'include/functions_alerts.php';
|
|
||||||
require_once 'include/functions_reporting.php';
|
|
||||||
require_once 'include/functions_network_components.php';
|
|
||||||
require_once 'include/functions_wmi.php';
|
|
||||||
require_once 'include/graphs/functions_utils.php';
|
|
||||||
|
|
||||||
check_login();
|
|
||||||
|
|
||||||
$ip_target = (string) get_parameter('ip_target', $ipAgent);
|
|
||||||
// Host.
|
|
||||||
$plugin_user = (string) get_parameter('plugin_user', 'Administrator');
|
|
||||||
// Username.
|
|
||||||
$plugin_pass = io_safe_output(get_parameter('plugin_pass', ''));
|
|
||||||
// Password.
|
|
||||||
$tcp_send = (string) get_parameter('tcp_send');
|
|
||||||
// Namespace.
|
|
||||||
$server_to_exec = get_parameter('server_to_exec', 0);
|
|
||||||
|
|
||||||
// See if id_agente is set (either POST or GET, otherwise -1.
|
|
||||||
$id_agent = $idAgent;
|
|
||||||
|
|
||||||
// Get passed variables.
|
|
||||||
$wmiexplore = (int) get_parameter('wmiexplore', 0);
|
|
||||||
$create_modules = (int) get_parameter('create_modules', 0);
|
|
||||||
|
|
||||||
$interfaces = [];
|
|
||||||
|
|
||||||
$wmi_client = 'wmic';
|
|
||||||
|
|
||||||
if ($wmiexplore) {
|
|
||||||
$wmi_command = wmi_compose_query(
|
|
||||||
$wmi_client,
|
|
||||||
$plugin_user,
|
|
||||||
$plugin_pass,
|
|
||||||
$ip_target,
|
|
||||||
$tcp_send
|
|
||||||
);
|
|
||||||
|
|
||||||
$processes = [];
|
|
||||||
$services = [];
|
|
||||||
$disks = [];
|
|
||||||
$network_component_groups = [];
|
|
||||||
|
|
||||||
// Processes.
|
|
||||||
$wmi_processes = $wmi_command.' "select Name from Win32_Process"';
|
|
||||||
$processes_name_field = 1;
|
|
||||||
if (enterprise_installed() && (int) $server_to_exec != 0) {
|
|
||||||
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
|
|
||||||
|
|
||||||
if (empty($server_data['port'])) {
|
|
||||||
exec(
|
|
||||||
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_processes."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
exec(
|
|
||||||
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_processes."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
exec($wmi_processes, $output);
|
|
||||||
}
|
|
||||||
|
|
||||||
$fail = false;
|
|
||||||
if (preg_match('/^Failed/', $output[0])) {
|
|
||||||
$fail = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$fail) {
|
|
||||||
foreach ($output as $index => $row) {
|
|
||||||
// First and second rows are Class and column names, ignore it.
|
|
||||||
if ($index < 2) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$row_exploded = explode('|', $row);
|
|
||||||
|
|
||||||
if (!in_array($row_exploded[$processes_name_field], $processes)) {
|
|
||||||
if (preg_match('/ERROR/', $row_exploded[$processes_name_field])) {
|
|
||||||
$processes[$row_exploded[$prouycesses_name_field]] = __('None');
|
|
||||||
} else {
|
|
||||||
$processes[$row_exploded[$prouycesses_name_field]] = $row_exploded[$processes_name_field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($output);
|
|
||||||
|
|
||||||
// Services.
|
|
||||||
$wmi_services = $wmi_command.' "select Name from Win32_Service"';
|
|
||||||
$services_name_field = 0;
|
|
||||||
$services_check_field = 1;
|
|
||||||
|
|
||||||
if (enterprise_installed() && (int) $server_to_exec != 0) {
|
|
||||||
$server_data = db_get_row(
|
|
||||||
'tserver',
|
|
||||||
'id_server',
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
if (empty($server_data['port'])) {
|
|
||||||
exec(
|
|
||||||
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_services."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
exec(
|
|
||||||
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_services."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
exec($wmi_services, $output);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($output as $index => $row) {
|
|
||||||
// First and second rows are Class and column names, ignore it.
|
|
||||||
if ($index < 2) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$row_exploded = explode('|', $row);
|
|
||||||
|
|
||||||
if (!in_array($row_exploded[$services_name_field], $services)) {
|
|
||||||
if (preg_match('/ERROR/', $row_exploded[$services_name_field])) {
|
|
||||||
$services[$row_exploded[$services_name_field]] = __('None');
|
|
||||||
} else {
|
|
||||||
$services[$row_exploded[$services_name_field]] = $row_exploded[$services_name_field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($output);
|
|
||||||
|
|
||||||
// Disks.
|
|
||||||
$wmi_disks = $wmi_command.' "Select DeviceID from Win32_LogicalDisk"';
|
|
||||||
$disks_name_field = 0;
|
|
||||||
|
|
||||||
if (enterprise_installed() && (int) $server_to_exec != 0) {
|
|
||||||
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
|
|
||||||
|
|
||||||
if (empty($server_data['port'])) {
|
|
||||||
exec(
|
|
||||||
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_disks."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
exec(
|
|
||||||
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
|
|
||||||
'".$wmi_disks."'",
|
|
||||||
$output,
|
|
||||||
$rc
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
exec($wmi_disks, $output);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($output as $index => $row) {
|
|
||||||
// First and second rows are Class and column names, ignore it.
|
|
||||||
if ($index < 2) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$row_exploded = explode('|', $row);
|
|
||||||
|
|
||||||
if (!in_array($row_exploded[$disks_name_field], $services)) {
|
|
||||||
if (preg_match('/ERROR/', $row_exploded[$disks_name_field])) {
|
|
||||||
$disks[$row_exploded[$disks_name_field]] = __('None');
|
|
||||||
} else {
|
|
||||||
$disk_string = sprintf(
|
|
||||||
__('Free space on %s'),
|
|
||||||
$row_exploded[$disks_name_field]
|
|
||||||
);
|
|
||||||
$disks[$row_exploded[$disks_name_field]] = $disk_string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($output);
|
|
||||||
|
|
||||||
// WMI Components.
|
|
||||||
$network_component_groups = network_components_get_groups(MODULE_WMI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($create_modules) {
|
|
||||||
$modules = get_parameter('module', []);
|
|
||||||
|
|
||||||
$services = [];
|
|
||||||
$processes = [];
|
|
||||||
$disks = [];
|
|
||||||
$components = [];
|
|
||||||
|
|
||||||
foreach ($modules as $module) {
|
|
||||||
// Split module data to get type.
|
|
||||||
$module_exploded = explode('_', $module);
|
|
||||||
$type = $module_exploded[0];
|
|
||||||
|
|
||||||
// Delete type from module data.
|
|
||||||
unset($module_exploded[0]);
|
|
||||||
|
|
||||||
// Rebuild module data.
|
|
||||||
$module = implode('_', $module_exploded);
|
|
||||||
|
|
||||||
switch ($type) {
|
|
||||||
case 'service':
|
|
||||||
$services[] = $module;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'process':
|
|
||||||
$processes[] = $module;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'disk':
|
|
||||||
$disks[] = $module;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'component':
|
|
||||||
$components[] = $module;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// Default.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Common values for WMI modules.
|
|
||||||
$values = [
|
|
||||||
'ip_target' => $ip_target,
|
|
||||||
'tcp_send' => $tcp_send,
|
|
||||||
'plugin_user' => $plugin_user,
|
|
||||||
'plugin_pass' => $plugin_pass,
|
|
||||||
'id_modulo' => MODULE_WMI,
|
|
||||||
];
|
|
||||||
|
|
||||||
if ($server_to_exec != 0) {
|
|
||||||
$sql = sprintf(
|
|
||||||
'SELECT server_type FROM tserver WHERE id_server = %d',
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
$row = db_get_row_sql($sql);
|
|
||||||
|
|
||||||
if ($row['server_type'] == 13) {
|
|
||||||
$values['id_modulo'] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create Service modules.
|
|
||||||
$services_values = $values;
|
|
||||||
|
|
||||||
$services_values['snmp_community'] = 'Running';
|
|
||||||
// Key string.
|
|
||||||
$services_values['tcp_port'] = 1;
|
|
||||||
// Field number (Running/Stopped).
|
|
||||||
$services_values['id_tipo_modulo'] = 2;
|
|
||||||
// Generic boolean.
|
|
||||||
$services_result = wmi_create_wizard_modules(
|
|
||||||
$id_agent,
|
|
||||||
$services,
|
|
||||||
'services',
|
|
||||||
$services_values,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create Process modules.
|
|
||||||
$processes_values = $values;
|
|
||||||
|
|
||||||
$processes_values['tcp_port'] = 0;
|
|
||||||
// Field number (OID).
|
|
||||||
$processes_values['id_tipo_modulo'] = 2;
|
|
||||||
// Generic boolean.
|
|
||||||
$processes_result = wmi_create_wizard_modules(
|
|
||||||
$id_agent,
|
|
||||||
$processes,
|
|
||||||
'processes',
|
|
||||||
$processes_values,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create Space on disk modules.
|
|
||||||
$disks_values = $values;
|
|
||||||
|
|
||||||
$disks_values['tcp_port'] = 1;
|
|
||||||
// Free space in bytes.
|
|
||||||
$disks_values['id_tipo_modulo'] = 1;
|
|
||||||
// Generic numeric.
|
|
||||||
$disks_values['unit'] = 'Bytes';
|
|
||||||
// Unit.
|
|
||||||
$disks_result = wmi_create_wizard_modules(
|
|
||||||
$id_agent,
|
|
||||||
$disks,
|
|
||||||
'disks',
|
|
||||||
$disks_values,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create modules from component.
|
|
||||||
$components_values = $values;
|
|
||||||
|
|
||||||
$components_values['id_agente'] = $id_agent;
|
|
||||||
|
|
||||||
$components_result = wmi_create_module_from_components(
|
|
||||||
$components,
|
|
||||||
$components_values,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
$server_to_exec
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Errors/Success messages.
|
|
||||||
$success_message = '';
|
|
||||||
$error_message = '';
|
|
||||||
if (!empty($services_result)) {
|
|
||||||
if (count($services_result[NOERR]) > 0) {
|
|
||||||
$success_message .= sprintf(
|
|
||||||
__('%s service modules created succesfully'),
|
|
||||||
count($services_result[NOERR])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($services_result[ERR_GENERIC]) > 0) {
|
|
||||||
$error_message .= sprintf(
|
|
||||||
__('Error creating %s service modules'),
|
|
||||||
count($services_result[ERR_GENERIC])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($processes_result)) {
|
|
||||||
if (count($processes_result[NOERR]) > 0) {
|
|
||||||
$success_message .= sprintf(
|
|
||||||
__('%s process modules created succesfully'),
|
|
||||||
count($processes_result[NOERR])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($processes_result[ERR_GENERIC]) > 0) {
|
|
||||||
$error_message .= sprintf(
|
|
||||||
__('Error creating %s process modules'),
|
|
||||||
count($processes_result[ERR_GENERIC])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($disks_result)) {
|
|
||||||
if (count($disks_result[NOERR]) > 0) {
|
|
||||||
$success_message .= sprintf(
|
|
||||||
__('%s disk space modules created succesfully'),
|
|
||||||
count($disks_result[NOERR])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($disks_result[ERR_GENERIC]) > 0) {
|
|
||||||
$error_message .= sprintf(
|
|
||||||
__('Error creating %s disk space modules'),
|
|
||||||
count($disks_result[ERR_GENERIC])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($components_result)) {
|
|
||||||
if (count($components_result[NOERR]) > 0) {
|
|
||||||
$success_message .= sprintf(
|
|
||||||
__('%s modules created from components succesfully'),
|
|
||||||
count($components_result[NOERR])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($components_result[ERR_GENERIC]) > 0) {
|
|
||||||
$error_message .= sprintf(
|
|
||||||
__('Error creating %s modules from components'),
|
|
||||||
count($components_result[ERR_GENERIC])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($components_result[ERR_EXIST]) > 0) {
|
|
||||||
$error_message .= sprintf(
|
|
||||||
__('%s modules already exist'),
|
|
||||||
count($components_result[ERR_EXIST])
|
|
||||||
).'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($success_message)) {
|
|
||||||
ui_print_success_message($success_message);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($error_message)) {
|
|
||||||
ui_print_error_message($error_message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '<span id ="none_text" style="display: none;">'.__('None').'</span>';
|
|
||||||
echo "<form method='post' id='wmi_form'
|
|
||||||
action='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=wmi_explorer&id_agente=$id_agent'>";
|
|
||||||
|
|
||||||
$table->width = '100%';
|
|
||||||
$table->cellpadding = 0;
|
|
||||||
$table->cellspacing = 0;
|
|
||||||
$table->class = 'databox filters';
|
|
||||||
|
|
||||||
$table->data[0][0] = '<b>'.__('Target IP').'</b>';
|
|
||||||
$table->data[0][1] = html_print_input_text(
|
|
||||||
'ip_target',
|
|
||||||
$ip_target,
|
|
||||||
'',
|
|
||||||
15,
|
|
||||||
60,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[0][2] = '<b>'.__('Namespace').'</b>';
|
|
||||||
$table->data[0][3] = html_print_input_text(
|
|
||||||
'tcp_send',
|
|
||||||
$tcp_send,
|
|
||||||
'',
|
|
||||||
15,
|
|
||||||
60,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[1][0] = '<b>'.__('Username').'</b>';
|
|
||||||
$table->data[1][1] = html_print_input_text(
|
|
||||||
'plugin_user',
|
|
||||||
$plugin_user,
|
|
||||||
'',
|
|
||||||
15,
|
|
||||||
60,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[1][2] = '<b>'.__('Password').'</b>';
|
|
||||||
$table->data[1][3] = html_print_input_password(
|
|
||||||
'plugin_pass',
|
|
||||||
$plugin_pass,
|
|
||||||
'',
|
|
||||||
15,
|
|
||||||
60,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[1][3] .= '<div id="spinner_modules" style="float: left; display: none;">
|
|
||||||
'.html_print_image('images/spinner.gif', true).'</div>';
|
|
||||||
html_print_input_hidden('wmiexplore', 1);
|
|
||||||
|
|
||||||
$servers_to_exec = [];
|
|
||||||
$servers_to_exec[0] = __('Local console');
|
|
||||||
if (enterprise_installed()) {
|
|
||||||
enterprise_include_once('include/functions_satellite.php');
|
|
||||||
|
|
||||||
$rows = get_proxy_servers();
|
|
||||||
foreach ($rows as $row) {
|
|
||||||
if ($row['server_type'] != 13) {
|
|
||||||
$s_type = ' (Standard)';
|
|
||||||
} else {
|
|
||||||
$s_type = ' (Satellite)';
|
|
||||||
}
|
|
||||||
|
|
||||||
$servers_to_exec[$row['id_server']] = $row['name'].$s_type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->data[2][0] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
|
|
||||||
$table->data[2][1] = html_print_select(
|
|
||||||
$servers_to_exec,
|
|
||||||
'server_to_exec',
|
|
||||||
$server_to_exec,
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
html_print_table($table);
|
|
||||||
|
|
||||||
echo "<div style='text-align:right; width:".$table->width."'>";
|
|
||||||
echo '<span id="oid_loading" class="invisible">
|
|
||||||
'.html_print_image('images/spinner.gif', true).'</span>';
|
|
||||||
html_print_submit_button(
|
|
||||||
__('WMI Explore'),
|
|
||||||
'wmi_explore',
|
|
||||||
false,
|
|
||||||
['class' => 'sub next']
|
|
||||||
);
|
|
||||||
echo '</div><br>';
|
|
||||||
|
|
||||||
if ($wmiexplore && $fail) {
|
|
||||||
ui_print_error_message(__('Unable to do WMI explorer'));
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($table);
|
|
||||||
|
|
||||||
echo '</form>';
|
|
||||||
|
|
||||||
if ($wmiexplore && !$fail) {
|
|
||||||
echo '<br><span id ="none_text" style="display: none;">'.__('None').'</span>';
|
|
||||||
echo "<form method='post'
|
|
||||||
action='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&wizard_section=wmi_explorer&id_agente=$id_agent'>";
|
|
||||||
echo '<span id="form_interfaces">';
|
|
||||||
|
|
||||||
html_print_input_hidden('create_modules', 1);
|
|
||||||
html_print_input_hidden('ip_target', $ip_target);
|
|
||||||
// Host.
|
|
||||||
html_print_input_hidden('plugin_user', $plugin_user);
|
|
||||||
// User.
|
|
||||||
html_print_input_hidden('plugin_pass', $plugin_pass);
|
|
||||||
// Password.
|
|
||||||
html_print_input_hidden('tcp_send', $tcp_send);
|
|
||||||
// Namespace.
|
|
||||||
html_print_input_hidden('server_to_exec', $server_to_exec);
|
|
||||||
|
|
||||||
$table->width = '100%';
|
|
||||||
|
|
||||||
// Mode selector.
|
|
||||||
$modes = [];
|
|
||||||
$modes['services'] = __('Services');
|
|
||||||
$modes['processes'] = __('Processes');
|
|
||||||
$modes['disks'] = __('Free space on disk');
|
|
||||||
$modes['components'] = __('WMI components');
|
|
||||||
|
|
||||||
$table->data[1][0] = __('Wizard mode').': ';
|
|
||||||
$table->data[1][0] .= html_print_select(
|
|
||||||
$modes,
|
|
||||||
'wmi_wizard_modes',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
$table->cellstyle[1][0] = 'vertical-align: middle;';
|
|
||||||
|
|
||||||
$table->colspan[1][0] = 2;
|
|
||||||
$table->data[1][2] = '<b>'.__('Modules').'</b>';
|
|
||||||
$table->cellstyle[1][2] = 'text-align: center;';
|
|
||||||
|
|
||||||
// Components list.
|
|
||||||
$table->data[2][0] = '<div class="wizard_mode_form wizard_mode_components">';
|
|
||||||
$table->data[2][0] .= __('Filter by group').'<br>';
|
|
||||||
$table->data[2][0] .= html_print_select(
|
|
||||||
$network_component_groups,
|
|
||||||
'network_component_group',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width: 300px;'
|
|
||||||
).'<br>';
|
|
||||||
$table->data[2][0] .= html_print_select(
|
|
||||||
[],
|
|
||||||
'network_component',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width: 300px;'
|
|
||||||
);
|
|
||||||
$table->data[2][0] .= '</div>';
|
|
||||||
|
|
||||||
// Services list.
|
|
||||||
$table->data[2][0] .= '<div class="wizard_mode_form wizard_mode_services">';
|
|
||||||
$table->data[2][0] .= html_print_select(
|
|
||||||
$services,
|
|
||||||
'services',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width: 300px;'
|
|
||||||
);
|
|
||||||
$table->data[2][0] .= '</div>';
|
|
||||||
// Processes list.
|
|
||||||
$table->data[2][0] .= '<div class="wizard_mode_form wizard_mode_processes">';
|
|
||||||
$table->data[2][0] .= html_print_select(
|
|
||||||
$processes,
|
|
||||||
'processes',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width: 300px;'
|
|
||||||
);
|
|
||||||
$table->data[2][0] .= '</div>';
|
|
||||||
$table->data[2][0] .= '<span id="no_component"
|
|
||||||
class="invisible error wizard_mode_form wizard_mode_components">';
|
|
||||||
|
|
||||||
$table->data[2][0] .= __('No component was found');
|
|
||||||
$table->data[2][0] .= '</span>';
|
|
||||||
|
|
||||||
// Disks list.
|
|
||||||
$table->data[2][0] .= '<div class="wizard_mode_form wizard_mode_disks">';
|
|
||||||
$table->data[2][0] .= html_print_select(
|
|
||||||
$disks,
|
|
||||||
'disks',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width: 300px;'
|
|
||||||
);
|
|
||||||
$table->data[2][0] .= '</div>';
|
|
||||||
$table->cellstyle[2][0] = 'vertical-align: bottom; text-align: center;';
|
|
||||||
|
|
||||||
|
|
||||||
// Components arrow.
|
|
||||||
$table->data[2][1] = '<div
|
|
||||||
class="wizard_mode_form wizard_mode_components wizard_mode_components_arrow clickable">
|
|
||||||
'.html_print_image(
|
|
||||||
'images/darrowright.png',
|
|
||||||
true,
|
|
||||||
['title' => __('Add to modules list')]
|
|
||||||
).'</div>';
|
|
||||||
// Services arrow.
|
|
||||||
$table->data[2][1] .= '<div
|
|
||||||
class="wizard_mode_form wizard_mode_services wizard_mode_services_arrow clickable">
|
|
||||||
'.html_print_image(
|
|
||||||
'images/darrowright.png',
|
|
||||||
true,
|
|
||||||
['title' => __('Add to modules list')]
|
|
||||||
).'</div>';
|
|
||||||
// Processes arrow.
|
|
||||||
$table->data[2][1] .= '<div
|
|
||||||
class="wizard_mode_form wizard_mode_processes wizard_mode_processes_arrow clickable">
|
|
||||||
'.html_print_image(
|
|
||||||
'images/darrowright.png',
|
|
||||||
true,
|
|
||||||
['title' => __('Add to modules list')]
|
|
||||||
).'</div>';
|
|
||||||
// Disks arrow.
|
|
||||||
$table->data[2][1] .= '<div
|
|
||||||
class="wizard_mode_form wizard_mode_disks wizard_mode_disks_arrow clickable">
|
|
||||||
'.html_print_image(
|
|
||||||
'images/darrowright.png',
|
|
||||||
true,
|
|
||||||
['title' => __('Add to modules list')]
|
|
||||||
).'</div>';
|
|
||||||
|
|
||||||
|
|
||||||
$table->data[2][1] .= '<br><br>
|
|
||||||
<div class="wizard_mode_delete_arrow clickable">
|
|
||||||
'.html_print_image(
|
|
||||||
'images/cross.png',
|
|
||||||
true,
|
|
||||||
['title' => __('Remove from modules list')]
|
|
||||||
).'</div>';
|
|
||||||
$table->cellstyle[2][1] = 'vertical-align: middle; text-align: center;';
|
|
||||||
|
|
||||||
$table->data[2][2] = html_print_select(
|
|
||||||
[],
|
|
||||||
'module[]',
|
|
||||||
0,
|
|
||||||
false,
|
|
||||||
'',
|
|
||||||
0,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'',
|
|
||||||
false,
|
|
||||||
'width:300px; height: 100%;'
|
|
||||||
);
|
|
||||||
$table->data[2][2] .= html_print_input_hidden(
|
|
||||||
'agent',
|
|
||||||
$id_agent,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
$table->cellstyle[2][2] = 'vertical-align: top; text-align: center;';
|
|
||||||
|
|
||||||
html_print_table($table);
|
|
||||||
|
|
||||||
echo "<div style='text-align:right; width:".$table->width."'>";
|
|
||||||
html_print_submit_button(
|
|
||||||
__('Create modules'),
|
|
||||||
'create_modules_btn',
|
|
||||||
false,
|
|
||||||
['class' => 'sub add']
|
|
||||||
);
|
|
||||||
echo '</div>';
|
|
||||||
unset($table);
|
|
||||||
|
|
||||||
echo '</span>';
|
|
||||||
echo '</form>';
|
|
||||||
echo '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
ui_require_jquery_file('pandora.controls');
|
|
||||||
ui_require_jquery_file('ajaxqueue');
|
|
||||||
ui_require_jquery_file('bgiframe');
|
|
||||||
ui_require_javascript_file('pandora_modules');
|
|
||||||
|
|
||||||
?>
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
/* <![CDATA[ */
|
|
||||||
|
|
||||||
$(document).ready (function () {
|
|
||||||
$("#wmi_form").submit(function() {
|
|
||||||
$("#oid_loading").show ();
|
|
||||||
});
|
|
||||||
|
|
||||||
network_component_group_change_event();
|
|
||||||
$('#network_component_group').trigger('change');
|
|
||||||
|
|
||||||
$("#wmi_wizard_modes").change(function() {
|
|
||||||
$(".wizard_mode_form").hide();
|
|
||||||
var selected_mode = $("#wmi_wizard_modes").val();
|
|
||||||
$(".wizard_mode_" + selected_mode).show();
|
|
||||||
$('#form_interfaces').show();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#wmi_wizard_modes").trigger('change');
|
|
||||||
|
|
||||||
<?php
|
|
||||||
if (!$wmiexplore || $fail) {
|
|
||||||
?>
|
|
||||||
$('#form_interfaces').hide();
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
$('.wizard_mode_services_arrow').click(function() {
|
|
||||||
jQuery.each($("select[name='services'] option:selected"), function (key, value) {
|
|
||||||
var id = 'service_' + $(value).attr('value');
|
|
||||||
var name = $(value).html() + ' (<?php echo __('Service'); ?>)';
|
|
||||||
if (name != <?php echo "'".__('None')."'"; ?>) {
|
|
||||||
if($("#module").find("option[value='" + id + "']").length == 0) {
|
|
||||||
$("select[name='module[]']").append($("<option></option>").val(id).html(name));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alert("<?php echo __('Repeated'); ?>");
|
|
||||||
}
|
|
||||||
$("#module").find("option[value='0']").remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.wizard_mode_processes_arrow').click(function() {
|
|
||||||
jQuery.each($("select[name='processes'] option:selected"), function (key, value) {
|
|
||||||
var id = 'process_' + $(value).attr('value');
|
|
||||||
var name = $(value).html() + ' (<?php echo __('Process'); ?>)';
|
|
||||||
if (name != <?php echo "'".__('None')."'"; ?>) {
|
|
||||||
if($("#module").find("option[value='" + id + "']").length == 0) {
|
|
||||||
$("select[name='module[]']").append($("<option></option>").val(id).html(name));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alert("<?php echo __('Repeated'); ?>");
|
|
||||||
}
|
|
||||||
$("#module").find("option[value='0']").remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.wizard_mode_disks_arrow').click(function() {
|
|
||||||
jQuery.each($("select[name='disks'] option:selected"), function (key, value) {
|
|
||||||
var id = 'disk_' + $(value).attr('value');
|
|
||||||
var name = $(value).html();
|
|
||||||
if (name != <?php echo "'".__('None')."'"; ?>) {
|
|
||||||
if($("#module").find("option[value='" + id + "']").length == 0) {
|
|
||||||
$("select[name='module[]']").append($("<option></option>").val(id).html(name));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alert("<?php echo __('Repeated'); ?>");
|
|
||||||
}
|
|
||||||
$("#module").find("option[value='0']").remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.wizard_mode_components_arrow').click(function() {
|
|
||||||
jQuery.each($("select[name='network_component'] option:selected"), function (key, value) {
|
|
||||||
var id = 'component_' + $(value).attr('value');
|
|
||||||
var name = $(value).html();
|
|
||||||
if (name != <?php echo "'".__('None')."'"; ?>) {
|
|
||||||
if($("#module").find("option[value='" + id + "']").length == 0) {
|
|
||||||
$("select[name='module[]']").append($("<option></option>").val(id).html(name));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alert("<?php echo __('Repeated'); ?>");
|
|
||||||
}
|
|
||||||
$("#module").find("option[value='0']").remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.wizard_mode_delete_arrow').click(function() {
|
|
||||||
jQuery.each($("select[name='module[]'] option:selected"), function (key, value) {
|
|
||||||
var name = $(value).html();
|
|
||||||
if (name != <?php echo "'".__('None')."'"; ?>) {
|
|
||||||
$(value).remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if($("#module option").length == 0) {
|
|
||||||
$("select[name='module[]']").append($("<option></option>").val(0).html(<?php echo "'".__('None')."'"; ?>));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#submit-create_modules_btn").click(function () {
|
|
||||||
if($("#module option").length == 0 || ($("#module option").length == 1 && $("#module option").eq(0).val() == 0)) {
|
|
||||||
alert("<?php echo __('Modules list is empty'); ?>");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$('#module option').map(function() {
|
|
||||||
$(this).prop('selected', true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
@ -1378,8 +1378,8 @@ if ($update_module || $create_module) {
|
|||||||
$ip_target = (string) get_parameter('ip_target');
|
$ip_target = (string) get_parameter('ip_target');
|
||||||
// No autofill if the module is a webserver module.
|
// No autofill if the module is a webserver module.
|
||||||
if ($ip_target == ''
|
if ($ip_target == ''
|
||||||
&& $id_module_type < MODULE_WEBSERVER_CHECK_LATENCY
|
&& $id_module_type < MODULE_TYPE_WEB_DATA
|
||||||
&& $id_module_type > MODULE_WEBSERVER_RETRIEVE_STRING_DATA
|
&& $id_module_type > MODULE_TYPE_WEB_CONTENT_STRING
|
||||||
) {
|
) {
|
||||||
$ip_target = 'auto';
|
$ip_target = 'auto';
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,47 @@ if (empty($update_module_id)) {
|
|||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
$data[0] = __('Target IP').' '.ui_print_help_icon('wmi_module_tab', true);
|
$data[0] = __('Target IP').' '.ui_print_help_icon('wmi_module_tab', true);
|
||||||
|
|
||||||
|
if ($page == 'enterprise/godmode/policies/policy_modules') {
|
||||||
|
if ($ip_target != 'auto' && $ip_target != '') {
|
||||||
|
$custom_ip_target = $ip_target;
|
||||||
|
$ip_target = 'custom';
|
||||||
|
} else if ($ip_target == '') {
|
||||||
|
$ip_target = 'force_pri';
|
||||||
|
$custom_ip_target = '';
|
||||||
|
} else {
|
||||||
|
$custom_ip_target = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$target_ip_values = [];
|
||||||
|
$target_ip_values['auto'] = __('Auto');
|
||||||
|
$target_ip_values['force_pri'] = __('Force primary key');
|
||||||
|
$target_ip_values['custom'] = __('Custom');
|
||||||
|
|
||||||
|
$data[1] = html_print_select(
|
||||||
|
$target_ip_values,
|
||||||
|
'ip_target',
|
||||||
|
$ip_target,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'width:200px;'
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[1] .= html_print_input_text('custom_ip_target', $custom_ip_target, '', 15, 60, true);
|
||||||
|
} else {
|
||||||
|
if ($ip_target == 'auto') {
|
||||||
|
$ip_target = agents_get_address($id_agente);
|
||||||
|
}
|
||||||
|
|
||||||
$data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true);
|
$data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true);
|
||||||
|
}
|
||||||
|
|
||||||
$data[2] = __('Namespace').ui_print_help_tip(__('Optional. WMI namespace. If unsure leave blank.'), true);
|
$data[2] = __('Namespace').ui_print_help_tip(__('Optional. WMI namespace. If unsure leave blank.'), true);
|
||||||
$data[3] = html_print_input_text(
|
$data[3] = html_print_input_text(
|
||||||
'tcp_send',
|
'tcp_send',
|
||||||
@ -136,3 +176,21 @@ $data[3] = html_print_input_text(
|
|||||||
);
|
);
|
||||||
|
|
||||||
push_table_simple($data, 'key_field');
|
push_table_simple($data, 'key_field');
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready (function () {
|
||||||
|
var custom_ip_target = "<?php echo $custom_ip_target; ?>";
|
||||||
|
if(custom_ip_target == ''){
|
||||||
|
$("#text-custom_ip_target").hide();
|
||||||
|
}
|
||||||
|
$('#ip_target').change(function() {
|
||||||
|
if($(this).val() == 'custom') {
|
||||||
|
$("#text-custom_ip_target").show();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$("#text-custom_ip_target").hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
@ -119,7 +119,7 @@ if ($create_special_day) {
|
|||||||
$values['description'] = (string) get_parameter('description');
|
$values['description'] = (string) get_parameter('description');
|
||||||
|
|
||||||
$aviable_description = true;
|
$aviable_description = true;
|
||||||
if (preg_match('<script>', $values['description'])) {
|
if (preg_match('/script/i', $values['description'])) {
|
||||||
$aviable_description = false;
|
$aviable_description = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ if ($update_special_day) {
|
|||||||
$id_group_orig = (string) get_parameter('id_group_orig');
|
$id_group_orig = (string) get_parameter('id_group_orig');
|
||||||
|
|
||||||
$aviable_description = true;
|
$aviable_description = true;
|
||||||
if (preg_match('<script>', $description)) {
|
if (preg_match('/script/i', $description)) {
|
||||||
$aviable_description = false;
|
$aviable_description = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +348,7 @@ if (($create_group) && (check_acl($config['id_user'], 0, 'PM'))) {
|
|||||||
$propagate = (bool) get_parameter('propagate');
|
$propagate = (bool) get_parameter('propagate');
|
||||||
|
|
||||||
$aviable_name = true;
|
$aviable_name = true;
|
||||||
if (preg_match('<script>', $name)) {
|
if (preg_match('/script/i', $name)) {
|
||||||
$aviable_name = false;
|
$aviable_name = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,7 +403,7 @@ if ($update_group) {
|
|||||||
$other = (string) get_parameter('other');
|
$other = (string) get_parameter('other');
|
||||||
|
|
||||||
$aviable_name = true;
|
$aviable_name = true;
|
||||||
if (preg_match('<script>', $name)) {
|
if (preg_match('/script/i', $name)) {
|
||||||
$aviable_name = false;
|
$aviable_name = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -724,8 +724,8 @@ if ($tab == 'tree') {
|
|||||||
[
|
[
|
||||||
'style' => '',
|
'style' => '',
|
||||||
'class' => 'bot',
|
'class' => 'bot',
|
||||||
'alt' => $group['nombre'],
|
'alt' => io_safe_input($group['nombre']),
|
||||||
'title' => $group['nombre'],
|
'title' => io_safe_input($group['nombre']),
|
||||||
],
|
],
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
|
@ -47,6 +47,39 @@ require_once $config['homedir'].'/include/functions_categories.php';
|
|||||||
enterprise_include_once('meta/include/functions_components_meta.php');
|
enterprise_include_once('meta/include/functions_components_meta.php');
|
||||||
require_once $config['homedir'].'/include/functions_component_groups.php';
|
require_once $config['homedir'].'/include/functions_component_groups.php';
|
||||||
|
|
||||||
|
// Header.
|
||||||
|
if (defined('METACONSOLE')) {
|
||||||
|
$sec = 'advanced';
|
||||||
|
|
||||||
|
$id_modulo = (int) get_parameter('id_component_type');
|
||||||
|
$new_component = (bool) get_parameter('new_component');
|
||||||
|
} else {
|
||||||
|
$id_modulo = (int) get_parameter('id_component_type');
|
||||||
|
$new_component = (bool) get_parameter('new_component');
|
||||||
|
if ($id_modulo == COMPONENT_TYPE_NETWORK || $id_modulo == COMPONENT_TYPE_PLUGIN || $id_modulo == COMPONENT_TYPE_WMI || $id_modulo == COMPONENT_TYPE_WIZARD) {
|
||||||
|
$help_header = 'local_module_tab';
|
||||||
|
} else if (!$new_component) {
|
||||||
|
$help_header = 'network_component_tab';
|
||||||
|
} else {
|
||||||
|
$help_header = 'network_component_tab';
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_print_page_header(
|
||||||
|
__('Remote components'),
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
$help_header,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'modulemodal',
|
||||||
|
GENERIC_SIZE_TEXT,
|
||||||
|
'',
|
||||||
|
__('Configuration').' / '.__('Templates').' / '.__('Remote components')
|
||||||
|
);
|
||||||
|
$sec = 'gmodules';
|
||||||
|
}
|
||||||
|
|
||||||
$type = (int) get_parameter('type');
|
$type = (int) get_parameter('type');
|
||||||
$name = (string) get_parameter('name');
|
$name = (string) get_parameter('name');
|
||||||
$description = (string) get_parameter('description');
|
$description = (string) get_parameter('description');
|
||||||
@ -180,6 +213,68 @@ if ($duplicate_network_component) {
|
|||||||
$id = 0;
|
$id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wizard Common.
|
||||||
|
$module_enabled = get_parameter_switch('module_enabled');
|
||||||
|
$module_protocol = get_parameter('module_protocol', 'snmp');
|
||||||
|
$scan_type = (int) get_parameter('scan_type', SCAN_TYPE_FIXED);
|
||||||
|
$execution_type = (int) get_parameter('execution_type', EXECUTION_TYPE_NETWORK);
|
||||||
|
// Wizard SNMP.
|
||||||
|
$manufacturer_id = get_parameter('manufacturer_id');
|
||||||
|
$name_oid = get_parameter('name_oid');
|
||||||
|
$value = get_parameter('value_oid');
|
||||||
|
// Other Wizard WMI fields.
|
||||||
|
$query_filter = '';
|
||||||
|
$wmi_class = get_parameter('wmi_class');
|
||||||
|
$query_key_field = get_parameter('query_key_field');
|
||||||
|
// Enabled Module.
|
||||||
|
$enabled = get_parameter_switch('enabled');
|
||||||
|
|
||||||
|
if ($id_modulo === COMPONENT_TYPE_WIZARD) {
|
||||||
|
// Wizard Common extra fields.
|
||||||
|
$macros = [];
|
||||||
|
|
||||||
|
$macros['satellite_execution'] = get_parameter('satellite_execution_'.$module_protocol);
|
||||||
|
$macros['value_operation'] = get_parameter('value_operation_'.$module_protocol);
|
||||||
|
$macros['server_plugin'] = get_parameter('server_plugin_'.$module_protocol);
|
||||||
|
|
||||||
|
if ($module_protocol === 'snmp') {
|
||||||
|
// If not select any manufacturer_id, there is 'all'.
|
||||||
|
if (empty($manufacturer_id) === true) {
|
||||||
|
$manufacturer_id = 'all';
|
||||||
|
}
|
||||||
|
} else if ($module_protocol === 'wmi') {
|
||||||
|
// Wizard WMI Query filters.
|
||||||
|
$query_filter = [];
|
||||||
|
$query_filter['scan'] = get_parameter('query_filter_scan');
|
||||||
|
$query_filter['execution'] = get_parameter('query_filter_execution');
|
||||||
|
$query_filter['field'] = get_parameter('field_value_filter');
|
||||||
|
$query_filter['key_string'] = get_parameter('key_string_filter');
|
||||||
|
$query_filter = json_encode($query_filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default extra field.
|
||||||
|
$extra_fields = [ 'extra_field_1' => '' ];
|
||||||
|
// If Plugin execution is selected.
|
||||||
|
if ($execution_type === EXECUTION_TYPE_PLUGIN || $module_protocol === 'wmi') {
|
||||||
|
// Search all parameters received with extra_fields.
|
||||||
|
foreach ($_REQUEST as $parameter => $thisValue) {
|
||||||
|
// Extra fields (OIDs Macros or WMI Extra fields)
|
||||||
|
if (preg_match('/extra_field_'.$module_protocol.'_/', $parameter) !== 0) {
|
||||||
|
$tmpParameter = explode('_', $parameter);
|
||||||
|
$extra_fields['extra_field_'.$tmpParameter[3]] = get_parameter($parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The plugin macros.
|
||||||
|
if (preg_match('/'.$module_protocol.'_field/', $parameter) !== 0) {
|
||||||
|
$macros[$parameter] = io_safe_input($thisValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// All of macros saved in the same array.
|
||||||
|
$macros = json_encode(array_merge($extra_fields, $macros));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$custom_string_1 = '';
|
$custom_string_1 = '';
|
||||||
$custom_string_2 = '';
|
$custom_string_2 = '';
|
||||||
$custom_string_3 = '';
|
$custom_string_3 = '';
|
||||||
@ -210,7 +305,7 @@ if (defined('METACONSOLE')) {
|
|||||||
$sec = 'gmodules';
|
$sec = 'gmodules';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type >= 15 && $type <= 18) {
|
if ($type >= MODULE_TYPE_REMOTE_SNMP && $type <= MODULE_TYPE_REMOTE_SNMP_PROC) {
|
||||||
// New support for snmp v3.
|
// New support for snmp v3.
|
||||||
$tcp_send = $snmp_version;
|
$tcp_send = $snmp_version;
|
||||||
$plugin_user = $snmp3_auth_user;
|
$plugin_user = $snmp3_auth_user;
|
||||||
@ -219,7 +314,7 @@ if ($type >= 15 && $type <= 18) {
|
|||||||
$custom_string_1 = $snmp3_privacy_method;
|
$custom_string_1 = $snmp3_privacy_method;
|
||||||
$custom_string_2 = $snmp3_privacy_pass;
|
$custom_string_2 = $snmp3_privacy_pass;
|
||||||
$custom_string_3 = $snmp3_security_level;
|
$custom_string_3 = $snmp3_security_level;
|
||||||
} else if ($type >= 34 && $type <= 37) {
|
} else if ($type >= MODULE_TYPE_REMOTE_CMD && $type <= MODULE_TYPE_REMOTE_CMD_INC) {
|
||||||
$tcp_send = $command_text;
|
$tcp_send = $command_text;
|
||||||
$custom_string_1 = $command_credential_identifier;
|
$custom_string_1 = $command_credential_identifier;
|
||||||
$custom_string_2 = $command_os;
|
$custom_string_2 = $command_os;
|
||||||
@ -275,7 +370,6 @@ if ($create_component) {
|
|||||||
'post_process' => $post_process,
|
'post_process' => $post_process,
|
||||||
'unit' => $unit,
|
'unit' => $unit,
|
||||||
'wizard_level' => $wizard_level,
|
'wizard_level' => $wizard_level,
|
||||||
'macros' => $macros,
|
|
||||||
'critical_instructions' => $critical_instructions,
|
'critical_instructions' => $critical_instructions,
|
||||||
'warning_instructions' => $warning_instructions,
|
'warning_instructions' => $warning_instructions,
|
||||||
'unknown_instructions' => $unknown_instructions,
|
'unknown_instructions' => $unknown_instructions,
|
||||||
@ -289,6 +383,17 @@ if ($create_component) {
|
|||||||
'min_ff_event_critical' => $ff_event_critical,
|
'min_ff_event_critical' => $ff_event_critical,
|
||||||
'ff_type' => $ff_type,
|
'ff_type' => $ff_type,
|
||||||
'each_ff' => $each_ff,
|
'each_ff' => $each_ff,
|
||||||
|
'manufacturer_id' => $manufacturer_id,
|
||||||
|
'protocol' => $module_protocol,
|
||||||
|
'scan_type' => $scan_type,
|
||||||
|
'execution_type' => $execution_type,
|
||||||
|
'value' => $value,
|
||||||
|
'query_class' => $wmi_class,
|
||||||
|
'query_key_field' => $query_key_field,
|
||||||
|
'query_filters' => $query_filter,
|
||||||
|
'name_oid' => $name_oid,
|
||||||
|
'module_enabled' => $module_enabled,
|
||||||
|
'enabled' => $enabled,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -298,9 +403,17 @@ if ($create_component) {
|
|||||||
if ($id === false || !$id) {
|
if ($id === false || !$id) {
|
||||||
db_pandora_audit(
|
db_pandora_audit(
|
||||||
'Module management',
|
'Module management',
|
||||||
'Fail try to create network component'
|
'Fail try to create remote component'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($name_check !== false) {
|
||||||
|
// If name exists, advice about it.
|
||||||
|
ui_print_error_message(__('Could not be created because the component exists'));
|
||||||
|
} else {
|
||||||
|
// Other cases.
|
||||||
ui_print_error_message(__('Could not be created'));
|
ui_print_error_message(__('Could not be created'));
|
||||||
|
}
|
||||||
|
|
||||||
include_once 'godmode/modules/manage_network_components_form.php';
|
include_once 'godmode/modules/manage_network_components_form.php';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -356,7 +469,6 @@ if ($update_component) {
|
|||||||
'post_process' => $post_process,
|
'post_process' => $post_process,
|
||||||
'unit' => $unit,
|
'unit' => $unit,
|
||||||
'wizard_level' => $wizard_level,
|
'wizard_level' => $wizard_level,
|
||||||
'macros' => $macros,
|
|
||||||
'critical_instructions' => $critical_instructions,
|
'critical_instructions' => $critical_instructions,
|
||||||
'warning_instructions' => $warning_instructions,
|
'warning_instructions' => $warning_instructions,
|
||||||
'unknown_instructions' => $unknown_instructions,
|
'unknown_instructions' => $unknown_instructions,
|
||||||
@ -370,6 +482,17 @@ if ($update_component) {
|
|||||||
'min_ff_event_critical' => $ff_event_critical,
|
'min_ff_event_critical' => $ff_event_critical,
|
||||||
'ff_type' => $ff_type,
|
'ff_type' => $ff_type,
|
||||||
'each_ff' => $each_ff,
|
'each_ff' => $each_ff,
|
||||||
|
'manufacturer_id' => $manufacturer_id,
|
||||||
|
'protocol' => $module_protocol,
|
||||||
|
'scan_type' => $scan_type,
|
||||||
|
'execution_type' => $execution_type,
|
||||||
|
'value' => $value,
|
||||||
|
'query_class' => $wmi_class,
|
||||||
|
'query_key_field' => $query_key_field,
|
||||||
|
'query_filters' => $query_filter,
|
||||||
|
'name_oid' => $name_oid,
|
||||||
|
'module_enabled' => $module_enabled,
|
||||||
|
'enabled' => $enabled,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -559,11 +682,6 @@ foreach ($component_groups as $component_group_key => $component_group_val) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only show component groups with local components.
|
|
||||||
if ($num_components == 0 && $num_components_childs == 0) {
|
|
||||||
unset($component_groups[$component_group_key]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$table->data[0][1] = html_print_select(
|
$table->data[0][1] = html_print_select(
|
||||||
@ -665,14 +783,16 @@ $table->head['checkbox'] = html_print_checkbox(
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
$table->head[0] = __('Module name');
|
$table->head[0] = __('Module name');
|
||||||
$table->head[1] = __('Type');
|
$table->head[1] = __('Server');
|
||||||
|
$table->head[2] = __('Type');
|
||||||
$table->head[3] = __('Description');
|
$table->head[3] = __('Description');
|
||||||
$table->head[4] = __('Group');
|
$table->head[4] = __('Group');
|
||||||
$table->head[5] = __('Max/Min');
|
$table->head[5] = __('Max/Min');
|
||||||
$table->head[6] = __('Action');
|
$table->head[6] = __('Action');
|
||||||
$table->size = [];
|
$table->size = [];
|
||||||
$table->size['checkbox'] = '20px';
|
$table->size['checkbox'] = '20px';
|
||||||
$table->size[1] = '75px';
|
$table->size[1] = '40px';
|
||||||
|
$table->size[2] = '50px';
|
||||||
$table->size[6] = '80px';
|
$table->size[6] = '80px';
|
||||||
$table->align[6] = 'left';
|
$table->align[6] = 'left';
|
||||||
$table->data = [];
|
$table->data = [];
|
||||||
@ -698,7 +818,6 @@ foreach ($components as $component) {
|
|||||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_network_components&id='.$component['id_nc'].'&pure='.$pure.'">';
|
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_network_components&id='.$component['id_nc'].'&pure='.$pure.'">';
|
||||||
$data[0] .= io_safe_output($component['name']);
|
$data[0] .= io_safe_output($component['name']);
|
||||||
$data[0] .= '</a>';
|
$data[0] .= '</a>';
|
||||||
$data[1] = ui_print_moduletype_icon($component['type'], true);
|
|
||||||
switch ($component['id_modulo']) {
|
switch ($component['id_modulo']) {
|
||||||
case MODULE_NETWORK:
|
case MODULE_NETWORK:
|
||||||
$data[1] .= html_print_image(
|
$data[1] .= html_print_image(
|
||||||
@ -724,11 +843,20 @@ foreach ($components as $component) {
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MODULE_WIZARD:
|
||||||
|
$data[1] .= html_print_image(
|
||||||
|
'images/wand.png',
|
||||||
|
true,
|
||||||
|
['title' => __('Wizard module')]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Not possible.
|
// Not possible.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data[2] = ui_print_moduletype_icon($component['type'], true);
|
||||||
$data[3] = "<span style='font-size: 8px'>".mb_strimwidth(io_safe_output($component['description']), 0, 60, '...').'</span>';
|
$data[3] = "<span style='font-size: 8px'>".mb_strimwidth(io_safe_output($component['description']), 0, 60, '...').'</span>';
|
||||||
$data[4] = network_components_get_group_name($component['id_group']);
|
$data[4] = network_components_get_group_name($component['id_group']);
|
||||||
$data[5] = $component['max'].' / '.$component['min'];
|
$data[5] = $component['max'].' / '.$component['min'];
|
||||||
@ -777,9 +905,10 @@ echo '<div class="" style="float:right;">';
|
|||||||
html_print_input_hidden('new_component', 1);
|
html_print_input_hidden('new_component', 1);
|
||||||
html_print_select(
|
html_print_select(
|
||||||
[
|
[
|
||||||
2 => __('Create a new network component'),
|
COMPONENT_TYPE_NETWORK => __('Create a new network component'),
|
||||||
4 => __('Create a new plugin component'),
|
COMPONENT_TYPE_PLUGIN => __('Create a new plugin component'),
|
||||||
6 => __('Create a new WMI component'),
|
COMPONENT_TYPE_WMI => __('Create a new WMI component'),
|
||||||
|
COMPONENT_TYPE_WIZARD => __('Create a new wizard component'),
|
||||||
],
|
],
|
||||||
'id_component_type',
|
'id_component_type',
|
||||||
'',
|
'',
|
||||||
|
@ -158,8 +158,21 @@ if (isset($id)) {
|
|||||||
$ff_event_critical = $component['min_ff_event_critical'];
|
$ff_event_critical = $component['min_ff_event_critical'];
|
||||||
$ff_type = $component['ff_type'];
|
$ff_type = $component['ff_type'];
|
||||||
$each_ff = $component['each_ff'];
|
$each_ff = $component['each_ff'];
|
||||||
|
$manufacturer_id = $component['manufacturer_id'];
|
||||||
|
$module_protocol = $component['protocol'];
|
||||||
|
$scan_type = $component['scan_type'];
|
||||||
|
$execution_type = $component['execution_type'];
|
||||||
|
$value = $component['value'];
|
||||||
|
$wmi_class = $component['query_class'];
|
||||||
|
$query_key_field = $component['query_key_field'];
|
||||||
|
$query_Key_wmi = $component['key_string'];
|
||||||
|
$name_oid = $component['name_oid'];
|
||||||
|
$value_oid = $component['value_oid'];
|
||||||
|
$query_filter = $component['query_filters'];
|
||||||
|
$module_enabled = $component['module_enabled'];
|
||||||
|
$enabled = $component['enabled'];
|
||||||
|
|
||||||
if ($type >= 15 && $type <= 18) {
|
if ($type >= MODULE_TYPE_REMOTE_SNMP && $type <= MODULE_TYPE_REMOTE_SNMP_PROC) {
|
||||||
// New support for snmp v3.
|
// New support for snmp v3.
|
||||||
$snmp_version = $component['tcp_send'];
|
$snmp_version = $component['tcp_send'];
|
||||||
$snmp3_auth_user = $component['plugin_user'];
|
$snmp3_auth_user = $component['plugin_user'];
|
||||||
@ -170,7 +183,7 @@ if (isset($id)) {
|
|||||||
$component['custom_string_2']
|
$component['custom_string_2']
|
||||||
);
|
);
|
||||||
$snmp3_security_level = $component['custom_string_3'];
|
$snmp3_security_level = $component['custom_string_3'];
|
||||||
} else if ($type >= 34 && $type <= 37) {
|
} else if ($type >= MODULE_TYPE_REMOTE_CMD && $type <= MODULE_TYPE_REMOTE_CMD_INC) {
|
||||||
$command_text = $component['tcp_send'];
|
$command_text = $component['tcp_send'];
|
||||||
$command_credential_identifier = $component['custom_string_1'];
|
$command_credential_identifier = $component['custom_string_1'];
|
||||||
$command_os = $component['custom_string_2'];
|
$command_os = $component['custom_string_2'];
|
||||||
@ -192,7 +205,7 @@ if (isset($id)) {
|
|||||||
$tcp_send = '';
|
$tcp_send = '';
|
||||||
$snmp_community = '';
|
$snmp_community = '';
|
||||||
$id_module_group = '';
|
$id_module_group = '';
|
||||||
if ($id_component_type == 6) {
|
if ($id_component_type == COMPONENT_TYPE_WMI) {
|
||||||
$id_group = 14;
|
$id_group = 14;
|
||||||
} else {
|
} else {
|
||||||
$id_group = '';
|
$id_group = '';
|
||||||
@ -238,28 +251,67 @@ if (isset($id)) {
|
|||||||
$command_text = '';
|
$command_text = '';
|
||||||
$command_os = 'inherited';
|
$command_os = 'inherited';
|
||||||
$command_credential_identifier = '';
|
$command_credential_identifier = '';
|
||||||
|
|
||||||
|
$macros = '';
|
||||||
|
$manufacturer_id = '';
|
||||||
|
$module_protocol = 'snmp';
|
||||||
|
$scan_type = SCAN_TYPE_FIXED;
|
||||||
|
$execution_type = EXECUTION_TYPE_NETWORK;
|
||||||
|
$value = '';
|
||||||
|
$wmi_class = '';
|
||||||
|
$query_key_field = '';
|
||||||
|
$query_Key_wmi = '';
|
||||||
|
$name_oid = '';
|
||||||
|
$value_oid = '';
|
||||||
|
$query_filter = '';
|
||||||
|
$module_enabled = true;
|
||||||
|
$enabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$table = new stdClass();
|
$table = new stdClass();
|
||||||
|
|
||||||
if ($id_component_type == 6) {
|
|
||||||
|
/**
|
||||||
|
* Common function for adding rows to main table
|
||||||
|
*
|
||||||
|
* @param array $row Array with the data for add.
|
||||||
|
* @param mixed $id If added, the DOM id for this block.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function push_table_row($row, $id=false)
|
||||||
|
{
|
||||||
|
global $table;
|
||||||
|
|
||||||
|
if ($id) {
|
||||||
|
$data = [$id => $row];
|
||||||
|
} else {
|
||||||
|
$data = [$row];
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data = array_merge($table->data, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$remote_components_path = $config['homedir'].'/godmode/modules/';
|
||||||
|
if ($id_component_type == COMPONENT_TYPE_WMI) {
|
||||||
$categories = [
|
$categories = [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
];
|
];
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php';
|
include $remote_components_path.'manage_network_components_form_common.php';
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_wmi.php';
|
include $remote_components_path.'manage_network_components_form_wmi.php';
|
||||||
} else if ($id_component_type == 4) {
|
} else if ($id_component_type == COMPONENT_TYPE_PLUGIN) {
|
||||||
$categories = [
|
$categories = [
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
];
|
];
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php';
|
include $remote_components_path.'manage_network_components_form_common.php';
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_plugin.php';
|
include $remote_components_path.'manage_network_components_form_plugin.php';
|
||||||
} else if ($id_component_type == 2 || $create_network_from_module) {
|
} else if ($id_component_type == COMPONENT_TYPE_WIZARD) {
|
||||||
$categories = [
|
$categories = [
|
||||||
3,
|
3,
|
||||||
4,
|
4,
|
||||||
@ -269,8 +321,19 @@ if ($id_component_type == 6) {
|
|||||||
$categories[] = 10;
|
$categories[] = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php';
|
include $remote_components_path.'manage_network_components_form_wizard.php';
|
||||||
include $config['homedir'].'/godmode/modules/manage_network_components_form_network.php';
|
} else if ($id_component_type == COMPONENT_TYPE_NETWORK || $create_network_from_module) {
|
||||||
|
$categories = [
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
];
|
||||||
|
if (enterprise_installed()) {
|
||||||
|
$categories[] = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
include $remote_components_path.'manage_network_components_form_common.php';
|
||||||
|
include $remote_components_path.'manage_network_components_form_network.php';
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -291,15 +354,10 @@ if (defined('METACONSOLE')) {
|
|||||||
$table->headstyle[0] = 'text-align: center';
|
$table->headstyle[0] = 'text-align: center';
|
||||||
}
|
}
|
||||||
|
|
||||||
$table->colspan['description'][1] = 3;
|
|
||||||
$data = [];
|
|
||||||
$data[0] = __('Description');
|
|
||||||
$data[1] = html_print_textarea('description', 2, 65, $description, '', true);
|
|
||||||
push_table_row($data, 'description');
|
|
||||||
|
|
||||||
html_print_table($table);
|
html_print_table($table);
|
||||||
|
|
||||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||||
|
html_print_button(__('Go back'), 'go_back', false, 'history.go(-1);', 'class="sub cancel"');
|
||||||
html_print_input_hidden('id_component_type', $id_component_type);
|
html_print_input_hidden('id_component_type', $id_component_type);
|
||||||
if ($id) {
|
if ($id) {
|
||||||
html_print_input_hidden('update_component', 1);
|
html_print_input_hidden('update_component', 1);
|
||||||
|
@ -23,23 +23,6 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! check_acl($config['id_user'],
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
include_javascript_d3();
|
|
||||||
|
|
||||||
|
|
||||||
function push_table_row($row, $id=false)
|
|
||||||
{
|
|
||||||
global $table;
|
|
||||||
|
|
||||||
if ($id) {
|
|
||||||
$data = [$id => $row];
|
|
||||||
} else {
|
|
||||||
$data = [$row];
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->data = array_merge($table->data, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$table->id = 'network_component';
|
$table->id = 'network_component';
|
||||||
$table->width = '100%';
|
$table->width = '100%';
|
||||||
$table->class = 'databox';
|
$table->class = 'databox';
|
||||||
@ -323,7 +306,11 @@ $table->data[12][0] = __('Unknown instructions').ui_print_help_tip(__('Instructi
|
|||||||
$table->data[12][1] = html_print_textarea('unknown_instructions', 2, 65, $unknown_instructions, '', true);
|
$table->data[12][1] = html_print_textarea('unknown_instructions', 2, 65, $unknown_instructions, '', true);
|
||||||
$table->colspan[12][1] = 3;
|
$table->colspan[12][1] = 3;
|
||||||
|
|
||||||
$next_row = 13;
|
$table->data[13][0] = __('Description');
|
||||||
|
$table->data[13][1] = html_print_textarea('description', 2, 65, $description, '', true);
|
||||||
|
$table->colspan[13][1] = 3;
|
||||||
|
|
||||||
|
$next_row = 14;
|
||||||
|
|
||||||
if (check_acl($config['id_user'], 0, 'PM')) {
|
if (check_acl($config['id_user'], 0, 'PM')) {
|
||||||
$table->data[$next_row][0] = __('Category');
|
$table->data[$next_row][0] = __('Category');
|
||||||
|
@ -187,8 +187,21 @@ $data[1] = html_print_extended_select_for_post_process(
|
|||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
$data[2] = '';
|
|
||||||
$data[3] = '';
|
$data[2] = __('Name OID').' '.ui_print_help_icon('xxx', true);
|
||||||
|
$data[3] = html_print_input_text_extended(
|
||||||
|
'name_oid',
|
||||||
|
$name_oid,
|
||||||
|
'name_oid',
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
push_table_row($data, 'field_process');
|
push_table_row($data, 'field_process');
|
||||||
|
|
||||||
// Advanced stuff.
|
// Advanced stuff.
|
||||||
|
@ -0,0 +1,839 @@
|
|||||||
|
<?php
|
||||||
|
// Pandora FMS - http://pandorafms.com
|
||||||
|
// ==================================================
|
||||||
|
// Copyright (c) 2005-2020 Artica Soluciones Tecnologicas
|
||||||
|
// Please see http://pandorafms.org for full contribution list
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License
|
||||||
|
// as published by the Free Software Foundation for version 2.
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
global $config;
|
||||||
|
require_once $config['homedir'].'/include/graphs/functions_d3.php';
|
||||||
|
|
||||||
|
check_login();
|
||||||
|
include_javascript_d3();
|
||||||
|
|
||||||
|
if (!check_acl($config['id_user'], 0, 'PM')
|
||||||
|
&& !check_acl($config['id_user'], 0, 'AW')
|
||||||
|
) {
|
||||||
|
db_pandora_audit('ACL Violation', 'Trying to access Agent Management');
|
||||||
|
include 'general/noaccess.php';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add to the table the extra fields.
|
||||||
|
*
|
||||||
|
* @param array $extra_fields Array with the extra fields needed.
|
||||||
|
* @param string $protocol Protocol for define the text.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function generateExtraFields($extra_fields, $protocol)
|
||||||
|
{
|
||||||
|
global $table;
|
||||||
|
$cntFields = 0;
|
||||||
|
|
||||||
|
foreach ($extra_fields as $k => $field) {
|
||||||
|
// Avoid the not extra fields.
|
||||||
|
if (preg_match('/extra_field_/', $k) === 0) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
$cntFields++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the number of extra field.
|
||||||
|
$tmpExtraField = explode('_', $k);
|
||||||
|
$idField = $tmpExtraField[2];
|
||||||
|
|
||||||
|
if ($protocol === 'snmp') {
|
||||||
|
$extraFieldText = '_oid_'.$idField.'_';
|
||||||
|
$rowId = 'pluginRow-'.$protocol.'Row';
|
||||||
|
} else if ($protocol === 'wmi') {
|
||||||
|
$extraFieldText = '_field_wmi_'.$idField.'_';
|
||||||
|
$rowId = $protocol.'Row';
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = '<div style="text-align: right;">'.$extraFieldText.'</div>';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'extra_field_'.$protocol.'_'.$idField,
|
||||||
|
$field,
|
||||||
|
'extra_field_'.$protocol.'_'.$idField,
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->colspan['oid-list-'.$rowId.'-row-'.$idField][1] = 3;
|
||||||
|
push_table_row($data, 'oid-list-'.$rowId.'-row-'.$idField);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$image_add = html_print_div(
|
||||||
|
[
|
||||||
|
'id' => 'add_field_button',
|
||||||
|
'class' => 'float-right clickable',
|
||||||
|
'content' => html_print_image(
|
||||||
|
'images/add.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Add a macro oid'),
|
||||||
|
'onclick' => 'manageComponentFields(\'add\', \'oid-list-'.$rowId.'\');',
|
||||||
|
]
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$image_del = html_print_div(
|
||||||
|
[
|
||||||
|
'id' => 'del_field_button',
|
||||||
|
'class' => 'float-right',
|
||||||
|
'style' => $cntFields <= 1 ? 'opacity: 0.5;' : '',
|
||||||
|
'content' => html_print_image(
|
||||||
|
'images/cross.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Remove last macro oid'),
|
||||||
|
'onclick' => 'manageComponentFields(\'del\', \'oid-list-'.$rowId.'\');',
|
||||||
|
'style' => 'margin-left: 1em;',
|
||||||
|
]
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[0] = html_print_div(
|
||||||
|
[
|
||||||
|
'id' => 'combo_oid_button',
|
||||||
|
'content' => $image_del.$image_add,
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'manage-oid-list-'.$rowId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get the data.
|
||||||
|
$module_type_list = [
|
||||||
|
MODULE_TYPE_NUMERIC => __('Numeric'),
|
||||||
|
MODULE_TYPE_INCREMENTAL => __('Incremental'),
|
||||||
|
MODULE_TYPE_BOOLEAN => __('Boolean'),
|
||||||
|
MODULE_TYPE_ALPHANUMERIC => __('Alphanumeric'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$module_protocol_list = [
|
||||||
|
'snmp' => 'SNMP',
|
||||||
|
'wmi' => 'WMI',
|
||||||
|
];
|
||||||
|
|
||||||
|
$scan_type_list = [
|
||||||
|
SCAN_TYPE_FIXED => 'Fixed',
|
||||||
|
SCAN_TYPE_DYNAMIC => 'Dynamic',
|
||||||
|
];
|
||||||
|
|
||||||
|
$execution_type_list = [
|
||||||
|
EXECUTION_TYPE_NETWORK => 'Network',
|
||||||
|
EXECUTION_TYPE_PLUGIN => 'Plugin',
|
||||||
|
];
|
||||||
|
// Establish module type value.
|
||||||
|
switch ($type) {
|
||||||
|
case MODULE_TYPE_REMOTE_SNMP:
|
||||||
|
case MODULE_TYPE_GENERIC_DATA:
|
||||||
|
$module_type = MODULE_TYPE_NUMERIC;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MODULE_TYPE_REMOTE_SNMP_INC:
|
||||||
|
case MODULE_TYPE_GENERIC_DATA_INC:
|
||||||
|
$module_type = MODULE_TYPE_INCREMENTAL;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MODULE_TYPE_REMOTE_SNMP_STRING:
|
||||||
|
case MODULE_TYPE_GENERIC_DATA_STRING:
|
||||||
|
$module_type = MODULE_TYPE_ALPHANUMERIC;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MODULE_TYPE_REMOTE_SNMP_PROC:
|
||||||
|
case MODULE_TYPE_GENERIC_PROC:
|
||||||
|
$module_type = MODULE_TYPE_BOOLEAN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
$module_type = MODULE_TYPE_NUMERIC;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($query_filter) === false) {
|
||||||
|
$query_filter = json_decode($query_filter, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$component_group_list = network_components_get_groups();
|
||||||
|
|
||||||
|
// List of server plugins related with Wizard SNMP.
|
||||||
|
$server_plugin_data = [];
|
||||||
|
$server_plugin_list = [];
|
||||||
|
$plugins = db_get_all_rows_sql(
|
||||||
|
'SELECT id, description, execute, name, macros, parameters FROM tplugin'
|
||||||
|
);
|
||||||
|
foreach ($plugins as $plugin) {
|
||||||
|
$server_plugin_list[$plugin['id']] = $plugin['name'];
|
||||||
|
$server_plugin_data[$plugin['id']] = [
|
||||||
|
'description' => $plugin['description'],
|
||||||
|
'name' => $plugin['name'],
|
||||||
|
'parameters' => $plugin['parameters'],
|
||||||
|
'macros' => array_reverse(json_decode($plugin['macros'], true)),
|
||||||
|
'execute' => $plugin['execute'],
|
||||||
|
'macrosElement' => base64_encode(json_encode(io_safe_output(json_decode($macros, true)))),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the plugin data for JS managing in JSON format.
|
||||||
|
$hiddenPluginServers = '';
|
||||||
|
foreach ($server_plugin_data as $index => $plugin) {
|
||||||
|
// Description can have special chars that would crash Javascript.
|
||||||
|
$plugin['description'] = mb_strimwidth(io_safe_output($plugin['description']), 0, 80, '...');
|
||||||
|
$hiddenPluginServers .= html_print_input_hidden(
|
||||||
|
'server_plugin_data_'.$index,
|
||||||
|
json_encode(io_safe_input($plugin))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate needed OID macros.
|
||||||
|
$extra_fields_names = [];
|
||||||
|
foreach ($extra_fields as $k => $field) {
|
||||||
|
$extra_fields_names[$k] = $module_protocol === 'snmp' ? '_oid_'.$k.'_' : $k;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the string DB format of macros to JSON.
|
||||||
|
$macros = json_decode($macros);
|
||||||
|
// Only for extra field generate purposes.
|
||||||
|
if (empty($macros) === true) {
|
||||||
|
$macros = ['extra_field_1' => ''];
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Construction of form.
|
||||||
|
//
|
||||||
|
$table->id = 'network_component';
|
||||||
|
$table->width = '100%';
|
||||||
|
$table->class = 'databox';
|
||||||
|
$table->style = [];
|
||||||
|
$table->style[0] = 'font-weight: bold';
|
||||||
|
$table->style[2] = 'font-weight: bold';
|
||||||
|
$table->colspan = [];
|
||||||
|
if (!enterprise_installed()) {
|
||||||
|
$table->colspan[0][1] = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data = [];
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Enabled');
|
||||||
|
$data[1] = html_print_checkbox_switch(
|
||||||
|
'enabled',
|
||||||
|
1,
|
||||||
|
$enabled,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[2] = __('Add by default');
|
||||||
|
$data[3] = html_print_checkbox_switch(
|
||||||
|
'module_enabled',
|
||||||
|
1,
|
||||||
|
$module_enabled,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'module-enable-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Module name');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'name',
|
||||||
|
$name,
|
||||||
|
'name',
|
||||||
|
'',
|
||||||
|
50,
|
||||||
|
255,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[2] = __('Module protocol');
|
||||||
|
$data[3] = html_print_select(
|
||||||
|
$module_protocol_list,
|
||||||
|
'module_protocol',
|
||||||
|
$module_protocol,
|
||||||
|
'manageVisibleFields()',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
).' '.html_print_image(
|
||||||
|
'images/'.$module_protocol.'.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => strtoupper($module_protocol).' '.__('Protocol'),
|
||||||
|
'class' => 'add_comments_button',
|
||||||
|
'style' => 'width: 18px;',
|
||||||
|
'id' => 'module_protocol_symbol',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$type = 4;
|
||||||
|
$data[4] = html_print_input_hidden('type', $type, true);
|
||||||
|
|
||||||
|
push_table_row($data, 'module-name-type-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
$data[0] = __('Name OID');
|
||||||
|
$data[1] = html_print_input_text('name_oid', $name_oid, '', 50, 255, true);
|
||||||
|
|
||||||
|
$data[2] = __('Manufacturer ID');
|
||||||
|
$data[3] = html_print_select_from_sql(
|
||||||
|
'SELECT manufacturer as `id`, manufacturer FROM tpen GROUP BY manufacturer',
|
||||||
|
'manufacturer_id',
|
||||||
|
$manufacturer_id,
|
||||||
|
'',
|
||||||
|
'All',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'manufacturer-nameOID-snmpRow-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
$data[0] = __('Module type');
|
||||||
|
$data[1] = html_print_select(
|
||||||
|
$module_type_list,
|
||||||
|
'module_type',
|
||||||
|
$module_type,
|
||||||
|
'changeModuleType()',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[2] = __('Component Group');
|
||||||
|
$data[3] = html_print_select(
|
||||||
|
$component_group_list,
|
||||||
|
'id_group',
|
||||||
|
$id_group,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'moduleType-blockName-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
$data[0] = __('Module unit');
|
||||||
|
$data[1] = html_print_extended_select_for_unit(
|
||||||
|
'unit',
|
||||||
|
$unit,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'0',
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'moduleUnit-blockName-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Warning');
|
||||||
|
// Warning interval values.
|
||||||
|
$data[1] = '<span class="minmax_values" id="warning_minmax_values">';
|
||||||
|
$data[1] .= '<em>'.__('Min.').'</em> ';
|
||||||
|
$data[1] .= html_print_input_text('min_warning', $min_warning, '', 5, 15, true);
|
||||||
|
$data[1] .= '<br /><em>'.__('Max.').'</em> ';
|
||||||
|
$data[1] .= html_print_input_text('max_warning', $max_warning, '', 5, 15, true);
|
||||||
|
$data[1] .= '</span>';
|
||||||
|
// Warning string values.
|
||||||
|
$data[1] .= '<span class="string_values" id="warning_string_values"><em>'.__('String').' </em> ';
|
||||||
|
$data[1] .= html_print_input_text('str_warning', $str_warning, '', 5, 1024, true).'</span>';
|
||||||
|
// Warning inverse values.
|
||||||
|
$data[1] .= '<br /><em>'.__('Inverse interval').'</em> ';
|
||||||
|
$data[1] .= html_print_checkbox('warning_inverse', 1, $warning_inverse, true);
|
||||||
|
|
||||||
|
$data[2] = '<svg id="svg_dinamic" width="500" height="300"> </svg>';
|
||||||
|
$table->colspan['warning-svg-row'][2] = 2;
|
||||||
|
$table->rowspan['warning-svg-row'][2] = 3;
|
||||||
|
|
||||||
|
push_table_row($data, 'warning-svg-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Critical');
|
||||||
|
// Critical interval values.
|
||||||
|
$data[1] = '<span class="minmax_values" id="critical_minmax_values">';
|
||||||
|
$data[1] .= '<em>'.__('Min.').'</em> ';
|
||||||
|
$data[1] .= html_print_input_text(
|
||||||
|
'min_critical',
|
||||||
|
$min_critical,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
15,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$data[1] .= '<br /><em>'.__('Max.').'</em> ';
|
||||||
|
$data[1] .= html_print_input_text(
|
||||||
|
'max_critical',
|
||||||
|
$max_critical,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
15,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$data[1] .= '</span>';
|
||||||
|
// Critical string values.
|
||||||
|
$data[1] .= '<span class="string_values" id="critical_string_values"><em>'.__('String').' </em> ';
|
||||||
|
$data[1] .= html_print_input_text('str_critical', $str_critical, '', 5, 1024, true).'</span>';
|
||||||
|
// Critical inverse values.
|
||||||
|
$data[1] .= '<br /><em>'.__('Inverse interval').'</em> ';
|
||||||
|
$data[1] .= html_print_checkbox('critical_inverse', 1, $critical_inverse, true);
|
||||||
|
|
||||||
|
push_table_row($data, 'critical-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Description');
|
||||||
|
$data[1] = html_print_textarea('description', 2, 65, $description, '', true);
|
||||||
|
$table->colspan['module-description-row'][1] = 3;
|
||||||
|
|
||||||
|
push_table_row($data, 'module-description-row');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Scan Type');
|
||||||
|
$data[1] = html_print_select(
|
||||||
|
$scan_type_list,
|
||||||
|
'scan_type',
|
||||||
|
$scan_type,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[2] = __('Execution type');
|
||||||
|
$data[3] = html_print_select(
|
||||||
|
$execution_type_list,
|
||||||
|
'execution_type',
|
||||||
|
$execution_type,
|
||||||
|
'manageVisibleFields()',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'scan-execution-row');
|
||||||
|
|
||||||
|
//
|
||||||
|
// SNMP rows.
|
||||||
|
//
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Value OID');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'value_oid',
|
||||||
|
(string) $value,
|
||||||
|
'value_oid',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['value-oid-networkRow-snmpRow'][1] = 3;
|
||||||
|
push_table_row($data, 'value-oid-networkRow-snmpRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Macros OID');
|
||||||
|
|
||||||
|
push_table_row($data, 'title-oid-macros-pluginRow-snmpRow');
|
||||||
|
|
||||||
|
// Generation of extra fields needed.
|
||||||
|
generateExtraFields($macros, 'snmp');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Value operation');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'value_operation_snmp',
|
||||||
|
$macros->value_operation,
|
||||||
|
'value_operation_snmp',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['value-operation-pluginRow-snmpRow'][1] = 3;
|
||||||
|
push_table_row($data, 'value-operation-pluginRow-snmpRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Satellite execution');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'satellite_execution_snmp',
|
||||||
|
$macros->satellite_execution,
|
||||||
|
'satellite_execution_snmp',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['satellite-execution-pluginRow-snmpRow'][1] = 3;
|
||||||
|
push_table_row($data, 'satellite-execution-pluginRow-snmpRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Server plugin');
|
||||||
|
$data[1] = html_print_select(
|
||||||
|
$server_plugin_list,
|
||||||
|
'server_plugin_snmp',
|
||||||
|
$macros->server_plugin,
|
||||||
|
'changePlugin()',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
).' <span id="selected_plugin_description_snmp"></span>';
|
||||||
|
|
||||||
|
push_table_row($data, 'server-plugin-pluginRow-snmpRow');
|
||||||
|
|
||||||
|
// The creation of this fields will be dynamically.
|
||||||
|
$data = [];
|
||||||
|
$data[0] = 'field0';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'field0_snmp_field',
|
||||||
|
'',
|
||||||
|
'field0_snmp_fields',
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
255,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'plugin-snmp-fields-dynamicMacroRow-pluginRow-snmpRow-0');
|
||||||
|
|
||||||
|
//
|
||||||
|
// WMI Fields.
|
||||||
|
//
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('WMI class');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'wmi_class',
|
||||||
|
$wmi_class,
|
||||||
|
'wmi_class',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['wmi-class-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'wmi-class-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Query key field').' (_field_wmi_0_)';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'query_key_field',
|
||||||
|
$query_key_field,
|
||||||
|
'query_key_field',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['query-key-field-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'query-key-field-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Query extra fields');
|
||||||
|
|
||||||
|
push_table_row($data, 'title-extra-field-wmiRow');
|
||||||
|
|
||||||
|
// Generation of extra fields needed.
|
||||||
|
generateExtraFields($macros, 'wmi');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Query filters');
|
||||||
|
$table->style[0] = 'font-weight: bold;';
|
||||||
|
|
||||||
|
push_table_row($data, 'title-query-filters-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = '<div style="text-align: right;">'.__('Scan').'</div>';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'query_filter_scan',
|
||||||
|
$query_filter['scan'],
|
||||||
|
'query_filter_scan',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['query-filter-scan-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'query-filter-scan-wmiRow');
|
||||||
|
|
||||||
|
if ($execution_type == EXECUTION_TYPE_NETWORK) {
|
||||||
|
$data = [];
|
||||||
|
$data[0] = '<div style="text-align: right;">'.__('Execution').'</div>';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'query_filter_execution',
|
||||||
|
$query_filter['execution'],
|
||||||
|
'query_filter_execution',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['query-filter-execution-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'query-filter-execution-wmiRow');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Field value');
|
||||||
|
$data[1] = html_print_input_number(
|
||||||
|
[
|
||||||
|
'name' => 'field_value_filter',
|
||||||
|
'value' => $query_filter['field'],
|
||||||
|
'id' => 'field_value_filter',
|
||||||
|
'min' => 0,
|
||||||
|
'return' => true,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data[2] = __('Key string');
|
||||||
|
$data[3] = html_print_input_text_extended(
|
||||||
|
'key_string_filter',
|
||||||
|
$query_filter['key_string'],
|
||||||
|
'key_string_filter',
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
255,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'filters-list-fields-networkRow-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Value operation');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'value_operation_wmi',
|
||||||
|
$macros->value_operation,
|
||||||
|
'value_operation_wmi',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['value-operation-pluginRow-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'value-operation-pluginRow-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Satellite execution');
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'satellite_execution_wmi',
|
||||||
|
$macros->satellite_execution,
|
||||||
|
'satellite_execution_wmi',
|
||||||
|
'',
|
||||||
|
100,
|
||||||
|
10000,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$table->colspan['satellite-execution-pluginRow-wmiRow'][1] = 3;
|
||||||
|
push_table_row($data, 'satellite-execution-pluginRow-wmiRow');
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
$data[0] = __('Server plugin');
|
||||||
|
$data[1] = html_print_select(
|
||||||
|
$server_plugin_list,
|
||||||
|
'server_plugin_wmi',
|
||||||
|
$macros->server_plugin,
|
||||||
|
'changePlugin()',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
''
|
||||||
|
).' <span id="selected_plugin_description_wmi"></span>';
|
||||||
|
|
||||||
|
push_table_row($data, 'server-plugin-pluginRow-wmiRow');
|
||||||
|
|
||||||
|
// The creation of this fields will be dynamically.
|
||||||
|
$data = [];
|
||||||
|
$data[0] = 'field0';
|
||||||
|
$data[1] = html_print_input_text_extended(
|
||||||
|
'field0_wmi_field',
|
||||||
|
'',
|
||||||
|
'field0_wmi_fields',
|
||||||
|
'',
|
||||||
|
30,
|
||||||
|
255,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
push_table_row($data, 'plugin-wmi-fields-dynamicMacroRow-pluginRow-wmiRow-0');
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
// Definition of constants
|
||||||
|
const EXECUTION_TYPE_NETWORK =
|
||||||
|
<?php
|
||||||
|
echo '"'.EXECUTION_TYPE_NETWORK.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const EXECUTION_TYPE_PLUGIN =
|
||||||
|
<?php
|
||||||
|
echo '"'.EXECUTION_TYPE_PLUGIN.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_NUMERIC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_NUMERIC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_INCREMENTAL =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_INCREMENTAL.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_BOOLEAN =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_BOOLEAN.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_ALPHANUMERIC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_ALPHANUMERIC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
|
||||||
|
const MODULE_TYPE_REMOTE_SNMP =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_REMOTE_SNMP.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_REMOTE_SNMP_INC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_REMOTE_SNMP_INC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_REMOTE_SNMP_STRING =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_REMOTE_SNMP_STRING.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_REMOTE_SNMP_PROC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_REMOTE_SNMP_PROC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_GENERIC_DATA =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_GENERIC_DATA.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_GENERIC_PROC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_GENERIC_PROC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_GENERIC_DATA_STRING =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_GENERIC_DATA_STRING.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
const MODULE_TYPE_GENERIC_DATA_INC =
|
||||||
|
<?php
|
||||||
|
echo '"'.MODULE_TYPE_GENERIC_DATA_INC.'"';
|
||||||
|
?>
|
||||||
|
;
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
// Show the needed fields.
|
||||||
|
manageVisibleFields();
|
||||||
|
// Show the proper module type
|
||||||
|
changeModuleType();
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-snmp-fields-dynamicMacroRow-pluginRow-snmpRow-0"
|
||||||
|
).attr("style", "display: none;");
|
||||||
|
// Change plugin values and macros.
|
||||||
|
changePlugin();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
@ -484,6 +484,16 @@ switch ($action) {
|
|||||||
$period = $item['period'];
|
$period = $item['period'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'last_value':
|
||||||
|
$description = $item['description'];
|
||||||
|
$idAgentModule = $item['id_agent_module'];
|
||||||
|
$idAgent = db_get_value_filter(
|
||||||
|
'id_agente',
|
||||||
|
'tagente_modulo',
|
||||||
|
['id_agente_modulo' => $idAgentModule]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'alert_report_module':
|
case 'alert_report_module':
|
||||||
$description = $item['description'];
|
$description = $item['description'];
|
||||||
$idAgentModule = $item['id_agent_module'];
|
$idAgentModule = $item['id_agent_module'];
|
||||||
@ -744,6 +754,7 @@ switch ($action) {
|
|||||||
case 'historical_data':
|
case 'historical_data':
|
||||||
case 'sumatory':
|
case 'sumatory':
|
||||||
case 'database_serialized':
|
case 'database_serialized':
|
||||||
|
case 'last_value':
|
||||||
case 'monitor_report':
|
case 'monitor_report':
|
||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'max_value':
|
case 'max_value':
|
||||||
@ -3843,6 +3854,7 @@ $(document).ready (function () {
|
|||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'monitor_report':
|
case 'monitor_report':
|
||||||
case 'database_serialized':
|
case 'database_serialized':
|
||||||
|
case 'last_value':
|
||||||
case 'sumatory':
|
case 'sumatory':
|
||||||
case 'historical_data':
|
case 'historical_data':
|
||||||
case 'agent_configuration':
|
case 'agent_configuration':
|
||||||
@ -3884,6 +3896,7 @@ $(document).ready (function () {
|
|||||||
case 'max_value':
|
case 'max_value':
|
||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'database_serialized':
|
case 'database_serialized':
|
||||||
|
case 'last_value':
|
||||||
case 'sumatory':
|
case 'sumatory':
|
||||||
case 'historical_data':
|
case 'historical_data':
|
||||||
case 'increment':
|
case 'increment':
|
||||||
@ -3964,6 +3977,7 @@ $(document).ready (function () {
|
|||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'monitor_report':
|
case 'monitor_report':
|
||||||
case 'database_serialized':
|
case 'database_serialized':
|
||||||
|
case 'last_value':
|
||||||
case 'sumatory':
|
case 'sumatory':
|
||||||
case 'historical_data':
|
case 'historical_data':
|
||||||
case 'agent_configuration':
|
case 'agent_configuration':
|
||||||
@ -4003,6 +4017,7 @@ $(document).ready (function () {
|
|||||||
case 'max_value':
|
case 'max_value':
|
||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'database_serialized':
|
case 'database_serialized':
|
||||||
|
case 'last_value':
|
||||||
case 'sumatory':
|
case 'sumatory':
|
||||||
case 'historical_data':
|
case 'historical_data':
|
||||||
case 'increment':
|
case 'increment':
|
||||||
@ -5142,6 +5157,12 @@ function chooseType() {
|
|||||||
$("#row_historical_db_check").hide();
|
$("#row_historical_db_check").hide();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'last_value':
|
||||||
|
$("#row_description").show();
|
||||||
|
$("#row_agent").show();
|
||||||
|
$("#row_module").show();
|
||||||
|
break;
|
||||||
|
|
||||||
case 'alert_report_module':
|
case 'alert_report_module':
|
||||||
$("#row_description").show();
|
$("#row_description").show();
|
||||||
$("#row_agent").show();
|
$("#row_agent").show();
|
||||||
|
@ -471,7 +471,7 @@ foreach ($items as $item) {
|
|||||||
if ($is_inventory_item) {
|
if ($is_inventory_item) {
|
||||||
$external_source = json_decode($item['external_source'], true);
|
$external_source = json_decode($item['external_source'], true);
|
||||||
$agents = $external_source['id_agents'];
|
$agents = $external_source['id_agents'];
|
||||||
$modules = $external_source['inventory_modules'];
|
$modules = io_safe_output($external_source['inventory_modules']);
|
||||||
|
|
||||||
$agent_name_db = [];
|
$agent_name_db = [];
|
||||||
foreach ($agents as $a) {
|
foreach ($agents as $a) {
|
||||||
|
@ -83,9 +83,9 @@ foreach ($osList as $os) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($data)) {
|
if (isset($data)) {
|
||||||
ui_pagination($count_osList, false, $offset);
|
ui_pagination($count_osList, ui_get_url_refresh(['message' => false]), $offset);
|
||||||
html_print_table($table);
|
html_print_table($table);
|
||||||
ui_pagination($count_osList, false, $offset, 0, false, 'offset', true, 'pagination-bottom');
|
ui_pagination($count_osList, ui_get_url_refresh(['message' => false]), $offset, 0, false, 'offset', true, 'pagination-bottom');
|
||||||
} else {
|
} else {
|
||||||
ui_print_info_message(['no_close' => true, 'message' => __('There are no defined operating systems') ]);
|
ui_print_info_message(['no_close' => true, 'message' => __('There are no defined operating systems') ]);
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user
|
|||||||
|
|
||||||
$action = get_parameter('action', 'new');
|
$action = get_parameter('action', 'new');
|
||||||
$idOS = get_parameter('id_os', 0);
|
$idOS = get_parameter('id_os', 0);
|
||||||
|
$id_message = get_parameter('message', 0);
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
$tab = get_parameter('tab2', 'list');
|
$tab = get_parameter('tab2', 'list');
|
||||||
} else {
|
} else {
|
||||||
@ -50,6 +51,7 @@ switch ($action) {
|
|||||||
$textButton = __('Create');
|
$textButton = __('Create');
|
||||||
$classButton = 'class="sub next"';
|
$classButton = 'class="sub next"';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'edit':
|
case 'edit':
|
||||||
$actionHidden = 'update';
|
$actionHidden = 'update';
|
||||||
$textButton = __('Update');
|
$textButton = __('Update');
|
||||||
@ -71,14 +73,20 @@ switch ($action) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($resultOrId === false) {
|
if ($resultOrId === false) {
|
||||||
$message = ui_print_error_message(__('Fail creating OS'), '', true);
|
$message = 2;
|
||||||
$tab = 'builder';
|
$tab = 'builder';
|
||||||
$actionHidden = 'save';
|
$actionHidden = 'save';
|
||||||
$textButton = __('Create');
|
$textButton = __('Create');
|
||||||
$classButton = 'class="sub next"';
|
$classButton = 'class="sub next"';
|
||||||
} else {
|
} else {
|
||||||
$message = ui_print_success_message(__('Success creating OS'), '', true);
|
|
||||||
$tab = 'list';
|
$tab = 'list';
|
||||||
|
$message = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_metaconsole()) {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
|
||||||
|
} else {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -100,10 +108,11 @@ switch ($action) {
|
|||||||
$result = db_process_sql_update('tconfig_os', $values, ['id_os' => $idOS]);
|
$result = db_process_sql_update('tconfig_os', $values, ['id_os' => $idOS]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = ui_print_result_message($result, __('Success updatng OS'), __('Error updating OS'), '', true);
|
|
||||||
if ($result !== false) {
|
if ($result !== false) {
|
||||||
|
$message = 3;
|
||||||
$tab = 'list';
|
$tab = 'list';
|
||||||
} else {
|
} else {
|
||||||
|
$message = 4;
|
||||||
$tab = 'builder';
|
$tab = 'builder';
|
||||||
$os = db_get_row_filter('tconfig_os', ['id_os' => $idOS]);
|
$os = db_get_row_filter('tconfig_os', ['id_os' => $idOS]);
|
||||||
$name = $os['name'];
|
$name = $os['name'];
|
||||||
@ -112,6 +121,11 @@ switch ($action) {
|
|||||||
$actionHidden = 'update';
|
$actionHidden = 'update';
|
||||||
$textButton = __('Update');
|
$textButton = __('Update');
|
||||||
$classButton = 'class="sub upd"';
|
$classButton = 'class="sub upd"';
|
||||||
|
if (is_metaconsole()) {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
|
||||||
|
} else {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete':
|
case 'delete':
|
||||||
@ -120,11 +134,20 @@ switch ($action) {
|
|||||||
$count = $count[0]['count'];
|
$count = $count[0]['count'];
|
||||||
|
|
||||||
if ($count > 0) {
|
if ($count > 0) {
|
||||||
$message = ui_print_error_message(__('There are agents with this OS.'), '', true);
|
$message = 5;
|
||||||
} else {
|
} else {
|
||||||
$result = (bool) db_process_sql_delete('tconfig_os', ['id_os' => $idOS]);
|
$result = (bool) db_process_sql_delete('tconfig_os', ['id_os' => $idOS]);
|
||||||
|
if ($result) {
|
||||||
|
$message = 6;
|
||||||
|
} else {
|
||||||
|
$message = 7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$message = ui_print_result_message($result, __('Success deleting'), __('Error deleting'), '', true);
|
if (is_metaconsole()) {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
|
||||||
|
} else {
|
||||||
|
header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -143,11 +166,45 @@ $buttons = [
|
|||||||
$buttons[$tab]['active'] = true;
|
$buttons[$tab]['active'] = true;
|
||||||
|
|
||||||
if (!is_metaconsole()) {
|
if (!is_metaconsole()) {
|
||||||
// Header
|
// Header.
|
||||||
ui_print_page_header(__('Edit OS'), '', false, '', true, $buttons);
|
ui_print_page_header(__('Edit OS'), '', false, '', true, $buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $message;
|
if (!empty($id_message)) {
|
||||||
|
switch ($id_message) {
|
||||||
|
case 1:
|
||||||
|
echo ui_print_success_message(__('Success creating OS'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
echo ui_print_error_message(__('Fail creating OS'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
echo ui_print_success_message(__('Success updating OS'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
echo ui_print_error_message(__('Error updating OS'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
echo ui_print_error_message(__('There are agents with this OS.'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
echo ui_print_success_message(__('Success deleting'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
echo ui_print_error_message(__('Error deleting'), '', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Default.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch ($tab) {
|
switch ($tab) {
|
||||||
case 'list':
|
case 'list':
|
||||||
|
@ -276,6 +276,9 @@ $table->data[$i++][1] = html_print_checkbox_switch('event_storm_protection', 1,
|
|||||||
$table->data[$i][0] = __('Command Snapshot');
|
$table->data[$i][0] = __('Command Snapshot');
|
||||||
$table->data[$i++][1] = html_print_checkbox_switch('command_snapshot', 1, $config['command_snapshot'], true);
|
$table->data[$i++][1] = html_print_checkbox_switch('command_snapshot', 1, $config['command_snapshot'], true);
|
||||||
|
|
||||||
|
$table->data[$i][0] = __('Change remote config encoding');
|
||||||
|
$table->data[$i++][1] = html_print_checkbox_switch('use_custom_encoding', 1, $config['use_custom_encoding'], true);
|
||||||
|
|
||||||
$table->data[$i][0] = __('Server logs directory');
|
$table->data[$i][0] = __('Server logs directory');
|
||||||
$table->data[$i++][1] = html_print_input_text(
|
$table->data[$i++][1] = html_print_input_text(
|
||||||
'server_log_dir',
|
'server_log_dir',
|
||||||
@ -329,15 +332,18 @@ $table->data[$i++][1] = html_print_input_text(
|
|||||||
$table->data[$i][0] = __('Include agents manually disabled');
|
$table->data[$i][0] = __('Include agents manually disabled');
|
||||||
$table->data[$i++][1] = html_print_checkbox_switch('include_agents', 1, $config['include_agents'], true);
|
$table->data[$i++][1] = html_print_checkbox_switch('include_agents', 1, $config['include_agents'], true);
|
||||||
|
|
||||||
$table->data[$i][0] = __('Audit log directory');
|
|
||||||
$table->data[$i++][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true);
|
|
||||||
|
|
||||||
$table->data[$i][0] = __('Set alias as name by default in agent creation');
|
$table->data[$i][0] = __('Set alias as name by default in agent creation');
|
||||||
$table->data[$i++][1] = html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true);
|
$table->data[$i++][1] = html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true);
|
||||||
|
|
||||||
$table->data[$i][0] = __('Unique IP');
|
$table->data[$i][0] = __('Unique IP');
|
||||||
$table->data[$i++][1] = html_print_checkbox_switch('unique_ip', 1, $config['unique_ip'], true);
|
$table->data[$i++][1] = html_print_checkbox_switch('unique_ip', 1, $config['unique_ip'], true);
|
||||||
|
|
||||||
|
$table->data[$i][0] = __('Enable console log').ui_print_help_tip(__('Log location').': pandora_console/log/console.log', true);
|
||||||
|
$table->data[$i++][1] = html_print_checkbox_switch('console_log_enabled', 1, $config['console_log_enabled'], true);
|
||||||
|
|
||||||
|
$table->data[$i][0] = __('Enable audit log').ui_print_help_tip(__('Log location').': pandora_console/log/audit.log', true);
|
||||||
|
$table->data[$i++][1] = html_print_checkbox_switch('audit_log_enabled', 1, $config['audit_log_enabled'], true);
|
||||||
|
|
||||||
echo '<form id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
echo '<form id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
||||||
|
|
||||||
echo '<fieldset>';
|
echo '<fieldset>';
|
||||||
|
@ -1065,8 +1065,12 @@ $row++;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logo
|
// Logo.
|
||||||
$table_report->data['custom_report_front-logo'][0] = __('Custom report front').' - '.__('Custom logo');
|
$table_report->data['custom_report_front-logo'][0] = __('Custom report front').' - '.__('Custom logo').ui_print_help_tip(
|
||||||
|
__("The dir of custom logos is in your www Console in 'images/custom_logo'. You can upload more files (ONLY JPEG AND PNG) in upload tool in console."),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
$table_report->data['custom_report_front-logo'][1] = html_print_select(
|
$table_report->data['custom_report_front-logo'][1] = html_print_select(
|
||||||
$customLogos,
|
$customLogos,
|
||||||
'custom_report_front_logo',
|
'custom_report_front_logo',
|
||||||
@ -1076,7 +1080,7 @@ $row++;
|
|||||||
'',
|
'',
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
// Preview
|
// Preview.
|
||||||
$table_report->data['custom_report_front-preview'][0] = __('Custom report front').' - '.'Preview';
|
$table_report->data['custom_report_front-preview'][0] = __('Custom report front').' - '.'Preview';
|
||||||
if (empty($config['custom_report_front_logo'])) {
|
if (empty($config['custom_report_front_logo'])) {
|
||||||
$config['custom_report_front_logo'] = 'images/pandora_logo_white.jpg';
|
$config['custom_report_front_logo'] = 'images/pandora_logo_white.jpg';
|
||||||
@ -1084,23 +1088,32 @@ $row++;
|
|||||||
|
|
||||||
$table_report->data['custom_report_front-preview'][1] = '<span id="preview_image">'.html_print_image($config['custom_report_front_logo'], true).'</span>';
|
$table_report->data['custom_report_front-preview'][1] = '<span id="preview_image">'.html_print_image($config['custom_report_front_logo'], true).'</span>';
|
||||||
|
|
||||||
// Header
|
// Header.
|
||||||
$table_report->data['custom_report_front-header'][0] = __('Custom report front').' - '.__('Header');
|
$table_report->data['custom_report_front-header'][0] = __('Custom report front').' - '.__('Header');
|
||||||
|
|
||||||
|
// Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection.
|
||||||
$table_report->data['custom_report_front-header'][1] = html_print_textarea(
|
$table_report->data['custom_report_front-header'][1] = html_print_textarea(
|
||||||
'custom_report_front_header',
|
'custom_report_front_header',
|
||||||
5,
|
5,
|
||||||
15,
|
15,
|
||||||
$config['custom_report_front_header'],
|
io_safe_output($config['custom_report_front_header']),
|
||||||
'style="width: 38em;"',
|
'style="width: 38em;"',
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
// First page
|
// First page.
|
||||||
|
// Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection.
|
||||||
|
if ($config['custom_report_front']) {
|
||||||
|
$firstpage_content = $config['custom_report_front_firstpage'];
|
||||||
|
} else {
|
||||||
|
$firstpage_content = io_safe_output($config['custom_report_front_firstpage']);
|
||||||
|
}
|
||||||
|
|
||||||
$table_report->data['custom_report_front-first_page'][0] = __('Custom report front').' - '.__('First page');
|
$table_report->data['custom_report_front-first_page'][0] = __('Custom report front').' - '.__('First page');
|
||||||
$custom_report_front_firstpage = str_replace(
|
$custom_report_front_firstpage = str_replace(
|
||||||
'(_URLIMAGE_)',
|
'(_URLIMAGE_)',
|
||||||
ui_get_full_url(false, true, false, false),
|
ui_get_full_url(false, true, false, false),
|
||||||
$config['custom_report_front_firstpage']
|
io_safe_output($firstpage_content)
|
||||||
);
|
);
|
||||||
$table_report->data['custom_report_front-first_page'][1] = html_print_textarea(
|
$table_report->data['custom_report_front-first_page'][1] = html_print_textarea(
|
||||||
'custom_report_front_firstpage',
|
'custom_report_front_firstpage',
|
||||||
@ -1111,13 +1124,15 @@ $row++;
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
// Footer
|
// Footer.
|
||||||
$table_report->data['custom_report_front-footer'][0] = __('Custom report front').' - '.__('Footer');
|
$table_report->data['custom_report_front-footer'][0] = __('Custom report front').' - '.__('Footer');
|
||||||
|
|
||||||
|
// Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection.
|
||||||
$table_report->data['custom_report_front-footer'][1] = html_print_textarea(
|
$table_report->data['custom_report_front-footer'][1] = html_print_textarea(
|
||||||
'custom_report_front_footer',
|
'custom_report_front_footer',
|
||||||
5,
|
5,
|
||||||
15,
|
15,
|
||||||
$config['custom_report_front_footer'],
|
io_safe_output($config['custom_report_front_footer']),
|
||||||
'style="width: 38em;"',
|
'style="width: 38em;"',
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -629,6 +629,16 @@ class DiscoveryTaskList extends HTML
|
|||||||
$data[6] .= __('Discovery.App.Oracle');
|
$data[6] .= __('Discovery.App.Oracle');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DISCOVERY_APP_DB2:
|
||||||
|
// Discovery Applications DB2.
|
||||||
|
$data[6] = html_print_image(
|
||||||
|
'images/network.png',
|
||||||
|
true,
|
||||||
|
['title' => __('Discovery Applications DB2')]
|
||||||
|
).' ';
|
||||||
|
$data[6] .= __('Discovery.App.DB2');
|
||||||
|
break;
|
||||||
|
|
||||||
case DISCOVERY_DEPLOY_AGENTS:
|
case DISCOVERY_DEPLOY_AGENTS:
|
||||||
// Internal deployment task.
|
// Internal deployment task.
|
||||||
$no_operations = true;
|
$no_operations = true;
|
||||||
@ -722,6 +732,8 @@ class DiscoveryTaskList extends HTML
|
|||||||
if ($task['disabled'] != 2 && $task['utimestamp'] > 0
|
if ($task['disabled'] != 2 && $task['utimestamp'] > 0
|
||||||
&& $task['type'] != DISCOVERY_APP_MYSQL
|
&& $task['type'] != DISCOVERY_APP_MYSQL
|
||||||
&& $task['type'] != DISCOVERY_APP_ORACLE
|
&& $task['type'] != DISCOVERY_APP_ORACLE
|
||||||
|
&& $task['type'] != DISCOVERY_APP_DB2
|
||||||
|
&& $task['type'] != DISCOVERY_APP_SAP
|
||||||
&& $task['type'] != DISCOVERY_CLOUD_AWS_RDS
|
&& $task['type'] != DISCOVERY_CLOUD_AWS_RDS
|
||||||
) {
|
) {
|
||||||
if (check_acl($config['id_user'], 0, 'MR')) {
|
if (check_acl($config['id_user'], 0, 'MR')) {
|
||||||
@ -879,6 +891,9 @@ class DiscoveryTaskList extends HTML
|
|||||||
case DISCOVERY_APP_ORACLE:
|
case DISCOVERY_APP_ORACLE:
|
||||||
return 'wiz=app&mode=oracle&page=0';
|
return 'wiz=app&mode=oracle&page=0';
|
||||||
|
|
||||||
|
case DISCOVERY_APP_DB2:
|
||||||
|
return 'wiz=app&mode=DB2&page=0';
|
||||||
|
|
||||||
case DISCOVERY_CLOUD_AWS:
|
case DISCOVERY_CLOUD_AWS:
|
||||||
case DISCOVERY_CLOUD_AWS_EC2:
|
case DISCOVERY_CLOUD_AWS_EC2:
|
||||||
return 'wiz=cloud&mode=amazonws&ki='.$task['auth_strings'].'&page=1';
|
return 'wiz=cloud&mode=amazonws&ki='.$task['auth_strings'].'&page=1';
|
||||||
|
@ -1090,7 +1090,7 @@ if ($dialogue_event_response) {
|
|||||||
if ($add_comment) {
|
if ($add_comment) {
|
||||||
$aviability_comment = true;
|
$aviability_comment = true;
|
||||||
$comment = get_parameter('comment');
|
$comment = get_parameter('comment');
|
||||||
if (preg_match('<script>', io_safe_output($comment))) {
|
if (preg_match('/script/i', io_safe_output($comment))) {
|
||||||
$aviability_comment = false;
|
$aviability_comment = false;
|
||||||
$return = false;
|
$return = false;
|
||||||
}
|
}
|
||||||
|
@ -865,16 +865,16 @@ if (check_login()) {
|
|||||||
$table->align[8] = 'center';
|
$table->align[8] = 'center';
|
||||||
$table->align[9] = 'right';
|
$table->align[9] = 'right';
|
||||||
|
|
||||||
$table->headstyle[2] = 'min-width: 85px';
|
$table->headstyle[2] = 'min-width: 65px';
|
||||||
$table->headstyle[3] = 'min-width: 130px';
|
$table->headstyle[3] = 'min-width: 80px';
|
||||||
$table->size[3] = '30%';
|
$table->size[3] = '25%';
|
||||||
$table->style[3] = 'max-width: 28em;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;';
|
$table->style[3] = 'max-width: 28em;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;';
|
||||||
$table->size[4] = '30%';
|
$table->size[4] = '25%';
|
||||||
$table->headstyle[5] = 'min-width: 85px';
|
$table->headstyle[5] = 'min-width: 65px';
|
||||||
$table->headstyle[6] = 'min-width: 125px; text-align: center;';
|
$table->headstyle[6] = 'min-width: 80px; text-align: center;';
|
||||||
$table->headstyle[7] = 'min-width: 125px;';
|
$table->headstyle[7] = 'min-width: 80px;';
|
||||||
$table->headstyle[8] = 'min-width: 100px; text-align: center;';
|
$table->headstyle[8] = 'min-width: 70px; text-align: center;';
|
||||||
$table->headstyle[9] = 'min-width: 120px; text-align: right;';
|
$table->headstyle[9] = 'min-width: 100px; text-align: right;';
|
||||||
|
|
||||||
$last_modulegroup = 0;
|
$last_modulegroup = 0;
|
||||||
$rowIndex = 0;
|
$rowIndex = 0;
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
require_once $config['homedir'].'/include/functions_config.php';
|
require_once $config['homedir'].'/include/functions_config.php';
|
||||||
require_once $config['homedir'].'/include/functions_snmp_browser.php';
|
require_once $config['homedir'].'/include/functions_snmp_browser.php';
|
||||||
|
require_once $config['homedir'].'/include/functions_snmp.php';
|
||||||
require_once $config['homedir'].'/include/functions_network_components.php';
|
require_once $config['homedir'].'/include/functions_network_components.php';
|
||||||
|
|
||||||
|
|
||||||
@ -112,6 +113,17 @@ if (is_ajax()) {
|
|||||||
$output .= '</div>';
|
$output .= '</div>';
|
||||||
$output .= '</div>';
|
$output .= '</div>';
|
||||||
|
|
||||||
|
// Dialog no agent selected.
|
||||||
|
$output .= '<div id="dialog_no_agents_selected" style="display:none" title="'.__('SNMP modules').'">';
|
||||||
|
$output .= '<div>';
|
||||||
|
$output .= "<div style='width:25%; float:left'><img style='padding-left:20px; padding-top:20px;' src='images/icono_error_mr.png'></div>";
|
||||||
|
$output .= "<div style='width:75%; float:left;'><h3><strong style='font-family:Verdana; font-size:13pt;'>ERROR</strong></h3>";
|
||||||
|
$output .= "<p style='font-family:Verdana; font-size:12pt;margin-bottom: 0px'>".__('Module must be applied to an agent or a policy').'</p>';
|
||||||
|
$output .= "<p id='error_text' style='font-family:Verdana; font-size:12pt;'></p>";
|
||||||
|
$output .= '</div>';
|
||||||
|
$output .= '</div>';
|
||||||
|
$output .= '</div>';
|
||||||
|
|
||||||
echo $output;
|
echo $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,6 +170,11 @@ if (is_ajax()) {
|
|||||||
$id_target = explode(',', $id_items[0]);
|
$id_target = explode(',', $id_items[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($id_items[0])) {
|
||||||
|
echo json_encode([0 => -1]);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
$snmp_extradata = get_parameter('snmp_extradata', '');
|
$snmp_extradata = get_parameter('snmp_extradata', '');
|
||||||
|
|
||||||
if (!is_array($snmp_extradata)) {
|
if (!is_array($snmp_extradata)) {
|
||||||
|
@ -85,7 +85,7 @@ function process_user_login($login, $pass, $api=false)
|
|||||||
return process_user_login_local($login, $pass, $api);
|
return process_user_login_local($login, $pass, $api);
|
||||||
} else {
|
} else {
|
||||||
$login_remote = process_user_login_remote($login, io_safe_output($pass), $api);
|
$login_remote = process_user_login_remote($login, io_safe_output($pass), $api);
|
||||||
if ($login_remote == false) {
|
if ($login_remote == false && $config['fallback_local_auth']) {
|
||||||
return process_user_login_local($login, $pass, $api);
|
return process_user_login_local($login, $pass, $api);
|
||||||
} else {
|
} else {
|
||||||
return $login_remote;
|
return $login_remote;
|
||||||
@ -258,9 +258,13 @@ function process_user_login_remote($login, $pass, $api=false)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($config['auth'] === 'ad')
|
if (($config['auth'] === 'ad')) {
|
||||||
&& (isset($config['ad_advanced_config']) && $config['ad_advanced_config'])
|
// Check if autocreate remote users is active.
|
||||||
) {
|
if ($config['autocreate_remote_users'] == 1) {
|
||||||
|
change_local_user_pass_ldap($login, $pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($config['ad_advanced_config']) && $config['ad_advanced_config']) {
|
||||||
$return = enterprise_hook(
|
$return = enterprise_hook(
|
||||||
'prepare_permissions_groups_of_user_ad',
|
'prepare_permissions_groups_of_user_ad',
|
||||||
[
|
[
|
||||||
@ -281,6 +285,7 @@ function process_user_login_remote($login, $pass, $api=false)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if ($config['auth'] === 'ldap') {
|
} else if ($config['auth'] === 'ldap') {
|
||||||
// Check if autocreate remote users is active.
|
// Check if autocreate remote users is active.
|
||||||
if ($config['autocreate_remote_users'] == 1) {
|
if ($config['autocreate_remote_users'] == 1) {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -226,6 +226,19 @@ class ConsoleSupervisor
|
|||||||
* NOTIF.HAMASTER.MESSAGE
|
* NOTIF.HAMASTER.MESSAGE
|
||||||
*/
|
*/
|
||||||
$this->checkHaStatus();
|
$this->checkHaStatus();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if the Pandora Console log
|
||||||
|
* file remains in old location.
|
||||||
|
*/
|
||||||
|
$this->checkPandoraConsoleLogOldLocation();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if the audit log file
|
||||||
|
* remains in old location.
|
||||||
|
*/
|
||||||
|
$this->checkAuditLogOldLocation();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -463,6 +476,17 @@ class ConsoleSupervisor
|
|||||||
$this->checkHaStatus();
|
$this->checkHaStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if the audit log file
|
||||||
|
* remains in old location.
|
||||||
|
*/
|
||||||
|
$this->checkAuditLogOldLocation();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check if AllowOverride is None or All.
|
||||||
|
*/
|
||||||
|
$this->checkAllowOverrideEnabled();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1363,7 +1387,7 @@ class ConsoleSupervisor
|
|||||||
$this->cleanNotifications('NOTIF.PHP.INPUT_TIME');
|
$this->cleanNotifications('NOTIF.PHP.INPUT_TIME');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($PHPmax_execution_time !== '0') {
|
if ((int) $PHPmax_execution_time !== 0) {
|
||||||
$url = 'http://php.net/manual/en/info.configuration.php#ini.max-execution-time';
|
$url = 'http://php.net/manual/en/info.configuration.php#ini.max-execution-time';
|
||||||
if ($config['language'] == 'es') {
|
if ($config['language'] == 'es') {
|
||||||
$url = 'http://php.net/manual/es/info.configuration.php#ini.max-execution-time';
|
$url = 'http://php.net/manual/es/info.configuration.php#ini.max-execution-time';
|
||||||
@ -2255,8 +2279,8 @@ class ConsoleSupervisor
|
|||||||
ui_get_full_url(false)
|
ui_get_full_url(false)
|
||||||
);
|
);
|
||||||
$message_conf_cron .= ENTERPRISE_DIR.'/'.EXTENSIONS_DIR;
|
$message_conf_cron .= ENTERPRISE_DIR.'/'.EXTENSIONS_DIR;
|
||||||
$message_conf_cron .= '/cron/cron.php >> ';
|
$message_conf_cron .= '/cron/cron.php >> </pre>';
|
||||||
$message_conf_cron .= $config['homedir'].'/pandora_console.log</pre>';
|
$message_conf_cron .= $config['homedir'].'/log/cron.log</pre>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($config['cron_last_run']) === true) {
|
if (isset($config['cron_last_run']) === true) {
|
||||||
@ -2485,4 +2509,77 @@ class ConsoleSupervisor
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if Pandora console log file remains in old location.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function checkPandoraConsoleLogOldLocation()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (file_exists($config['homedir'].'/pandora_console.log')) {
|
||||||
|
$title_pandoraconsole_old_log = __(
|
||||||
|
'Pandora FMS console log file changed location',
|
||||||
|
$config['homedir']
|
||||||
|
);
|
||||||
|
$message_pandoraconsole_old_log = __(
|
||||||
|
'Pandora FMS console log file has been moved to new location %s/log. Currently you have an outdated and inoperative version of this file at %s. Please, consider deleting it.',
|
||||||
|
$config['homedir'],
|
||||||
|
$config['homedir']
|
||||||
|
);
|
||||||
|
|
||||||
|
$url = 'https://wiki.pandorafms.com/index.php?title=Pandora:QuickGuides_EN:General_Quick_Guide#Solving_problems._Where_to_look_and_who_to_ask';
|
||||||
|
if ($config['language'] == 'es') {
|
||||||
|
$url = 'https://wiki.pandorafms.com/index.php?title=Pandora:QuickGuides_ES:Guia_Rapida_General#Soluci.C3.B3n_de_problemas._D.C3.B3nde_mirar.2C_a_qui.C3.A9n_preguntar';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->notify(
|
||||||
|
[
|
||||||
|
'type' => 'NOTIF.PANDORACONSOLE.LOG.OLD',
|
||||||
|
'title' => __($title_pandoraconsole_old_log),
|
||||||
|
'message' => __($message_pandoraconsole_old_log),
|
||||||
|
'url' => $url,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->cleanNotifications('NOTIF.PANDORACONSOLE.LOG.OLD');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if audit log file remains in old location.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function checkAuditLogOldLocation()
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (file_exists($config['homedir'].'/audit.log')) {
|
||||||
|
$title_audit_old_log = __(
|
||||||
|
'Pandora FMS audit log file changed location',
|
||||||
|
$config['homedir']
|
||||||
|
);
|
||||||
|
$message_audit_old_log = __(
|
||||||
|
'Pandora FMS audit log file has been moved to new location %s/log. Currently you have an outdated and inoperative version of this file at %s. Please, consider deleting it.',
|
||||||
|
$config['homedir'],
|
||||||
|
$config['homedir']
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->notify(
|
||||||
|
[
|
||||||
|
'type' => 'NOTIF.AUDIT.LOG.OLD',
|
||||||
|
'title' => __($title_audit_old_log),
|
||||||
|
'message' => __($message_audit_old_log),
|
||||||
|
'url' => '#',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->cleanNotifications('NOTIF.AUDIT.LOG.OLD');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1008,7 +1008,7 @@ class Diagnostics extends Wizard
|
|||||||
$pathErrLogs = '/var/log/pandora/pandora_server.error';
|
$pathErrLogs = '/var/log/pandora/pandora_server.error';
|
||||||
$errors = $this->getLogInfo($pathErrLogs);
|
$errors = $this->getLogInfo($pathErrLogs);
|
||||||
|
|
||||||
$pathConsoleLogs = $config['homedir'].'/pandora_console.log';
|
$pathConsoleLogs = $config['homedir'].'/log/console.log';
|
||||||
$console = $this->getLogInfo($pathConsoleLogs);
|
$console = $this->getLogInfo($pathConsoleLogs);
|
||||||
|
|
||||||
$result = [
|
$result = [
|
||||||
@ -2079,7 +2079,7 @@ class Diagnostics extends Wizard
|
|||||||
],
|
],
|
||||||
'text' => [
|
'text' => [
|
||||||
ui_print_error_message(__('Invalid cron task'), '', true),
|
ui_print_error_message(__('Invalid cron task'), '', true),
|
||||||
ui_print_success_message(__('Cron task generated'), '', true),
|
ui_print_success_message(__('Sending of information has been processed'), '', true),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
/**
|
/**
|
||||||
* Pandora build version and version
|
* Pandora build version and version
|
||||||
*/
|
*/
|
||||||
$build_version = 'PC200616';
|
$build_version = 'PC200706';
|
||||||
$pandora_version = 'v7.0NG.746';
|
$pandora_version = 'v7.0NG.747';
|
||||||
|
|
||||||
// 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();
|
||||||
@ -51,8 +51,6 @@ if ($develop_bypass != 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ini_set('display_errors', 0);
|
ini_set('display_errors', 0);
|
||||||
ini_set('log_errors', 1);
|
|
||||||
ini_set('error_log', $config['homedir'].'/pandora_console.log');
|
|
||||||
} else {
|
} else {
|
||||||
// Develop mode, show all notices and errors on Console (and log it)
|
// Develop mode, show all notices and errors on Console (and log it)
|
||||||
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
|
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
|
||||||
@ -62,8 +60,6 @@ if ($develop_bypass != 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ini_set('display_errors', 1);
|
ini_set('display_errors', 1);
|
||||||
ini_set('log_errors', 1);
|
|
||||||
ini_set('error_log', $config['homedir'].'/pandora_console.log');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if mysqli is available
|
// Check if mysqli is available
|
||||||
|
@ -50,7 +50,9 @@ define('EVENT_NO_VALIDATED', 3);
|
|||||||
define('AGENT_ENABLED', 0);
|
define('AGENT_ENABLED', 0);
|
||||||
define('AGENT_DISABLED', 1);
|
define('AGENT_DISABLED', 1);
|
||||||
|
|
||||||
|
// Module disabled status.
|
||||||
|
define('MODULE_ENABLED', 0);
|
||||||
|
define('MODULE_DISABLED', 1);
|
||||||
|
|
||||||
// Error report codes.
|
// Error report codes.
|
||||||
define('NOERR', 11111);
|
define('NOERR', 11111);
|
||||||
@ -149,8 +151,8 @@ define('COL_IGNORED', '#DDD');
|
|||||||
define('COL_ALERTFIRED', '#F36201');
|
define('COL_ALERTFIRED', '#F36201');
|
||||||
define('COL_MINOR', '#F099A2');
|
define('COL_MINOR', '#F099A2');
|
||||||
define('COL_MAJOR', '#C97A4A');
|
define('COL_MAJOR', '#C97A4A');
|
||||||
define('COL_INFORMATIONAL', '#E4E4E4');
|
define('COL_INFORMATIONAL', '#4a83f3');
|
||||||
define('COL_MAINTENANCE', '#4a83f3');
|
define('COL_MAINTENANCE', '#E4E4E4');
|
||||||
|
|
||||||
define('COL_GRAPH1', '#C397F2');
|
define('COL_GRAPH1', '#C397F2');
|
||||||
define('COL_GRAPH2', '#FFE66C');
|
define('COL_GRAPH2', '#FFE66C');
|
||||||
@ -347,6 +349,7 @@ define('MODULE_PREDICTION', 5);
|
|||||||
define('MODULE_WMI', 6);
|
define('MODULE_WMI', 6);
|
||||||
define('MODULE_WEB', 7);
|
define('MODULE_WEB', 7);
|
||||||
define('MODULE_WUX', 8);
|
define('MODULE_WUX', 8);
|
||||||
|
define('MODULE_WIZARD', 9);
|
||||||
|
|
||||||
// Type of Modules of Prediction.
|
// Type of Modules of Prediction.
|
||||||
define('MODULE_PREDICTION_SERVICE', 2);
|
define('MODULE_PREDICTION_SERVICE', 2);
|
||||||
@ -601,6 +604,7 @@ define('DISCOVERY_CLOUD_AWS_RDS', 7);
|
|||||||
define('DISCOVERY_CLOUD_AZURE_COMPUTE', 8);
|
define('DISCOVERY_CLOUD_AZURE_COMPUTE', 8);
|
||||||
define('DISCOVERY_DEPLOY_AGENTS', 9);
|
define('DISCOVERY_DEPLOY_AGENTS', 9);
|
||||||
define('DISCOVERY_APP_SAP', 10);
|
define('DISCOVERY_APP_SAP', 10);
|
||||||
|
define('DISCOVERY_APP_DB2', 11);
|
||||||
|
|
||||||
|
|
||||||
// Force task build tmp results.
|
// Force task build tmp results.
|
||||||
@ -673,3 +677,54 @@ define('W_CREATE_MODULE', 3);
|
|||||||
define('W_CREATE_ALERT', 4);
|
define('W_CREATE_ALERT', 4);
|
||||||
define('W_CREATE_TASK', 5);
|
define('W_CREATE_TASK', 5);
|
||||||
define('WELCOME_FINISHED', -1);
|
define('WELCOME_FINISHED', -1);
|
||||||
|
|
||||||
|
// Fixed tnetwork_component values.
|
||||||
|
define('MODULE_TYPE_NUMERIC', 1);
|
||||||
|
define('MODULE_TYPE_INCREMENTAL', 2);
|
||||||
|
define('MODULE_TYPE_BOOLEAN', 3);
|
||||||
|
define('MODULE_TYPE_ALPHANUMERIC', 4);
|
||||||
|
define('SCAN_TYPE_FIXED', 1);
|
||||||
|
define('SCAN_TYPE_DYNAMIC', 2);
|
||||||
|
define('EXECUTION_TYPE_NETWORK', 1);
|
||||||
|
define('EXECUTION_TYPE_PLUGIN', 2);
|
||||||
|
|
||||||
|
// Id of component type.
|
||||||
|
define('COMPONENT_TYPE_NETWORK', 2);
|
||||||
|
define('COMPONENT_TYPE_PLUGIN', 4);
|
||||||
|
define('COMPONENT_TYPE_WMI', 6);
|
||||||
|
define('COMPONENT_TYPE_WIZARD', 9);
|
||||||
|
|
||||||
|
// Wizard Internal Plugins.
|
||||||
|
define('PLUGIN_WIZARD_SNMP_MODULE', 1);
|
||||||
|
define('PLUGIN_WIZARD_SNMP_PROCESS', 2);
|
||||||
|
define('PLUGIN_WIZARD_WMI_MODULE', 3);
|
||||||
|
|
||||||
|
// Module Types.
|
||||||
|
define('MODULE_TYPE_GENERIC_DATA', 1);
|
||||||
|
define('MODULE_TYPE_GENERIC_PROC', 2);
|
||||||
|
define('MODULE_TYPE_GENERIC_DATA_STRING', 3);
|
||||||
|
define('MODULE_TYPE_GENERIC_DATA_INC', 4);
|
||||||
|
define('MODULE_TYPE_GENERIC_DATA_INC_ABS', 5);
|
||||||
|
define('MODULE_TYPE_REMOTE_ICMP_PROC', 6);
|
||||||
|
define('MODULE_TYPE_REMOTE_ICMP', 7);
|
||||||
|
define('MODULE_TYPE_REMOTE_TCP', 8);
|
||||||
|
define('MODULE_TYPE_REMOTE_TCP_PROC', 9);
|
||||||
|
define('MODULE_TYPE_REMOTE_TCP_STRING', 10);
|
||||||
|
define('MODULE_TYPE_REMOTE_TCP_INC', 11);
|
||||||
|
define('MODULE_TYPE_REMOTE_SNMP', 15);
|
||||||
|
define('MODULE_TYPE_REMOTE_SNMP_INC', 16);
|
||||||
|
define('MODULE_TYPE_REMOTE_SNMP_STRING', 17);
|
||||||
|
define('MODULE_TYPE_REMOTE_SNMP_PROC', 18);
|
||||||
|
define('MODULE_TYPE_ASYNC_PROC', 21);
|
||||||
|
define('MODULE_TYPE_ASYNC_DATA', 22);
|
||||||
|
define('MODULE_TYPE_ASYNC_STRING', 23);
|
||||||
|
define('MODULE_TYPE_WEB_ANALYSIS', 25);
|
||||||
|
define('MODULE_TYPE_WEB_DATA', 30);
|
||||||
|
define('MODULE_TYPE_WEB_PROC', 31);
|
||||||
|
define('MODULE_TYPE_WEB_CONTENT_DATA', 32);
|
||||||
|
define('MODULE_TYPE_WEB_CONTENT_STRING', 33);
|
||||||
|
define('MODULE_TYPE_REMOTE_CMD', 34);
|
||||||
|
define('MODULE_TYPE_REMOTE_CMD_PROC', 35);
|
||||||
|
define('MODULE_TYPE_REMOTE_CMD_STRING', 36);
|
||||||
|
define('MODULE_TYPE_REMOTE_CMD_INC', 37);
|
||||||
|
define('MODULE_TYPE_KEEP_ALIVE', 100);
|
||||||
|
@ -4011,7 +4011,7 @@ function generate_hash_to_api()
|
|||||||
* @param string Key to identify the profiler run.
|
* @param string Key to identify the profiler run.
|
||||||
* @param string Way to display the result
|
* @param string Way to display the result
|
||||||
* "link" (default): Click into word "Performance" to display the profilling info.
|
* "link" (default): Click into word "Performance" to display the profilling info.
|
||||||
* "console": Display with a message in pandora_console.log.
|
* "console": Display with a message in console.log.
|
||||||
*/
|
*/
|
||||||
function pandora_xhprof_display_result($key='', $method='link')
|
function pandora_xhprof_display_result($key='', $method='link')
|
||||||
{
|
{
|
||||||
|
@ -1631,9 +1631,11 @@ function agents_get_alias($id_agent, $case='none')
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check cache.
|
// Check cache.
|
||||||
|
if (!is_metaconsole()) {
|
||||||
if (isset($cache[$case][$id_agent])) {
|
if (isset($cache[$case][$id_agent])) {
|
||||||
return $cache[$case][$id_agent];
|
return $cache[$case][$id_agent];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$alias = (string) db_get_value(
|
$alias = (string) db_get_value(
|
||||||
'alias',
|
'alias',
|
||||||
@ -1656,7 +1658,61 @@ function agents_get_alias($id_agent, $case='none')
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!is_metaconsole()) {
|
||||||
$cache[$case][$id_agent] = $alias;
|
$cache[$case][$id_agent] = $alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get alias of an agent in metaconsole (cached function).
|
||||||
|
*
|
||||||
|
* @param integer $id_agent Agent id.
|
||||||
|
* @param string $case Case (upper, lower, none).
|
||||||
|
* @param integer $id_server server id.
|
||||||
|
*
|
||||||
|
* @return string Alias of the given agent.
|
||||||
|
*/
|
||||||
|
function agents_get_alias_metaconsole($id_agent, $case='none', $id_server=false)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
// Prepare cache.
|
||||||
|
static $cache = [];
|
||||||
|
if (empty($case)) {
|
||||||
|
$case = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check cache.
|
||||||
|
if (isset($cache[$case][$id_server][$id_agent])) {
|
||||||
|
return $cache[$case][$id_server][$id_agent];
|
||||||
|
}
|
||||||
|
|
||||||
|
$alias = (string) db_get_value_filter(
|
||||||
|
'alias',
|
||||||
|
'tmetaconsole_agent',
|
||||||
|
[
|
||||||
|
'id_tagente' => $id_agent,
|
||||||
|
'id_tmetaconsole_setup' => $id_server,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
switch ($case) {
|
||||||
|
case 'upper':
|
||||||
|
$alias = mb_strtoupper($alias, 'UTF-8');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'lower':
|
||||||
|
$alias = mb_strtolower($alias, 'UTF-8');
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Not posible.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cache[$case][$id_server][$id_agent] = $alias;
|
||||||
return $alias;
|
return $alias;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10723,7 +10723,7 @@ function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db
|
|||||||
$data['type'] = 'array';
|
$data['type'] = 'array';
|
||||||
$data['data'] = $result;
|
$data['data'] = $result;
|
||||||
|
|
||||||
// returnData($returnType, $data, $separator);
|
returnData($returnType, $data, $separator);
|
||||||
if (empty($result)) {
|
if (empty($result)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -10840,6 +10840,8 @@ function api_get_events($trash1, $trash2, $other, $returnType, $user_in_db=null)
|
|||||||
returnError('ERROR_API_PANDORAFMS', $returnType);
|
returnError('ERROR_API_PANDORAFMS', $returnType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($other['type'] == 'string') {
|
if ($other['type'] == 'string') {
|
||||||
|
@ -285,7 +285,7 @@ function clippy_context_help($help=null)
|
|||||||
|
|
||||||
$return = '';
|
$return = '';
|
||||||
|
|
||||||
include_once 'include/help/clippy/'.$help.'.php';
|
include_once $config['homedir'].'/include/help/clippy/'.$help.'.php';
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
$function = 'clippy_'.$help;
|
$function = 'clippy_'.$help;
|
||||||
|
@ -287,6 +287,10 @@ function config_update_config()
|
|||||||
$error_update[] = __('Command Snapshot');
|
$error_update[] = __('Command Snapshot');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!config_update_value('use_custom_encoding', get_parameter('use_custom_encoding', 0))) {
|
||||||
|
$error_update[] = __('Use custom encoding');
|
||||||
|
}
|
||||||
|
|
||||||
if (!config_update_value('server_log_dir', io_safe_input(strip_tags(io_safe_output(get_parameter('server_log_dir')))))) {
|
if (!config_update_value('server_log_dir', io_safe_input(strip_tags(io_safe_output(get_parameter('server_log_dir')))))) {
|
||||||
$error_update[] = __('Server logs directory');
|
$error_update[] = __('Server logs directory');
|
||||||
}
|
}
|
||||||
@ -319,8 +323,12 @@ function config_update_config()
|
|||||||
$error_update[] = __('alias_as_name');
|
$error_update[] = __('alias_as_name');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config_update_value('auditdir', get_parameter('auditdir'))) {
|
if (!config_update_value('console_log_enabled', get_parameter('console_log_enabled'))) {
|
||||||
$error_update[] = __('Audit log directory');
|
$error_update[] = __('Console log enabled');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config_update_value('audit_log_enabled', get_parameter('audit_log_enabled'))) {
|
||||||
|
$error_update[] = __('Audit log enabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config_update_value('unique_ip', get_parameter('unique_ip'))) {
|
if (!config_update_value('unique_ip', get_parameter('unique_ip'))) {
|
||||||
@ -1926,14 +1934,12 @@ function config_process_config()
|
|||||||
config_update_value('alias_as_name', 0);
|
config_update_value('alias_as_name', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($config['auditdir'])) {
|
if (!isset($config['console_log_enabled'])) {
|
||||||
$auditdir = '/var/www/html/pandora_console';
|
config_update_value('console_log_enabled', 0);
|
||||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
|
||||||
// Windows.
|
|
||||||
$auditdir = $config['homedir'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config_update_value('auditdir', $auditdir);
|
if (!isset($config['audit_log_enabled'])) {
|
||||||
|
config_update_value('audit_log_enabled', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($config['elasticsearch_ip'])) {
|
if (!isset($config['elasticsearch_ip'])) {
|
||||||
@ -2797,6 +2803,10 @@ function config_process_config()
|
|||||||
config_update_value('event_storm_protection', 0);
|
config_update_value('event_storm_protection', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isset($config['use_custom_encoding'])) {
|
||||||
|
config_update_value('use_custom_encoding', 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (!isset($config['server_log_dir'])) {
|
if (!isset($config['server_log_dir'])) {
|
||||||
config_update_value('server_log_dir', '');
|
config_update_value('server_log_dir', '');
|
||||||
}
|
}
|
||||||
|
@ -251,10 +251,8 @@ function db_pandora_audit($accion, $descripcion, $user_id=false, $ip=true, $info
|
|||||||
|
|
||||||
$valor = ''.$values['fecha'].' - '.io_safe_output($id).' - '.io_safe_output($accion).' - '.$ip.' - '.io_safe_output($descripcion)."\n";
|
$valor = ''.$values['fecha'].' - '.io_safe_output($id).' - '.io_safe_output($accion).' - '.$ip.' - '.io_safe_output($descripcion)."\n";
|
||||||
|
|
||||||
if (empty($config['auditdir'])) {
|
if ($config['audit_log_enabled']) {
|
||||||
file_put_contents($config['homedir'].'/audit.log', $valor, FILE_APPEND);
|
file_put_contents($config['homedir'].'/log/audit.log', $valor, FILE_APPEND);
|
||||||
} else {
|
|
||||||
file_put_contents($config['auditdir'].'/audit.log', $valor, FILE_APPEND);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enterprise_include_once('include/functions_audit.php');
|
enterprise_include_once('include/functions_audit.php');
|
||||||
|
@ -1448,8 +1448,8 @@ function html_print_extended_select_for_time(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
// Use the no_meta parameter because this image is only in the base console
|
// Use the no_meta parameter because this image is only in the base console.
|
||||||
echo '<div id="'.$uniq_name.'_default" style="width:100%;display:flex;align-items: baseline;">';
|
echo '<div id="'.$uniq_name.'_default" style="width:100%;display:inline">';
|
||||||
html_print_select(
|
html_print_select(
|
||||||
$fields,
|
$fields,
|
||||||
$uniq_name.'_select',
|
$uniq_name.'_select',
|
||||||
@ -1464,7 +1464,7 @@ function html_print_extended_select_for_time(
|
|||||||
$readonly,
|
$readonly,
|
||||||
'font-size: xx-small;'.$select_style
|
'font-size: xx-small;'.$select_style
|
||||||
);
|
);
|
||||||
// The advanced control is only for admins
|
// The advanced control is only for admins.
|
||||||
if ($admin) {
|
if ($admin) {
|
||||||
echo ' <a href="javascript:">'.html_print_image(
|
echo ' <a href="javascript:">'.html_print_image(
|
||||||
'images/pencil.png',
|
'images/pencil.png',
|
||||||
@ -1483,7 +1483,7 @@ function html_print_extended_select_for_time(
|
|||||||
|
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
|
|
||||||
echo '<div id="'.$uniq_name.'_manual" style="width:100%;display:flex;">';
|
echo '<div id="'.$uniq_name.'_manual" style="width:100%;display:inline;">';
|
||||||
html_print_input_text($uniq_name.'_text', $selected, '', $size, 255, false, $readonly, false, '', $class);
|
html_print_input_text($uniq_name.'_text', $selected, '', $size, 255, false, $readonly, false, '', $class);
|
||||||
|
|
||||||
html_print_input_hidden($name, $selected, false, $uniq_name);
|
html_print_input_hidden($name, $selected, false, $uniq_name);
|
||||||
@ -1514,15 +1514,15 @@ function html_print_extended_select_for_time(
|
|||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo "<script type='text/javascript'>
|
echo "<script type='text/javascript'>
|
||||||
$(document).ready (function () {
|
$(document).ready (function () {
|
||||||
period_select_init('$uniq_name', $allow_zero);
|
period_select_init('".$uniq_name."', ".(($allow_zero) ? 'true' : 'null').");
|
||||||
period_select_events('$uniq_name');
|
period_select_events('".$uniq_name."');
|
||||||
});
|
});
|
||||||
function period_select_".$name."_update(seconds) {
|
function period_select_".$name."_update(seconds) {
|
||||||
$('#text-".$uniq_name."_text').val(seconds);
|
$('#text-".$uniq_name."_text').val(seconds);
|
||||||
adjustTextUnits('".$uniq_name."');
|
adjustTextUnits('".$uniq_name."');
|
||||||
calculateSeconds('".$uniq_name."');
|
calculateSeconds('".$uniq_name."');
|
||||||
$('#".$uniq_name."_manual').css('display', 'flex');
|
$('#".$uniq_name."_manual').show();
|
||||||
$('#".$uniq_name."_default').css('display', 'none');
|
$('#".$uniq_name."_default').hide();
|
||||||
}
|
}
|
||||||
</script>";
|
</script>";
|
||||||
$returnString = ob_get_clean();
|
$returnString = ob_get_clean();
|
||||||
@ -1797,6 +1797,7 @@ function html_print_div($options, $return=false)
|
|||||||
'id',
|
'id',
|
||||||
'style',
|
'style',
|
||||||
'class',
|
'class',
|
||||||
|
'title',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isset($options['hidden'])) {
|
if (isset($options['hidden'])) {
|
||||||
@ -2226,19 +2227,34 @@ function html_print_input_image($name, $src, $value, $style='', $return=false, $
|
|||||||
*
|
*
|
||||||
* @param string $name Input name.
|
* @param string $name Input name.
|
||||||
* @param string $value Input value.
|
* @param string $value Input value.
|
||||||
* @param boolean $return Whether to return an output string or echo now (optional, echo by default).
|
* @param boolean $return Whether to return an output string or echo now
|
||||||
|
* (optional, echo by default).
|
||||||
* @param string $class Set the class of input.
|
* @param string $class Set the class of input.
|
||||||
|
* @param string $attributes String with the needed attributes to add.
|
||||||
|
* @param string $id Specific id.
|
||||||
*
|
*
|
||||||
* @return string HTML code if return parameter is true.
|
* @return string HTML code if return parameter is true.
|
||||||
*/
|
*/
|
||||||
function html_print_input_hidden($name, $value, $return=false, $class=false)
|
function html_print_input_hidden(
|
||||||
{
|
$name,
|
||||||
|
$value,
|
||||||
|
$return=false,
|
||||||
|
$class=false,
|
||||||
|
$attributes=false,
|
||||||
|
$id=''
|
||||||
|
) {
|
||||||
if ($class !== false) {
|
if ($class !== false) {
|
||||||
$classText = 'class="'.$class.'"';
|
$classText = 'class="'.$class.'"';
|
||||||
} else {
|
} else {
|
||||||
$classText = '';
|
$classText = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($attributes !== false) {
|
||||||
|
$otherAttributes = $attributes;
|
||||||
|
} else {
|
||||||
|
$otherAttributes = '';
|
||||||
|
}
|
||||||
|
|
||||||
$separator = '"';
|
$separator = '"';
|
||||||
|
|
||||||
if (is_string($value)) {
|
if (is_string($value)) {
|
||||||
@ -2247,7 +2263,12 @@ function html_print_input_hidden($name, $value, $return=false, $class=false)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$output = '<input id="hidden-'.$name.'" '.'name="'.$name.'" '.'type="hidden" '.$classText.' '.'value='.$separator.$value.$separator.' />';
|
$idInput = 'hidden-'.$name;
|
||||||
|
if (empty($id) === false) {
|
||||||
|
$idInput = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = '<input id="'.$idInput.'" name="'.$name.'" type="hidden" '.$classText.' value='.$separator.$value.$separator.' '.$otherAttributes.'/>';
|
||||||
|
|
||||||
if ($return) {
|
if ($return) {
|
||||||
return $output;
|
return $output;
|
||||||
@ -3042,34 +3063,53 @@ function html_print_checkbox(
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render a checkbox button input switch type. Extended version, use html_print_checkbox_switch() to simplify.
|
* Render a checkbox button input switch type.
|
||||||
|
* Extended version, use html_print_checkbox_switch() to simplify.
|
||||||
*
|
*
|
||||||
* @param string Input name.
|
* @param string $name Input name.
|
||||||
* @param string Input value.
|
* @param integer $value Input value.
|
||||||
* @param string Set the button to be marked (optional, unmarked by default).
|
* @param integer $checked Input checked.
|
||||||
* @param bool Disable the button (optional, button enabled by default).
|
* @param boolean $disabled Disable the button (optional,
|
||||||
* @param string Script to execute when onClick event is triggered (optional).
|
* button enabled by default).
|
||||||
* @param string Optional HTML attributes. It's a free string which will be
|
* @param string $script Script to execute when onClick event
|
||||||
* @param bool Whether to return an output string or echo now (optional, echo by default).
|
* is triggered (optional).
|
||||||
|
* @param string $attributes Optional HTML attributes.
|
||||||
|
* It's a free string which will be.
|
||||||
|
* @param boolean $return Whether to return an output string or echo now
|
||||||
|
* (optional, echo by default).
|
||||||
|
* @param string $id Input id.
|
||||||
|
* @param string $classParent Class for label.
|
||||||
*
|
*
|
||||||
* @return string HTML code if return parameter is true.
|
* @return string Input html.
|
||||||
*/
|
*/
|
||||||
|
function html_print_checkbox_switch_extended(
|
||||||
|
$name,
|
||||||
function html_print_checkbox_switch_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='')
|
$value,
|
||||||
{
|
$checked,
|
||||||
|
$disabled=false,
|
||||||
|
$script='',
|
||||||
|
$attributes='',
|
||||||
|
$return=false,
|
||||||
|
$id='',
|
||||||
|
$classParent=''
|
||||||
|
) {
|
||||||
static $idcounter = [];
|
static $idcounter = [];
|
||||||
|
|
||||||
// If duplicate names exist, it will start numbering. Otherwise it won't
|
// If duplicate names exist, it will start numbering. Otherwise it won't.
|
||||||
if (isset($idcounter[$name])) {
|
if (isset($idcounter[$name])) {
|
||||||
$idcounter[$name]++;
|
$idcounter[$name]++;
|
||||||
} else {
|
} else {
|
||||||
$idcounter[$name] = 0;
|
$idcounter[$name] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$id_aux = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : ''));
|
$id_aux = preg_replace(
|
||||||
|
'/[^a-z0-9\:\;\-\_]/i',
|
||||||
|
'',
|
||||||
|
$name.($idcounter[$name] ? $idcounter[$name] : '')
|
||||||
|
);
|
||||||
|
|
||||||
$output = '<label class="p-switch"><input name="'.$name.'" type="checkbox" value="'.$value.'" '.($checked ? 'checked="checked"' : '');
|
$output = '<label class="p-switch '.$classParent.'">';
|
||||||
|
$output .= '<input name="'.$name.'" type="checkbox" value="'.$value.'" '.($checked ? 'checked="checked"' : '');
|
||||||
if ($id == '') {
|
if ($id == '') {
|
||||||
$output .= ' id="checkbox-'.$id_aux.'"';
|
$output .= ' id="checkbox-'.$id_aux.'"';
|
||||||
} else {
|
} else {
|
||||||
@ -3621,16 +3661,21 @@ function html_print_timezone_select($name, $selected='')
|
|||||||
* Enclose a text into a result_div
|
* Enclose a text into a result_div
|
||||||
*
|
*
|
||||||
* @param string Text to enclose
|
* @param string Text to enclose
|
||||||
|
* @param boolean Return formatted text without html tags.
|
||||||
*
|
*
|
||||||
* @return string Text inside the result_div
|
* @return string Text inside the result_div
|
||||||
*/
|
*/
|
||||||
function html_print_result_div($text)
|
function html_print_result_div($text, $text_only)
|
||||||
{
|
{
|
||||||
$text = preg_replace('/</', '<', $text);
|
$text = preg_replace('/</', '<', $text);
|
||||||
$text = preg_replace('/>/', '>', $text);
|
$text = preg_replace('/>/', '>', $text);
|
||||||
$text = preg_replace('/\n/i', '<br>', $text);
|
$text = preg_replace('/\n/i', '<br>', $text);
|
||||||
$text = preg_replace('/\s/i', ' ', $text);
|
$text = preg_replace('/\s/i', ' ', $text);
|
||||||
|
|
||||||
|
if ($text_only) {
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
$enclose = "<div id='result_div' style='width: 100%; height: 100%; overflow: auto; padding: 10px; font-size: 14px; line-height: 16px; font-family: mono,monospace; text-align: left'>";
|
$enclose = "<div id='result_div' style='width: 100%; height: 100%; overflow: auto; padding: 10px; font-size: 14px; line-height: 16px; font-family: mono,monospace; text-align: left'>";
|
||||||
$enclose .= $text;
|
$enclose .= $text;
|
||||||
$enclose .= '</div>';
|
$enclose .= '</div>';
|
||||||
@ -3898,7 +3943,9 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
|||||||
$data['name'],
|
$data['name'],
|
||||||
$data['value'],
|
$data['value'],
|
||||||
((isset($data['return']) === true) ? $data['return'] : false),
|
((isset($data['return']) === true) ? $data['return'] : false),
|
||||||
((isset($data['class']) === true) ? $data['class'] : false)
|
((isset($data['class']) === true) ? $data['class'] : false),
|
||||||
|
false,
|
||||||
|
((isset($data['id']) === true) ? $data['id'] : '')
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3999,6 +4046,21 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'select_for_unit':
|
||||||
|
$output .= html_print_extended_select_for_unit(
|
||||||
|
$data['name'],
|
||||||
|
((isset($data['selected']) === true) ? $data['selected'] : ''),
|
||||||
|
((isset($data['script']) === true) ? $data['script'] : ''),
|
||||||
|
((isset($data['nothing']) === true) ? $data['nothing'] : ''),
|
||||||
|
((isset($data['nothing_value']) === true) ? $data['nothing_value'] : '0'),
|
||||||
|
((isset($data['size']) === true) ? $data['size'] : false),
|
||||||
|
((isset($data['return']) === true) ? $data['return'] : false),
|
||||||
|
((isset($data['select_style']) === true) ? $data['select_style'] : false),
|
||||||
|
((isset($data['unique_name']) === true) ? $data['unique_name'] : true),
|
||||||
|
((isset($data['disabled']) === true) ? $data['disabled'] : false),
|
||||||
|
((isset($data['disabled']) === true) ? $data['disabled'] : 0)
|
||||||
|
);
|
||||||
|
|
||||||
case 'submit':
|
case 'submit':
|
||||||
$width = (isset($data['width']) === true) ? 'width: '.$data['width'] : 'width: 100%';
|
$width = (isset($data['width']) === true) ? 'width: '.$data['width'] : 'width: 100%';
|
||||||
$output .= '<'.$wrapper.' class="action-buttons" style="'.$width.'">'.html_print_submit_button(
|
$output .= '<'.$wrapper.' class="action-buttons" style="'.$width.'">'.html_print_submit_button(
|
||||||
|
@ -217,7 +217,7 @@ function io_safe_output_array(&$item, $key=false, $utf8=true)
|
|||||||
* plain ascii file, to render to console, or to put in any kind of data field
|
* plain ascii file, to render to console, or to put in any kind of data field
|
||||||
* who doesn't make the HTML render by itself.
|
* who doesn't make the HTML render by itself.
|
||||||
*
|
*
|
||||||
* @param mixed String or array of strings to be cleaned.
|
* @param string|array $value String or array of strings to be cleaned.
|
||||||
* @param boolean $utf8 Flag, set the output encoding in utf8, by default true.
|
* @param boolean $utf8 Flag, set the output encoding in utf8, by default true.
|
||||||
*
|
*
|
||||||
* @return unknown_type
|
* @return unknown_type
|
||||||
|
@ -311,7 +311,7 @@ function messages_get_message_sent(int $message_id)
|
|||||||
$sql = sprintf(
|
$sql = sprintf(
|
||||||
"SELECT id_usuario_origen, subject, mensaje, timestamp
|
"SELECT id_usuario_origen, subject, mensaje, timestamp
|
||||||
FROM tmensajes
|
FROM tmensajes
|
||||||
WHERE id_usuario_origen='%s' AND id_mensaje=%d",
|
WHERE id_usuario_origen='%s' AND id_mensaje=%d AND hidden_sent = 0",
|
||||||
$config['id_user'],
|
$config['id_user'],
|
||||||
$message_id
|
$message_id
|
||||||
);
|
);
|
||||||
@ -431,7 +431,7 @@ function messages_get_count_sent(string $user='')
|
|||||||
|
|
||||||
$sql = sprintf(
|
$sql = sprintf(
|
||||||
"SELECT COUNT(*)
|
"SELECT COUNT(*)
|
||||||
FROM tmensajes WHERE id_usuario_origen='%s'",
|
FROM tmensajes WHERE id_usuario_origen='%s' AND hidden_sent = 0",
|
||||||
$user
|
$user
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -579,6 +579,17 @@ function messages_get_overview_sent(
|
|||||||
$order .= ' DESC';
|
$order .= ' DESC';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$filter = [
|
||||||
|
'id_usuario_origen' => $config['id_user'],
|
||||||
|
'hidden_sent' => 0,
|
||||||
|
'order' => $order,
|
||||||
|
];
|
||||||
|
|
||||||
|
return db_get_all_rows_filter(
|
||||||
|
'tmensajes',
|
||||||
|
$filter
|
||||||
|
);
|
||||||
|
|
||||||
return db_get_all_rows_field_filter(
|
return db_get_all_rows_field_filter(
|
||||||
'tmensajes',
|
'tmensajes',
|
||||||
'id_usuario_origen',
|
'id_usuario_origen',
|
||||||
@ -661,3 +672,27 @@ function messages_get_url($message_id)
|
|||||||
// Return the message direction.
|
// Return the message direction.
|
||||||
return ui_get_full_url('index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id);
|
return ui_get_full_url('index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes sent message
|
||||||
|
*
|
||||||
|
* @param integer $message_id Message id to get URL.
|
||||||
|
*
|
||||||
|
* @return boolean true when deleted, false in case of error
|
||||||
|
*/
|
||||||
|
function messages_delete_message_sent($id_message)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$ret = db_process_sql_update(
|
||||||
|
'tmensajes',
|
||||||
|
['hidden_sent' => 1],
|
||||||
|
[
|
||||||
|
'id_mensaje' => $id_message,
|
||||||
|
'id_usuario_origen' => $config['id_user'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
@ -3436,7 +3436,7 @@ function get_module_realtime_link_graph($module)
|
|||||||
'agent_alias' => urlencode(modules_get_agentmodule_agent_alias($module['id_agente_modulo'])),
|
'agent_alias' => urlencode(modules_get_agentmodule_agent_alias($module['id_agente_modulo'])),
|
||||||
'module_name' => urlencode($module['nombre']),
|
'module_name' => urlencode($module['nombre']),
|
||||||
'snmp_address' => $module['ip_target'],
|
'snmp_address' => $module['ip_target'],
|
||||||
'snmp_community' => $module['snmp_community'],
|
'snmp_community' => urlencode($module['snmp_community']),
|
||||||
'snmp_oid' => $module['snmp_oid'],
|
'snmp_oid' => $module['snmp_oid'],
|
||||||
'snmp_ver' => $module['tcp_send'],
|
'snmp_ver' => $module['tcp_send'],
|
||||||
'hide_header' => 1,
|
'hide_header' => 1,
|
||||||
|
@ -769,7 +769,7 @@ function netflow_get_relationships_raw_data(
|
|||||||
$command = netflow_get_command($options, $filter);
|
$command = netflow_get_command($options, $filter);
|
||||||
|
|
||||||
// Execute nfdump.
|
// Execute nfdump.
|
||||||
#$command .= ' -q -o csv -n 10000 -s record/bytes -t '.date($nfdump_date_format, $start_date).'-'.date($nfdump_date_format, $end_date);
|
// $command .= ' -q -o csv -n 10000 -s record/bytes -t '.date($nfdump_date_format, $start_date).'-'.date($nfdump_date_format, $end_date);
|
||||||
exec($command, $result);
|
exec($command, $result);
|
||||||
|
|
||||||
if (! is_array($result)) {
|
if (! is_array($result)) {
|
||||||
|
@ -160,7 +160,7 @@ function reporting_make_reporting_data(
|
|||||||
|
|
||||||
$return = [];
|
$return = [];
|
||||||
if (!empty($report)) {
|
if (!empty($report)) {
|
||||||
$contents = $report['contents'];
|
$contents = io_safe_output($report['contents']);
|
||||||
} else {
|
} else {
|
||||||
$report = io_safe_output(db_get_row('treport', 'id_report', $id_report));
|
$report = io_safe_output(db_get_row('treport', 'id_report', $id_report));
|
||||||
$contents = io_safe_output(
|
$contents = io_safe_output(
|
||||||
@ -687,6 +687,13 @@ function reporting_make_reporting_data(
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'last_value':
|
||||||
|
$report['contents'][] = reporting_last_value(
|
||||||
|
$report,
|
||||||
|
$content
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'group_report':
|
case 'group_report':
|
||||||
$report['contents'][] = reporting_group_report(
|
$report['contents'][] = reporting_group_report(
|
||||||
$report,
|
$report,
|
||||||
@ -2236,7 +2243,7 @@ function reporting_inventory($report, $content, $type)
|
|||||||
$es = json_decode($content['external_source'], true);
|
$es = json_decode($content['external_source'], true);
|
||||||
|
|
||||||
$id_agent = $es['id_agents'];
|
$id_agent = $es['id_agents'];
|
||||||
$module_name = $es['inventory_modules'];
|
$module_name = io_safe_input($es['inventory_modules']);
|
||||||
if (empty($module_name)) {
|
if (empty($module_name)) {
|
||||||
$module_name = [0 => 0];
|
$module_name = [0 => 0];
|
||||||
}
|
}
|
||||||
@ -3350,7 +3357,7 @@ function reporting_database_serialized($report, $content)
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Adds string data if there is no numeric data.
|
// Adds string data if there is no numeric data.
|
||||||
if ((count($result) < 0) || (!$result)) {
|
if ($result === false) {
|
||||||
// This query gets information from the default and the historic database.
|
// This query gets information from the default and the historic database.
|
||||||
$result = db_get_all_rows_sql(
|
$result = db_get_all_rows_sql(
|
||||||
'SELECT *
|
'SELECT *
|
||||||
@ -3430,6 +3437,77 @@ function reporting_database_serialized($report, $content)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show last value and state of module.
|
||||||
|
*
|
||||||
|
* @param array $report Data report.
|
||||||
|
* @param array $content Content report.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function reporting_last_value($report, $content)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$return['type'] = 'last_value';
|
||||||
|
|
||||||
|
if (empty($content['name'])) {
|
||||||
|
$content['name'] = __('Last Value');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_metaconsole()) {
|
||||||
|
$id_meta = metaconsole_get_id_server($content['server_name']);
|
||||||
|
$server = metaconsole_get_connection_by_id($id_meta);
|
||||||
|
if (metaconsole_connect($server) != NOERR) {
|
||||||
|
$result = [];
|
||||||
|
return reporting_check_structure_content($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_agent = agents_get_module_id(
|
||||||
|
$content['id_agent_module']
|
||||||
|
);
|
||||||
|
$agent_alias = agents_get_alias($id_agent);
|
||||||
|
$module_name = modules_get_agentmodule_name(
|
||||||
|
$content['id_agent_module']
|
||||||
|
);
|
||||||
|
|
||||||
|
$return['title'] = $content['name'];
|
||||||
|
$return['landscape'] = $content['landscape'];
|
||||||
|
$return['pagebreak'] = $content['pagebreak'];
|
||||||
|
$return['subtitle'] = $agent_alias.' - '.$module_name;
|
||||||
|
$return['description'] = $content['description'];
|
||||||
|
$return['date'] = reporting_get_date_text($report, $content);
|
||||||
|
$return['agent_name_db'] = agents_get_name($id_agent);
|
||||||
|
$return['agent_name'] = $agent_alias;
|
||||||
|
$return['module_name'] = $module_name;
|
||||||
|
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT *
|
||||||
|
FROM tagente_estado
|
||||||
|
WHERE id_agente_modulo = %s',
|
||||||
|
$content['id_agent_module']
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = db_get_row_sql($sql);
|
||||||
|
|
||||||
|
if ($result === false) {
|
||||||
|
$result = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$result['agent_name'] = $agent_alias;
|
||||||
|
$result['module_name'] = $module_name;
|
||||||
|
|
||||||
|
$return['data'] = $result;
|
||||||
|
|
||||||
|
if (is_metaconsole()) {
|
||||||
|
metaconsole_restore_db();
|
||||||
|
}
|
||||||
|
|
||||||
|
return reporting_check_structure_content($return);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function reporting_group_configuration($report, $content)
|
function reporting_group_configuration($report, $content)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
@ -6147,7 +6225,13 @@ function reporting_advanced_sla(
|
|||||||
$time_total += $time_interval;
|
$time_total += $time_interval;
|
||||||
|
|
||||||
if ($time_interval > 0) {
|
if ($time_interval > 0) {
|
||||||
|
if (isset($current_data['type']) === false
|
||||||
|
|| ((int) $current_data['type'] === 0
|
||||||
|
&& $i !== 0)
|
||||||
|
) {
|
||||||
$total_checks++;
|
$total_checks++;
|
||||||
|
}
|
||||||
|
|
||||||
if ((isset($current_data['datos']))
|
if ((isset($current_data['datos']))
|
||||||
&& ($current_data['datos'] !== false)
|
&& ($current_data['datos'] !== false)
|
||||||
) {
|
) {
|
||||||
@ -6159,7 +6243,7 @@ function reporting_advanced_sla(
|
|||||||
$match = preg_match('/'.$max_value.'/', $current_data['datos']);
|
$match = preg_match('/'.$max_value.'/', $current_data['datos']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take notice of $inverse_interval value,
|
// Take notice of $inverse_interval value.
|
||||||
if ($inverse_interval == 0) {
|
if ($inverse_interval == 0) {
|
||||||
$sla_check_value = $match;
|
$sla_check_value = $match;
|
||||||
} else {
|
} else {
|
||||||
@ -6176,22 +6260,44 @@ function reporting_advanced_sla(
|
|||||||
|
|
||||||
// Not unknown nor not init values.
|
// Not unknown nor not init values.
|
||||||
if ($sla_check_value) {
|
if ($sla_check_value) {
|
||||||
|
if (isset($current_data['type']) === false
|
||||||
|
|| ((int) $current_data['type'] === 0
|
||||||
|
&& $i !== 0)
|
||||||
|
) {
|
||||||
$ok_checks++;
|
$ok_checks++;
|
||||||
|
}
|
||||||
|
|
||||||
$time_in_ok += $time_interval;
|
$time_in_ok += $time_interval;
|
||||||
} else {
|
} else {
|
||||||
|
if (isset($current_data['type']) === false
|
||||||
|
|| ((int) $current_data['type'] === 0
|
||||||
|
&& $i !== 0)
|
||||||
|
) {
|
||||||
$bad_checks++;
|
$bad_checks++;
|
||||||
|
}
|
||||||
|
|
||||||
$time_in_error += $time_interval;
|
$time_in_error += $time_interval;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($current_data['datos'] === null) {
|
if ($current_data['datos'] === null) {
|
||||||
$time_in_unknown += $time_interval;
|
$time_in_unknown += $time_interval;
|
||||||
|
if (isset($current_data['type']) === false
|
||||||
|
|| ((int) $current_data['type'] === 0
|
||||||
|
&& $i !== 0)
|
||||||
|
) {
|
||||||
$unknown_checks++;
|
$unknown_checks++;
|
||||||
|
}
|
||||||
} else if ($current_data['datos'] === false) {
|
} else if ($current_data['datos'] === false) {
|
||||||
$time_in_not_init += $time_interval;
|
$time_in_not_init += $time_interval;
|
||||||
|
if (isset($current_data['type']) === false
|
||||||
|
|| ((int) $current_data['type'] === 0
|
||||||
|
&& $i !== 0)
|
||||||
|
) {
|
||||||
$not_init_checks++;
|
$not_init_checks++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($inclusive_downtimes == 1) {
|
if ($inclusive_downtimes == 1) {
|
||||||
if ($wt_check['wt_in_downtime']) {
|
if ($wt_check['wt_in_downtime']) {
|
||||||
|
@ -335,6 +335,10 @@ function reporting_html_print_report($report, $mini=false, $report_info=1)
|
|||||||
reporting_html_database_serialized($table, $item);
|
reporting_html_database_serialized($table, $item);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'last_value':
|
||||||
|
reporting_html_last_value($table, $item);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'group_report':
|
case 'group_report':
|
||||||
reporting_html_group_report($table, $item);
|
reporting_html_group_report($table, $item);
|
||||||
break;
|
break;
|
||||||
@ -2142,10 +2146,33 @@ function reporting_html_historical_data($table, $item, $pdf=0)
|
|||||||
$table1->data = [];
|
$table1->data = [];
|
||||||
foreach ($item['data'] as $data) {
|
foreach ($item['data'] as $data) {
|
||||||
if (!is_numeric($data[__('Data')])) {
|
if (!is_numeric($data[__('Data')])) {
|
||||||
|
if (is_snapshot_data($data[__('Data')])) {
|
||||||
|
if ($config['command_snapshot']) {
|
||||||
|
$row = [
|
||||||
|
$data[__('Date')],
|
||||||
|
'<img style="width:300px" src="'.io_safe_input($data[__('Data')]).'"></a>',
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$row = [
|
||||||
|
$data[__('Date')],
|
||||||
|
wordwrap(io_safe_input($data[__('Data')]), 60, "<br>\n", true),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Command line snapshot.
|
||||||
|
if (is_text_to_black_string($data[__('Data')])) {
|
||||||
|
$table1->style[1] = 'text-align: left; font-family: monospace, mono';
|
||||||
|
$row = [
|
||||||
|
$data[__('Date')],
|
||||||
|
'<pre>'.$data[__('Data')].'</pre>',
|
||||||
|
];
|
||||||
|
} else {
|
||||||
$row = [
|
$row = [
|
||||||
$data[__('Date')],
|
$data[__('Date')],
|
||||||
$data[__('Data')],
|
$data[__('Data')],
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$row = [
|
$row = [
|
||||||
$data[__('Date')],
|
$data[__('Date')],
|
||||||
@ -2156,6 +2183,80 @@ function reporting_html_historical_data($table, $item, $pdf=0)
|
|||||||
$table1->data[] = $row;
|
$table1->data[] = $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($pdf === 0) {
|
||||||
|
$table->colspan['database_serialized']['cell'] = 3;
|
||||||
|
$table->cellstyle['database_serialized']['cell'] = 'text-align: center;';
|
||||||
|
$table->data['database_serialized']['cell'] = html_print_table(
|
||||||
|
$table1,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
return html_print_table($table, true);
|
||||||
|
} else {
|
||||||
|
$table1->title = $item['title'];
|
||||||
|
$table1->titleclass = 'title_table_pdf';
|
||||||
|
$table1->titlestyle = 'text-align:left;';
|
||||||
|
|
||||||
|
return html_print_table($table1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It displays an item in the table format report from
|
||||||
|
* the data stored within the table named 'tagente_datos_stringin'
|
||||||
|
* the Pandora FMS Database.
|
||||||
|
* For it, the agent should serialize the data separating
|
||||||
|
* them with a line-separating character and another
|
||||||
|
* which separates the fields. All lines should contain all fields.
|
||||||
|
*
|
||||||
|
* @param object $table Head table or false if it comes from pdf.
|
||||||
|
* @param array $item Items data.
|
||||||
|
* @param boolean $pdf If it comes from pdf.
|
||||||
|
*
|
||||||
|
* @return html
|
||||||
|
*/
|
||||||
|
function reporting_html_database_serialized($table, $item, $pdf=0)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$table1 = new stdClass();
|
||||||
|
$table1->width = '100%';
|
||||||
|
$table1->head = [
|
||||||
|
__('Date'),
|
||||||
|
__('Data'),
|
||||||
|
];
|
||||||
|
if (!empty($item['keys'])) {
|
||||||
|
$table1->head = array_merge($table1->head, $item['keys']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$table1->style[0] = 'text-align: center';
|
||||||
|
|
||||||
|
$table1->data = [];
|
||||||
|
foreach ($item['data'] as $data) {
|
||||||
|
foreach ($data['data'] as $data_unserialized) {
|
||||||
|
$row = [$data['date']];
|
||||||
|
foreach ($data_unserialized as $key => $data_value) {
|
||||||
|
if (is_snapshot_data($data_unserialized[$key])) {
|
||||||
|
if ($config['command_snapshot']) {
|
||||||
|
$data_unserialized[$key] = '<img style="width:300px" src="'.io_safe_input($data_value).'"></a>';
|
||||||
|
} else {
|
||||||
|
$data_unserialized[$key] = wordwrap(io_safe_input($data_value), 60, "<br>\n", true);
|
||||||
|
}
|
||||||
|
} else if (is_text_to_black_string($data_unserialized[$key])) {
|
||||||
|
$table1->style[1] = 'white-space: pre-wrap;';
|
||||||
|
$table1->style[1] .= 'font-family: monospace, mono; ';
|
||||||
|
$table1->style[1] .= 'text-align: left';
|
||||||
|
$data_unserialized[$key] = '<pre>'.$data_value.'</pre>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$row = array_merge($row, $data_unserialized);
|
||||||
|
$table1->data[] = $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($pdf === 0) {
|
if ($pdf === 0) {
|
||||||
$table->colspan['database_serialized']['cell'] = 3;
|
$table->colspan['database_serialized']['cell'] = 3;
|
||||||
$table->cellstyle['database_serialized']['cell'] = 'text-align: center;';
|
$table->cellstyle['database_serialized']['cell'] = 'text-align: center;';
|
||||||
@ -2176,12 +2277,7 @@ function reporting_html_historical_data($table, $item, $pdf=0)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It displays an item in the table format report from
|
* Show last value and state of module.
|
||||||
* the data stored within the table named 'tagente_datos_stringin'
|
|
||||||
* the Pandora FMS Database.
|
|
||||||
* For it, the agent should serialize the data separating
|
|
||||||
* them with a line-separating character and another
|
|
||||||
* which separates the fields. All lines should contain all fields.
|
|
||||||
*
|
*
|
||||||
* @param object $table Head table or false if it comes from pdf.
|
* @param object $table Head table or false if it comes from pdf.
|
||||||
* @param array $item Items data.
|
* @param array $item Items data.
|
||||||
@ -2189,45 +2285,147 @@ function reporting_html_historical_data($table, $item, $pdf=0)
|
|||||||
*
|
*
|
||||||
* @return html
|
* @return html
|
||||||
*/
|
*/
|
||||||
function reporting_html_database_serialized($table, $item, $pdf=0)
|
function reporting_html_last_value($table, $item, $pdf=0)
|
||||||
{
|
{
|
||||||
$table1 = new stdClass();
|
global $config;
|
||||||
$table1->width = '100%';
|
|
||||||
$table1->head = [
|
if (empty($item['data']) === false) {
|
||||||
|
$table_data = new stdClass();
|
||||||
|
$table_data->width = '100%';
|
||||||
|
$table_data->headstyle = [];
|
||||||
|
$table_data->headstyle[0] = 'text-align: left;';
|
||||||
|
$table_data->style = [];
|
||||||
|
$table_data->style[0] = 'text-align: left;';
|
||||||
|
$table_data->head = [
|
||||||
|
__('Name'),
|
||||||
__('Date'),
|
__('Date'),
|
||||||
__('Data'),
|
__('Data'),
|
||||||
|
__('Status'),
|
||||||
];
|
];
|
||||||
if (!empty($item['keys'])) {
|
|
||||||
$table1->head = array_merge($table1->head, $item['keys']);
|
$table_data->data = [];
|
||||||
|
$table_data->data[1][0] = $item['data']['agent_name'];
|
||||||
|
$table_data->data[1][0] .= ' / ';
|
||||||
|
$table_data->data[1][0] .= $item['data']['module_name'];
|
||||||
|
|
||||||
|
$table_data->data[1][1] = date(
|
||||||
|
'Y-m-d H:i:s',
|
||||||
|
$item['data']['utimestamp']
|
||||||
|
);
|
||||||
|
$table_data->data[1][2] = remove_right_zeros(
|
||||||
|
number_format(
|
||||||
|
$item['data']['datos'],
|
||||||
|
$config['graph_precision']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
switch ($item['data']['estado']) {
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_critical.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_WARNING:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_warning.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_UNKNOWN:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_unknown.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
||||||
|
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_alertsfired.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_no_data.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL:
|
||||||
|
$img_status = ui_print_status_image(
|
||||||
|
'module_ok.png',
|
||||||
|
$item['data']['datos'],
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '50px',
|
||||||
|
'height' => '20px',
|
||||||
|
'style' => 'border-radius:5px;',
|
||||||
|
],
|
||||||
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$table1->style[0] = 'text-align: center';
|
$table_data->data[1][3] = $img_status;
|
||||||
|
|
||||||
$table1->data = [];
|
|
||||||
foreach ($item['data'] as $data) {
|
|
||||||
foreach ($data['data'] as $data_unserialied) {
|
|
||||||
$row = [$data['date']];
|
|
||||||
$row = array_merge($row, $data_unserialied);
|
|
||||||
$table1->data[] = $row;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($pdf === 0) {
|
if ($pdf === 0) {
|
||||||
$table->colspan['database_serialized']['cell'] = 3;
|
$table->colspan['last_value']['cell'] = 3;
|
||||||
$table->cellstyle['database_serialized']['cell'] = 'text-align: center;';
|
$table->cellstyle['last_value']['cell'] = 'text-align: center;';
|
||||||
$table->data['database_serialized']['cell'] = html_print_table(
|
$table->data['last_value']['cell'] = html_print_table(
|
||||||
$table1,
|
$table_data,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$table1->title = $item['title'];
|
|
||||||
$table1->titleclass = 'title_table_pdf';
|
|
||||||
$table1->titlestyle = 'text-align:left;';
|
|
||||||
return html_print_table(
|
return html_print_table(
|
||||||
$table1,
|
$table_data,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// TODO:XXX
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -746,6 +746,10 @@ function reports_get_report_types($template=false, $not_editor=false)
|
|||||||
'optgroup' => __('Modules'),
|
'optgroup' => __('Modules'),
|
||||||
'name' => __('Increment'),
|
'name' => __('Increment'),
|
||||||
];
|
];
|
||||||
|
$types['last_value'] = [
|
||||||
|
'optgroup' => __('Modules'),
|
||||||
|
'name' => __('Last value'),
|
||||||
|
];
|
||||||
|
|
||||||
$types['general'] = [
|
$types['general'] = [
|
||||||
'optgroup' => __('Grouped'),
|
'optgroup' => __('Grouped'),
|
||||||
|
@ -455,3 +455,61 @@ function print_snmp_tags_active_filters($filter_resume=[])
|
|||||||
ui_print_tags_view($title, $tags_set);
|
ui_print_tags_view($title, $tags_set);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retunr module type for snmp data type
|
||||||
|
*
|
||||||
|
* @param [type] $snmp_data_type
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function snmp_module_get_type(string $snmp_data_type)
|
||||||
|
{
|
||||||
|
if (preg_match('/INTEGER/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/Integer32/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/octect string/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/bits/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/object identifier/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
} else if (preg_match('/IpAddress/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
} else if (preg_match('/Counter/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_inc';
|
||||||
|
} else if (preg_match('/Counter32/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_inc';
|
||||||
|
} else if (preg_match('/Gauge/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/Gauge32/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/Gauge64/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/Unsigned32/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_inc';
|
||||||
|
} else if (preg_match('/TimeTicks/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/Opaque/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
} else if (preg_match('/Counter64/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_inc';
|
||||||
|
} else if (preg_match('/UInteger32/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
} else if (preg_match('/BIT STRING/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
} else if (preg_match('/STRING/i', $snmp_data_type)) {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
} else {
|
||||||
|
$type = 'remote_snmp_string';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$type) {
|
||||||
|
$type = 'remote_snmp';
|
||||||
|
}
|
||||||
|
|
||||||
|
$type_id = modules_get_type_id($type);
|
||||||
|
|
||||||
|
return $type_id;
|
||||||
|
}
|
||||||
|
@ -159,7 +159,7 @@ function snmp_browser_get_html_tree(
|
|||||||
$status = (!empty($checked) && isset($checked[$level]));
|
$status = (!empty($checked) && isset($checked[$level]));
|
||||||
$output .= html_print_checkbox($checkbox_name, 0, $status, true, false, '').' <span>'.$level.'</span>';
|
$output .= html_print_checkbox($checkbox_name, 0, $status, true, false, '').' <span>'.$level.'</span>';
|
||||||
if (isset($sub_level['__VALUE__'])) {
|
if (isset($sub_level['__VALUE__'])) {
|
||||||
$output .= '<span class="value" style="display: none;"> = '.$sub_level['__VALUE__'].'</span>';
|
$output .= '<span class="value" style="display: none;"> = '.io_safe_input($sub_level['__VALUE__']).'</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$output .= '</li>';
|
$output .= '</li>';
|
||||||
@ -301,7 +301,7 @@ function snmp_browser_get_tree(
|
|||||||
$snmp3_auth_pass,
|
$snmp3_auth_pass,
|
||||||
$snmp3_privacy_method,
|
$snmp3_privacy_method,
|
||||||
$snmp3_privacy_pass,
|
$snmp3_privacy_pass,
|
||||||
$community,
|
'',
|
||||||
$snmp3_context_engine_id
|
$snmp3_context_engine_id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -945,6 +945,12 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
$description = io_safe_input(preg_replace('/\s+/', ' ', $oid['description']));
|
$description = io_safe_input(preg_replace('/\s+/', ' ', $oid['description']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($oid['type'])) {
|
||||||
|
$module_type = snmp_module_get_type($oid['type']);
|
||||||
|
} else {
|
||||||
|
$module_type = 17;
|
||||||
|
}
|
||||||
|
|
||||||
if ($module_target == 'network_component') {
|
if ($module_target == 'network_component') {
|
||||||
$name_check = db_get_value(
|
$name_check = db_get_value(
|
||||||
'name',
|
'name',
|
||||||
@ -956,7 +962,7 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
if (!$name_check) {
|
if (!$name_check) {
|
||||||
$id = network_components_create_network_component(
|
$id = network_components_create_network_component(
|
||||||
$oid['oid'],
|
$oid['oid'],
|
||||||
17,
|
$module_type,
|
||||||
1,
|
1,
|
||||||
[
|
[
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
@ -1009,12 +1015,13 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
'min_ff_event_critical' => 0,
|
'min_ff_event_critical' => 0,
|
||||||
'ff_type' => 0,
|
'ff_type' => 0,
|
||||||
'each_ff' => 0,
|
'each_ff' => 0,
|
||||||
|
'history_data' => 1,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if ($module_target == 'agent') {
|
} else if ($module_target == 'agent') {
|
||||||
$values = [
|
$values = [
|
||||||
'id_tipo_modulo' => 17,
|
'id_tipo_modulo' => $module_type,
|
||||||
'descripcion' => $description,
|
'descripcion' => $description,
|
||||||
'module_interval' => 300,
|
'module_interval' => 300,
|
||||||
'max' => 0,
|
'max' => 0,
|
||||||
@ -1065,6 +1072,7 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
'ff_type' => 0,
|
'ff_type' => 0,
|
||||||
'each_ff' => 0,
|
'each_ff' => 0,
|
||||||
'ip_target' => $target_ip,
|
'ip_target' => $target_ip,
|
||||||
|
'history_data' => 1,
|
||||||
];
|
];
|
||||||
foreach ($id_target as $agent) {
|
foreach ($id_target as $agent) {
|
||||||
$ids[] = modules_create_agent_module($agent, $oid['oid'], $values);
|
$ids[] = modules_create_agent_module($agent, $oid['oid'], $values);
|
||||||
@ -1073,7 +1081,7 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
// Policies only in enterprise version.
|
// Policies only in enterprise version.
|
||||||
if (enterprise_installed()) {
|
if (enterprise_installed()) {
|
||||||
$values = [
|
$values = [
|
||||||
'id_tipo_modulo' => 17,
|
'id_tipo_modulo' => $module_type,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'module_interval' => 300,
|
'module_interval' => 300,
|
||||||
'max' => 0,
|
'max' => 0,
|
||||||
@ -1123,6 +1131,7 @@ function snmp_browser_create_modules_snmp(string $module_target, array $snmp_val
|
|||||||
'each_ff' => 0,
|
'each_ff' => 0,
|
||||||
'ip_target' => $target_ip,
|
'ip_target' => $target_ip,
|
||||||
'configuration_data' => '',
|
'configuration_data' => '',
|
||||||
|
'history_data' => 1,
|
||||||
];
|
];
|
||||||
|
|
||||||
enterprise_include_once('include/functions_policies.php');
|
enterprise_include_once('include/functions_policies.php');
|
||||||
|
@ -321,7 +321,7 @@ function ui_print_message($message, $class='', $attributes='', $return=false, $t
|
|||||||
$output = '<table cellspacing="0" cellpadding="0" id="'.$id.'" '.$attributes.'
|
$output = '<table cellspacing="0" cellpadding="0" id="'.$id.'" '.$attributes.'
|
||||||
class="info_box '.$id.' '.$class.' textodialogo" style="'.$force_style.'">
|
class="info_box '.$id.' '.$class.' textodialogo" style="'.$force_style.'">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="icon" rowspan="2" style="padding-right: 10px; padding-top: 3px;">'.html_print_image($icon_image, true, false, false, false, false).'</td>
|
<td class="icon" rowspan="2" style="padding-right: 10px; padding-top: 3px; vertical-align: top;">'.html_print_image($icon_image, true, false, false, false, false).'</td>
|
||||||
<td class="title" style="text-transform: uppercase; padding-top: 10px;"><b>'.$text_title.'</b></td>
|
<td class="title" style="text-transform: uppercase; padding-top: 10px;"><b>'.$text_title.'</b></td>
|
||||||
<td class="icon" style="text-align: right; padding-right: 3px;">';
|
<td class="icon" style="text-align: right; padding-right: 3px;">';
|
||||||
if (!$no_close_bool) {
|
if (!$no_close_bool) {
|
||||||
@ -3749,13 +3749,27 @@ function ui_toggle(
|
|||||||
$main_class='box-shadow white_table_graph',
|
$main_class='box-shadow white_table_graph',
|
||||||
$img_a='images/arrow_down_green.png',
|
$img_a='images/arrow_down_green.png',
|
||||||
$img_b='images/arrow_right_green.png',
|
$img_b='images/arrow_right_green.png',
|
||||||
$clean=false
|
$clean=false,
|
||||||
|
$reverseImg=false,
|
||||||
|
$switch=false,
|
||||||
|
$attributes_switch=''
|
||||||
) {
|
) {
|
||||||
// Generate unique Id.
|
// Generate unique Id.
|
||||||
$uniqid = uniqid('');
|
$uniqid = uniqid('');
|
||||||
|
|
||||||
$image_a = html_print_image($img_a, true, [ 'style' => 'object-fit: contain;' ], true);
|
$image_a = html_print_image(
|
||||||
$image_b = html_print_image($img_b, true, [ 'style' => 'object-fit: contain;' ], true);
|
$img_a,
|
||||||
|
true,
|
||||||
|
[ 'style' => 'object-fit: contain;' ],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$image_b = html_print_image(
|
||||||
|
$img_b,
|
||||||
|
true,
|
||||||
|
[ 'style' => 'object-fit: contain;' ],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
// Options.
|
// Options.
|
||||||
if ($hidden_default) {
|
if ($hidden_default) {
|
||||||
$style = 'display:none';
|
$style = 'display:none';
|
||||||
@ -3775,18 +3789,71 @@ function ui_toggle(
|
|||||||
|
|
||||||
// Link to toggle.
|
// Link to toggle.
|
||||||
$output = '<div class="'.$main_class.'" id="'.$id.'">';
|
$output = '<div class="'.$main_class.'" id="'.$id.'">';
|
||||||
$output .= '<div class="'.$header_class.'" style="cursor: pointer;" id="tgl_ctrl_'.$uniqid.'">'.html_print_image(
|
$output .= '<div class="'.$header_class.'" style="cursor: pointer;" id="tgl_ctrl_'.$uniqid.'">';
|
||||||
|
if ($reverseImg === false) {
|
||||||
|
if ($switch === true) {
|
||||||
|
$output .= html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'float-left',
|
||||||
|
'content' => html_print_checkbox_switch_extended(
|
||||||
|
'box_enable_toggle'.$uniqid,
|
||||||
|
1,
|
||||||
|
($hidden_default === true) ? 0 : 1,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
$attributes_switch,
|
||||||
|
true
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$output .= html_print_image(
|
||||||
$original,
|
$original,
|
||||||
true,
|
true,
|
||||||
[
|
[
|
||||||
'style' => 'object-fit: contain;',
|
'style' => 'object-fit: contain; float:right; margin-right:10px;',
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
'id' => 'image_'.$uniqid,
|
'id' => 'image_'.$uniqid,
|
||||||
]
|
]
|
||||||
).' <b>'.$name.'</b></div>';
|
);
|
||||||
// $output .= '<br />';
|
}
|
||||||
// if (!defined("METACONSOLE"))
|
|
||||||
// $output .= '<br />';
|
$output .= '  ';
|
||||||
|
$output .= '<b>'.$name.'</b>';
|
||||||
|
} else {
|
||||||
|
$output .= $name;
|
||||||
|
if ($switch === true) {
|
||||||
|
$output .= html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'float-left',
|
||||||
|
'content' => html_print_checkbox_switch_extended(
|
||||||
|
'box_enable_toggle'.$uniqid,
|
||||||
|
1,
|
||||||
|
($hidden_default === true) ? 0 : 1,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$output .= html_print_image(
|
||||||
|
$original,
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'style' => 'object-fit: contain; float:right; margin-right:10px;',
|
||||||
|
'title' => $title,
|
||||||
|
'id' => 'image_'.$uniqid,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= '</div>';
|
||||||
|
|
||||||
// Code into a div
|
// Code into a div
|
||||||
$output .= "<div id='tgl_div_".$uniqid."' style='".$style.";margin-top: -1px;' class='".$toggle_class."'>\n";
|
$output .= "<div id='tgl_div_".$uniqid."' style='".$style.";margin-top: -1px;' class='".$toggle_class."'>\n";
|
||||||
$output .= '<div class="'.$container_class.'">';
|
$output .= '<div class="'.$container_class.'">';
|
||||||
@ -3799,16 +3866,28 @@ function ui_toggle(
|
|||||||
$output .= ' var hide_tgl_ctrl_'.$uniqid.' = '.(int) $hidden_default.";\n";
|
$output .= ' var hide_tgl_ctrl_'.$uniqid.' = '.(int) $hidden_default.";\n";
|
||||||
$output .= ' /* <![CDATA[ */'."\n";
|
$output .= ' /* <![CDATA[ */'."\n";
|
||||||
$output .= " $(document).ready (function () {\n";
|
$output .= " $(document).ready (function () {\n";
|
||||||
|
$output .= " $('#checkbox-box_enable_toggle".$uniqid."').click(function() {\n";
|
||||||
|
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
||||||
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
||||||
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
||||||
|
$output .= " }\n";
|
||||||
|
$output .= " else {\n";
|
||||||
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
||||||
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
||||||
|
$output .= " }\n";
|
||||||
|
$output .= " });\n";
|
||||||
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
|
$output .= " $('#tgl_ctrl_".$uniqid."').click(function() {\n";
|
||||||
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
$output .= ' if (hide_tgl_ctrl_'.$uniqid.") {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 0;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
||||||
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_a."'});\n";
|
||||||
|
$output .= " $('#checkbox-box_enable_toggle".$uniqid."').prop('checked', true);\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " else {\n";
|
$output .= " else {\n";
|
||||||
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
$output .= ' hide_tgl_ctrl_'.$uniqid." = 1;\n";
|
||||||
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
$output .= " $('#tgl_div_".$uniqid."').toggle();\n";
|
||||||
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
|
$output .= " $('#image_".$uniqid."').attr({src: '".$image_b."'});\n";
|
||||||
|
$output .= " $('#checkbox-box_enable_toggle".$uniqid."').prop('checked', false);\n";
|
||||||
$output .= " }\n";
|
$output .= " }\n";
|
||||||
$output .= " });\n";
|
$output .= " });\n";
|
||||||
$output .= " });\n";
|
$output .= " });\n";
|
||||||
|
@ -3220,13 +3220,9 @@ function visual_map_get_image_status_element($layoutData, $status=false)
|
|||||||
|
|
||||||
switch ($status) {
|
switch ($status) {
|
||||||
case 1:
|
case 1:
|
||||||
// Critical (BAD).
|
|
||||||
$img .= '_bad.png';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
// Critical (ALERT).
|
// Critical or critical alert (BAD).
|
||||||
$img = '4'.$img.'_bad.png';
|
$img .= '_bad.png';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
@ -3235,13 +3231,9 @@ function visual_map_get_image_status_element($layoutData, $status=false)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
// Warning.
|
|
||||||
$img .= '_warning.png';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
// Warning (ALERT).
|
// Warning or warning alert.
|
||||||
$img = '4'.$img.'_warning.png';
|
$img .= '_warning.png';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
@ -4075,6 +4067,7 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0)
|
|||||||
case 'default':
|
case 'default':
|
||||||
$num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT];
|
$num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT];
|
||||||
$num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD];
|
$num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD];
|
||||||
|
$num_items_warning_alert = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT];
|
||||||
$num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING];
|
$num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING];
|
||||||
$num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN];
|
$num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN];
|
||||||
|
|
||||||
@ -4082,6 +4075,8 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0)
|
|||||||
return VISUAL_MAP_STATUS_CRITICAL_ALERT;
|
return VISUAL_MAP_STATUS_CRITICAL_ALERT;
|
||||||
} else if ($num_items_critical > 0) {
|
} else if ($num_items_critical > 0) {
|
||||||
return VISUAL_MAP_STATUS_CRITICAL_BAD;
|
return VISUAL_MAP_STATUS_CRITICAL_BAD;
|
||||||
|
} else if ($num_items_warning_alert > 0) {
|
||||||
|
return VISUAL_MAP_STATUS_WARNING_ALERT;
|
||||||
} else if ($num_items_warning > 0) {
|
} else if ($num_items_warning > 0) {
|
||||||
return VISUAL_MAP_STATUS_WARNING;
|
return VISUAL_MAP_STATUS_WARNING;
|
||||||
} else if ($num_items_unknown > 0) {
|
} else if ($num_items_unknown > 0) {
|
||||||
@ -4095,17 +4090,18 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0)
|
|||||||
$num_items = count($valid_layout_items);
|
$num_items = count($valid_layout_items);
|
||||||
$num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT];
|
$num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT];
|
||||||
$num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD];
|
$num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD];
|
||||||
|
$num_items_warning_alert = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT];
|
||||||
$num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING];
|
$num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING];
|
||||||
$num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN];
|
$num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN];
|
||||||
|
|
||||||
if ($num_items_critical > 0
|
if (($num_items_critical > 0 || $num_items_critical_alert > 0)
|
||||||
&& ((($num_items_critical_alert + $num_items_critical) * 100) / $num_items) >= $weight
|
&& ((($num_items_critical_alert + $num_items_critical) * 100) / $num_items) >= $weight
|
||||||
) {
|
) {
|
||||||
return ($num_items_critical_alert > 0) ? VISUAL_MAP_STATUS_CRITICAL_ALERT : VISUAL_MAP_STATUS_CRITICAL_BAD;
|
return ($num_items_critical_alert > 0) ? VISUAL_MAP_STATUS_CRITICAL_ALERT : VISUAL_MAP_STATUS_CRITICAL_BAD;
|
||||||
} else if ($num_items_warning > 0
|
} else if (($num_items_warning > 0 || $num_items_warning_alert > 0)
|
||||||
&& (($num_items_warning * 100) / $num_items) >= $weight
|
&& (($num_items_warning_alert + $num_items_warning * 100) / $num_items) >= $weight
|
||||||
) {
|
) {
|
||||||
return VISUAL_MAP_STATUS_WARNING;
|
return ($num_items_warning_alert > 0) ? VISUAL_MAP_STATUS_WARNING_ALERT : VISUAL_MAP_STATUS_WARNING;
|
||||||
} else if ($num_items_unknown > 0
|
} else if ($num_items_unknown > 0
|
||||||
&& (($num_items_unknown * 100) / $num_items) >= $weight
|
&& (($num_items_unknown * 100) / $num_items) >= $weight
|
||||||
) {
|
) {
|
||||||
@ -4119,9 +4115,12 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0)
|
|||||||
$num_items_critical = ($num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD] + $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT]);
|
$num_items_critical = ($num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD] + $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT]);
|
||||||
$critical_percentage = (($num_items_critical * 100) / count($valid_layout_items));
|
$critical_percentage = (($num_items_critical * 100) / count($valid_layout_items));
|
||||||
|
|
||||||
if ($critical_percentage >= $status_data['linked_layout_status_as_service_critical']) {
|
$num_items_warning = ($num_elements_by_status[VISUAL_MAP_STATUS_WARNING] + $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT]);
|
||||||
|
$warning_percentage = (($num_items_warning * 100) / count($valid_layout_items));
|
||||||
|
|
||||||
|
if ($critical_percentage >= $status_data['linked_layout_status_as_service_critical'] && $critical_percentage !== 0) {
|
||||||
return VISUAL_MAP_STATUS_CRITICAL_BAD;
|
return VISUAL_MAP_STATUS_CRITICAL_BAD;
|
||||||
} else if ($critical_percentage >= $status_data['linked_layout_status_as_service_warning']) {
|
} else if ($critical_percentage >= $status_data['linked_layout_status_as_service_warning'] && $warning_percentage !== 0) {
|
||||||
return VISUAL_MAP_STATUS_WARNING;
|
return VISUAL_MAP_STATUS_WARNING;
|
||||||
} else {
|
} else {
|
||||||
return VISUAL_MAP_STATUS_NORMAL;
|
return VISUAL_MAP_STATUS_NORMAL;
|
||||||
|
@ -139,7 +139,13 @@ function flot_area_graph(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Parent layer.
|
// Parent layer.
|
||||||
$return = "<div class='parent_graph' style='width: ".$params['width'].'px;'.$background_style."'>";
|
if (strpos($params['width'], '%') === false) {
|
||||||
|
$width = 'width: '.$params['width'].'px;';
|
||||||
|
} else {
|
||||||
|
$width = 'width: '.$params['width'].';';
|
||||||
|
}
|
||||||
|
|
||||||
|
$return = "<div class='parent_graph' style='".$width.$background_style."'>";
|
||||||
|
|
||||||
if ($params['title'] === true && empty($params['title']) === false) {
|
if ($params['title'] === true && empty($params['title']) === false) {
|
||||||
$return .= '<p style="text-align:center;">'.$params['title'].'</p>';
|
$return .= '<p style="text-align:center;">'.$params['title'].'</p>';
|
||||||
@ -226,14 +232,13 @@ function flot_area_graph(
|
|||||||
$config['custom_graph_width'],
|
$config['custom_graph_width'],
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
/*
|
|
||||||
$return .= "<div id='timestamp_$graph_id'
|
$return .= "<div id='timestamp_$graph_id'
|
||||||
class='timestamp_graph'
|
class='timestamp_graph'
|
||||||
style='font-size:".$params['font_size']."pt;
|
style='font-size:".$params['font_size']."pt;
|
||||||
display:none; position:absolute;
|
display:none; position:absolute;
|
||||||
background:#fff; border: solid 1px #aaa;
|
background:#fff; border: solid 1px #aaa;
|
||||||
padding: 2px; z-index:1000;'></div>";
|
padding: 2px; z-index:1000;
|
||||||
*/
|
'></div>";
|
||||||
$return .= "<div id='$graph_id' class='";
|
$return .= "<div id='$graph_id' class='";
|
||||||
|
|
||||||
if ($params['type'] == 'area_simple') {
|
if ($params['type'] == 'area_simple') {
|
||||||
|
@ -844,7 +844,7 @@ function post_process_select_events(name) {
|
|||||||
function period_select_init(name, allow_zero) {
|
function period_select_init(name, allow_zero) {
|
||||||
// Manual mode is hidden by default
|
// Manual mode is hidden by default
|
||||||
$("#" + name + "_manual").css("display", "none");
|
$("#" + name + "_manual").css("display", "none");
|
||||||
$("#" + name + "_default").css("display", "flex");
|
$("#" + name + "_default").css("display", "inline");
|
||||||
|
|
||||||
// If the text input is empty, we put on it 5 minutes by default
|
// If the text input is empty, we put on it 5 minutes by default
|
||||||
if ($("#text-" + name + "_text").val() == "") {
|
if ($("#text-" + name + "_text").val() == "") {
|
||||||
@ -858,7 +858,7 @@ function period_select_init(name, allow_zero) {
|
|||||||
}
|
}
|
||||||
} else if ($("#text-" + name + "_text").val() == 0 && allow_zero != true) {
|
} else if ($("#text-" + name + "_text").val() == 0 && allow_zero != true) {
|
||||||
$("#" + name + "_units option:last").prop("selected", false);
|
$("#" + name + "_units option:last").prop("selected", false);
|
||||||
$("#" + name + "_manual").css("display", "flex");
|
$("#" + name + "_manual").css("display", "inline");
|
||||||
$("#" + name + "_default").css("display", "none");
|
$("#" + name + "_default").css("display", "none");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -947,13 +947,13 @@ function selectFirst(name) {
|
|||||||
*/
|
*/
|
||||||
function toggleBoth(name) {
|
function toggleBoth(name) {
|
||||||
if ($("#" + name + "_default").css("display") == "none") {
|
if ($("#" + name + "_default").css("display") == "none") {
|
||||||
$("#" + name + "_default").css("display", "flex");
|
$("#" + name + "_default").css("display", "inline");
|
||||||
} else {
|
} else {
|
||||||
$("#" + name + "_default").css("display", "none");
|
$("#" + name + "_default").css("display", "none");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($("#" + name + "_manual").css("display") == "none") {
|
if ($("#" + name + "_manual").css("display") == "none") {
|
||||||
$("#" + name + "_manual").css("display", "flex");
|
$("#" + name + "_manual").css("display", "inline");
|
||||||
} else {
|
} else {
|
||||||
$("#" + name + "_manual").css("display", "none");
|
$("#" + name + "_manual").css("display", "none");
|
||||||
}
|
}
|
||||||
|
@ -1322,3 +1322,308 @@ function filterByText(selectbox, textbox, textNoData) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Manage network component oid field generation.
|
||||||
|
function manageComponentFields(action, type) {
|
||||||
|
var fieldLines = $("tr[id*=network_component-" + type + "]").length;
|
||||||
|
var protocol = $("#module_protocol").val();
|
||||||
|
if (action === "add") {
|
||||||
|
let lineNumber = fieldLines + 1;
|
||||||
|
let textForAdd =
|
||||||
|
type === "oid-list-pluginRow-snmpRow"
|
||||||
|
? "_oid_" + lineNumber + "_"
|
||||||
|
: lineNumber;
|
||||||
|
|
||||||
|
$("#network_component-manage-" + type).before(
|
||||||
|
$("#network_component-" + type + "-row-1")
|
||||||
|
.clone()
|
||||||
|
.attr("id", "network_component-" + type + "-row-" + lineNumber)
|
||||||
|
);
|
||||||
|
|
||||||
|
$("#network_component-" + type + "-row-" + lineNumber + " input")
|
||||||
|
.attr("name", "extra_field_" + protocol + "_" + lineNumber)
|
||||||
|
.attr("id", "extra_field_" + protocol + "_" + lineNumber);
|
||||||
|
|
||||||
|
$("#network_component-" + type + "-row-" + lineNumber + " td div").html(
|
||||||
|
textForAdd
|
||||||
|
);
|
||||||
|
|
||||||
|
$("#del_field_button")
|
||||||
|
.attr("style", "opacity: 1;")
|
||||||
|
.addClass("clickable");
|
||||||
|
} else if (action === "del") {
|
||||||
|
if (fieldLines >= 2) {
|
||||||
|
$("#network_component-" + type + "-row-" + fieldLines).remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fieldLines == 2) {
|
||||||
|
$("#del_field_button")
|
||||||
|
.attr("style", "opacity: 0.5;")
|
||||||
|
.removeClass("clickable");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change module type and show/hide the fields needed.
|
||||||
|
function changeModuleType() {
|
||||||
|
var executionType = $("#execution_type").val();
|
||||||
|
var moduleSelected = $("#module_type").val();
|
||||||
|
var moduleProtocol = $("#module_protocol").val();
|
||||||
|
var typeField, toNone, toBlock;
|
||||||
|
|
||||||
|
switch (moduleSelected) {
|
||||||
|
case MODULE_TYPE_NUMERIC:
|
||||||
|
typeField =
|
||||||
|
executionType === EXECUTION_TYPE_PLUGIN || moduleProtocol === "wmi"
|
||||||
|
? MODULE_TYPE_GENERIC_DATA
|
||||||
|
: MODULE_TYPE_REMOTE_SNMP;
|
||||||
|
|
||||||
|
toNone = "string_values";
|
||||||
|
toBlock = "minmax_values";
|
||||||
|
|
||||||
|
break;
|
||||||
|
case MODULE_TYPE_INCREMENTAL:
|
||||||
|
typeField =
|
||||||
|
executionType === EXECUTION_TYPE_PLUGIN || moduleProtocol === "wmi"
|
||||||
|
? MODULE_TYPE_GENERIC_DATA_INC
|
||||||
|
: MODULE_TYPE_REMOTE_SNMP_INC;
|
||||||
|
|
||||||
|
toNone = "string_values";
|
||||||
|
toBlock = "minmax_values";
|
||||||
|
break;
|
||||||
|
case MODULE_TYPE_BOOLEAN:
|
||||||
|
typeField =
|
||||||
|
executionType === EXECUTION_TYPE_PLUGIN || moduleProtocol === "wmi"
|
||||||
|
? MODULE_TYPE_GENERIC_PROC
|
||||||
|
: MODULE_TYPE_REMOTE_SNMP_PROC;
|
||||||
|
|
||||||
|
toNone = "string_values";
|
||||||
|
toBlock = "minmax_values";
|
||||||
|
break;
|
||||||
|
case MODULE_TYPE_ALPHANUMERIC:
|
||||||
|
typeField =
|
||||||
|
executionType === EXECUTION_TYPE_PLUGIN || moduleProtocol === "wmi"
|
||||||
|
? MODULE_TYPE_GENERIC_DATA_STRING
|
||||||
|
: MODULE_TYPE_REMOTE_SNMP_STRING;
|
||||||
|
|
||||||
|
toNone = "minmax_values";
|
||||||
|
toBlock = "string_values";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
typeField = "";
|
||||||
|
toNone = "string_values";
|
||||||
|
toBlock = "minmax_values";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show and hide the proper fields.
|
||||||
|
$("." + toNone).css("display", "none");
|
||||||
|
$("." + toBlock).css("display", "block");
|
||||||
|
// Set value to module type.
|
||||||
|
$("#hidden-type").val(typeField);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Manage of the visibility fields for various options
|
||||||
|
// for remote components wizard
|
||||||
|
function manageVisibleFields() {
|
||||||
|
var executionType = $("#execution_type").val();
|
||||||
|
var protocolSelected = $("#module_protocol").val();
|
||||||
|
var symbolName = $("#module_protocol_symbol")
|
||||||
|
.attr("src")
|
||||||
|
.split("/")
|
||||||
|
.pop();
|
||||||
|
var changePath = $("#module_protocol_symbol")
|
||||||
|
.attr("src")
|
||||||
|
.replace(symbolName, protocolSelected + ".png");
|
||||||
|
$("#module_protocol_symbol")
|
||||||
|
.attr("src", changePath)
|
||||||
|
.attr("data-title", protocolSelected.toUpperCase() + " protocol");
|
||||||
|
// Visibility of protocol type.
|
||||||
|
if (protocolSelected === "wmi") {
|
||||||
|
$("tr[id*=wmiRow]").css("display", "table-row");
|
||||||
|
$("tr[id*=snmpRow]").css("display", "none");
|
||||||
|
} else if (protocolSelected === "snmp") {
|
||||||
|
$("tr[id*=wmiRow]").css("display", "none");
|
||||||
|
$("tr[id*=snmpRow]").css("display", "table-row");
|
||||||
|
}
|
||||||
|
// Visibility of execution type.
|
||||||
|
if (executionType === EXECUTION_TYPE_NETWORK) {
|
||||||
|
$("tr[id*=networkRow-" + protocolSelected + "]").css(
|
||||||
|
"display",
|
||||||
|
"table-row"
|
||||||
|
);
|
||||||
|
$("tr[id*=pluginRow]").css("display", "none");
|
||||||
|
} else if (executionType === EXECUTION_TYPE_PLUGIN) {
|
||||||
|
$("tr[id*=networkRow]").css("display", "none");
|
||||||
|
$("tr[id*=pluginRow-" + protocolSelected + "]").css("display", "table-row");
|
||||||
|
// Only row WMI type execution plugin.
|
||||||
|
$("tr#network_component-query-filter-execution-wmiRow").css(
|
||||||
|
"display",
|
||||||
|
"none"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Must update the module type.
|
||||||
|
changeModuleType();
|
||||||
|
// Must update the plugin macros.
|
||||||
|
changePlugin();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plugin managing for wizard components.
|
||||||
|
function changePlugin() {
|
||||||
|
var moduleProtocol = $("#module_protocol").val();
|
||||||
|
var executionType = $("#execution_type").val();
|
||||||
|
var pluginSelected = $("#server_plugin_" + moduleProtocol).val();
|
||||||
|
var pluginAllData = JSON.parse(
|
||||||
|
$("#hidden-server_plugin_data_" + pluginSelected).val()
|
||||||
|
);
|
||||||
|
|
||||||
|
var pluginDescription = pluginAllData.description;
|
||||||
|
var pluginMacros = pluginAllData.macros;
|
||||||
|
console.log(pluginAllData.macrosElement);
|
||||||
|
var pluginMacrosElement = JSON.parse(atob(pluginAllData.macrosElement));
|
||||||
|
console.log(pluginMacrosElement);
|
||||||
|
|
||||||
|
var displayShow = "none";
|
||||||
|
if (executionType == EXECUTION_TYPE_NETWORK) {
|
||||||
|
displayShow = "none";
|
||||||
|
} else {
|
||||||
|
displayShow = "table-row";
|
||||||
|
}
|
||||||
|
|
||||||
|
var cntMacrosToGo = 4;
|
||||||
|
var cntMacrosLine = 0;
|
||||||
|
var thisIdLine = "";
|
||||||
|
// Clear older macros rows.
|
||||||
|
$("tr[id*=dynamicMacroRow-pluginRow-" + moduleProtocol + "Row-N-]").remove();
|
||||||
|
// Hide the template.
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-0"
|
||||||
|
).attr("style", "display: none;");
|
||||||
|
// For each macro.
|
||||||
|
$.each(pluginMacros, function() {
|
||||||
|
let description = this.desc;
|
||||||
|
let macro = this.macro;
|
||||||
|
let value = this.value;
|
||||||
|
|
||||||
|
if (pluginMacrosElement["server_plugin"] == pluginSelected) {
|
||||||
|
if (pluginMacrosElement[macro + "_" + moduleProtocol + "_field"]) {
|
||||||
|
value = pluginMacrosElement[macro + "_" + moduleProtocol + "_field"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
typeof description == "undefined" ||
|
||||||
|
description === null ||
|
||||||
|
description == ""
|
||||||
|
) {
|
||||||
|
description = "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cntMacrosToGo == 4) {
|
||||||
|
cntMacrosToGo = 0;
|
||||||
|
cntMacrosLine++;
|
||||||
|
thisIdLine =
|
||||||
|
"network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-N-" +
|
||||||
|
cntMacrosLine;
|
||||||
|
$(
|
||||||
|
"#network_component-server-plugin-pluginRow-" + moduleProtocol + "Row"
|
||||||
|
).after(
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-0"
|
||||||
|
)
|
||||||
|
.clone()
|
||||||
|
.attr("id", thisIdLine)
|
||||||
|
.css("display", displayShow)
|
||||||
|
);
|
||||||
|
// Clear the template.
|
||||||
|
$("#" + thisIdLine).empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-0-0"
|
||||||
|
)
|
||||||
|
.clone()
|
||||||
|
.attr(
|
||||||
|
"id",
|
||||||
|
"network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-N-" +
|
||||||
|
cntMacrosLine +
|
||||||
|
"-" +
|
||||||
|
cntMacrosToGo
|
||||||
|
)
|
||||||
|
.html(description)
|
||||||
|
.appendTo("#" + thisIdLine);
|
||||||
|
cntMacrosToGo++;
|
||||||
|
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-0-1"
|
||||||
|
)
|
||||||
|
.clone()
|
||||||
|
.attr(
|
||||||
|
"id",
|
||||||
|
"network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-N-" +
|
||||||
|
cntMacrosLine +
|
||||||
|
"-" +
|
||||||
|
cntMacrosToGo
|
||||||
|
)
|
||||||
|
.appendTo("#" + thisIdLine);
|
||||||
|
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-N-" +
|
||||||
|
cntMacrosLine +
|
||||||
|
"-" +
|
||||||
|
cntMacrosToGo
|
||||||
|
)
|
||||||
|
.children("input")
|
||||||
|
.val(value);
|
||||||
|
|
||||||
|
$(
|
||||||
|
"#network_component-plugin-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"-fields-dynamicMacroRow-pluginRow-" +
|
||||||
|
moduleProtocol +
|
||||||
|
"Row-N-" +
|
||||||
|
cntMacrosLine +
|
||||||
|
"-" +
|
||||||
|
cntMacrosToGo
|
||||||
|
)
|
||||||
|
.children("#field0_" + moduleProtocol + "_fields")
|
||||||
|
.attr("id", this.macro + "_" + moduleProtocol + "_fields")
|
||||||
|
.attr("name", this.macro + "_" + moduleProtocol + "_field");
|
||||||
|
|
||||||
|
cntMacrosToGo++;
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#selected_plugin_description_" + moduleProtocol).html(pluginDescription);
|
||||||
|
}
|
||||||
|
@ -229,27 +229,26 @@ function snmpGet(oid) {
|
|||||||
custom_action = "";
|
custom_action = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare the AJAX call
|
var params = {};
|
||||||
var params = [
|
|
||||||
"target_ip=" + target_ip,
|
params["target_ip"] = target_ip;
|
||||||
"community=" + community,
|
params["community"] = community;
|
||||||
"oid=" + oid,
|
params["oid"] = oid;
|
||||||
"snmp_browser_version=" + snmp_version,
|
params["snmp_browser_version"] = snmp_version;
|
||||||
"snmp3_browser_auth_user=" + snmp3_auth_user,
|
params["snmp3_browser_auth_user"] = snmp3_auth_user;
|
||||||
"snmp3_browser_security_level=" + snmp3_security_level,
|
params["snmp3_browser_security_level"] = snmp3_security_level;
|
||||||
"snmp3_browser_auth_method=" + snmp3_auth_method,
|
params["snmp3_browser_auth_method"] = snmp3_auth_method;
|
||||||
"snmp3_browser_auth_pass=" + snmp3_auth_pass,
|
params["snmp3_browser_auth_pass"] = snmp3_auth_pass;
|
||||||
"snmp3_browser_privacy_method=" + snmp3_privacy_method,
|
params["snmp3_browser_privacy_method"] = snmp3_privacy_method;
|
||||||
"snmp3_browser_privacy_pass=" + snmp3_privacy_pass,
|
params["snmp3_browser_privacy_pass"] = snmp3_privacy_pass;
|
||||||
"server_to_exec=" + server_to_exec,
|
params["server_to_exec"] = server_to_exec;
|
||||||
"action=" + "snmpget",
|
params["action"] = "snmpget";
|
||||||
"custom_action=" + custom_action,
|
params["custom_action"] = custom_action;
|
||||||
"page=include/ajax/snmp_browser.ajax"
|
params["page"] = "include/ajax/snmp_browser.ajax";
|
||||||
];
|
|
||||||
|
|
||||||
// SNMP get!
|
// SNMP get!
|
||||||
jQuery.ajax({
|
jQuery.ajax({
|
||||||
data: params.join("&"),
|
data: params,
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: (action = ajax_url),
|
url: (action = ajax_url),
|
||||||
async: true,
|
async: true,
|
||||||
@ -625,6 +624,20 @@ function snmp_browser_create_modules(module_target, return_post = true) {
|
|||||||
);
|
);
|
||||||
$("input[name=create_modules_" + module_target + "]").addClass("sub spinn");
|
$("input[name=create_modules_" + module_target + "]").addClass("sub spinn");
|
||||||
|
|
||||||
|
$("#dialog_error").on("dialogclose", function(event) {
|
||||||
|
$("input[name=create_modules_" + module_target + "]").removeClass(
|
||||||
|
"sub spinn"
|
||||||
|
);
|
||||||
|
$("input[name=create_modules_" + module_target + "]").addClass("sub add");
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#dialog_success").on("dialogclose", function(event) {
|
||||||
|
$("input[name=create_modules_" + module_target + "]").removeClass(
|
||||||
|
"sub spinn"
|
||||||
|
);
|
||||||
|
$("input[name=create_modules_" + module_target + "]").addClass("sub add");
|
||||||
|
});
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "post",
|
method: "post",
|
||||||
url: "ajax.php",
|
url: "ajax.php",
|
||||||
|
@ -390,15 +390,31 @@ function load_modal(settings) {
|
|||||||
function confirmDialog(settings) {
|
function confirmDialog(settings) {
|
||||||
var randomStr = uniqId();
|
var randomStr = uniqId();
|
||||||
|
|
||||||
|
if (settings.size == undefined) {
|
||||||
|
settings.size = 350;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.maxHeight == undefined) {
|
||||||
|
settings.maxHeight = 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof settings.message == "function") {
|
||||||
|
$("body").append(
|
||||||
|
'<div id="confirm_' + randomStr + '">' + settings.message() + "</div>"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
$("body").append(
|
$("body").append(
|
||||||
'<div id="confirm_' + randomStr + '">' + settings.message + "</div>"
|
'<div id="confirm_' + randomStr + '">' + settings.message + "</div>"
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$("#confirm_" + randomStr);
|
$("#confirm_" + randomStr);
|
||||||
$("#confirm_" + randomStr)
|
$("#confirm_" + randomStr)
|
||||||
.dialog({
|
.dialog({
|
||||||
title: settings.title,
|
title: settings.title,
|
||||||
close: false,
|
close: false,
|
||||||
width: 350,
|
width: settings.size,
|
||||||
|
maxHeight: settings.maxHeight,
|
||||||
modal: true,
|
modal: true,
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
@ -417,8 +433,8 @@ function confirmDialog(settings) {
|
|||||||
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
|
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
|
||||||
click: function() {
|
click: function() {
|
||||||
$(this).dialog("close");
|
$(this).dialog("close");
|
||||||
$(this).remove();
|
|
||||||
if (typeof settings.onAccept == "function") settings.onAccept();
|
if (typeof settings.onAccept == "function") settings.onAccept();
|
||||||
|
$(this).remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
// Begin.
|
// Begin.
|
||||||
namespace PandoraFMS;
|
namespace PandoraFMS;
|
||||||
|
|
||||||
|
|
||||||
|
use PandoraFMS\ModuleType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PandoraFMS agent entity.
|
* PandoraFMS agent entity.
|
||||||
*/
|
*/
|
||||||
@ -43,6 +46,28 @@ class Module extends Entity
|
|||||||
*/
|
*/
|
||||||
private $status;
|
private $status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module type matching id_tipo_modulo.
|
||||||
|
*
|
||||||
|
* @var PandoraFMS\ModuleType
|
||||||
|
*/
|
||||||
|
private $moduleType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration data (only local modules).
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $configurationData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration data (before updates) (only local modules).
|
||||||
|
* Compatibility with classic functions.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $configurationDataOld;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search a module in db.
|
* Search a module in db.
|
||||||
@ -123,6 +148,24 @@ class Module extends Entity
|
|||||||
|
|
||||||
// Customize certain fields.
|
// Customize certain fields.
|
||||||
$obj->status = new ModuleStatus($obj->id_agente_modulo());
|
$obj->status = new ModuleStatus($obj->id_agente_modulo());
|
||||||
|
$obj->moduleType = new ModuleType($obj->id_tipo_modulo());
|
||||||
|
|
||||||
|
// Include some enterprise dependencies.
|
||||||
|
enterprise_include_once('include/functions_config_agents.php');
|
||||||
|
|
||||||
|
// Load configuration data from agent configuration if available.
|
||||||
|
$obj->configuration_data(
|
||||||
|
\enterprise_hook(
|
||||||
|
'config_agents_get_module_from_conf',
|
||||||
|
[
|
||||||
|
$obj->id_agente(),
|
||||||
|
\io_safe_output($obj->nombre()),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Classic compat.
|
||||||
|
$obj->configurationDataOld = $obj->configurationData;
|
||||||
|
|
||||||
return $obj;
|
return $obj;
|
||||||
}
|
}
|
||||||
@ -153,6 +196,144 @@ class Module extends Entity
|
|||||||
|
|
||||||
// Customize certain fields.
|
// Customize certain fields.
|
||||||
$this->status = new ModuleStatus($this->fields['id_agente_modulo']);
|
$this->status = new ModuleStatus($this->fields['id_agente_modulo']);
|
||||||
|
$this->moduleType = new ModuleType($this->id_tipo_modulo());
|
||||||
|
|
||||||
|
// Include some enterprise dependencies.
|
||||||
|
enterprise_include_once('include/functions_config_agents.php');
|
||||||
|
|
||||||
|
// Load configuration data from agent configuration if available.
|
||||||
|
$this->configuration_data(
|
||||||
|
\enterprise_hook(
|
||||||
|
'config_agents_get_module_from_conf',
|
||||||
|
[
|
||||||
|
$this->id_agente(),
|
||||||
|
\io_safe_output($this->nombre()),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Backup. Classic compat.
|
||||||
|
$this->configurationDataOld = $this->configurationData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamically call methods in this object.
|
||||||
|
*
|
||||||
|
* @param string $methodName Name of target method or attribute.
|
||||||
|
* @param array $params Arguments for target method.
|
||||||
|
*
|
||||||
|
* @return mixed Return of method.
|
||||||
|
* @throws \Exception On error.
|
||||||
|
*/
|
||||||
|
public function __call(string $methodName, ?array $params=null)
|
||||||
|
{
|
||||||
|
// Prioritize written methods over dynamic ones.
|
||||||
|
if (method_exists($this, $methodName) === true) {
|
||||||
|
return $this->{$methodName}($params);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists($methodName, $this->fields) === true) {
|
||||||
|
if (empty($params) === false) {
|
||||||
|
if ($this->is_local() === true) {
|
||||||
|
$keyName = $methodName;
|
||||||
|
if ($methodName === 'nombre') {
|
||||||
|
$keyName = 'name';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($methodName === 'descripcion') {
|
||||||
|
$keyName = 'description';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($methodName === 'post_process') {
|
||||||
|
$keyName = 'postprocess';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($methodName === 'max_timeout') {
|
||||||
|
$keyName = 'timeout';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($methodName === 'max_retries') {
|
||||||
|
$keyName = 'retries';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(
|
||||||
|
'module_'.$keyName,
|
||||||
|
[
|
||||||
|
'module_name',
|
||||||
|
'module_description',
|
||||||
|
'module_type',
|
||||||
|
'module_max',
|
||||||
|
'module_min',
|
||||||
|
'module_postprocess',
|
||||||
|
'module_interval',
|
||||||
|
'module_timeout',
|
||||||
|
'module_retries',
|
||||||
|
'module_min_critical',
|
||||||
|
'module_max_critical',
|
||||||
|
'module_min_warning',
|
||||||
|
'module_max_warning',
|
||||||
|
]
|
||||||
|
) === true
|
||||||
|
) {
|
||||||
|
$this->updateConfigurationData(
|
||||||
|
'module_'.$methodName,
|
||||||
|
$params[0]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->fields[$methodName] = $params[0];
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return $this->fields[$methodName];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \Exception(
|
||||||
|
get_class($this).' error, method '.$methodName.' does not exist'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets or retrieves value of id_tipo_modulo (complex).
|
||||||
|
*
|
||||||
|
* @param integer|null $id_tipo_modulo Id module type.
|
||||||
|
*
|
||||||
|
* @return PandoraFMS\ModuleType corresponding to this module type.
|
||||||
|
* @throws \Exception On error.
|
||||||
|
*/
|
||||||
|
public function moduleType(?int $id_tipo_modulo=null)
|
||||||
|
{
|
||||||
|
if ($id_tipo_modulo === null) {
|
||||||
|
return $this->moduleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_numeric($id_tipo_modulo) === true && $id_tipo_modulo > 0) {
|
||||||
|
$this->moduleType = new ModuleType($id_tipo_modulo);
|
||||||
|
$this->fields['id_tipo_modulo'] = $this->moduleType->id_tipo();
|
||||||
|
} else {
|
||||||
|
throw new \Exception('Invalid id_tipo_modulo '.$id_tipo_modulo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets or retrieves value of id_tipo_modulo (complex).
|
||||||
|
*
|
||||||
|
* @param integer|null $id_tipo_modulo Id module type.
|
||||||
|
*
|
||||||
|
* @return integer corresponding to this module type.
|
||||||
|
* @throws \Exception On error.
|
||||||
|
*/
|
||||||
|
public function id_tipo_modulo(?int $id_tipo_modulo=null)
|
||||||
|
{
|
||||||
|
if ($id_tipo_modulo === null) {
|
||||||
|
return $this->fields['id_tipo_modulo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->moduleType($id_tipo_modulo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -187,10 +368,14 @@ class Module extends Entity
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Include some enterprise dependencies.
|
||||||
|
enterprise_include_once('include/functions_config_agents.php');
|
||||||
|
|
||||||
|
$updates = $this->fields;
|
||||||
|
$updates['id_tipo_modulo'] = $this->moduleType()->id_tipo();
|
||||||
|
|
||||||
if ($this->fields['id_agente_modulo'] > 0) {
|
if ($this->fields['id_agente_modulo'] > 0) {
|
||||||
// Update.
|
// Update.
|
||||||
$updates = $this->fields;
|
|
||||||
|
|
||||||
$rs = \db_process_sql_update(
|
$rs = \db_process_sql_update(
|
||||||
'tagente_modulo',
|
'tagente_modulo',
|
||||||
$updates,
|
$updates,
|
||||||
@ -203,10 +388,20 @@ class Module extends Entity
|
|||||||
__METHOD__.' error: '.$config['dbconnection']->error
|
__METHOD__.' error: '.$config['dbconnection']->error
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save configuration data if needed.
|
||||||
|
if ($this->configurationData !== null) {
|
||||||
|
\enterprise_hook(
|
||||||
|
'config_agents_update_module_in_conf',
|
||||||
|
[
|
||||||
|
$this->id_agente(),
|
||||||
|
$this->configurationDataOld,
|
||||||
|
$this->configurationData,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Creation.
|
// Creation.
|
||||||
$updates = $this->fields;
|
|
||||||
|
|
||||||
// Clean null fields.
|
// Clean null fields.
|
||||||
foreach ($updates as $k => $v) {
|
foreach ($updates as $k => $v) {
|
||||||
if ($v === null) {
|
if ($v === null) {
|
||||||
@ -220,20 +415,139 @@ class Module extends Entity
|
|||||||
$updates
|
$updates
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($rs === false) {
|
if ($rs === false || $rs < 0) {
|
||||||
global $config;
|
global $config;
|
||||||
|
if ($rs === ERR_EXIST) {
|
||||||
|
throw new \Exception(
|
||||||
|
__METHOD__.': '.__(
|
||||||
|
'Module already exists: "%s"',
|
||||||
|
$updates['nombre']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
throw new \Exception(
|
throw new \Exception(
|
||||||
__METHOD__.' error: '.$config['dbconnection']->error
|
__METHOD__.' error: '.$config['dbconnection']->error
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->fields['id_agente_modulo'] = $rs;
|
$this->fields['id_agente_modulo'] = $rs;
|
||||||
|
|
||||||
|
\enterprise_hook(
|
||||||
|
'config_agents_add_module_in_conf',
|
||||||
|
[
|
||||||
|
$this->id_agente(),
|
||||||
|
$this->configurationData,
|
||||||
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies if module is local or not.
|
||||||
|
*
|
||||||
|
* @return boolean Is local, or not (false).
|
||||||
|
*/
|
||||||
|
public function is_local()
|
||||||
|
{
|
||||||
|
if ($this->moduleType()->is_local_datatype() === true) {
|
||||||
|
if ($this->fields['id_modulo'] === MODULE_DATA) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transforms configuration data into an array.
|
||||||
|
*
|
||||||
|
* @return array Configuration data in array format.
|
||||||
|
*/
|
||||||
|
protected function configurationDataToArray()
|
||||||
|
{
|
||||||
|
$rr = explode("\n", $this->configurationData);
|
||||||
|
|
||||||
|
$configuration = [];
|
||||||
|
|
||||||
|
foreach ($rr as $line) {
|
||||||
|
if (empty($line) === true) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match('/module_begin/', $line) === 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match('/module_end/', $line) === 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$_tmp = explode(' ', $line, 2);
|
||||||
|
|
||||||
|
$key = $_tmp[0];
|
||||||
|
$value = $_tmp[1];
|
||||||
|
|
||||||
|
$configuration[$key] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates remote configuration.
|
||||||
|
*
|
||||||
|
* @param string $key Left side (module_XXX).
|
||||||
|
* @param string $value Value, could be empty.
|
||||||
|
*
|
||||||
|
* @return boolean True - configurationData updated, false if not.
|
||||||
|
*/
|
||||||
|
public function updateConfigurationData(string $key, ?string $value=null)
|
||||||
|
{
|
||||||
|
if ($this->is_local() !== true) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cnf = $this->configurationDataToArray();
|
||||||
|
|
||||||
|
$cnf[$key] = $value;
|
||||||
|
|
||||||
|
$str = "module_begin\n";
|
||||||
|
foreach ($cnf as $k => $v) {
|
||||||
|
$str .= $k.' '.$v."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$str .= "module_end\n";
|
||||||
|
|
||||||
|
$this->configuration_data($str);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get/set configuration data for current module.
|
||||||
|
*
|
||||||
|
* @param string|null $conf Configuration data (block).
|
||||||
|
*
|
||||||
|
* @return mixed Content or void if set.
|
||||||
|
*/
|
||||||
|
public function configuration_data(?string $conf=null)
|
||||||
|
{
|
||||||
|
if ($conf === null) {
|
||||||
|
return $this->configurationData;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->configurationData = $conf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erases this module.
|
* Erases this module.
|
||||||
*
|
*
|
||||||
|
94
pandora_console/include/lib/ModuleType.php
Normal file
94
pandora_console/include/lib/ModuleType.php
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<?php
|
||||||
|
// phpcs:disable Squiz.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
/**
|
||||||
|
* Module Type entity class.
|
||||||
|
*
|
||||||
|
* @category Class
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage OpenSource
|
||||||
|
* @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.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Begin.
|
||||||
|
namespace PandoraFMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PandoraFMS agent entity.
|
||||||
|
*/
|
||||||
|
class ModuleType extends Entity
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a PandoraFMS\ModuleType object from given id.
|
||||||
|
*
|
||||||
|
* @param integer $id_tipo_modulo Id tipo modulo.
|
||||||
|
*/
|
||||||
|
public function __construct(?int $id_tipo_modulo=null)
|
||||||
|
{
|
||||||
|
if (is_numeric($id_tipo_modulo) === true
|
||||||
|
&& $id_tipo_modulo > 0
|
||||||
|
) {
|
||||||
|
parent::__construct(
|
||||||
|
'ttipo_modulo',
|
||||||
|
['id_tipo' => $id_tipo_modulo]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Create empty skel.
|
||||||
|
parent::__construct('ttipo_modulo');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies if module type is local or not.
|
||||||
|
* Beware, plugins also use this kind of modules..
|
||||||
|
*
|
||||||
|
* @return boolean Is a local candidate! or not (false).
|
||||||
|
*/
|
||||||
|
public function is_local_datatype()
|
||||||
|
{
|
||||||
|
if ((int) $this->id_tipo() === MODULE_TYPE_GENERIC_DATA
|
||||||
|
|| (int) $this->id_tipo() === MODULE_TYPE_GENERIC_PROC
|
||||||
|
|| (int) $this->id_tipo() === MODULE_TYPE_GENERIC_DATA_STRING
|
||||||
|
|| (int) $this->id_tipo() === MODULE_TYPE_GENERIC_DATA_INC
|
||||||
|
|| (int) $this->id_tipo() === MODULE_TYPE_GENERIC_DATA_INC_ABS
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves current definition to database.
|
||||||
|
*
|
||||||
|
* @return void No return.
|
||||||
|
* @throws \Exception On error.
|
||||||
|
*/
|
||||||
|
public function save()
|
||||||
|
{
|
||||||
|
throw new \Exception('Read only component');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -4571,6 +4571,7 @@ div#dialog_messages table th:last-child {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-switch input {
|
.p-switch input {
|
||||||
@ -6090,3 +6091,29 @@ div.text_message_dialog p {
|
|||||||
font-size: 10.3pt;
|
font-size: 10.3pt;
|
||||||
line-height: 14pt;
|
line-height: 14pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
form#form-filter-interfaces {
|
||||||
|
margin-left: -30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form#form-filter-interfaces ul {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
form#form-filter-interfaces ul li {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
max-width: 35%;
|
||||||
|
}
|
||||||
|
|
||||||
|
form#form-filter-interfaces ul li.select-interfaces {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Discovery > Wizard css global style
|
* Discovery > Wizard css global style
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#main > form.discovery.wizard > .white_box {
|
#main > form.discovery.wizard > .white_box {
|
||||||
min-width: 1024px;
|
min-width: 1024px;
|
||||||
}
|
}
|
||||||
@ -70,9 +69,8 @@ ul.wizard li > textarea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.wizard .discovery_inline_input {
|
.wizard .discovery_inline_input {
|
||||||
display: flex;
|
display: inline;
|
||||||
align-content: end;
|
align-content: end;
|
||||||
flex: 0;
|
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +141,14 @@ if ((! file_exists('include/config.php'))
|
|||||||
require_once 'include/config.php';
|
require_once 'include/config.php';
|
||||||
require_once 'include/functions_config.php';
|
require_once 'include/functions_config.php';
|
||||||
|
|
||||||
|
if (isset($config['console_log_enabled']) && $config['console_log_enabled'] == 1) {
|
||||||
|
ini_set('log_errors', 1);
|
||||||
|
ini_set('error_log', $config['homedir'].'/log/console.log');
|
||||||
|
} else {
|
||||||
|
ini_set('log_errors', 0);
|
||||||
|
ini_set('error_log', 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($config['error'])) {
|
if (isset($config['error'])) {
|
||||||
$login_screen = $config['error'];
|
$login_screen = $config['error'];
|
||||||
include 'general/error_screen.php';
|
include 'general/error_screen.php';
|
||||||
@ -1166,7 +1174,7 @@ if ($searchPage) {
|
|||||||
if (($home_url == '') || ($id_visualc == false)) {
|
if (($home_url == '') || ($id_visualc == false)) {
|
||||||
$str = 'sec=network&sec2=operation/visual_console/index&refr=60';
|
$str = 'sec=network&sec2=operation/visual_console/index&refr=60';
|
||||||
} else {
|
} else {
|
||||||
$str = 'sec=network&sec2=operation/visual_console/render_view&id='.$id_visualc.'&refr=60';
|
$str = 'sec=network&sec2=operation/visual_console/render_view&id='.$id_visualc;
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_str($str, $res);
|
parse_str($str, $res);
|
||||||
|
@ -128,8 +128,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style='height: 10px'>
|
<div style='height: 10px'>
|
||||||
<?php
|
<?php
|
||||||
$version = '7.0NG.746';
|
$version = '7.0NG.747';
|
||||||
$build = '200616';
|
$build = '200706';
|
||||||
$banner = "v$version Build $build";
|
$banner = "v$version Build $build";
|
||||||
|
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
6
pandora_console/log/.htaccess
Normal file
6
pandora_console/log/.htaccess
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# pandora disable log access
|
||||||
|
|
||||||
|
<Files ~ "\.log$">
|
||||||
|
Order Allow,Deny
|
||||||
|
Deny from All
|
||||||
|
</Files>
|
@ -349,16 +349,6 @@ switch ($action) {
|
|||||||
$agent = new Agent();
|
$agent = new Agent();
|
||||||
$agent->show();
|
$agent->show();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'visualmaps':
|
|
||||||
$visualmaps = new Visualmaps();
|
|
||||||
$visualmaps->show();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'visualmap':
|
|
||||||
$visualmap = new Visualmap();
|
|
||||||
$visualmap->show();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -80,14 +80,8 @@ class Home
|
|||||||
'menu_item' => true,
|
'menu_item' => true,
|
||||||
'icon' => 'modules',
|
'icon' => 'modules',
|
||||||
];
|
];
|
||||||
$items['visualmaps'] = [
|
|
||||||
'name' => __('Visual consoles'),
|
|
||||||
'filename' => 'visualmaps.php',
|
|
||||||
'menu_item' => true,
|
|
||||||
'icon' => 'visual_console',
|
|
||||||
];
|
|
||||||
|
|
||||||
// Not in home
|
// Not in home.
|
||||||
$items['agent'] = [
|
$items['agent'] = [
|
||||||
'name' => __('Agent'),
|
'name' => __('Agent'),
|
||||||
'filename' => 'agent.php',
|
'filename' => 'agent.php',
|
||||||
@ -100,12 +94,6 @@ class Home
|
|||||||
'menu_item' => false,
|
'menu_item' => false,
|
||||||
'icon' => '',
|
'icon' => '',
|
||||||
];
|
];
|
||||||
$items['visualmap'] = [
|
|
||||||
'name' => __('Visualmap'),
|
|
||||||
'filename' => 'visualmap.php',
|
|
||||||
'menu_item' => false,
|
|
||||||
'icon' => '',
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->pagesItems = $items;
|
$this->pagesItems = $items;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user