cambio de fuentes cssç
This commit is contained in:
commit
1650da0f75
|
@ -254,6 +254,8 @@ server_dependencies=" \
|
|||
perl(Geo::IP) \
|
||||
perl(IO::Socket::INET6) \
|
||||
perl(XML::Twig) \
|
||||
expect \
|
||||
openssh-clients \
|
||||
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
|
||||
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm"
|
||||
execute_cmd "yum install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
|
||||
|
|
|
@ -11,7 +11,7 @@ RUN dnf install -y --setopt=tsflags=nodocs \
|
|||
RUN dnf module reset -y php && dnf module install -y php:remi-7.3
|
||||
RUN dnf config-manager --set-enabled powertools
|
||||
|
||||
# Install console
|
||||
# Install console dependencies
|
||||
RUN dnf install -y --setopt=tsflags=nodocs \
|
||||
php \
|
||||
php-mcrypt \php-cli \
|
||||
|
@ -91,9 +91,9 @@ RUN dnf install -y --setopt=tsflags=nodocs \
|
|||
php-yaml
|
||||
|
||||
RUN mkdir -p /run/php-fpm/ ; chown -R root:apache /run/php-fpm/
|
||||
# not installed perl-Net-Telnet gtk-update-icon-cach ghostscript-fonts
|
||||
# Not installed perl-Net-Telnet gtk-update-icon-cach ghostscript-fonts
|
||||
|
||||
# Install server
|
||||
# Install server dependencies
|
||||
|
||||
RUN dnf install -y --setopt=tsflags=nodocs \
|
||||
GeoIP \
|
||||
|
@ -256,16 +256,18 @@ RUN dnf install -y --setopt=tsflags=nodocs \
|
|||
nmap \
|
||||
net-snmp-utils \
|
||||
sudo \
|
||||
expect \
|
||||
openssh-clients \
|
||||
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
|
||||
http://firefly.artica.es/centos8/wmi-1.3.14-4.el7.art.x86_64.rpm
|
||||
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm
|
||||
|
||||
# install utils
|
||||
# Install utils
|
||||
RUN dnf install -y supervisor crontabs http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm --setopt=tsflags=nodocs
|
||||
# SDK VMware perl dependencies
|
||||
RUN dnf install -y http://firefly.artica.es/centos8/perl-Crypt-OpenSSL-AES-0.02-1.el8.x86_64.rpm http://firefly.artica.es/centos8/perl-Crypt-SSLeay-0.73_07-1.gf.el8.x86_64.rpm perl-Net-HTTP perl-libwww-perl openssl-devel perl-Crypt-CBC perl-Bytes-Random-Secure perl-Crypt-Random-Seed perl-Math-Random-ISAAC perl-JSON http://firefly.artica.es/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm
|
||||
# Instant client Oracle
|
||||
RUN dnf install -y https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm
|
||||
|
||||
# Install Phantom
|
||||
RUN dnf install -y supervisor crontabs http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm --setopt=tsflags=nodocs
|
||||
|
||||
|
||||
|
|
|
@ -160,9 +160,9 @@ echo "Updating Pandora Server version..."
|
|||
sed -i -e "s/my\s\s*\$pandora_version\s*=.*/my \$pandora_version = \"$VERSION\";/" "$SERVER_FILE"
|
||||
sed -i -e "s/my\s\s*\$pandora_build\s*=.*/my \$pandora_build = \"$BUILD\";/" "$SERVER_FILE"
|
||||
echo "Updating DB maintenance script version..."
|
||||
sed -i -e "s/my\s\s*\$version\s*=.*/my \$version = \"$VERSION PS$BUILD\";/" "$SERVER_DB_FILE"
|
||||
sed -i -e "s/my\s\s*\$version\s*=.*/my \$version = \"$VERSION Build $BUILD\";/" "$SERVER_DB_FILE"
|
||||
echo "Updating CLI script version..."
|
||||
sed -i -e "s/my\s\s*\$version\s*=.*/my \$version = \"$VERSION PS$BUILD\";/" "$SERVER_CLI_FILE"
|
||||
sed -i -e "s/my\s\s*\$version\s*=.*/my \$version = \"$VERSION Build $BUILD\";/" "$SERVER_CLI_FILE"
|
||||
sed -i -e "s/\s*\#\s*\Version.*/\# Version $VERSION/" "$SERVER_CONF_FILE"
|
||||
sed -i -e "s/\s*\!define PRODUCT_VERSION.*/\!define PRODUCT_VERSION \"$VERSION\"/" "$SERVER_WIN_MPI_OPEN_FILE"
|
||||
sed -i -e "s/\s*\!define PRODUCT_VERSION.*/\!define PRODUCT_VERSION \"$VERSION\"/" "$SERVER_WIN_MPI_ENT_FILE"
|
||||
|
@ -197,7 +197,7 @@ echo "Updating Pandora Unix Agent version..."
|
|||
sed -i -e "s/\s*use\s*constant\s*AGENT_VERSION =>.*/use constant AGENT_VERSION => '$VERSION';/" "$AGENT_UNIX_FILE"
|
||||
sed -i -e "s/\s*use\s*constant\s*AGENT_BUILD =>.*/use constant AGENT_BUILD => '$BUILD';/" "$AGENT_UNIX_FILE"
|
||||
echo "Updating Pandora Windows Agent version..."
|
||||
sed -i -e "s/\s*#define\s*PANDORA_VERSION\s*.*/#define PANDORA_VERSION (\"$VERSION(Build $BUILD)\")/" "$AGENT_WIN_FILE"
|
||||
sed -i -e "s/\s*#define\s*PANDORA_VERSION\s*.*/#define PANDORA_VERSION (\"$VERSION Build $BUILD\")/" "$AGENT_WIN_FILE"
|
||||
sed -i -e "s/{Pandora FMS Windows Agent v.*}/{Pandora FMS Windows Agent v$VERSION}/" "$AGENT_WIN_MPI_FILE"
|
||||
NUMERIC_VERSION=$(echo $VERSION | sed -e "s/\([0-9]*\.[0-9]*\).*/\1/")
|
||||
sed -i -n "1h;1!H;\${;g;s/[\r\n]InstallVersion[\r\n]{\S*}/\nInstallVersion\n{$NUMERIC_VERSION.0.0}/g;p;}" "$AGENT_WIN_MPI_FILE"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.754-210511
|
||||
Version: 7.0NG.754-210518
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.754-210511"
|
||||
pandora_version="7.0NG.754-210518"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1015,7 +1015,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.754';
|
||||
use constant AGENT_BUILD => '210511';
|
||||
use constant AGENT_BUILD => '210518';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
@ -1229,7 +1229,8 @@ use constant MAX_LOOP_COUNTER => 1000000000;
|
|||
# Print usage information and exit.
|
||||
################################################################################
|
||||
sub print_usage () {
|
||||
print "\nUsage: $0 <Pandora home>\n\n";
|
||||
print "Pandora FMS Agent for Linux v" . AGENT_VERSION . " Build " . AGENT_BUILD . "\n\n";
|
||||
print "Usage: $0 <Pandora home>\n\n";
|
||||
print "\tPandora home is the directory where pandora_agent.conf is located,\n";
|
||||
print "\tby default /etc/pandora.\n\n";
|
||||
exit 1;
|
||||
|
@ -2330,9 +2331,6 @@ sub launch_tentacle_proxy () {
|
|||
|
||||
#Execute tentacle server as a daemon
|
||||
my $new_process = "tentacle_server -a ".$Conf{'proxy_address'}." -p ".$Conf{'proxy_port'}." -b ".$Conf{'server_ip'}." -g ".$Conf{'server_port'}." -c ".$Conf{'proxy_max_connection'}." -t ".$Conf{'proxy_timeout'};
|
||||
|
||||
$new_process .= ' -C' if ($Conf{'server_ssl'} eq '1');
|
||||
|
||||
log_message ('setup', 'Proxy mode enabled');
|
||||
exec ($new_process);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.754
|
||||
%define release 210511
|
||||
%define release 210518
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.754
|
||||
%define release 210511
|
||||
%define release 210518
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.754"
|
||||
PI_BUILD="210511"
|
||||
PI_BUILD="210518"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -152,8 +152,8 @@ uninstall () {
|
|||
fi
|
||||
|
||||
# Stops the agent on uninstall
|
||||
if [ -f $PANDORA_BASE/etc/init.d/pandora_agent_daemon ]; then
|
||||
$PANDORA_BASE/etc/init.d/pandora_agent_daemon stop 12> /dev/null
|
||||
if [ -f /etc/init.d/pandora_agent_daemon ]; then
|
||||
/etc/init.d/pandora_agent_daemon stop 12> /dev/null
|
||||
else
|
||||
echo "$PANDORA_BASE/etc/init.d/pandora_agent_daemon not found to stop agent"
|
||||
fi
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{210511}
|
||||
{210518}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -115,8 +115,8 @@ main (int argc, char *argv[]) {
|
|||
return 0;
|
||||
} else if (_stricmp(argv[i], HELP_CMDLINE_PARAM) == 0) {
|
||||
/* Help parameter */
|
||||
cout << "Pandora agent for Windows. ";
|
||||
cout << "Version " << getPandoraAgentVersion () << endl;
|
||||
cout << "Pandora agent for Windows ";
|
||||
cout << "v" << getPandoraAgentVersion () << endl << endl;
|
||||
cout << "Usage: " << argv[0] << " [OPTION]" << endl << endl;
|
||||
cout << "Available options are:" << endl;
|
||||
cout << "\t" << SERVICE_INSTALL_CMDLINE_PARAM;
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.754(Build 210511)")
|
||||
#define PANDORA_VERSION ("7.0NG.754 Build 210518")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -423,7 +423,7 @@ Pandora_Windows_Service::killTentacleProxy() {
|
|||
|
||||
int
|
||||
Pandora_Windows_Service::launchTentacleProxy() {
|
||||
string server_ip, server_port, proxy_max_connections, proxy_timeout, server_ssl;
|
||||
string server_ip, server_port, proxy_max_connections, proxy_timeout;
|
||||
string proxy_cmd, proxy_address, proxy_port;
|
||||
PROCESS_INFORMATION pi;
|
||||
STARTUPINFO si;
|
||||
|
@ -451,15 +451,6 @@ Pandora_Windows_Service::launchTentacleProxy() {
|
|||
server_port = "41121";
|
||||
}
|
||||
|
||||
server_ssl = conf->getValue("server_ssl");
|
||||
|
||||
if (server_ssl == "1") {
|
||||
proxy_cmd = "tentacle_server.exe -C";
|
||||
}
|
||||
else {
|
||||
proxy_cmd = "tentacle_server.exe";
|
||||
}
|
||||
|
||||
// Proxy address.
|
||||
proxy_address = conf->getValue("proxy_address");
|
||||
if (proxy_address == "") {
|
||||
|
@ -472,7 +463,7 @@ Pandora_Windows_Service::launchTentacleProxy() {
|
|||
proxy_port = "41121";
|
||||
}
|
||||
|
||||
proxy_cmd += " -b " + server_ip + " -g " + server_port + " -c " + proxy_max_connections + " -t " + proxy_timeout + " -a " + proxy_address + " -p " + proxy_port;
|
||||
proxy_cmd = "tentacle_server.exe -b " + server_ip + " -g " + server_port + " -c " + proxy_max_connections + " -t " + proxy_timeout + " -a " + proxy_address + " -p " + proxy_port;
|
||||
|
||||
ZeroMemory (&si, sizeof (si));
|
||||
ZeroMemory (&pi, sizeof (pi));
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.754(Build 210511))"
|
||||
VALUE "ProductVersion", "(7.0NG.754(Build 210518))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.754-210511
|
||||
Version: 7.0NG.754-210518
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.754-210511"
|
||||
pandora_version="7.0NG.754-210518"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -42,6 +42,10 @@ function pandora_realtime_graphs()
|
|||
global $config;
|
||||
check_login();
|
||||
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
ui_require_css_file('pandora_black', 'include/styles/', true);
|
||||
}
|
||||
|
||||
$id_network = get_parameter('id_network', 0);
|
||||
$action = get_parameter('action', 'list');
|
||||
|
||||
|
@ -66,8 +70,8 @@ function pandora_realtime_graphs()
|
|||
$long_index = [];
|
||||
$no_data_image = '';
|
||||
|
||||
$canvas = '<div id="graph_container">';
|
||||
$canvas .= '<div id="chartLegend"></div>';
|
||||
$canvas = '<div id="graph_container" class="graph_container">';
|
||||
$canvas .= '<div id="chartLegend" class="chartLegend"></div>';
|
||||
|
||||
$width = 800;
|
||||
$height = 300;
|
||||
|
@ -239,7 +243,9 @@ function pandora_realtime_graphs()
|
|||
|
||||
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>';
|
||||
if ($config['style'] !== 'pandora_black') {
|
||||
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.
|
||||
set_js_value('timezone_offset', date('Z', time()));
|
||||
|
|
|
@ -74,6 +74,10 @@ enterprise/extensions/ipam
|
|||
enterprise/extensions/disabled/visual_console_manager.php
|
||||
enterprise/extensions/visual_console_manager.php
|
||||
pandora_console/extensions/net_tools.php
|
||||
enterprise/godmode/agentes/module_manager_editor_web.php
|
||||
enterprise/include/ajax/web_server_module_debug.php
|
||||
enterprise/include/class/WebServerModuleDebug.class.php
|
||||
enterprise/include/styles/WebServerModuleDebug.css
|
||||
include/lib/WSManager.php
|
||||
include/lib/WebSocketServer.php
|
||||
include/lib/WebSocketUser.php
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `tusuario` ADD COLUMN `integria_user_level_user` VARCHAR(60);
|
||||
ALTER TABLE `tusuario` ADD COLUMN `integria_user_level_pass` VARCHAR(45);
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_view`;
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_edit`;
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_management`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field16` TEXT NOT NULL AFTER `al_field15`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field17` TEXT NOT NULL AFTER `al_field16`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field18` TEXT NOT NULL AFTER `al_field17`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field19` TEXT NOT NULL AFTER `al_field18`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field20` TEXT NOT NULL AFTER `al_field19`;
|
||||
|
||||
COMMIT;
|
|
@ -1334,6 +1334,11 @@ ALTER TABLE talert_snmp_action ADD COLUMN `al_field12` TEXT NOT NULL DEFAULT "";
|
|||
ALTER TABLE talert_snmp_action ADD COLUMN `al_field13` TEXT NOT NULL DEFAULT "";
|
||||
ALTER TABLE talert_snmp_action ADD COLUMN `al_field14` TEXT NOT NULL DEFAULT "";
|
||||
ALTER TABLE talert_snmp_action ADD COLUMN `al_field15` TEXT NOT NULL DEFAULT "";
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field16` TEXT NOT NULL AFTER `al_field15`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field17` TEXT NOT NULL AFTER `al_field16`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field18` TEXT NOT NULL AFTER `al_field17`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field19` TEXT NOT NULL AFTER `al_field18`;
|
||||
ALTER TABLE `talert_snmp_action` ADD COLUMN `al_field20` TEXT NOT NULL AFTER `al_field19`;
|
||||
|
||||
-- ----------------------------------------------------------------------
|
||||
-- Table `tserver`
|
||||
|
@ -1527,6 +1532,8 @@ ALTER TABLE `tusuario` MODIFY COLUMN `default_event_filter` int(10) unsigned NOT
|
|||
ADD CONSTRAINT `fk_filter_id` FOREIGN KEY `fk_filter_id` (`id_filter`) REFERENCES `tevent_filter` (`id_filter`) ON DELETE SET NULL ON UPDATE RESTRICT,
|
||||
DROP FOREIGN KEY `fk_id_filter`,
|
||||
DROP INDEX `fk_id_filter`;
|
||||
ALTER TABLE `tusuario` ADD COLUMN `integria_user_level_user` VARCHAR(60);
|
||||
ALTER TABLE `tusuario` ADD COLUMN `integria_user_level_pass` VARCHAR(45);
|
||||
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
|
@ -4025,3 +4032,6 @@ DELETE FROM `tconfig` WHERE `token` = 'ipam_installed';
|
|||
|
||||
DELETE FROM `tconfig` WHERE `token` = 'ipam_recon_script_id';
|
||||
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_view`;
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_edit`;
|
||||
ALTER TABLE `tperfil` DROP COLUMN `incident_management`;
|
|
@ -88,7 +88,6 @@ if (check_acl($config['id_user'], 0, 'AW')
|
|||
|| check_acl($config['id_user'], 0, 'LM')
|
||||
|| check_acl($config['id_user'], 0, 'UM')
|
||||
|| check_acl($config['id_user'], 0, 'LW')
|
||||
|| check_acl($config['id_user'], 0, 'IW')
|
||||
|| check_acl($config['id_user'], 0, 'EW')
|
||||
|| check_acl($config['id_user'], 0, 'DW')
|
||||
) {
|
||||
|
|
|
@ -39,7 +39,7 @@ $offset = (int) get_parameter('offset', 0);
|
|||
|
||||
// See if id_agente is set (either POST or GET, otherwise -1
|
||||
$id_agent = (int) get_parameter('id_agente');
|
||||
$groups = users_get_groups($config['id_user'], 'IR');
|
||||
$groups = users_get_groups($config['id_user'], 'AR');
|
||||
$filter = ' AND id_agent = '.$id_agent;
|
||||
$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=incident&id_agente='.$id_agent;
|
||||
|
||||
|
@ -55,7 +55,7 @@ $params = [
|
|||
agents_get_name($id_agent),
|
||||
];
|
||||
|
||||
$result = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incidents', $params, false, 'json', ',');
|
||||
$result = integria_api_call(null, null, null, null, 'get_incidents', $params, false, 'json', ',');
|
||||
|
||||
$result = json_decode($result, true);
|
||||
|
||||
|
|
|
@ -1,22 +1,38 @@
|
|||
<?php
|
||||
/**
|
||||
* Module Manager main script.
|
||||
*
|
||||
* @category Module
|
||||
* @package Pandora FMS
|
||||
* @subpackage Agent Configuration
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation 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.
|
||||
// You can redefine $url and unset $id_agente to reuse the form. Dirty (hope temporal) hack
|
||||
if (isset($id_agente)) {
|
||||
$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&id_agente='.$id_agente;
|
||||
} else {
|
||||
$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module';
|
||||
}
|
||||
// You can redefine $url and unset $id_agente to reuse the form. Dirty (hope temporal) hack.
|
||||
$url_id_agente = (isset($id_agente) === true) ? '&id_agente='.$id_agente : '';
|
||||
|
||||
$url = sprintf(
|
||||
'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module%s',
|
||||
$url_id_agente
|
||||
);
|
||||
|
||||
enterprise_include('godmode/agentes/module_manager.php');
|
||||
$isFunctionPolicies = enterprise_include_once('include/functions_policies.php');
|
||||
|
@ -56,7 +72,7 @@ echo __('Search').' '.html_print_input_text(
|
|||
);
|
||||
html_print_input_hidden('search', 1);
|
||||
// Search string filter form.
|
||||
if (($policy_page) || (isset($agent))) {
|
||||
if (($policy_page !== false) || (isset($agent) === true)) {
|
||||
echo '<form id="" method="post" action="">';
|
||||
} else {
|
||||
echo '<form id="create_module_type" method="post" action="'.$url.'">';
|
||||
|
@ -73,25 +89,31 @@ echo '</form>';
|
|||
$network_available = db_get_sql(
|
||||
'SELECT count(*)
|
||||
FROM tserver
|
||||
WHERE server_type = 1'
|
||||
WHERE server_type = '.SERVER_TYPE_NETWORK
|
||||
);
|
||||
// POSTGRESQL AND ORACLE COMPATIBLE.
|
||||
$wmi_available = db_get_sql(
|
||||
'SELECT count(*)
|
||||
FROM tserver
|
||||
WHERE server_type = 6'
|
||||
WHERE server_type = '.SERVER_TYPE_WMI
|
||||
);
|
||||
// POSTGRESQL AND ORACLE COMPATIBLE.
|
||||
$plugin_available = db_get_sql(
|
||||
'SELECT count(*)
|
||||
FROM tserver
|
||||
WHERE server_type = 4'
|
||||
WHERE server_type = '.SERVER_TYPE_PLUGIN
|
||||
);
|
||||
// POSTGRESQL AND ORACLE COMPATIBLE.
|
||||
$prediction_available = db_get_sql(
|
||||
'SELECT count(*)
|
||||
FROM tserver
|
||||
WHERE server_type = 5'
|
||||
WHERE server_type = '.SERVER_TYPE_PREDICTION
|
||||
);
|
||||
// POSTGRESQL AND ORACLE COMPATIBLE.
|
||||
$web_available = db_get_sql(
|
||||
'SELECT count(*)
|
||||
FROM tserver
|
||||
WHERE server_type = '.SERVER_TYPE_WEB
|
||||
);
|
||||
// POSTGRESQL AND ORACLE COMPATIBLE.
|
||||
// Development mode to use all servers.
|
||||
|
@ -122,6 +144,10 @@ if ($prediction_available) {
|
|||
$modules['predictionserver'] = __('Create a new prediction server module');
|
||||
}
|
||||
|
||||
if ($web_available) {
|
||||
$modules['webserver'] = __('Create a new web Server module');
|
||||
}
|
||||
|
||||
if (enterprise_installed()) {
|
||||
set_enterprise_module_types($modules);
|
||||
}
|
||||
|
@ -298,6 +324,7 @@ if ($module_action === 'delete') {
|
|||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
case 'postgresql':
|
||||
default:
|
||||
$result = db_process_sql_delete(
|
||||
'tagente_estado',
|
||||
['id_agente_modulo' => $id_agent_module_del]
|
||||
|
@ -388,10 +415,8 @@ if ($module_action === 'delete') {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Check for errors.
|
||||
if ($error != 0) {
|
||||
} else {
|
||||
if ((int) $error == 0) {
|
||||
$count_correct_delete_modules++;
|
||||
}
|
||||
}
|
||||
|
@ -489,6 +514,7 @@ switch ($sortField) {
|
|||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
case 'postgresql':
|
||||
default:
|
||||
$order[] = [
|
||||
'field' => 'tagente_modulo.nombre',
|
||||
'order' => 'ASC',
|
||||
|
@ -509,6 +535,7 @@ switch ($sortField) {
|
|||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
case 'postgresql':
|
||||
default:
|
||||
$order[] = [
|
||||
'field' => 'tagente_modulo.nombre',
|
||||
'order' => 'DESC',
|
||||
|
@ -523,6 +550,10 @@ switch ($sortField) {
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do none.
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -543,6 +574,10 @@ switch ($sortField) {
|
|||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do none.
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -563,6 +598,10 @@ switch ($sortField) {
|
|||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do none.
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -583,6 +622,10 @@ switch ($sortField) {
|
|||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do none.
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -598,6 +641,7 @@ switch ($sortField) {
|
|||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
case 'postgresql':
|
||||
default:
|
||||
$order[] = [
|
||||
'field' => 'nombre',
|
||||
'order' => 'ASC',
|
||||
|
@ -622,7 +666,7 @@ if (!empty($order)) {
|
|||
|
||||
$first = true;
|
||||
foreach ($order as $ord) {
|
||||
if ($first) {
|
||||
if ($first === true) {
|
||||
$first = false;
|
||||
} else {
|
||||
$order_sql .= ',';
|
||||
|
@ -635,31 +679,35 @@ foreach ($order as $ord) {
|
|||
$limit = (int) $config['block_size'];
|
||||
$offset = (int) get_parameter('offset');
|
||||
|
||||
$params = ($checked) ? 'tagente_modulo.*, tmodule_group.*' : implode(
|
||||
',',
|
||||
[
|
||||
'tagente_modulo.id_agente_modulo',
|
||||
'id_tipo_modulo',
|
||||
'descripcion',
|
||||
'nombre',
|
||||
'max',
|
||||
'min',
|
||||
'module_interval',
|
||||
'id_modulo',
|
||||
'id_module_group',
|
||||
'disabled',
|
||||
'max_warning',
|
||||
'min_warning',
|
||||
'str_warning',
|
||||
'max_critical',
|
||||
'min_critical',
|
||||
'str_critical',
|
||||
'quiet',
|
||||
'critical_inverse',
|
||||
'warning_inverse',
|
||||
'id_policy_module',
|
||||
]
|
||||
);
|
||||
if ((bool) $checked === true) {
|
||||
$params = 'tagente_modulo.*, tmodule_group.*';
|
||||
} else {
|
||||
$params = implode(
|
||||
',',
|
||||
[
|
||||
'tagente_modulo.id_agente_modulo',
|
||||
'id_tipo_modulo',
|
||||
'descripcion',
|
||||
'nombre',
|
||||
'max',
|
||||
'min',
|
||||
'module_interval',
|
||||
'id_modulo',
|
||||
'id_module_group',
|
||||
'disabled',
|
||||
'max_warning',
|
||||
'min_warning',
|
||||
'str_warning',
|
||||
'max_critical',
|
||||
'min_critical',
|
||||
'str_critical',
|
||||
'quiet',
|
||||
'critical_inverse',
|
||||
'warning_inverse',
|
||||
'id_policy_module',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$where = sprintf('delete_pending = 0 AND id_agente = %s', $id_agente);
|
||||
|
||||
|
@ -686,7 +734,11 @@ if (isset($config['paginate_module'])) {
|
|||
|
||||
if ($paginate_module) {
|
||||
if (!isset($limit_sql)) {
|
||||
$limit_sql = " LIMIT $offset, $limit ";
|
||||
$limit_sql = sprintf(
|
||||
'LIMIT %s, %s',
|
||||
$offset,
|
||||
$limit
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$limit_sql = '';
|
||||
|
@ -732,7 +784,13 @@ if ($modules === false) {
|
|||
}
|
||||
|
||||
// Prepare pagination.
|
||||
$url = '?'.'sec=gagente&'.'tab=module&'.'sec2=godmode/agentes/configurar_agente&'.'id_agente='.$id_agente.'&'.'sort_field='.$sortField.'&'.'&sort='.$sort.'&'.'search_string='.urlencode($search_string);
|
||||
$url = sprintf(
|
||||
'?sec=gagente&tab=module&sec2=godmode/agentes/configurar_agente&id_agente=%s&sort_field=%s&sort=%s&search_string=%s',
|
||||
$id_agente,
|
||||
$sortField,
|
||||
$sort,
|
||||
urlencode($search_string)
|
||||
);
|
||||
|
||||
if ($paginate_module) {
|
||||
ui_pagination($total_modules, $url);
|
||||
|
|
|
@ -682,6 +682,22 @@ switch ($moduletype) {
|
|||
include 'module_manager_editor_wmi.php';
|
||||
break;
|
||||
|
||||
case 'webserver':
|
||||
case MODULE_WEB:
|
||||
$moduletype = MODULE_WEB;
|
||||
// Remove content of $ip_target when it is ip_agent because
|
||||
// it is used as HTTP auth (server) ....ONLY IN NEW MODULE!!!
|
||||
if (empty($id_agent_module)
|
||||
&& ($ip_target === agents_get_address($id_agente))
|
||||
) {
|
||||
$ip_target = '';
|
||||
}
|
||||
|
||||
$categories = [9];
|
||||
include 'module_manager_editor_common.php';
|
||||
include 'module_manager_editor_web.php';
|
||||
break;
|
||||
|
||||
// WARNING: type 7 is reserved on enterprise.
|
||||
default:
|
||||
if (enterprise_include(
|
||||
|
|
|
@ -1574,10 +1574,6 @@ $(document).ready (function () {
|
|||
});
|
||||
|
||||
disabled_two_tailed(disabledBecauseInPolicy);
|
||||
$('#checkbox-dynamic_two_tailed').change (function() {
|
||||
disabled_two_tailed(disabledBecauseInPolicy);
|
||||
});
|
||||
|
||||
|
||||
//Dynamic_options_advance;
|
||||
$('.hide_dinamic').hide();
|
||||
|
@ -1646,15 +1642,10 @@ function disabled_status (disabledBecauseInPolicy) {
|
|||
}
|
||||
|
||||
function disabled_two_tailed (disabledBecauseInPolicy) {
|
||||
if($('#checkbox-dynamic_two_tailed').prop('checked')){
|
||||
$('#text-dynamic_max').prop('readonly', false);
|
||||
$('#text-dynamic_max').removeClass('readonly');
|
||||
}
|
||||
else{
|
||||
if (disabledBecauseInPolicy == 0){
|
||||
$('#text-dynamic_max').prop('readonly', true);
|
||||
$('#text-dynamic_max').addClass('readonly');
|
||||
}
|
||||
if (disabledBecauseInPolicy == 1){
|
||||
$('#text-dynamic_max')
|
||||
.prop('readonly', true)
|
||||
.addClass('readonly');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,468 @@
|
|||
<?php
|
||||
/**
|
||||
* Web Module Editor for Module Manager.
|
||||
*
|
||||
* @category Module manager
|
||||
* @package Pandora FMS
|
||||
* @subpackage Module manager
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
enterprise_include_once('include/functions_policies.php');
|
||||
|
||||
$disabledBecauseInPolicy = false;
|
||||
$disabledTextBecauseInPolicy = '';
|
||||
$classdisabledBecauseInPolicy = '';
|
||||
$page = get_parameter('page', '');
|
||||
if (strstr($page, 'policy_modules') === false) {
|
||||
if ($config['enterprise_installed']) {
|
||||
if (policies_is_module_linked($id_agent_module) == 1) {
|
||||
$disabledBecauseInPolicy = 1;
|
||||
} else {
|
||||
$disabledBecauseInPolicy = 0;
|
||||
}
|
||||
} else {
|
||||
$disabledBecauseInPolicy = false;
|
||||
}
|
||||
|
||||
if ($disabledBecauseInPolicy) {
|
||||
$disabledTextBecauseInPolicy = 'disabled = "disabled"';
|
||||
$classdisabledBecauseInPolicy = 'readonly';
|
||||
}
|
||||
}
|
||||
|
||||
global $id_agente;
|
||||
|
||||
$extra_title = __('Web server module');
|
||||
|
||||
// Div for modal.
|
||||
html_print_div(
|
||||
[
|
||||
'id' => 'modal',
|
||||
'style' => 'display: none;',
|
||||
]
|
||||
);
|
||||
|
||||
require_once $config['homedir'].'/include/ajax/web_server_module_debug.php';
|
||||
|
||||
define('ID_NETWORK_COMPONENT_TYPE', 7);
|
||||
|
||||
if (!$tcp_port && !$id_agent_module) {
|
||||
$tcp_port = 80;
|
||||
}
|
||||
|
||||
// plugin_server is the browser id
|
||||
if ($plugin_user == '' && !$id_agent_module) {
|
||||
$plugin_user = get_product_name().' / Webcheck';
|
||||
}
|
||||
|
||||
// plugin_server is the referer
|
||||
if ($plugin_pass == '' && !$id_agent_module) {
|
||||
$plugin_pass = 1;
|
||||
}
|
||||
|
||||
if (empty($update_module_id)) {
|
||||
// Function in module_manager_editor_common.php
|
||||
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
|
||||
} else {
|
||||
// TODO: Print network component if available
|
||||
}
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Web checks');
|
||||
|
||||
$adopt = false;
|
||||
if (isset($id_agent_module)) {
|
||||
$adopt = enterprise_hook('policies_is_module_adopt', [$id_agent_module]);
|
||||
}
|
||||
|
||||
$id_policy_module = (int) get_parameter('id_policy_module', '');
|
||||
if ($id_policy_module) {
|
||||
$module = enterprise_hook('policies_get_module', [$id_policy_module]);
|
||||
$plugin_parameter = $module['plugin_parameter'];
|
||||
}
|
||||
|
||||
if ((bool) $adopt === false) {
|
||||
$data[1] = html_print_textarea(
|
||||
'plugin_parameter',
|
||||
15,
|
||||
65,
|
||||
$plugin_parameter,
|
||||
$disabledTextBecauseInPolicy,
|
||||
true
|
||||
);
|
||||
} else {
|
||||
$data[1] = html_print_textarea(
|
||||
'plugin_parameter',
|
||||
15,
|
||||
65,
|
||||
$plugin_parameter,
|
||||
false,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$table_simple->colspan['web_checks'][1] = 2;
|
||||
|
||||
// Disable debug button if module has not started.
|
||||
if ($id_agent_module > 0
|
||||
&& db_get_value_filter(
|
||||
'debug_content',
|
||||
'tagente_modulo',
|
||||
['id_agente_modulo' => $id_agent_module]
|
||||
) !== null
|
||||
) {
|
||||
$disableDebug = false;
|
||||
$hintDebug = __('Debug remotely this module');
|
||||
} else {
|
||||
$disableDebug = true;
|
||||
$hintDebug = __('Debug this module once it has been initialized');
|
||||
}
|
||||
|
||||
$suc_err_check = ' <span id="check_conf_suc" class="checks invisible">'.html_print_image('/images/ok.png', true).'</span>';
|
||||
$suc_err_check .= ' <span id="check_conf_err" class="checks invisible">'.html_print_image('/images/error_red.png', true).'</span>';
|
||||
$data[2] = html_print_button(
|
||||
__('Load basic'),
|
||||
'btn_loadbasic',
|
||||
false,
|
||||
'',
|
||||
'class="sub config"',
|
||||
true
|
||||
).ui_print_help_tip(__('Load a basic structure on Web Checks'), true);
|
||||
$data[2] .= '<br><br>'.html_print_button(
|
||||
__('Check'),
|
||||
'btn_checkconf',
|
||||
false,
|
||||
'',
|
||||
'class="sub upd"',
|
||||
true
|
||||
).ui_print_help_tip(__('Check the correct structure of the WebCheck'), true).$suc_err_check;
|
||||
$data[2] .= '<br><br>'.html_print_button(
|
||||
__('Debug'),
|
||||
'btn_debugModule',
|
||||
$disableDebug,
|
||||
'',
|
||||
'class="sub config" onClick="loadDebugWindow()"',
|
||||
true
|
||||
).ui_print_help_tip($hintDebug, true);
|
||||
|
||||
|
||||
push_table_simple($data, 'web_checks');
|
||||
|
||||
$http_checks_type = [
|
||||
0 => 'Anyauth',
|
||||
1 => 'NTLM',
|
||||
2 => 'DIGEST',
|
||||
3 => 'BASIC',
|
||||
];
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Check type');
|
||||
$data[1] = html_print_select($http_checks_type, 'tcp_port', $tcp_port, false, '', '', true, false, false);
|
||||
|
||||
push_table_advanced($data, 'web_0');
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Requests');
|
||||
$data[1] = html_print_input_text('plugin_pass', $plugin_pass, '', 10, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
$data[2] = '';
|
||||
$data[3] = __('Agent browser id');
|
||||
$data[4] = html_print_input_text('plugin_user', $plugin_user, '', 30, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
push_table_advanced($data, 'web_1');
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('HTTP auth (login)');
|
||||
$data[1] = html_print_input_text('http_user', $plugin_parameter_http_user, '', 10, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
$data[2] = '';
|
||||
$data[3] = __('HTTP auth (password)');
|
||||
$data[4] = html_print_input_password('http_pass', $plugin_parameter_http_pass, '', 30, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
push_table_advanced($data, 'web_2');
|
||||
|
||||
$data = [];
|
||||
|
||||
$data[0] = __('Proxy URL');
|
||||
$data[1] = html_print_input_text('snmp_oid', $snmp_oid, '', 30, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
$data[2] = $data[3] = $data[4] = '';
|
||||
push_table_advanced($data, 'web_3');
|
||||
|
||||
$data = [];
|
||||
|
||||
$data[0] = __('Proxy auth (login)');
|
||||
$data[1] = html_print_input_text('tcp_send', $tcp_send, '', 30, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
$data[2] = '';
|
||||
$data[3] = __('Proxy auth (pass)');
|
||||
$data[4] = html_print_input_password('tcp_rcv', $tcp_rcv, '', 30, 0, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
push_table_advanced($data, 'web_4');
|
||||
|
||||
$data = [];
|
||||
|
||||
$data[0] = __('Proxy auth (server)');
|
||||
$data[1] = html_print_input_text('ip_target', $ip_target, '', 30, 100, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
$data[2] = '';
|
||||
$data[3] = __('Proxy auth (realm)');
|
||||
$data[4] = html_print_input_text('snmp_community', $snmp_community, '', 30, 100, true, $disabledBecauseInPolicy, false, '', $classdisabledBecauseInPolicy);
|
||||
|
||||
push_table_advanced($data, 'web_5');
|
||||
|
||||
// Add some strings to be used from javascript
|
||||
$texts = [
|
||||
'lines_before_begin' => __('First line must be "task_begin"'),
|
||||
'missed_begin' => __('Webchecks configuration is empty'),
|
||||
'missed_end' => __('Last line must be "task_end"'),
|
||||
'lines_after_end' => __('Last line must be "task_end"'),
|
||||
'unknown_token' => __("There is a line with a unknown token 'token_fail'."),
|
||||
'missed_get_post' => __("There isn't get or post"),
|
||||
'correct' => __('Web checks are built correctly'),
|
||||
];
|
||||
|
||||
foreach ($texts as $code => $text) {
|
||||
echo '<span class="invisible" id="'.$code.'">'.$text.'</span>';
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var supported_tokens = [
|
||||
"task_begin",
|
||||
"post",
|
||||
"variable_name",
|
||||
"variable_value",
|
||||
"cookie",
|
||||
"resource",
|
||||
"get",
|
||||
"check_string",
|
||||
"check_not_string",
|
||||
"get_content_advanced",
|
||||
"get_content",
|
||||
"debug",
|
||||
"task_end",
|
||||
"head",
|
||||
"http_auth_user",
|
||||
"http_auth_pass"
|
||||
];
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
var plugin_parameter = $("#textarea_plugin_parameter");
|
||||
var http_auth_user = $('#text-http_user');
|
||||
var http_auth_pass = $('#password-http_pass');
|
||||
|
||||
$(plugin_parameter).keyup(function() {
|
||||
|
||||
// Check and fill textbox.
|
||||
if ($(plugin_parameter).val() == '') {
|
||||
$('#button-btn_loadbasic').removeAttr('disabled');
|
||||
} else {
|
||||
$('#button-btn_loadbasic').attr('disabled', 'disabled');
|
||||
}
|
||||
|
||||
// Update http_auth_user from conf data
|
||||
var http_auth_user_value = get_module_token_from_config('http_auth_user', plugin_parameter, "\n");
|
||||
if (http_auth_user_value != "") {
|
||||
http_auth_user.val(http_auth_user_value);
|
||||
}
|
||||
|
||||
// Update http_auth_pass from conf data
|
||||
var http_auth_pass_value = get_module_token_from_config('http_auth_pass', plugin_parameter, "\n");
|
||||
if (http_auth_pass_value != "") {
|
||||
http_auth_pass.val(http_auth_pass_value);
|
||||
}
|
||||
});
|
||||
|
||||
$('#button-btn_loadbasic').click(function() {
|
||||
if ($(plugin_parameter).val() != '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$(plugin_parameter).val(
|
||||
'task_begin\ncookie 0\nresource 0\ntask_end');
|
||||
|
||||
$('#button-btn_loadbasic').attr('disabled', 'disabled');
|
||||
|
||||
// Hide success and error indicators
|
||||
$('.checks').hide();
|
||||
});
|
||||
|
||||
$('#button-btn_checkconf').click(function() {
|
||||
var msg_error = '';
|
||||
|
||||
if (plugin_parameter.val() == '') {
|
||||
msg_error = 'missed_begin';
|
||||
} else {
|
||||
var lines = plugin_parameter.val().split("\n");
|
||||
|
||||
var started = false;
|
||||
var ended = false;
|
||||
var lines_after_end = false;
|
||||
var lines_before_begin = false;
|
||||
var token_fail = false;
|
||||
var token_get_post = false;
|
||||
var token_check = true;
|
||||
var str_token_fail = '';
|
||||
|
||||
for (i = 0; i < lines.length; i++) {
|
||||
if (lines[i].match(/^\s*$/)) {
|
||||
// Empty line
|
||||
continue;
|
||||
} else if (!started) {
|
||||
if (lines[i].match(/^task_begin\s*$/)) {
|
||||
started = true;
|
||||
} else {
|
||||
// Found a not empty line before task_begin
|
||||
lines_before_begin = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lines[i].match(/^task_end\s*$/)) {
|
||||
ended = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
//Check token is correct
|
||||
if (!lines[i].match(/^([\s])*[#]/)) {
|
||||
|
||||
var token = lines[i].match(/^([^\s]+)\s*/);
|
||||
|
||||
if (typeof(token) == 'object') {
|
||||
token = token[1];
|
||||
|
||||
if ((!token_get_post) && (token == 'get' || token == 'post' || token == 'header')) {
|
||||
token_get_post = true;
|
||||
continue;
|
||||
}
|
||||
if (token == 'check_string') {
|
||||
if (token_get_post) {
|
||||
token_check = true;
|
||||
continue;
|
||||
} else {
|
||||
token_check = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ($.inArray(token, supported_tokens) == -1) {
|
||||
token_fail = true;
|
||||
str_token_fail = token;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var msg_error = '';
|
||||
|
||||
if (token_fail) {
|
||||
var temp_msg = $("#unknown_token").html();
|
||||
temp_msg = temp_msg.replace(/['](.*)[']/, "'" + str_token_fail + "'");
|
||||
|
||||
$("#unknown_token").html(temp_msg);
|
||||
|
||||
msg_error = 'unknown_token';
|
||||
} else if (lines_before_begin) {
|
||||
msg_error = 'lines_before_begin';
|
||||
} else if (!started) {
|
||||
msg_error = 'missed_begin';
|
||||
} else if (!ended) {
|
||||
msg_error = 'missed_end';
|
||||
} else if (lines_after_end) {
|
||||
msg_error = 'lines_after_end';
|
||||
} else if (!token_check) {
|
||||
msg_error = 'missed_get_post';
|
||||
} else {
|
||||
msg_error = 'correct';
|
||||
}
|
||||
|
||||
|
||||
if (msg_error == 'correct') {
|
||||
$('#check_conf_suc').find('img').eq(0)
|
||||
.attr('title', $('#' + msg_error).html());
|
||||
|
||||
$('#check_conf_err').hide();
|
||||
$('#check_conf_suc').show();
|
||||
} else {
|
||||
$('#check_conf_err').find('img').eq(0)
|
||||
.attr('title', $('#' + msg_error).html());
|
||||
|
||||
$('#check_conf_suc').hide();
|
||||
$('#check_conf_err').show();
|
||||
}
|
||||
});
|
||||
|
||||
$(plugin_parameter).trigger('keyup');
|
||||
|
||||
http_auth_user.keyup(function() {
|
||||
config = plugin_parameter.val();
|
||||
if (config.search("http_auth_user") == -1) {
|
||||
var http_auth_user_end =
|
||||
"http_auth_user " + this.value + "\n" + "task_end" + "\n";
|
||||
plugin_parameter.val(config.replace(/^task_end.*$/m, http_auth_user_end));
|
||||
} else {
|
||||
plugin_parameter.val(
|
||||
config.replace(/^http_auth_user.*$/m, "http_auth_user " + this.value)
|
||||
);
|
||||
// Hide success and error indicators
|
||||
$(".checks").hide();
|
||||
}
|
||||
});
|
||||
|
||||
http_auth_pass.keyup(function() {
|
||||
config = plugin_parameter.val();
|
||||
if (config.search("http_auth_pass") == -1) {
|
||||
var http_auth_pass_end =
|
||||
"http_auth_pass " + this.value + "\n" + "task_end" + "\n";
|
||||
plugin_parameter.val(config.replace(/^task_end.*$/m, http_auth_pass_end));
|
||||
} else {
|
||||
plugin_parameter.val(
|
||||
config.replace(/^http_auth_pass.*$/m, "http_auth_pass " + this.value)
|
||||
);
|
||||
// Hide success and error indicators
|
||||
$(".checks").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_module_token_from_config(token_name, plugin_parameter, separator) {
|
||||
var return_var = "";
|
||||
if(token_name == null || token_name == '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
data = plugin_parameter.val().split(separator);
|
||||
len = data.length;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (data[i][0] == "#") continue;
|
||||
tokens = data[i].split(" ");
|
||||
if (tokens.length == 0) continue;
|
||||
token = tokens.shift();
|
||||
if (token == token_name ) return_var = tokens.join(" ");
|
||||
}
|
||||
|
||||
return_var = $.trim(return_var);
|
||||
|
||||
return return_var;
|
||||
}
|
||||
|
||||
</script>
|
|
@ -43,7 +43,7 @@ if (is_ajax()) {
|
|||
if ($get_integria_ticket_custom_types) {
|
||||
$ticket_type_id = get_parameter('ticket_type_id');
|
||||
|
||||
$api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_fields', $ticket_type_id, false, 'json');
|
||||
$api_call = integria_api_call(null, null, null, null, 'get_incident_fields', $ticket_type_id, false, 'json');
|
||||
|
||||
echo $api_call;
|
||||
return;
|
||||
|
|
|
@ -15,7 +15,7 @@ global $config;
|
|||
|
||||
check_login();
|
||||
|
||||
$gis_w = check_acl($config['id_user'], 0, 'MW');
|
||||
$gis_w = check_acl($config['id_user'], 0, 'MW', false, true, true);
|
||||
$gis_m = check_acl($config['id_user'], 0, 'MM');
|
||||
$access = ($gis_w == true) ? 'MW' : (($gis_m == true) ? 'MM' : 'MW');
|
||||
|
||||
|
@ -490,7 +490,7 @@ if (users_can_manage_group_all('MM') === true) {
|
|||
$table->data[2][0] = __('Group');
|
||||
$table->data[2][1] = html_print_select_groups(
|
||||
false,
|
||||
'IW',
|
||||
'AR',
|
||||
$return_all_group,
|
||||
'map_group_id',
|
||||
$map_group_id,
|
||||
|
|
|
@ -20,15 +20,6 @@ require_once $config['homedir'].'/include/functions_html.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'IW')) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access event viewer'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
// id report
|
||||
$id = (int) get_parameter('id');
|
||||
|
||||
|
|
|
@ -641,8 +641,8 @@ echo '<legend>'.__('Mail configuration').'</legend>';
|
|||
$table_mail_test->width = '100%';
|
||||
$table_mail_test->class = 'databox filters';
|
||||
$table_mail_test->data = [];
|
||||
$table_mail_test->style[0] = 'font-weight: bold';
|
||||
$table_mail_test->colspan[1][0] = 2;
|
||||
$table_mail_test->style[0] = 'font-weight: bold;';
|
||||
$table_mail_test->style[1] = 'font-weight: bold;display: flex;height: 54px;align-items: center;';
|
||||
|
||||
$table_mail_test->data[0][0] = __('Address');
|
||||
$table_mail_test->data[0][1] = html_print_input_text(
|
||||
|
@ -661,7 +661,9 @@ echo '<legend>'.__('Mail configuration').'</legend>';
|
|||
'',
|
||||
'class="sub next"',
|
||||
true
|
||||
).'  <span id="email_test_sent_message" class="invisible">Email sent</span><span id="email_test_failure_message" class=invisible">Email could not be sent</span>';
|
||||
);
|
||||
|
||||
$table_mail_test->data[1][1] = '  <span id="email_test_sent_message" class="invisible"><b>Email sent</b></span><span id="email_test_failure_message" class=invisible"><b>Email could not be sent</b></span>';
|
||||
|
||||
echo '<div id="email_test_'.$id.'" title="'.__('Check mail configuration').'" class="invisible">'.html_print_table($table_mail_test, true).'</div>';
|
||||
}
|
||||
|
@ -703,6 +705,9 @@ function show_email_test(id) {
|
|||
}
|
||||
|
||||
function perform_email_test () {
|
||||
$('#email_test_sent_message').hide();
|
||||
$('#email_test_failure_message').hide();
|
||||
|
||||
var test_address = $('#text-email_test_address').val();
|
||||
|
||||
$.ajax({
|
||||
|
@ -713,12 +718,15 @@ function perform_email_test () {
|
|||
success: function(data) {
|
||||
if (parseInt(data) === 1) {
|
||||
$('#email_test_sent_message').show();
|
||||
$('#email_test_failure_message').hide();
|
||||
} else {
|
||||
$('#email_test_failure_message').show();
|
||||
$('#email_test_sent_message').hide();
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
$('#email_test_failure_message').show();
|
||||
$('#email_test_sent_message').hide();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
@ -41,8 +41,10 @@ if (is_ajax()) {
|
|||
$integria_pass = get_parameter('integria_pass', '');
|
||||
$integria_api_hostname = get_parameter('api_hostname', '');
|
||||
$integria_api_pass = get_parameter('api_pass', '');
|
||||
$user_level_conf = get_parameter('user_level_conf', 0);
|
||||
$user_level_conf_bool = $user_level_conf === 'true' ? true : false;
|
||||
|
||||
$login_result = integria_api_call($integria_api_hostname, $integria_user, $integria_pass, $integria_api_pass, 'get_login', []);
|
||||
$login_result = integria_api_call($integria_api_hostname, $integria_user, $integria_pass, $integria_api_pass, 'get_login', [], false, '', '', $user_level_conf_bool);
|
||||
|
||||
if ($login_result != false) {
|
||||
echo json_encode(['login' => 1]);
|
||||
|
@ -53,7 +55,7 @@ if (is_ajax()) {
|
|||
return;
|
||||
}
|
||||
|
||||
$has_connection = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_login', []);
|
||||
$has_connection = integria_api_call(null, null, null, null, 'get_login', []);
|
||||
|
||||
if ($has_connection === false && $config['integria_enabled']) {
|
||||
ui_print_error_message(__('Integria IMS API is not reachable'));
|
||||
|
@ -86,7 +88,7 @@ if (get_parameter('update_config', 0) == 1) {
|
|||
);
|
||||
}
|
||||
|
||||
$ticket_types = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_types', '', false, 'json');
|
||||
$ticket_types = integria_api_call(null, null, null, null, 'get_types', '', false, 'json');
|
||||
|
||||
$types_string = '';
|
||||
|
||||
|
@ -216,19 +218,19 @@ $integria_users_values = [];
|
|||
$integria_types_values = [];
|
||||
$integria_status_values = [];
|
||||
|
||||
$integria_groups_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_groups', []);
|
||||
$integria_groups_csv = integria_api_call(null, null, null, null, 'get_groups', []);
|
||||
|
||||
get_array_from_csv_data_pair($integria_groups_csv, $integria_group_values);
|
||||
|
||||
$integria_status_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incidents_status', []);
|
||||
$integria_status_csv = integria_api_call(null, null, null, null, 'get_incidents_status', []);
|
||||
|
||||
get_array_from_csv_data_pair($integria_status_csv, $integria_status_values);
|
||||
|
||||
$integria_criticity_levels_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_priorities', []);
|
||||
$integria_criticity_levels_csv = integria_api_call(null, null, null, null, 'get_incident_priorities', []);
|
||||
|
||||
get_array_from_csv_data_pair($integria_criticity_levels_csv, $integria_criticity_values);
|
||||
|
||||
$integria_users_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_users', []);
|
||||
$integria_users_csv = integria_api_call(null, null, null, null, 'get_users', []);
|
||||
|
||||
$csv_array = explode("\n", $integria_users_csv);
|
||||
|
||||
|
@ -238,7 +240,7 @@ foreach ($csv_array as $csv_line) {
|
|||
}
|
||||
}
|
||||
|
||||
$integria_types_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_types', []);
|
||||
$integria_types_csv = integria_api_call(null, null, null, null, 'get_types', []);
|
||||
|
||||
get_array_from_csv_data_pair($integria_types_csv, $integria_types_values);
|
||||
|
||||
|
@ -267,6 +269,12 @@ $table_remote->class = 'databox filters';
|
|||
$table_remote->size['name'] = '30%';
|
||||
$table_remote->style['name'] = 'font-weight: bold';
|
||||
|
||||
// Enable eHorus user configuration.
|
||||
$row = [];
|
||||
$row['name'] = ('Integria configuration at user level');
|
||||
$row['control'] = html_print_checkbox_switch('integria_user_level_conf', 1, $config['integria_user_level_conf'], true);
|
||||
$table_remote->data['integria_user_level_conf'] = $row;
|
||||
|
||||
// Integria user.
|
||||
$row = [];
|
||||
$row['name'] = __('User');
|
||||
|
@ -282,7 +290,7 @@ $table_remote->data['integria_pass'] = $row;
|
|||
|
||||
// Integria hostname.
|
||||
$row = [];
|
||||
$row['name'] = __('API Hostname');
|
||||
$row['name'] = __('URL to Integria IMS setup').ui_print_help_tip(__('Full URL to your Integria IMS setup (e.g., http://192.168.1.20/integria, https://support.mycompany.com).'), true);
|
||||
$row['control'] = html_print_input_text('integria_hostname', $config['integria_hostname'], '', 30, 100, true);
|
||||
$table_remote->data['integria_hostname'] = $row;
|
||||
|
||||
|
@ -329,22 +337,20 @@ $row['control'] = html_print_input_text(
|
|||
true,
|
||||
false,
|
||||
false
|
||||
).ui_print_help_icon('alert_macros', true);
|
||||
);
|
||||
$table_alert_settings->data['custom_response_incident_title'] = $row;
|
||||
|
||||
// Alert incident description.
|
||||
$row = [];
|
||||
$row['name'] = __('Description');
|
||||
$row['control'] = html_print_input_text(
|
||||
$row['name'] = __('Ticket body');
|
||||
$row['control'] = html_print_textarea(
|
||||
'incident_content',
|
||||
7,
|
||||
25,
|
||||
$config['incident_content'],
|
||||
'',
|
||||
50,
|
||||
100,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
).ui_print_help_icon('alert_macros', true);
|
||||
true
|
||||
);
|
||||
$table_alert_settings->data['custom_response_incident_content'] = $row;
|
||||
|
||||
// Alert default group.
|
||||
|
@ -452,22 +458,21 @@ $row['control'] = html_print_input_text(
|
|||
true,
|
||||
false,
|
||||
false
|
||||
).ui_print_help_icon('response_macros', true);
|
||||
);
|
||||
$table_cr_settings->data['custom_response_incident_title'] = $row;
|
||||
|
||||
// Custom response incident description.
|
||||
$row = [];
|
||||
$row['name'] = __('Description');
|
||||
$row['control'] = html_print_input_text(
|
||||
$row['name'] = __('Ticket body');
|
||||
$row['control'] = html_print_textarea(
|
||||
'cr_incident_content',
|
||||
7,
|
||||
25,
|
||||
$config['cr_incident_content'],
|
||||
'',
|
||||
50,
|
||||
100,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
).ui_print_help_icon('response_macros', true);
|
||||
true
|
||||
);
|
||||
|
||||
$table_cr_settings->data['custom_response_incident_content'] = $row;
|
||||
|
||||
// Custom response default group.
|
||||
|
@ -599,7 +604,7 @@ if ($has_connection != false) {
|
|||
// Form alert default settings.
|
||||
echo '<div id="form_alert_settings">';
|
||||
echo '<fieldset>';
|
||||
echo '<legend>'.__('Alert default values').'</legend>';
|
||||
echo '<legend>'.__('Alert default values').' '.ui_print_help_icon('alert_macros', true).'</legend>';
|
||||
|
||||
html_print_table($table_alert_settings);
|
||||
|
||||
|
@ -609,7 +614,7 @@ if ($has_connection != false) {
|
|||
// Form custom response default settings.
|
||||
echo '<div id="form_custom_response_settings">';
|
||||
echo '<fieldset>';
|
||||
echo '<legend>'.__('Event custom response default values').'</legend>';
|
||||
echo '<legend>'.__('Event custom response default values').' '.ui_print_help_icon('alert_macros', true).'</legend>';
|
||||
|
||||
html_print_table($table_cr_settings);
|
||||
|
||||
|
@ -632,6 +637,29 @@ echo '</form>';
|
|||
|
||||
<script type="text/javascript">
|
||||
|
||||
if($('input:checkbox[name="integria_user_level_conf"]').is(':checked'))
|
||||
{
|
||||
$('#integria-remote-setup-integria_user').hide();
|
||||
$('#integria-remote-setup-integria_pass').hide()
|
||||
}
|
||||
|
||||
var handleUserLevel = function(event) {
|
||||
var is_checked = $('input:checkbox[name="integria_enabled"]').is(':checked');
|
||||
var is_checked_userlevel = $('input:checkbox[name="integria_user_level_conf"]').is(':checked');
|
||||
|
||||
if (event.target.value == '1' && is_checked && !is_checked_userlevel) {
|
||||
showUserPass();
|
||||
$('input:checkbox[name="integria_user_level_conf"]').attr('checked', true);
|
||||
}
|
||||
else {
|
||||
hideUserPass();
|
||||
$('input:checkbox[name="integria_user_level_conf"]').attr('checked', false);
|
||||
};
|
||||
}
|
||||
|
||||
$('input:checkbox[name="integria_enabled"]').change(handleEnable);
|
||||
$('input:checkbox[name="integria_user_level_conf"]').change(handleUserLevel);
|
||||
|
||||
if(!$('input:checkbox[name="integria_enabled"]').is(':checked')) {
|
||||
$('#form_remote').hide();
|
||||
$('#form_custom_response_settings').hide();
|
||||
|
@ -723,6 +751,7 @@ echo '</form>';
|
|||
var integria_pass = $('input[name=integria_pass]').val();
|
||||
var api_hostname = $('input[name=integria_hostname]').val();
|
||||
var api_pass = $('input[name=integria_api_pass]').val();
|
||||
var user_level_conf = $('input:checkbox[name="integria_user_level_conf"]').is(':checked');
|
||||
|
||||
var data = {
|
||||
page: 'godmode/setup/setup_integria',
|
||||
|
@ -731,6 +760,7 @@ echo '</form>';
|
|||
integria_pass: integria_pass,
|
||||
api_hostname: api_hostname,
|
||||
api_pass: api_pass,
|
||||
user_level_conf: user_level_conf,
|
||||
}
|
||||
|
||||
// AJAX call to check API connection.
|
||||
|
|
|
@ -24,15 +24,6 @@ require_once 'include/functions_ui.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'IR')) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access netflow setup'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
$update = (bool) get_parameter('update');
|
||||
|
||||
$table->width = '100%';
|
||||
|
|
|
@ -85,11 +85,6 @@ if ($id_profile || $new_profile) {
|
|||
// Name
|
||||
$name = '';
|
||||
|
||||
// Incidents
|
||||
$incident_view = 0;
|
||||
$incident_edit = 0;
|
||||
$incident_management = 0;
|
||||
|
||||
// Agents
|
||||
$agent_view = 0;
|
||||
$agent_edit = 0;
|
||||
|
@ -148,11 +143,6 @@ if ($id_profile || $new_profile) {
|
|||
// Name
|
||||
$name = $profile['name'];
|
||||
|
||||
// Incidents
|
||||
$incident_view = (bool) $profile['incident_view'];
|
||||
$incident_edit = (bool) $profile['incident_edit'];
|
||||
$incident_management = (bool) $profile['incident_management'];
|
||||
|
||||
// Agents
|
||||
$agent_view = (bool) $profile['agent_view'];
|
||||
$agent_edit = (bool) $profile['agent_edit'];
|
||||
|
@ -197,7 +187,7 @@ if ($id_profile || $new_profile) {
|
|||
);
|
||||
enterprise_include_once('include/functions_audit.php');
|
||||
|
||||
$info = 'Name: '.$name.' Incident view: '.$incident_view.' Incident edit: '.$incident_edit.' Incident management: '.$incident_management.' Agent view: '.$agent_view.' Agent edit: '.$agent_edit.' Agent disable: '.$agent_disable.' Alert edit: '.$alert_edit.' Alert management: '.$alert_management.' User management: '.$user_management.' DB management: '.$db_management.' Event view: '.$event_view.' Event edit: '.$event_edit.' Event management: '.$event_management.' Report view: '.$report_view.' Report edit: '.$report_edit.' Report management: '.$report_management.' Network map view: '.$map_view.' Network map edit: '.$map_edit.' Network map management: '.$map_management.' Visual console view: '.$vconsole_view.' Visual console edit: '.$vconsole_edit.' Visual console management: '.$vconsole_management.' '.get_product_name().' Management: '.$pandora_management;
|
||||
$info = 'Name: '.$name.' Agent view: '.$agent_view.' Agent edit: '.$agent_edit.' Agent disable: '.$agent_disable.' Alert edit: '.$alert_edit.' Alert management: '.$alert_management.' User management: '.$user_management.' DB management: '.$db_management.' Event view: '.$event_view.' Event edit: '.$event_edit.' Event management: '.$event_management.' Report view: '.$report_view.' Report edit: '.$report_edit.' Report management: '.$report_management.' Network map view: '.$map_view.' Network map edit: '.$map_edit.' Network map management: '.$map_management.' Visual console view: '.$vconsole_view.' Visual console edit: '.$vconsole_edit.' Visual console management: '.$vconsole_management.' '.get_product_name().' Management: '.$pandora_management;
|
||||
|
||||
enterprise_hook('audit_pandora_enterprise', [$id_audit, $info]);
|
||||
|
||||
|
@ -319,21 +309,6 @@ if ($id_profile || $new_profile) {
|
|||
$table->data['VM'] = $row;
|
||||
$table->data[] = '<hr>';
|
||||
|
||||
// Incidents
|
||||
$row = [];
|
||||
$row['name'] = __('View incidents');
|
||||
$row['input'] = html_print_checkbox('incident_view', 1, $incident_view, true);
|
||||
$table->data['IR'] = $row;
|
||||
$row = [];
|
||||
$row['name'] = __('Edit incidents');
|
||||
$row['input'] = html_print_checkbox('incident_edit', 1, $incident_edit, true, false, 'autoclick_profile_users(\'incident_edit\', \'incident_view\', \'false\')');
|
||||
$table->data['IW'] = $row;
|
||||
$row = [];
|
||||
$row['name'] = __('Manage incidents');
|
||||
$row['input'] = html_print_checkbox('incident_management', 1, $incident_management, true, false, 'autoclick_profile_users(\'incident_management\', \'incident_view\', \'incident_edit\');');
|
||||
$table->data['IM'] = $row;
|
||||
$table->data[] = '<hr>';
|
||||
|
||||
$disable_option = 'javascript: return false;';
|
||||
if (check_acl($config['id_user'], 0, 'PM') || users_is_admin()) {
|
||||
$disable_option = '';
|
||||
|
|
|
@ -107,11 +107,6 @@ if ($delete_profile) {
|
|||
if ($create_profile || $update_profile) {
|
||||
$name = get_parameter('name');
|
||||
|
||||
// Incidents
|
||||
$incident_view = (bool) get_parameter('incident_view');
|
||||
$incident_edit = (bool) get_parameter('incident_edit');
|
||||
$incident_management = (bool) get_parameter('incident_management');
|
||||
|
||||
// Agents
|
||||
$agent_view = (bool) get_parameter('agent_view');
|
||||
$agent_edit = (bool) get_parameter('agent_edit');
|
||||
|
@ -152,9 +147,6 @@ if ($create_profile || $update_profile) {
|
|||
|
||||
$values = [
|
||||
'name' => $name,
|
||||
'incident_view' => $incident_view,
|
||||
'incident_edit' => $incident_edit,
|
||||
'incident_management' => $incident_management,
|
||||
'agent_view' => $agent_view,
|
||||
'agent_edit' => $agent_edit,
|
||||
'agent_disable' => $agent_disable,
|
||||
|
@ -183,10 +175,7 @@ if ($update_profile) {
|
|||
if ($name) {
|
||||
$ret = db_process_sql_update('tperfil', $values, ['id_perfil' => $id_profile]);
|
||||
if ($ret !== false) {
|
||||
$info = '{"Name":"'.$incident_view.'",
|
||||
"Incident view":"'.$incident_view.'",
|
||||
"Incident edit":"'.$incident_edit.'",
|
||||
"Incident management":"'.$incident_management.'",
|
||||
$info = '{"Name":"'.$name.'",
|
||||
"Agent view":"'.$agent_view.'",
|
||||
"Agent edit":"'.$agent_edit.'",
|
||||
"Agent disable":"'.$agent_disable.'",
|
||||
|
@ -234,10 +223,7 @@ if ($create_profile) {
|
|||
|
||||
if ($ret !== false) {
|
||||
ui_print_success_message(__('Successfully created'));
|
||||
$info = '{"Name":"'.$incident_view.'",
|
||||
"Incident view":"'.$incident_view.'",
|
||||
"Incident edit":"'.$incident_edit.'",
|
||||
"Incident management":"'.$incident_management.'",
|
||||
$info = '{"Name":"'.$name.'",
|
||||
"Agent view":"'.$agent_view.'",
|
||||
"Agent edit":"'.$agent_edit.'",
|
||||
"Agent disable":"'.$agent_disable.'",
|
||||
|
@ -289,9 +275,6 @@ $table->align = [];
|
|||
|
||||
$table->head['profiles'] = __('Profiles');
|
||||
|
||||
$table->head['IR'] = 'IR';
|
||||
$table->head['IW'] = 'IW';
|
||||
$table->head['IM'] = 'IM';
|
||||
$table->head['AR'] = 'AR';
|
||||
$table->head['AW'] = 'AW';
|
||||
$table->head['AD'] = 'AD';
|
||||
|
@ -317,9 +300,6 @@ $table->head['operations'] = '<span title="Operations">'.__('Op.').'</span>';
|
|||
$table->align = array_fill(1, 11, 'center');
|
||||
|
||||
$table->size['profiles'] = '200px';
|
||||
$table->size['IR'] = '10px';
|
||||
$table->size['IW'] = '10px';
|
||||
$table->size['IM'] = '10px';
|
||||
$table->size['AR'] = '10px';
|
||||
$table->size['AW'] = '10px';
|
||||
$table->size['AD'] = '10px';
|
||||
|
@ -358,9 +338,6 @@ $img = html_print_image(
|
|||
|
||||
foreach ($profiles as $profile) {
|
||||
$data['profiles'] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/configure_profile&id='.$profile['id_perfil'].'&pure='.$pure.'">'.$profile['name'].'</a>';
|
||||
$data['IR'] = ($profile['incident_view'] ? $img : '');
|
||||
$data['IW'] = ($profile['incident_edit'] ? $img : '');
|
||||
$data['IM'] = ($profile['incident_management'] ? $img : '');
|
||||
$data['AR'] = ($profile['agent_view'] ? $img : '');
|
||||
$data['AW'] = ($profile['agent_edit'] ? $img : '');
|
||||
$data['AD'] = ($profile['agent_disable'] ? $img : '');
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 548 B |
Binary file not shown.
Before Width: | Height: | Size: 898 B After Width: | Height: | Size: 566 B |
|
@ -27,12 +27,28 @@ ob_clean();
|
|||
// * q
|
||||
// * id_group
|
||||
$search_agents = (bool) get_parameter('search_agents');
|
||||
$get_agents_interfaces = (bool) get_parameter('get_agents_interfaces');
|
||||
$id_agents = get_parameter('id_agents', []);
|
||||
$get_agents_group = (bool) get_parameter('get_agents_group', false);
|
||||
$force_local = (bool) get_parameter('force_local', false);
|
||||
if (https_is_running()) {
|
||||
header('Content-type: application/json');
|
||||
}
|
||||
|
||||
if ($get_agents_interfaces) {
|
||||
$agents_interfaces = agents_get_network_interfaces($id_agents);
|
||||
|
||||
// Include alias per agent.
|
||||
foreach ($agents_interfaces as $key => $value) {
|
||||
$agent_alias = agents_get_alias($key);
|
||||
$agents_interfaces[$key]['agent_alias'] = $agent_alias;
|
||||
}
|
||||
|
||||
echo json_encode($agents_interfaces);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($get_agents_group) {
|
||||
$id_group = (int) get_parameter('id_group', -1);
|
||||
$mode = (string) get_parameter('mode', 'json');
|
||||
|
|
|
@ -35,7 +35,7 @@ if (check_login()) {
|
|||
$search_term = get_parameter('search_term', '');
|
||||
|
||||
if ($get_users) {
|
||||
$integria_users_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_users', []);
|
||||
$integria_users_csv = integria_api_call(null, null, null, null, 'get_users', []);
|
||||
|
||||
$csv_array = explode("\n", $integria_users_csv);
|
||||
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
/**
|
||||
* Web Server Module Debug ajax controller.
|
||||
*
|
||||
* @category Web Server Module Debug
|
||||
* @package Pandora FMS
|
||||
* @subpackage Module Debug
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
global $id_agent_module;
|
||||
// Module Debug Class.
|
||||
require_once $config['homedir'].'/include/class/WebServerModuleDebug.class.php';
|
||||
|
||||
// This page.
|
||||
$ajaxPage = $config['homedir'].'/include/ajax/web_server_module_debug';
|
||||
|
||||
// Control call flow for debug window.
|
||||
try {
|
||||
// Return of id of the agent module in AJAX.
|
||||
if (is_ajax()) {
|
||||
$id_agent_module = get_parameter('idAgentModule');
|
||||
}
|
||||
|
||||
// User access and validation is being processed on class constructor.
|
||||
$obj = new WebServerModuleDebug($ajaxPage, $id_agent_module);
|
||||
} catch (Exception $e) {
|
||||
if (is_ajax()) {
|
||||
echo json_encode(['error' => '[WebServerModuleDebug]'.$e->getMessage() ]);
|
||||
exit;
|
||||
} else {
|
||||
echo '[WebServerModuleDebug]'.$e->getMessage();
|
||||
}
|
||||
|
||||
// Stop this execution, but continue 'globally'.
|
||||
return;
|
||||
}
|
||||
|
||||
// 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();
|
||||
}
|
|
@ -286,7 +286,11 @@ class Diagnostics extends Wizard
|
|||
$return .= '</div>';
|
||||
}
|
||||
|
||||
return false;
|
||||
if ($this->pdf === true) {
|
||||
return $return;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1599,7 +1603,7 @@ class Diagnostics extends Wizard
|
|||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3207,7 +3207,7 @@ class NetworkMap
|
|||
$table->data[0][0] = __('Group');
|
||||
$table->data[0][1] = html_print_select_groups(
|
||||
false,
|
||||
'IW',
|
||||
'AR',
|
||||
false,
|
||||
'group_for_show_agents',
|
||||
-1,
|
||||
|
|
|
@ -0,0 +1,407 @@
|
|||
<?php
|
||||
/**
|
||||
* WebServer Module debug feature.
|
||||
*
|
||||
* @category Class
|
||||
* @package Pandora FMS
|
||||
* @subpackage Web Server Module
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/godmode/wizards/Wizard.main.php';
|
||||
|
||||
/**
|
||||
* Class WebServerModuleDebug.
|
||||
*/
|
||||
class WebServerModuleDebug extends Wizard
|
||||
{
|
||||
|
||||
/**
|
||||
* Controller Url.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $ajaxController;
|
||||
|
||||
/**
|
||||
* Timeout for HTTP requests.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
private $requestTimeout;
|
||||
|
||||
/**
|
||||
* CURL Query.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $query;
|
||||
|
||||
/**
|
||||
* Id of the current module.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
private $idAgentModule;
|
||||
|
||||
|
||||
/**
|
||||
* Class constructor.
|
||||
*
|
||||
* @param string $ajaxController Ajax Page Controller.
|
||||
* @param integer $idAgentModule Id of the module.
|
||||
*/
|
||||
public function __construct(string $ajaxController, int $idAgentModule)
|
||||
{
|
||||
global $config;
|
||||
|
||||
// Check access.
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'AR')) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access event viewer'
|
||||
);
|
||||
|
||||
if (is_ajax()) {
|
||||
echo json_encode(['error' => 'noaccess']);
|
||||
}
|
||||
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
// Parameter assigments.
|
||||
$this->ajaxController = $ajaxController;
|
||||
$this->query = '';
|
||||
$this->idAgentModule = $idAgentModule;
|
||||
// Hardcoded request timeout.
|
||||
$this->requestTimeout = 15;
|
||||
|
||||
return $this;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run Module Debug window.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Added all necessary basic files for QueryResult.
|
||||
ui_require_css_file('ace');
|
||||
ui_require_javascript_file('ace', 'include/javascript/ace/');
|
||||
// Load Javascript.
|
||||
$this->loadJS();
|
||||
// CSS.
|
||||
ui_require_css_file('wizard');
|
||||
ui_require_css_file('discovery');
|
||||
// Specific CSS for this feature.
|
||||
ui_require_css_file('WebServerModuleDebug', '/include/styles/', true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show the modal with the QueryResult.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function showWebServerDebug()
|
||||
{
|
||||
// Show QueryResult editor.
|
||||
ui_query_result_editor('webserverdebug');
|
||||
// Spinner for wait loads.
|
||||
html_print_div(
|
||||
[
|
||||
'id' => 'WebServerDebugSpinner',
|
||||
'style' => 'visibility: hidden;',
|
||||
'content' => __('Performing query. Please wait.').' '.html_print_image('images/spinner.gif', true),
|
||||
]
|
||||
);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
// Query section
|
||||
var query = ace.edit("webserverdebug_editor");
|
||||
let queryDefined = "<?php echo $this->defineQuery(); ?>";
|
||||
let queryRegex = /([-]+[a-zA-Z]\s)|(([-]{2})+[a-z]+[-]*[a-z]*)/g;
|
||||
query.setValue(queryDefined.replace(queryRegex, "\n$&"));
|
||||
query.clearSelection();
|
||||
// Result section
|
||||
var results = ace.edit("webserverdebug_view");
|
||||
var text = '';
|
||||
results.setTheme("ace/theme/textmate");
|
||||
results.session.setMode("ace/mode/json");
|
||||
results.renderer.setShowGutter(false);
|
||||
results.setReadOnly(true);
|
||||
results.setShowPrintMargin(false);
|
||||
|
||||
$("#submit-execute_query").click(function() {
|
||||
// Show the spinner.
|
||||
showSpinner(true);
|
||||
// Empty the results container.
|
||||
results.setValue("");
|
||||
// Get the entire text.
|
||||
text = query.getValue();
|
||||
// There are not values in the query section.
|
||||
if (text === null || text === undefined) {
|
||||
results.setValue('<?php echo __('No results'); ?>');
|
||||
results.clearSelection();
|
||||
// Hide spinner.
|
||||
showSpinner(false);
|
||||
return;
|
||||
}
|
||||
// Clean the carriage jumps.
|
||||
text = text.split("\n").join("");
|
||||
// Call to the method for execute the command.
|
||||
$.ajax({
|
||||
method: "post",
|
||||
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
data: {
|
||||
page: "<?php echo $this->ajaxController; ?>",
|
||||
method: "executeCommand",
|
||||
text: text,
|
||||
idAgentModule: "<?php echo $this->idAgentModule; ?>",
|
||||
},
|
||||
datatype: "json",
|
||||
success: function(result) {
|
||||
results.setValue(result);
|
||||
},
|
||||
error: function(e) {
|
||||
results.setValue('<?php echo __('Error performing execution'); ?>');
|
||||
},
|
||||
complete: function() {
|
||||
results.clearSelection();
|
||||
showSpinner(false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Definition of the query
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function defineQuery()
|
||||
{
|
||||
// Get the value of the debug_content.
|
||||
$outputDebugQuery = db_get_value_filter(
|
||||
'debug_content',
|
||||
'tagente_modulo',
|
||||
[
|
||||
'id_agente_modulo' => $this->idAgentModule,
|
||||
]
|
||||
);
|
||||
|
||||
$this->query = ($outputDebugQuery !== false) ? $outputDebugQuery : __('Please, wait for a first execution of module');
|
||||
|
||||
return $this->query;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Perform the cURL execution.
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception $e Error message.
|
||||
*/
|
||||
public function executeCommand()
|
||||
{
|
||||
try {
|
||||
$executionForPerform = io_safe_output(get_parameter('text'));
|
||||
// If the execution comes empty.
|
||||
if (empty($executionForPerform) === true) {
|
||||
throw new Exception('Execution failed');
|
||||
}
|
||||
|
||||
// For security reasons, only allow the 'curl' command.
|
||||
$executionForPerform = strstr($executionForPerform, 'curl');
|
||||
// Avoid pipes or concatenation of commands.
|
||||
$unallowedChars = [
|
||||
'|',
|
||||
'&',
|
||||
'||',
|
||||
'&&',
|
||||
';',
|
||||
'\n',
|
||||
];
|
||||
$executionForPerform = str_replace(
|
||||
$unallowedChars,
|
||||
' ',
|
||||
$executionForPerform
|
||||
);
|
||||
// Set execution timeout.
|
||||
$executionForPerform .= sprintf(
|
||||
$executionForPerform.' -m %d',
|
||||
$this->requestTimeout
|
||||
);
|
||||
|
||||
// Perform the execution.
|
||||
system($executionForPerform, $returnCode);
|
||||
// If execution does not got well.
|
||||
if ($returnCode != 0) {
|
||||
switch ($returnCode) {
|
||||
case '2':
|
||||
throw new Exception('Failed to initialize. Review the syntax.');
|
||||
|
||||
case '3':
|
||||
throw new Exception('URL malformed. The syntax was not correct.');
|
||||
|
||||
case '5':
|
||||
throw new Exception('Couldn\'t resolve proxy. The given proxy host could not be resolved.');
|
||||
|
||||
case '6':
|
||||
throw new Exception('Couldn\'t resolve host. The given remote host could not be resolved.');
|
||||
|
||||
case '7':
|
||||
throw new Exception('Failed to connect to host.');
|
||||
|
||||
default:
|
||||
throw new Exception('Failed getting data.');
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// Show execution error message.
|
||||
echo __($e->getMessage());
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Loads JS and return code.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function loadJS()
|
||||
{
|
||||
$str = '';
|
||||
ob_start();
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function(){
|
||||
$('#button-btn_debugModule').click(function() {
|
||||
load_modal({
|
||||
target: $("#modal"),
|
||||
form: "add_module_form",
|
||||
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
ajax_callback: showMsg,
|
||||
modal: {
|
||||
title: "<?php echo __('Debug'); ?>",
|
||||
},
|
||||
extradata: [
|
||||
{
|
||||
name: "idAgentModule",
|
||||
value: "<?php echo $this->idAgentModule; ?>"
|
||||
}],
|
||||
onshow: {
|
||||
page: "<?php echo $this->ajaxController; ?>",
|
||||
width: 800,
|
||||
method: "showWebServerDebug"
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Toggle the visibility of spinner.
|
||||
*/
|
||||
function showSpinner(setVisibility) {
|
||||
var spinner = $('#WebServerDebugSpinner');
|
||||
if (setVisibility) {
|
||||
spinner.css('visibility', 'visible');
|
||||
} else {
|
||||
spinner.css('visibility', 'hidden');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process ajax responses and shows a dialog with results.
|
||||
*/
|
||||
function showMsg(data) {
|
||||
var title = "<?php echo __('Success'); ?>";
|
||||
var text = "";
|
||||
var failed = 0;
|
||||
try {
|
||||
data = JSON.parse(data);
|
||||
text = data["result"];
|
||||
} catch (err) {
|
||||
title = "<?php echo __('Failed'); ?>";
|
||||
text = err.message;
|
||||
failed = 1;
|
||||
}
|
||||
if (!failed && data["error"] != undefined) {
|
||||
title = "<?php echo __('Failed'); ?>";
|
||||
text = data["error"];
|
||||
failed = 1;
|
||||
}
|
||||
if (data["report"] != undefined) {
|
||||
data["report"].forEach(function(item) {
|
||||
text += "<br>" + item;
|
||||
});
|
||||
}
|
||||
|
||||
$("#msg").empty();
|
||||
$("#msg").html(text);
|
||||
$("#msg").dialog({
|
||||
width: 450,
|
||||
position: {
|
||||
my: "center",
|
||||
at: "center",
|
||||
of: window,
|
||||
collision: "fit"
|
||||
},
|
||||
title: title
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<?php
|
||||
// Get the JS script.
|
||||
$str = ob_get_clean();
|
||||
// Return the loaded JS.
|
||||
echo $str;
|
||||
return $str;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC210511';
|
||||
$build_version = 'PC210518';
|
||||
$pandora_version = 'v7.0NG.754';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -2281,9 +2281,6 @@ function check_login($output=true)
|
|||
* Check access privileges to resources
|
||||
*
|
||||
* Access can be:
|
||||
* IR - Incident/report Read
|
||||
* IW - Incident/report Write
|
||||
* IM - Incident/report Management
|
||||
* AR - Agent Read
|
||||
* AW - Agent Write
|
||||
* LW - Alert Write
|
||||
|
@ -2374,9 +2371,6 @@ function check_acl_one_of_groups($id_user, $groups, $access, $cache=true)
|
|||
* Check access privileges to resources (write or management is not allowed for 'all' group )
|
||||
*
|
||||
* Access can be:
|
||||
* IR - Incident/report Read
|
||||
* IW - Incident/report Write
|
||||
* IM - Incident/report Management
|
||||
* AR - Agent Read
|
||||
* AW - Agent Write
|
||||
* LW - Alert Write
|
||||
|
@ -2445,18 +2439,6 @@ function check_acl_restricted_all($id_user, $id_group, $access, $onlyOneGroup=fa
|
|||
function get_acl_column($access)
|
||||
{
|
||||
switch ($access) {
|
||||
case 'IR':
|
||||
return 'incident_view';
|
||||
|
||||
break;
|
||||
case 'IW':
|
||||
return 'incident_edit';
|
||||
|
||||
break;
|
||||
case 'IM':
|
||||
return 'incident_management';
|
||||
|
||||
break;
|
||||
case 'AR':
|
||||
return 'agent_view';
|
||||
|
||||
|
@ -2552,10 +2534,7 @@ function get_users_acl($id_user)
|
|||
$rowdup = $users_acl_cache[$id_user];
|
||||
} else {
|
||||
$query = sprintf(
|
||||
"SELECT sum(tperfil.incident_view) as incident_view,
|
||||
sum(tperfil.incident_edit) as incident_edit,
|
||||
sum(tperfil.incident_management) as incident_management,
|
||||
sum(tperfil.agent_view) as agent_view,
|
||||
"SELECT sum(tperfil.agent_view) as agent_view,
|
||||
sum(tperfil.agent_edit) as agent_edit,
|
||||
sum(tperfil.alert_edit) as alert_edit,
|
||||
sum(tperfil.alert_management) as alert_management,
|
||||
|
|
|
@ -1,16 +1,33 @@
|
|||
<?php
|
||||
|
||||
// Pandora FMS- http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
/**
|
||||
* Functions for API.
|
||||
*
|
||||
* @category Functions.
|
||||
* @package Pandora FMS
|
||||
* @subpackage API.
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
// Set character encoding to UTF-8 - fixes a lot of multibyte character headaches
|
||||
|
@ -486,7 +503,7 @@ function api_get_groups($thrash1, $thrash2, $other, $returnType, $user_in_db)
|
|||
$returnAllColumns = ( $other['data'][2] == '1' ? true : false);
|
||||
}
|
||||
|
||||
$groups = users_get_groups($user_in_db, 'IR', $returnAllGroup, $returnAllColumns);
|
||||
$groups = users_get_groups($user_in_db, 'AR', $returnAllGroup, $returnAllColumns);
|
||||
|
||||
$data_groups = [];
|
||||
foreach ($groups as $id => $group) {
|
||||
|
@ -2300,13 +2317,13 @@ function api_set_delete_agent($id, $thrash1, $other, $returnType)
|
|||
|
||||
foreach ($servers as $server) {
|
||||
if (metaconsole_connect($server) == NOERR) {
|
||||
if ($other['data'][0] === '1') {
|
||||
if ($agent_by_alias) {
|
||||
$idAgent = agents_get_agent_id_by_alias($id);
|
||||
} else {
|
||||
$idAgent[0] = agents_get_agent_id($id, true);
|
||||
}
|
||||
|
||||
if (!empty($idAgent)) {
|
||||
if (empty($idAgent) === false) {
|
||||
$result = agents_delete_agent($idAgent[0], true);
|
||||
}
|
||||
|
||||
|
@ -11655,9 +11672,6 @@ function api_get_user_profiles_info($thrash1, $thrash2, $thrash3, $returnType)
|
|||
[
|
||||
'id_perfil',
|
||||
'name',
|
||||
'incident_view as IR',
|
||||
'incident_edit as IW',
|
||||
'incident_management as IM',
|
||||
'agent_view as AR',
|
||||
'agent_edit as AW',
|
||||
'agent_disable as AD',
|
||||
|
@ -11710,29 +11724,26 @@ function api_set_create_user_profile_info($thrash1, $thrash2, $other, $returnTyp
|
|||
|
||||
$values = [
|
||||
'name' => (string) $other['data'][0],
|
||||
'incident_view' => (bool) $other['data'][1] ? 1 : 0,
|
||||
'incident_edit' => (bool) $other['data'][2] ? 1 : 0,
|
||||
'incident_management' => (bool) $other['data'][3] ? 1 : 0,
|
||||
'agent_view' => (bool) $other['data'][4] ? 1 : 0,
|
||||
'agent_edit' => (bool) $other['data'][5] ? 1 : 0,
|
||||
'agent_disable' => (bool) $other['data'][6] ? 1 : 0,
|
||||
'alert_edit' => (bool) $other['data'][7] ? 1 : 0,
|
||||
'alert_management' => (bool) $other['data'][8] ? 1 : 0,
|
||||
'user_management' => (bool) $other['data'][9] ? 1 : 0,
|
||||
'db_management' => (bool) $other['data'][10] ? 1 : 0,
|
||||
'event_view' => (bool) $other['data'][11] ? 1 : 0,
|
||||
'event_edit' => (bool) $other['data'][12] ? 1 : 0,
|
||||
'event_management' => (bool) $other['data'][13] ? 1 : 0,
|
||||
'report_view' => (bool) $other['data'][14] ? 1 : 0,
|
||||
'report_edit' => (bool) $other['data'][15] ? 1 : 0,
|
||||
'report_management' => (bool) $other['data'][16] ? 1 : 0,
|
||||
'map_view' => (bool) $other['data'][17] ? 1 : 0,
|
||||
'map_edit' => (bool) $other['data'][18] ? 1 : 0,
|
||||
'map_management' => (bool) $other['data'][19] ? 1 : 0,
|
||||
'vconsole_view' => (bool) $other['data'][20] ? 1 : 0,
|
||||
'vconsole_edit' => (bool) $other['data'][21] ? 1 : 0,
|
||||
'vconsole_management' => (bool) $other['data'][22] ? 1 : 0,
|
||||
'pandora_management' => (bool) $other['data'][23] ? 1 : 0,
|
||||
'agent_view' => (bool) $other['data'][1] ? 1 : 0,
|
||||
'agent_edit' => (bool) $other['data'][2] ? 1 : 0,
|
||||
'agent_disable' => (bool) $other['data'][3] ? 1 : 0,
|
||||
'alert_edit' => (bool) $other['data'][4] ? 1 : 0,
|
||||
'alert_management' => (bool) $other['data'][5] ? 1 : 0,
|
||||
'user_management' => (bool) $other['data'][6] ? 1 : 0,
|
||||
'db_management' => (bool) $other['data'][7] ? 1 : 0,
|
||||
'event_view' => (bool) $other['data'][8] ? 1 : 0,
|
||||
'event_edit' => (bool) $other['data'][9] ? 1 : 0,
|
||||
'event_management' => (bool) $other['data'][10] ? 1 : 0,
|
||||
'report_view' => (bool) $other['data'][11] ? 1 : 0,
|
||||
'report_edit' => (bool) $other['data'][12] ? 1 : 0,
|
||||
'report_management' => (bool) $other['data'][13] ? 1 : 0,
|
||||
'map_view' => (bool) $other['data'][14] ? 1 : 0,
|
||||
'map_edit' => (bool) $other['data'][15] ? 1 : 0,
|
||||
'map_management' => (bool) $other['data'][16] ? 1 : 0,
|
||||
'vconsole_view' => (bool) $other['data'][17] ? 1 : 0,
|
||||
'vconsole_edit' => (bool) $other['data'][18] ? 1 : 0,
|
||||
'vconsole_management' => (bool) $other['data'][19] ? 1 : 0,
|
||||
'pandora_management' => (bool) $other['data'][20] ? 1 : 0,
|
||||
];
|
||||
|
||||
$return = db_process_sql_insert('tperfil', $values);
|
||||
|
@ -11772,29 +11783,26 @@ function api_set_update_user_profile_info($id_profile, $thrash1, $other, $return
|
|||
|
||||
$values = [
|
||||
'name' => $other['data'][0] == '' ? $profile['name'] : (string) $other['data'][0],
|
||||
'incident_view' => $other['data'][1] == '' ? $profile['incident_view'] : (bool) $other['data'][1] ? 1 : 0,
|
||||
'incident_edit' => $other['data'][2] == '' ? $profile['incident_edit'] : (bool) $other['data'][2] ? 1 : 0,
|
||||
'incident_management' => $other['data'][3] == '' ? $profile['incident_management'] : (bool) $other['data'][3] ? 1 : 0,
|
||||
'agent_view' => $other['data'][4] == '' ? $profile['agent_view'] : (bool) $other['data'][4] ? 1 : 0,
|
||||
'agent_edit' => $other['data'][5] == '' ? $profile['agent_edit'] : (bool) $other['data'][5] ? 1 : 0,
|
||||
'agent_disable' => $other['data'][6] == '' ? $profile['agent_disable'] : (bool) $other['data'][6] ? 1 : 0,
|
||||
'alert_edit' => $other['data'][7] == '' ? $profile['alert_edit'] : (bool) $other['data'][7] ? 1 : 0,
|
||||
'alert_management' => $other['data'][8] == '' ? $profile['alert_management'] : (bool) $other['data'][8] ? 1 : 0,
|
||||
'user_management' => $other['data'][9] == '' ? $profile['user_management'] : (bool) $other['data'][9] ? 1 : 0,
|
||||
'db_management' => $other['data'][10] == '' ? $profile['db_management'] : (bool) $other['data'][10] ? 1 : 0,
|
||||
'event_view' => $other['data'][11] == '' ? $profile['event_view'] : (bool) $other['data'][11] ? 1 : 0,
|
||||
'event_edit' => $other['data'][12] == '' ? $profile['event_edit'] : (bool) $other['data'][12] ? 1 : 0,
|
||||
'event_management' => $other['data'][13] == '' ? $profile['event_management'] : (bool) $other['data'][13] ? 1 : 0,
|
||||
'report_view' => $other['data'][14] == '' ? $profile['report_view'] : (bool) $other['data'][14] ? 1 : 0,
|
||||
'report_edit' => $other['data'][15] == '' ? $profile['report_edit'] : (bool) $other['data'][15] ? 1 : 0,
|
||||
'report_management' => $other['data'][16] == '' ? $profile['report_management'] : (bool) $other['data'][16] ? 1 : 0,
|
||||
'map_view' => $other['data'][17] == '' ? $profile['map_view'] : (bool) $other['data'][17] ? 1 : 0,
|
||||
'map_edit' => $other['data'][18] == '' ? $profile['map_edit'] : (bool) $other['data'][18] ? 1 : 0,
|
||||
'map_management' => $other['data'][19] == '' ? $profile['map_management'] : (bool) $other['data'][19] ? 1 : 0,
|
||||
'vconsole_view' => $other['data'][20] == '' ? $profile['vconsole_view'] : (bool) $other['data'][20] ? 1 : 0,
|
||||
'vconsole_edit' => $other['data'][21] == '' ? $profile['vconsole_edit'] : (bool) $other['data'][21] ? 1 : 0,
|
||||
'vconsole_management' => $other['data'][22] == '' ? $profile['vconsole_management'] : (bool) $other['data'][22] ? 1 : 0,
|
||||
'pandora_management' => $other['data'][23] == '' ? $profile['pandora_management'] : (bool) $other['data'][23] ? 1 : 0,
|
||||
'agent_view' => $other['data'][1] == '' ? $profile['agent_view'] : (bool) $other['data'][1] ? 1 : 0,
|
||||
'agent_edit' => $other['data'][2] == '' ? $profile['agent_edit'] : (bool) $other['data'][2] ? 1 : 0,
|
||||
'agent_disable' => $other['data'][3] == '' ? $profile['agent_disable'] : (bool) $other['data'][3] ? 1 : 0,
|
||||
'alert_edit' => $other['data'][4] == '' ? $profile['alert_edit'] : (bool) $other['data'][4] ? 1 : 0,
|
||||
'alert_management' => $other['data'][5] == '' ? $profile['alert_management'] : (bool) $other['data'][5] ? 1 : 0,
|
||||
'user_management' => $other['data'][6] == '' ? $profile['user_management'] : (bool) $other['data'][6] ? 1 : 0,
|
||||
'db_management' => $other['data'][7] == '' ? $profile['db_management'] : (bool) $other['data'][7] ? 1 : 0,
|
||||
'event_view' => $other['data'][8] == '' ? $profile['event_view'] : (bool) $other['data'][8] ? 1 : 0,
|
||||
'event_edit' => $other['data'][9] == '' ? $profile['event_edit'] : (bool) $other['data'][9] ? 1 : 0,
|
||||
'event_management' => $other['data'][10] == '' ? $profile['event_management'] : (bool) $other['data'][10] ? 1 : 0,
|
||||
'report_view' => $other['data'][11] == '' ? $profile['report_view'] : (bool) $other['data'][11] ? 1 : 0,
|
||||
'report_edit' => $other['data'][12] == '' ? $profile['report_edit'] : (bool) $other['data'][12] ? 1 : 0,
|
||||
'report_management' => $other['data'][13] == '' ? $profile['report_management'] : (bool) $other['data'][13] ? 1 : 0,
|
||||
'map_view' => $other['data'][14] == '' ? $profile['map_view'] : (bool) $other['data'][14] ? 1 : 0,
|
||||
'map_edit' => $other['data'][15] == '' ? $profile['map_edit'] : (bool) $other['data'][15] ? 1 : 0,
|
||||
'map_management' => $other['data'][16] == '' ? $profile['map_management'] : (bool) $other['data'][16] ? 1 : 0,
|
||||
'vconsole_view' => $other['data'][17] == '' ? $profile['vconsole_view'] : (bool) $other['data'][17] ? 1 : 0,
|
||||
'vconsole_edit' => $other['data'][18] == '' ? $profile['vconsole_edit'] : (bool) $other['data'][18] ? 1 : 0,
|
||||
'vconsole_management' => $other['data'][19] == '' ? $profile['vconsole_management'] : (bool) $other['data'][19] ? 1 : 0,
|
||||
'pandora_management' => $other['data'][20] == '' ? $profile['pandora_management'] : (bool) $other['data'][20] ? 1 : 0,
|
||||
];
|
||||
|
||||
$return = db_process_sql_update('tperfil', $values, ['id_perfil' => $id_profile]);
|
||||
|
@ -11842,101 +11850,6 @@ function api_set_delete_user_profile_info($id_profile, $thrash1, $thrash2, $retu
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create new incident in Pandora.
|
||||
*
|
||||
* @param $thrash1 Don't use.
|
||||
* @param $thrash2 Don't use.
|
||||
* @param array $other it's array, $other as param is <title>;<description>;
|
||||
* <origin>;<priority>;<state>;<group> in this order and separator char
|
||||
* (after text ; ) and separator (pass in param othermode as
|
||||
* othermode=url_encode_separator_<separator>)
|
||||
* example:
|
||||
*
|
||||
* api.php?op=set&op2=new_incident&other=titulo|descripcion%20texto|Logfiles|2|10|12&other_mode=url_encode_separator_|
|
||||
*
|
||||
* @param $thrash3 Don't use.
|
||||
*/
|
||||
function api_set_new_incident($thrash1, $thrash2, $other, $thrash3)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!check_acl($config['id_user'], 0, 'IW')) {
|
||||
returnError('forbidden', 'string');
|
||||
return;
|
||||
}
|
||||
|
||||
$title = $other['data'][0];
|
||||
$description = $other['data'][1];
|
||||
$origin = $other['data'][2];
|
||||
$priority = $other['data'][3];
|
||||
$id_creator = 'API';
|
||||
$state = $other['data'][4];
|
||||
$group = $other['data'][5];
|
||||
|
||||
$values = [
|
||||
'inicio' => 'NOW()',
|
||||
'actualizacion' => 'NOW()',
|
||||
'titulo' => $title,
|
||||
'descripcion' => $description,
|
||||
'id_usuario' => 'API',
|
||||
'origen' => $origin,
|
||||
'estado' => $state,
|
||||
'prioridad' => $priority,
|
||||
'id_grupo' => $group,
|
||||
'id_creator' => $id_creator,
|
||||
];
|
||||
$idIncident = db_process_sql_insert('tincidencia', $values);
|
||||
|
||||
if ($idIncident === false) {
|
||||
returnError('A new incident could not be created.');
|
||||
} else {
|
||||
returnData('string', ['type' => 'string', 'data' => $idIncident]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add note into a incident.
|
||||
*
|
||||
* @param $id string Username author of note.
|
||||
* @param $id2 integer ID of incident.
|
||||
* @param $other string Note.
|
||||
* @param $thrash2 Don't use.
|
||||
*/
|
||||
function api_set_new_note_incident($id, $id2, $other, $thrash2)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!check_acl($config['id_user'], 0, 'IW')) {
|
||||
returnError('forbidden', 'string');
|
||||
return;
|
||||
}
|
||||
|
||||
$values = [
|
||||
'id_usuario' => $id,
|
||||
'id_incident' => $id2,
|
||||
'nota' => $other['data'],
|
||||
];
|
||||
|
||||
$idNote = db_process_sql_insert('tnota', $values);
|
||||
|
||||
if ($idNote === false) {
|
||||
returnError('A new incident could not be created+.');
|
||||
} else {
|
||||
returnData('string', ['type' => 'string', 'data' => $idNote]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Disable a module, given agent and module name.
|
||||
*
|
||||
|
|
|
@ -1642,6 +1642,10 @@ function config_update_config()
|
|||
break;
|
||||
|
||||
case 'integria':
|
||||
if (!config_update_value('integria_user_level_conf', (int) get_parameter('integria_user_level_conf', 0))) {
|
||||
$error_update[] = __('Integria user login');
|
||||
}
|
||||
|
||||
if (!config_update_value('integria_enabled', (int) get_parameter('integria_enabled', 0))) {
|
||||
$error_update[] = __('Enable Integria IMS');
|
||||
}
|
||||
|
@ -3244,6 +3248,10 @@ function config_process_config()
|
|||
}
|
||||
|
||||
// Integria.
|
||||
if (!isset($config['integria_user_level_conf'])) {
|
||||
config_update_value('integria_user_level_conf', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['integria_enabled'])) {
|
||||
config_update_value('integria_enabled', 0);
|
||||
}
|
||||
|
|
|
@ -3792,7 +3792,7 @@ function events_page_responses($event, $childrens_ids=[])
|
|||
$('.params_rows').remove();
|
||||
|
||||
$('#responses_table')
|
||||
.append('<tr class=\"params_rows\"><td>".__('Description')."</td><td class=\"left height_30px\" colspan=\"2\">'+description+'</td></tr>');
|
||||
.append('<tr class=\"params_rows\"><td>".__('Description')."</td><td class=\"height_30px\" colspan=\"2\">'+description+'</td></tr>');
|
||||
|
||||
if (params.length == 1 && params[0] == '') {
|
||||
return;
|
||||
|
|
|
@ -2978,9 +2978,9 @@ function grafico_incidente_prioridad()
|
|||
{
|
||||
global $config;
|
||||
|
||||
$integria_ticket_count_by_priority_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_tickets_count', ['prioridad', 30], false, '', '|;|');
|
||||
$integria_ticket_count_by_priority_json = integria_api_call(null, null, null, null, 'get_tickets_count', ['prioridad', 30], false, '', '|;|');
|
||||
|
||||
$integria_priorities_map_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_priorities', '', false, 'json');
|
||||
$integria_priorities_map_json = integria_api_call(null, null, null, null, 'get_incident_priorities', '', false, 'json');
|
||||
|
||||
$integria_ticket_count_by_priority = json_decode($integria_ticket_count_by_priority_json, true);
|
||||
$integria_priorities_map = json_decode($integria_priorities_map_json, true);
|
||||
|
@ -3023,9 +3023,9 @@ function graph_incidents_status()
|
|||
{
|
||||
global $config;
|
||||
|
||||
$integria_ticket_count_by_status_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_tickets_count', ['estado', 30], false, '', '|;|');
|
||||
$integria_ticket_count_by_status_json = integria_api_call(null, null, null, null, 'get_tickets_count', ['estado', 30], false, '', '|;|');
|
||||
|
||||
$integria_status_map_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incidents_status', '', false, 'json');
|
||||
$integria_status_map_json = integria_api_call(null, null, null, null, 'get_incidents_status', '', false, 'json');
|
||||
|
||||
$integria_ticket_count_by_status = json_decode($integria_ticket_count_by_status_json, true);
|
||||
$integria_status_map = json_decode($integria_status_map_json, true);
|
||||
|
@ -3068,9 +3068,9 @@ function graphic_incident_group()
|
|||
{
|
||||
global $config;
|
||||
|
||||
$integria_ticket_count_by_group_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_tickets_count', ['id_grupo', 30], false, '', '|;|');
|
||||
$integria_ticket_count_by_group_json = integria_api_call(null, null, null, null, 'get_tickets_count', ['id_grupo', 30], false, '', '|;|');
|
||||
|
||||
$integria_group_map_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_groups', '', false, 'json');
|
||||
$integria_group_map_json = integria_api_call(null, null, null, null, 'get_groups', '', false, 'json');
|
||||
|
||||
$integria_ticket_count_by_group = json_decode($integria_ticket_count_by_group_json, true);
|
||||
$integria_group_map = json_decode($integria_group_map_json, true);
|
||||
|
@ -3114,7 +3114,7 @@ function graphic_incident_user()
|
|||
{
|
||||
global $config;
|
||||
|
||||
$integria_ticket_count_by_user_json = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_tickets_count', ['id_usuario', 30], false, '', '|;|');
|
||||
$integria_ticket_count_by_user_json = integria_api_call(null, null, null, null, 'get_tickets_count', ['id_usuario', 30], false, '', '|;|');
|
||||
|
||||
$integria_ticket_count_by_user = json_decode($integria_ticket_count_by_user_json, true);
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ global $config;
|
|||
|
||||
require_once $config['homedir'].'/include/functions_ui.php';
|
||||
require_once $config['homedir'].'/include/functions_html.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
require_once $config['homedir'].'/include/functions.php';
|
||||
|
||||
|
||||
|
@ -78,22 +79,10 @@ function integriaims_tabs($active_tab, $view=false)
|
|||
}
|
||||
|
||||
$onheader = [];
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IR') && $view) {
|
||||
$onheader['view'] = $view_tab;
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'PM')) {
|
||||
$onheader['configure'] = $setup_tab;
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IR')) {
|
||||
$onheader['list'] = $list_tab;
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$onheader['create'] = $create_tab;
|
||||
}
|
||||
$onheader['view'] = $view_tab;
|
||||
$onheader['configure'] = $setup_tab;
|
||||
$onheader['list'] = $list_tab;
|
||||
$onheader['create'] = $create_tab;
|
||||
|
||||
return $onheader;
|
||||
}
|
||||
|
@ -137,7 +126,7 @@ function integriaims_get_details($details, $detail_index=false)
|
|||
break;
|
||||
}
|
||||
|
||||
$api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], $operation);
|
||||
$api_call = integria_api_call(null, null, null, null, $operation);
|
||||
$result = [];
|
||||
get_array_from_csv_data_pair($api_call, $result);
|
||||
|
||||
|
@ -165,8 +154,42 @@ function integriaims_get_details($details, $detail_index=false)
|
|||
*
|
||||
* @return boolean True if API request succeeded, false if API request failed.
|
||||
*/
|
||||
function integria_api_call($api_hostname, $user, $user_pass, $api_pass, $operation, $params='', $show_credentials_error_msg=false, $return_type='', $token='')
|
||||
function integria_api_call($api_hostname=null, $user=null, $user_pass=null, $api_pass=null, $operation, $params='', $show_credentials_error_msg=false, $return_type='', $token='', $user_level_conf=null)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if ($user_level_conf === null) {
|
||||
$user_level_conf = (bool) $config['integria_user_level_conf'];
|
||||
}
|
||||
|
||||
$user_info = users_get_user_by_id($config['id_user']);
|
||||
|
||||
// API access data.
|
||||
if ($api_hostname === null) {
|
||||
$api_hostname = $config['integria_hostname'];
|
||||
}
|
||||
|
||||
if ($api_pass === null) {
|
||||
$api_pass = $config['integria_api_pass'];
|
||||
}
|
||||
|
||||
// Integria user and password.
|
||||
if ($user === null || $user_level_conf === true) {
|
||||
$user = $config['integria_user'];
|
||||
|
||||
if ($user_level_conf === true) {
|
||||
$user = $user_info['integria_user_level_user'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($user_pass === null || $user_level_conf === true) {
|
||||
$user_pass = $config['integria_pass'];
|
||||
|
||||
if ($user_level_conf === true) {
|
||||
$user_pass = $user_info['integria_user_level_pass'];
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($params)) {
|
||||
$params = implode($token, $params);
|
||||
}
|
||||
|
@ -188,7 +211,7 @@ function integria_api_call($api_hostname, $user, $user_pass, $api_pass, $operati
|
|||
}
|
||||
|
||||
// Build URL for API request.
|
||||
$url = $api_hostname.'/integria/include/api.php';
|
||||
$url = $api_hostname.'/include/api.php';
|
||||
|
||||
// ob_start();
|
||||
// $out = fopen('php://output', 'w');
|
||||
|
@ -352,10 +375,10 @@ function get_tickets_integriaims($tickets_filters)
|
|||
|
||||
// API call.
|
||||
$result_api_call_list = integria_api_call(
|
||||
$config['integria_hostname'],
|
||||
$config['integria_user'],
|
||||
$config['integria_pass'],
|
||||
$config['integria_api_pass'],
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'get_incidents',
|
||||
[
|
||||
$incident_text,
|
||||
|
|
|
@ -120,7 +120,7 @@ function netflow_check_filter_group($id_sg)
|
|||
$id_group = db_get_value('id_group', 'tnetflow_filter', 'id_sg', $id_sg);
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
// Get group list that user has access.
|
||||
$groups_user = users_get_groups($config['id_user'], 'IW', $own_info['is_admin'], true);
|
||||
$groups_user = users_get_groups($config['id_user'], 'AR', $own_info['is_admin'], true);
|
||||
$groups_id = [];
|
||||
$has_permission = false;
|
||||
|
||||
|
|
|
@ -1500,7 +1500,7 @@ function networkmap_delete_relations($id_map)
|
|||
|
||||
function get_networkmaps($id)
|
||||
{
|
||||
$groups = array_keys(users_get_groups(null, 'IW'));
|
||||
$groups = array_keys(users_get_groups(null, 'MW'));
|
||||
|
||||
$filter = [];
|
||||
$filter['id_group'] = $groups;
|
||||
|
|
|
@ -42,6 +42,7 @@ require_once $config['homedir'].'/include/functions_users.php';
|
|||
enterprise_include_once('include/functions_reporting.php');
|
||||
enterprise_include_once('include/functions_metaconsole.php');
|
||||
enterprise_include_once('include/functions_inventory.php');
|
||||
enterprise_include_once('include/functions_cron.php');
|
||||
require_once $config['homedir'].'/include/functions_forecast.php';
|
||||
require_once $config['homedir'].'/include/functions_ui.php';
|
||||
require_once $config['homedir'].'/include/functions_netflow.php';
|
||||
|
@ -13948,3 +13949,69 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Email template for sending reports.
|
||||
*
|
||||
* @param string $subjectEmail Subject of email.
|
||||
* @param string $bodyEmail Body of email.
|
||||
* @param string $scheduled Id of schedule report.
|
||||
* @param string $reportName Report name.
|
||||
* @param string $email Serialized list of destination emails.
|
||||
* @param array $attachments Attachments.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function reporting_email_template(
|
||||
string $subjectEmail='',
|
||||
string $bodyEmail='',
|
||||
string $scheduled='',
|
||||
string $reportName='',
|
||||
string $email='',
|
||||
array $attachments=null
|
||||
) {
|
||||
// Subject.
|
||||
$subject = (empty($subjectEmail) === true) ? '[Pandora] '.__('Reports') : $subjectEmail;
|
||||
// Body.
|
||||
if (empty($bodyEmail) === true) {
|
||||
$body = __('Greetings').',';
|
||||
$body .= '<p />';
|
||||
$body .= __('Attached to this email there\'s a PDF file of the').' ';
|
||||
$body .= $scheduled.' '.__('report');
|
||||
$body .= ' <strong>"'.$reportName.'"</strong>';
|
||||
$body .= '<p />';
|
||||
$body .= __('Generated at').' '.date('Y/m/d H:i:s');
|
||||
$body .= '<p />';
|
||||
$body .= __('Thanks for your time.');
|
||||
$body .= '<p />';
|
||||
$body .= __('Best regards, Pandora FMS');
|
||||
$body .= '<p />';
|
||||
$body .= '<em>'.__('This is an automatically generated email from Pandora FMS, please do not reply.').'</em>';
|
||||
} else {
|
||||
$bodyEmail = str_replace(
|
||||
[
|
||||
"\r\n",
|
||||
"\r",
|
||||
'
',
|
||||
],
|
||||
"\n",
|
||||
$bodyEmail
|
||||
);
|
||||
|
||||
$body = '<p>'.implode("</p>\n<p>", explode("\n", $bodyEmail)).'</p>';
|
||||
}
|
||||
|
||||
// Extract list of emails.
|
||||
$destinationEmails = explode(',', io_safe_output($email));
|
||||
foreach ($destinationEmails as $destination) {
|
||||
$destination = trim($destination);
|
||||
|
||||
// Skip the empty 'to'.
|
||||
if (empty($destination) === false) {
|
||||
send_email_attachment($destination, $body, $subject, $attachments);
|
||||
} else {
|
||||
db_pandora_audit('ERROR:', 'Cron jobs mail, empty destination email.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -235,9 +235,6 @@ function groups_combine_acl($acl_group_a, $acl_group_b)
|
|||
}
|
||||
|
||||
$acl_list = [
|
||||
'incident_view' => 1,
|
||||
'incident_edit' => 1,
|
||||
'incident_management' => 1,
|
||||
'agent_view' => 1,
|
||||
'agent_edit' => 1,
|
||||
'agent_disable' => 1,
|
||||
|
|
|
@ -48,6 +48,8 @@ function show_event_dialog(event, dialog_page, result) {
|
|||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
minWidth: 710,
|
||||
minHeight: 600,
|
||||
close: function() {
|
||||
$("#refrcounter").countdown("resume");
|
||||
$("div.vc-countdown").countdown("resume");
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/* Web Server Module Debug Specific CSS file */
|
||||
.query_result_editor,
|
||||
.query_result_view {
|
||||
min-height: 45em;
|
||||
height: 45em;
|
||||
}
|
||||
|
||||
#query_result_container {
|
||||
margin-top: 30px;
|
||||
}
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
.dataTables_wrapper {
|
||||
min-height: 150px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.datatables-td-title {
|
||||
|
|
|
@ -4682,7 +4682,8 @@ input:checked + .p-slider:before {
|
|||
|
||||
.user_edit_first_row,
|
||||
.user_edit_second_row,
|
||||
.user_edit_third_row {
|
||||
.user_edit_third_row,
|
||||
.user_edit_fourth_row {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
|
@ -8279,3 +8280,8 @@ div.stat-win-spinner img {
|
|||
.font_11pt {
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
.checkbox-random-name {
|
||||
width: 100px !important;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
|
|
@ -387,7 +387,6 @@ table#diagnostic_info tbody td div {
|
|||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-widget-content.ui-autocomplete,
|
||||
.ui-widget-content.ui-autocomplete a {
|
||||
color: #333;
|
||||
}
|
||||
|
@ -996,6 +995,26 @@ table.databox {
|
|||
border-color: #707070;
|
||||
}
|
||||
|
||||
li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab {
|
||||
border: 1px solid #707070;
|
||||
}
|
||||
.chartLegend {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.chartLegend table {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.graph_container {
|
||||
width: 800px;
|
||||
margin: 20px auto;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.header_title {
|
||||
font-weight: 600;
|
||||
font-size: 10.5pt;
|
||||
|
|
|
@ -220,7 +220,8 @@ echo '<head>'."\n";
|
|||
// This starts the page head. In the callback function,
|
||||
// $page['head'] array content will be processed into the head.
|
||||
ob_start('ui_process_page_head');
|
||||
|
||||
// Avoid clickjacking.
|
||||
header('X-Frame-Options: SAMEORIGIN');
|
||||
// Enterprise main.
|
||||
enterprise_include_once('index.php');
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
<div style='height: 10px'>
|
||||
<?php
|
||||
$version = '7.0NG.754';
|
||||
$build = '210511';
|
||||
$build = '210518';
|
||||
$banner = "v$version Build $build";
|
||||
|
||||
error_reporting(0);
|
||||
|
|
|
@ -68,6 +68,9 @@ if (file_exists('../../include/languages/'.$user_language.'.mo')) {
|
|||
}
|
||||
|
||||
echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/css"/>';
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
ui_require_css_file('pandora_black', 'include/styles/', true);
|
||||
}
|
||||
|
||||
$interface_name = (string) $params['interface_name'];
|
||||
$agent_id = (int) $params['agent_id'];
|
||||
|
@ -190,6 +193,7 @@ $data[1] .= html_print_image(
|
|||
[
|
||||
'onclick' => "scwShow(scwID('text-start_date'),this);",
|
||||
'style' => 'vertical-align: bottom;',
|
||||
'class' => 'invert_filter',
|
||||
],
|
||||
false,
|
||||
false,
|
||||
|
@ -251,7 +255,8 @@ $options[2] = 'x2';
|
|||
$options[3] = 'x3';
|
||||
$options[4] = 'x4';
|
||||
$options[5] = __('Full');
|
||||
$data[1] = html_print_select(
|
||||
/*
|
||||
$data[1] = html_print_select(
|
||||
$options,
|
||||
'zoom',
|
||||
$zoom,
|
||||
|
@ -261,9 +266,9 @@ $data[1] = html_print_select(
|
|||
true,
|
||||
false,
|
||||
false
|
||||
);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';*/
|
||||
|
||||
$form_table = html_print_table($table, true);
|
||||
$form_table .= '<div class="w100p right right_align">';
|
||||
|
@ -284,7 +289,7 @@ if (empty($server_id) === false) {
|
|||
$menu_form .= html_print_input_hidden('server', $server_id, true);
|
||||
}
|
||||
|
||||
$menu_form .= '<div class="module_graph_menu_dropdown">';
|
||||
$menu_form .= '<div class="module_graph_menu_dropdown mrgn_top_20px">';
|
||||
$menu_form .= '<div id="module_graph_menu_header" class="module_graph_menu_header">';
|
||||
$menu_form .= html_print_image(
|
||||
'images/arrow_down_green.png',
|
||||
|
@ -312,13 +317,6 @@ $menu_form .= '</div>';
|
|||
$menu_form .= '</form>';
|
||||
|
||||
echo $menu_form;
|
||||
echo '<div class="module_graph_menu_dropdown">
|
||||
<div id="module_graph_menu_header" class="module_graph_menu_header">
|
||||
'.html_print_image('images/arrow_down_green.png', true, ['class' => 'module_graph_menu_arrow', 'float' => 'left'], false, false, true).'
|
||||
<span class="flex_2">'.__('Graph configuration menu').'</span></div>
|
||||
<div class="module_graph_menu_content module_graph_menu_content_closed invisible" >'.$form_table.'</div>
|
||||
</div>';
|
||||
echo '</form>';
|
||||
|
||||
// Hidden div to forced title.
|
||||
html_print_div(
|
||||
|
|
|
@ -0,0 +1,741 @@
|
|||
<?php
|
||||
/**
|
||||
* Pandora FMS - http://pandorafms.com
|
||||
* ==================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; version 2
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Print filters for interface view.
|
||||
*
|
||||
* @param string sec Section (type of filter will vary across sections).
|
||||
*/
|
||||
function print_filters($sec)
|
||||
{
|
||||
$table = new StdClass();
|
||||
$table->width = '100%';
|
||||
$table->cellspacing = 0;
|
||||
$table->cellpadding = 0;
|
||||
$table->class = 'databox filters';
|
||||
|
||||
if ($sec === 'view') {
|
||||
$table->style[0] = 'font-weight: bold;';
|
||||
$table->style[1] = 'font-weight: bold;';
|
||||
$table->style[2] = 'font-weight: bold;';
|
||||
$table->style[3] = 'font-weight: bold;';
|
||||
$table->style[4] = 'font-weight: bold;';
|
||||
|
||||
$table->data[0][0] = __('Group');
|
||||
$table->data[0][1] .= html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'AR',
|
||||
true,
|
||||
'group_id',
|
||||
$ag_group,
|
||||
'',
|
||||
'',
|
||||
'0',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'id_grupo',
|
||||
false
|
||||
);
|
||||
|
||||
$table->data[0][2] = __('Recursion');
|
||||
|
||||
$table->data[0][2] .= html_print_input(
|
||||
[
|
||||
'type' => 'checkbox',
|
||||
'name' => 'recursion',
|
||||
'return' => true,
|
||||
'checked' => $recursion,
|
||||
'value' => 1,
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[1][0] = __('Agents');
|
||||
|
||||
if (empty($agents) === true || $agents == -1) {
|
||||
$agents = [];
|
||||
}
|
||||
|
||||
$table->data[1][1] = html_print_select(
|
||||
[],
|
||||
'selected_agents[]',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'min-width: 180px; max-width: 200px;'
|
||||
);
|
||||
|
||||
// Interfaces.
|
||||
$table->data[1][3] = '<b>'.__('Interfaces').'</b>';
|
||||
$table->data[1][4] = html_print_select(
|
||||
[],
|
||||
'selected_interfaces[]',
|
||||
$selected_interfaces,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'min-width: 180px; max-width: 200px;'
|
||||
);
|
||||
|
||||
$filters = '<form method="post" action="'.ui_get_url_refresh(
|
||||
[
|
||||
'selected_agents' => $selected_agents,
|
||||
'selected_interfaces' => $selected_interfaces,
|
||||
'selected_group_id' => $selected_group_id,
|
||||
]
|
||||
).'">';
|
||||
|
||||
$filters .= html_print_table($table, true);
|
||||
|
||||
$filters .= "<div class='height_100p right'>".html_print_submit_button(
|
||||
__('Show'),
|
||||
'uptbutton',
|
||||
false,
|
||||
'class="sub search mgn_tp_0"',
|
||||
true
|
||||
).'</div>';
|
||||
|
||||
$filters .= '</form>';
|
||||
} else {
|
||||
$table->style[0] = 'font-weight: bold;';
|
||||
|
||||
$table->data[0][0] = '<b>'.__('Interfaces').'</b>';
|
||||
$table->data[0][1] = html_print_select(
|
||||
[],
|
||||
'selected_interfaces[]',
|
||||
$selected_interfaces,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'min-width: 180px; max-width: 200px;'
|
||||
);
|
||||
|
||||
$filters = '<form method="post" action="'.ui_get_url_refresh(
|
||||
[
|
||||
'selected_agents' => $selected_agents,
|
||||
'selected_interfaces' => $selected_interfaces,
|
||||
'selected_group_id' => $selected_group_id,
|
||||
]
|
||||
).'">';
|
||||
|
||||
$filters .= html_print_table($table, true);
|
||||
|
||||
$filters .= "<div class='height_100p right'>".html_print_submit_button(
|
||||
__('Show'),
|
||||
'uptbutton',
|
||||
false,
|
||||
'class="sub search mgn_tp_0"',
|
||||
true
|
||||
).'</div>';
|
||||
|
||||
$filters .= '</form>';
|
||||
}
|
||||
|
||||
ui_toggle(
|
||||
$filters,
|
||||
__('Interface filter'),
|
||||
__('Interface filter'),
|
||||
'ui_toggle_if_filter'
|
||||
);
|
||||
|
||||
unset($table);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Print interfaces table.
|
||||
*
|
||||
* @param array data Array containing data of interfaces.
|
||||
* @param array selected_agents Selected agents.
|
||||
* @param array selected_interfaces Selected interfaces.
|
||||
* @param string sort_field Field used to sort table.
|
||||
* @param string sort Direction used to sort by field.
|
||||
* @param int pagination_index Active page (used for pagination).
|
||||
* @param string sec Active section of page.
|
||||
*/
|
||||
function print_table(
|
||||
$data,
|
||||
$selected_agents,
|
||||
$selected_interfaces,
|
||||
$sort_field,
|
||||
$sort,
|
||||
$pagination_index,
|
||||
$sec
|
||||
) {
|
||||
global $config;
|
||||
|
||||
$selected = true;
|
||||
$select_if_name_up = false;
|
||||
$select_if_name_down = false;
|
||||
$select_if_speed_data_up = false;
|
||||
$select_if_speed_data_down = false;
|
||||
$select_if_in_octets_up = false;
|
||||
$select_if_in_octets_down = false;
|
||||
$select_if_out_octets_up = false;
|
||||
$select_if_out_octets_down = false;
|
||||
$select_if_usage_module_data_in_up = false;
|
||||
$select_if_usage_module_data_in_down = false;
|
||||
$select_if_usage_module_data_out_up = false;
|
||||
$select_if_usage_module_data_out_down = false;
|
||||
$select_if_last_data_up = false;
|
||||
$select_if_last_data_down = false;
|
||||
$order = null;
|
||||
|
||||
switch ($sort_field) {
|
||||
case 'if_agent_name':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_agent_name_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_agent_name',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_agent_name_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_agent_name',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_name':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_name_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_name',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_name_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_name',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_speed_data':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_speed_data_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_speed_data',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_speed_data_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_speed_data',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_in_octets':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_in_octets_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_in_octets',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_in_octets_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_in_octets',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_out_octets':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_out_octets_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_out_octets',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_out_octets_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_out_octets',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_usage_module_data_in':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_usage_module_data_in_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_usage_module_data_in',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_usage_module_data_in_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_usage_module_data_in',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_usage_module_data_out':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_usage_module_data_out_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_usage_module_data_out',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_usage_module_data_out_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_usage_module_data_out',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'if_last_data':
|
||||
switch ($sort) {
|
||||
case 'up':
|
||||
$select_if_last_data_up = $selected;
|
||||
$order = [
|
||||
'field' => 'if_last_data',
|
||||
'order' => 'ASC',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'down':
|
||||
default:
|
||||
$select_if_last_data_down = $selected;
|
||||
$order = [
|
||||
'field' => 'if_last_data',
|
||||
'order' => 'DESC',
|
||||
];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$select_if_agent_name = ($sec === 'view') ? true : false;
|
||||
$select_if_name_up = ($sec === 'estado') ? true : false;
|
||||
$select_if_name_down = false;
|
||||
$select_if_speed_data_up = false;
|
||||
$select_if_speed_data_down = false;
|
||||
$select_if_in_octets_up = false;
|
||||
$select_if_in_octets_down = false;
|
||||
$select_if_out_octets_up = false;
|
||||
$select_if_out_octets_down = false;
|
||||
$select_if_usage_module_data_in_up = false;
|
||||
$select_if_usage_module_data_in_down = false;
|
||||
$select_if_usage_module_data_out_up = false;
|
||||
$select_if_usage_module_data_out_down = false;
|
||||
$select_if_last_data_up = false;
|
||||
$select_if_last_data_down = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($sec === 'estado') {
|
||||
$agent_id = (int) get_parameter('id_agente', 0);
|
||||
|
||||
$sort_url_page = 'ver_agente';
|
||||
$sec = 'estado';
|
||||
$query_params = '&id_agente='.$agent_id.'&tab=interface';
|
||||
} else {
|
||||
$sort_url_page = 'interface_view';
|
||||
$sec = 'view';
|
||||
$query_params = '';
|
||||
}
|
||||
|
||||
// Build URLs to sort the table.
|
||||
$url_if_agent_name = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_name = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_speed = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_in_octets = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_out_octets = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_bandwidth_usage_in = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$url_if_bandwidth_usage_out = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
$last_data = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||
|
||||
$selected_agents_query_str = '';
|
||||
$selected_interfaces_query_str = '';
|
||||
|
||||
foreach ($selected_agents as $key => $agent) {
|
||||
$selected_agents_query_str .= '&selected_agents['.$key.']='.$agent;
|
||||
}
|
||||
|
||||
foreach ($selected_interfaces as $key => $interface) {
|
||||
$selected_interfaces_query_str .= '&selected_interfaces['.$key.']='.$interface;
|
||||
}
|
||||
|
||||
$url_if_agent_name .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_name .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_speed .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_in_octets .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_out_octets .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_bandwidth_usage_in .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$url_if_bandwidth_usage_out .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
$last_data .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||
|
||||
$url_if_agent_name .= '&recursion='.$recursion;
|
||||
$url_if_name .= '&recursion='.$recursion;
|
||||
$url_if_speed .= '&recursion='.$recursion;
|
||||
$url_if_in_octets .= '&recursion='.$recursion;
|
||||
$url_if_out_octets .= '&recursion='.$recursion;
|
||||
$url_if_bandwidth_usage_in .= '&recursion='.$recursion;
|
||||
$url_if_bandwidth_usage_out .= '&recursion='.$recursion;
|
||||
$last_data .= '&recursion='.$recursion;
|
||||
|
||||
$url_if_agent_name .= '&sort_field=if_agent_name&sort=';
|
||||
$url_if_name .= '&sort_field=if_name&sort=';
|
||||
$url_if_speed .= '&sort_field=if_speed_data&sort=';
|
||||
$url_if_in_octets .= '&sort_field=if_in_octets&sort=';
|
||||
$url_if_out_octets .= '&sort_field=if_out_octets&sort=';
|
||||
$url_if_bandwidth_usage_in .= '&sort_field=if_usage_module_data_in&sort=';
|
||||
$url_if_bandwidth_usage_out .= '&sort_field=if_usage_module_data_out&sort=';
|
||||
$last_data .= '&sort_field=if_last_data&sort=';
|
||||
|
||||
if (empty($data) === false) {
|
||||
$table = new StdClass();
|
||||
$table->cellpadding = 0;
|
||||
$table->cellspacing = 0;
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
$table->head = [];
|
||||
$table->data = [];
|
||||
$table->size = [];
|
||||
$table->align = [];
|
||||
|
||||
$show_fields = explode(',', $config['status_monitor_fields']);
|
||||
|
||||
if ($sec === 'view') {
|
||||
$table->head[0] = __('Agent');
|
||||
$table->head[0] .= ui_get_sorting_arrows(
|
||||
$url_if_agent_name.'up',
|
||||
$url_if_agent_name.'down',
|
||||
$select_if_agent_name_up,
|
||||
$select_if_agent_name_down
|
||||
);
|
||||
}
|
||||
|
||||
$table->head[1] = __('IfName');
|
||||
$table->head[1] .= ui_get_sorting_arrows(
|
||||
$url_if_name.'up',
|
||||
$url_if_name.'down',
|
||||
$select_if_name_up,
|
||||
$select_if_name_down
|
||||
);
|
||||
|
||||
$table->head[2] = __('Status');
|
||||
|
||||
$table->head[3] = __('IfSpeed');
|
||||
$table->head[3] .= ui_get_sorting_arrows(
|
||||
$url_if_speed.'up',
|
||||
$url_if_speed.'down',
|
||||
$select_if_speed_data_up,
|
||||
$select_if_speed_data_down
|
||||
);
|
||||
|
||||
$table->head[4] = __('IfInOctets');
|
||||
$table->head[4] .= ui_get_sorting_arrows(
|
||||
$url_if_in_octets.'up',
|
||||
$url_if_in_octets.'down',
|
||||
$select_if_in_octets_up,
|
||||
$select_if_in_octets_down
|
||||
);
|
||||
|
||||
$table->head[5] = __('IfOutOctets');
|
||||
$table->head[5] .= ui_get_sorting_arrows(
|
||||
$url_if_out_octets.'up',
|
||||
$url_if_out_octets.'down',
|
||||
$select_if_out_octets_up,
|
||||
$select_if_out_octets_down
|
||||
);
|
||||
|
||||
$table->head[6] = __('% Bandwidth usage (in)');
|
||||
$table->head[6] .= ui_get_sorting_arrows(
|
||||
$url_if_bandwidth_usage_in.'up',
|
||||
$url_if_bandwidth_usage_in.'down',
|
||||
$select_if_usage_module_data_in_up,
|
||||
$select_if_usage_module_data_in_down
|
||||
);
|
||||
|
||||
$table->head[7] = __('% Bandwidth usage (out)');
|
||||
$table->head[7] .= ui_get_sorting_arrows(
|
||||
$url_if_bandwidth_usage_out.'up',
|
||||
$url_if_bandwidth_usage_out.'down',
|
||||
$select_if_usage_module_data_out_up,
|
||||
$select_if_usage_module_data_out_down
|
||||
);
|
||||
|
||||
$table->head[8] = __('Last data');
|
||||
$table->head[8] .= ui_get_sorting_arrows(
|
||||
$last_data.'up',
|
||||
$last_data.'down',
|
||||
$select_if_last_data_up,
|
||||
$select_if_last_data_down
|
||||
);
|
||||
|
||||
$loop_index = 0;
|
||||
$table_data = [];
|
||||
|
||||
$interfaces_array = array_column($data, 'interfaces');
|
||||
$agents = array_column($data, 'name');
|
||||
|
||||
$all_interfaces = [];
|
||||
|
||||
foreach ($data as $value) {
|
||||
$agent_alias = agents_get_alias($value['name']);
|
||||
|
||||
foreach ($value['interfaces'] as $if_name => $interface) {
|
||||
$interface['agent_id'] = $value['name'];
|
||||
$interface['agent_alias'] = $agent_alias;
|
||||
$interface['if_name'] = $if_name;
|
||||
$all_interfaces[$if_name] = $interface;
|
||||
}
|
||||
}
|
||||
|
||||
if ($sec === 'estado'
|
||||
&& is_array($selected_interfaces) === true
|
||||
&& empty($selected_interfaces) === true
|
||||
) {
|
||||
$filtered_interfaces = $all_interfaces;
|
||||
} else {
|
||||
// Filter interfaces array.
|
||||
$filtered_interfaces = array_filter(
|
||||
$all_interfaces,
|
||||
function ($interface) use ($selected_interfaces) {
|
||||
return in_array(
|
||||
$interface['status_module_id'],
|
||||
$selected_interfaces
|
||||
) === true;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$data = [];
|
||||
|
||||
foreach ($filtered_interfaces as $if_name => $agent_interfaces) {
|
||||
// Get usage modules.
|
||||
$usage_module_in = db_get_row(
|
||||
'tagente_modulo',
|
||||
'nombre',
|
||||
$if_name.'_inUsage'
|
||||
);
|
||||
$usage_module_out = db_get_row(
|
||||
'tagente_modulo',
|
||||
'nombre',
|
||||
$if_name.'_outUsage'
|
||||
);
|
||||
|
||||
$usage_module_id_in = $usage_module_in['id_agente_modulo'];
|
||||
$usage_module_id_out = $usage_module_out['id_agente_modulo'];
|
||||
$usage_module_description = $usage_module_in['descripcion'];
|
||||
|
||||
// Get usage modules data.
|
||||
$usage_module_data_in = modules_get_previous_data(
|
||||
$usage_module_id_in,
|
||||
time()
|
||||
);
|
||||
|
||||
$usage_module_data_out = modules_get_previous_data(
|
||||
$usage_module_id_out,
|
||||
time()
|
||||
);
|
||||
|
||||
// Extract ifSpeed from description of usage module.
|
||||
$if_speed_str = strstr($usage_module_description, 'Speed:');
|
||||
$if_speed_str = substr($if_speed_str, 0, -1);
|
||||
$if_speed_str = explode(':', $if_speed_str)[1];
|
||||
|
||||
$matches = [];
|
||||
preg_match_all('/\d+/', $if_speed_str, $matches);
|
||||
|
||||
$if_speed_value = $matches[0][0];
|
||||
|
||||
// Transform ifSpeed unit.
|
||||
$divisor = 1000;
|
||||
$counter = 0;
|
||||
while ($if_speed_value >= $divisor) {
|
||||
if ($if_speed_value >= $divisor) {
|
||||
$if_speed_value = ($if_speed_value / $divisor);
|
||||
}
|
||||
|
||||
$counter++;
|
||||
}
|
||||
|
||||
$if_speed_unit = 'bps';
|
||||
|
||||
switch ($counter) {
|
||||
case 1:
|
||||
$if_speed_unit = 'Kbps';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$if_speed_unit = 'Mbps';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$if_speed_unit = 'Gbps';
|
||||
break;
|
||||
|
||||
case 4:
|
||||
$if_speed_unit = 'Tbps';
|
||||
break;
|
||||
|
||||
default:
|
||||
$if_speed_unit = 'bps';
|
||||
break;
|
||||
}
|
||||
|
||||
// Get in and out traffic.
|
||||
$ifInOctets = modules_get_previous_data(
|
||||
$agent_interfaces['traffic']['in'],
|
||||
time()
|
||||
);
|
||||
$ifOutOctets = modules_get_previous_data(
|
||||
$agent_interfaces['traffic']['out'],
|
||||
time()
|
||||
);
|
||||
|
||||
// Get last data timestamp.
|
||||
$timestamps_array = array_merge(
|
||||
array_column(ifInOctets, 'utimestamp'),
|
||||
array_column(ifOutOctets, 'utimestamp')
|
||||
);
|
||||
|
||||
if ($sec === 'view') {
|
||||
$table_data[$loop_index]['if_agent_name'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent_interfaces['agent_id'].'">'.$agent_interfaces['agent_alias'].'</a>';
|
||||
}
|
||||
|
||||
$table_data[$loop_index]['if_name'] = $agent_interfaces['if_name'];
|
||||
$table_data[$loop_index]['if_status_image'] = $agent_interfaces['status_image'];
|
||||
$table_data[$loop_index]['if_speed_data'] = ($if_speed_value === null) ? __('N/A') : $if_speed_value.' '.$if_speed_unit;
|
||||
$table_data[$loop_index]['if_in_octets'] = ($ifInOctets['datos'] === null) ? __('N/A') : $ifInOctets['datos'];
|
||||
$table_data[$loop_index]['if_out_octets'] = ($ifOutOctets['datos'] === null) ? __('N/A') : $ifOutOctets['datos'];
|
||||
$table_data[$loop_index]['if_usage_module_data_in'] = ($usage_module_data_in['datos'] === null) ? __('N/A') : $usage_module_data_in['datos'];
|
||||
$table_data[$loop_index]['if_usage_module_data_out'] = ($usage_module_data_out['datos'] === null) ? __('N/A') : $usage_module_data_out['datos'];
|
||||
$table_data[$loop_index]['if_last_data'] = human_time_comparation(
|
||||
max(
|
||||
$ifInOctets['utimestamp'],
|
||||
$ifOutOctets['utimestamp']
|
||||
)
|
||||
);
|
||||
|
||||
$loop_index++;
|
||||
}
|
||||
|
||||
// Sort array of previously processed table values.
|
||||
if ($sort === 'up') {
|
||||
$res = usort(
|
||||
$table_data,
|
||||
function ($a, $b) use ($sort_field) {
|
||||
if ($a[$sort_field] > $b[$sort_field]) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if ($sort === 'down') {
|
||||
$res = usort(
|
||||
$table_data,
|
||||
function ($a, $b) use ($sort_field) {
|
||||
if ($b[$sort_field] > $a[$sort_field]) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$sliced_table_data = array_slice(
|
||||
$table_data,
|
||||
$pagination_index,
|
||||
$config['block_size']
|
||||
);
|
||||
|
||||
foreach ($sliced_table_data as $value) {
|
||||
array_push($table->data, array_values($value));
|
||||
}
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
if (count($selected_interfaces) > $config['block_size']) {
|
||||
ui_pagination(count($selected_interfaces), false, $pagination_index, 0, false, 'offset', true, 'pagination-bottom');
|
||||
}
|
||||
} else {
|
||||
ui_print_info_message(['no_close' => true, 'message' => __('No search parameters')]);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,259 @@
|
|||
<?php
|
||||
/**
|
||||
* Pandora FMS - http://pandorafms.com
|
||||
* ==================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; version 2
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
check_login();
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'AR') === false) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access Agent Management'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
require_once 'interface_view.functions.php';
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
|
||||
$recursion = get_parameter_switch('recursion', false);
|
||||
if ($recursion === false) {
|
||||
$recursion = get_parameter('recursion', false);
|
||||
}
|
||||
|
||||
$selected_agents = get_parameter('selected_agents', []);
|
||||
$selected_interfaces = get_parameter('selected_interfaces', []);
|
||||
$refr = (int) get_parameter('refr', 0);
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
$sort_field = get_parameter('sort_field');
|
||||
$sort = get_parameter('sort', 'none');
|
||||
$autosearch = false;
|
||||
$sec = (string) get_parameter('sec', 'view');
|
||||
$agent_id = (int) get_parameter('id_agente', 0);
|
||||
|
||||
if ($sec === 'view') {
|
||||
ui_print_page_header(
|
||||
__('Interface view').$subpage,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$agent_filter = ['id_agente' => $agent_id];
|
||||
|
||||
// Autosearch if search parameters are different from those by default.
|
||||
if (empty($selected_agents) === false || empty($selected_interfaces) === false
|
||||
|| $sort_field !== '' || $sort !== 'none' || $sec === 'estado'
|
||||
) {
|
||||
$autosearch = true;
|
||||
}
|
||||
|
||||
print_filters($sec);
|
||||
|
||||
$result = false;
|
||||
|
||||
if ($autosearch === true) {
|
||||
if ($sec === 'estado') {
|
||||
$result = agents_get_network_interfaces(false, $agent_filter);
|
||||
} else {
|
||||
$result = agents_get_network_interfaces($selected_agents);
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
} else {
|
||||
ui_pagination(
|
||||
count($selected_interfaces),
|
||||
false,
|
||||
$offset,
|
||||
0,
|
||||
false,
|
||||
'offset',
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
print_table(
|
||||
$result,
|
||||
$selected_agents,
|
||||
$selected_interfaces,
|
||||
$sort_field,
|
||||
$sort,
|
||||
$offset,
|
||||
$sec
|
||||
);
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
var group_id = $("#group_id").val();
|
||||
load_agents_selector(group_id);
|
||||
|
||||
var sec = "<?php echo $sec; ?>";
|
||||
var agent_id = "<?php echo $agent_id; ?>";
|
||||
|
||||
if (sec === 'estado' && agent_id > 0) {
|
||||
load_agent_interfaces_selector([agent_id]);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#moduletype').click(function() {
|
||||
jQuery.get (
|
||||
"ajax.php",
|
||||
{
|
||||
"page": "general/subselect_data_module",
|
||||
"module":$('#moduletype').val()
|
||||
},
|
||||
function (data, status) {
|
||||
$("#datatypetittle").show ();
|
||||
$("#datatypebox").hide ()
|
||||
.empty ()
|
||||
.append (data)
|
||||
.show ();
|
||||
},
|
||||
"html"
|
||||
);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
function toggle_full_value(id) {
|
||||
text = $('#hidden_value_module_' + id).html();
|
||||
old_text = $("#value_module_text_" + id).html();
|
||||
|
||||
$("#hidden_value_module_" + id).html(old_text);
|
||||
|
||||
$("#value_module_text_" + id).html(text);
|
||||
}
|
||||
|
||||
function load_agents_selector(group) {
|
||||
|
||||
jQuery.post ("ajax.php",
|
||||
{
|
||||
"page" : "operation/agentes/ver_agente",
|
||||
"get_agents_group_json" : 1,
|
||||
"id_group" : group,
|
||||
"privilege" : "AW",
|
||||
"keys_prefix" : "_",
|
||||
"recursion" : $('#checkbox-recursion').is(':checked')
|
||||
},
|
||||
function (data, status) {
|
||||
$("#selected_agents").html('');
|
||||
jQuery.each (data, function (id, value) {
|
||||
id = id.substring(1);
|
||||
|
||||
option = $("<option></option>")
|
||||
.attr ("value", value["id_agente"])
|
||||
.html (value["alias"]);
|
||||
$("#id_agents").append (option);
|
||||
$("#selected_agents").append (option);
|
||||
});
|
||||
|
||||
var selected_agents = "<?php echo implode(',', $selected_agents); ?>";
|
||||
|
||||
$.each(selected_agents.split(","), function(i,e) {
|
||||
$("#selected_agents option[value='" + e + "']").prop(
|
||||
"selected",
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
load_agent_interfaces_selector($("#selected_agents").val());
|
||||
},
|
||||
"json"
|
||||
);
|
||||
}
|
||||
|
||||
$("#group_id").change(function() {
|
||||
load_agents_selector(this.value);
|
||||
});
|
||||
|
||||
$("#checkbox-recursion").change (function () {
|
||||
jQuery.post ("ajax.php",
|
||||
{"page" : "operation/agentes/ver_agente",
|
||||
"get_agents_group_json" : 1,
|
||||
"id_group" : $("#group_id").val(),
|
||||
"privilege" : "AW",
|
||||
"keys_prefix" : "_",
|
||||
"recursion" : $('#checkbox-recursion').is(':checked')
|
||||
},
|
||||
function (data, status) {
|
||||
$("#selected_agents").html('');
|
||||
$("#module").html('');
|
||||
jQuery.each (data, function (id, value) {
|
||||
id = id.substring(1);
|
||||
|
||||
option = $("<option></option>")
|
||||
.attr ("value", value["id_agente"])
|
||||
.html (value["alias"]);
|
||||
$("#id_agents").append (option);
|
||||
$("#selected_agents").append (option);
|
||||
});
|
||||
},
|
||||
"json"
|
||||
);
|
||||
});
|
||||
|
||||
$("#selected_agents").click (function() {
|
||||
var selected_agents = $(this).val();
|
||||
|
||||
load_agent_interfaces_selector(selected_agents);
|
||||
});
|
||||
|
||||
function load_agent_interfaces_selector(selected_agents) {
|
||||
$("#selected_interfaces").empty();
|
||||
jQuery.post ("ajax.php",
|
||||
{
|
||||
"page" : "include/ajax/agent",
|
||||
"get_agents_interfaces" : 1,
|
||||
"id_agents" : selected_agents
|
||||
},
|
||||
function (data, status) {
|
||||
$("#module").html('');
|
||||
|
||||
if (data) {
|
||||
Object.values(data).forEach(function(obj) {
|
||||
for (const [key, value] of Object.entries(obj.interfaces)) {
|
||||
option = $("<option></option>")
|
||||
.attr ("value", value.status_module_id)
|
||||
.html (key + ' (' + obj.agent_alias + ')');
|
||||
$("#selected_interfaces").append(option);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var selected_interfaces =
|
||||
"<?php echo implode(',', $selected_interfaces); ?>";
|
||||
|
||||
$.each(selected_interfaces.split(","), function(i,e) {
|
||||
$("#selected_interfaces option[value='" + e + "']").prop(
|
||||
"selected",
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
},
|
||||
"json"
|
||||
);
|
||||
}
|
||||
|
||||
</script>
|
|
@ -390,7 +390,7 @@ if ($not_found) {
|
|||
'circo' => 'circular',
|
||||
'neato' => 'spring1',
|
||||
'fdp' => 'spring2',
|
||||
'radial_dinamic' => 'radial dinamic',
|
||||
'radial_dinamic' => 'radial dynamic',
|
||||
];
|
||||
|
||||
$table->data[7][0] = __('Method generation networkmap');
|
||||
|
|
|
@ -64,6 +64,10 @@ if (file_exists('../../include/languages/'.$user_language.'.mo')) {
|
|||
$l10n->load_tables();
|
||||
}
|
||||
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
ui_require_css_file('pandora_black', 'include/styles/', true);
|
||||
}
|
||||
|
||||
echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/css"/>';
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
@ -92,6 +96,10 @@ echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/
|
|||
include_javascript_dependencies_flot_graph();
|
||||
?>
|
||||
</head>
|
||||
<?php
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
}
|
||||
?>
|
||||
<body bgcolor="#ffffff" class='bg_white'>
|
||||
<?php
|
||||
if (!check_acl($config['id_user'], 0, 'AR')) {
|
||||
|
|
|
@ -244,6 +244,10 @@ if ($ag_modulename != '') {
|
|||
$sql_conditions .= " AND tagente_modulo.nombre LIKE '%".$ag_modulename."%'";
|
||||
}
|
||||
|
||||
if ($id_module) {
|
||||
$sql_conditions .= sprintf(' AND tagente_modulo.id_agente_modulo = \'%d\'', $id_module);
|
||||
}
|
||||
|
||||
if ($module_option !== 0) {
|
||||
if ($module_option == 1) {
|
||||
// Only enabled
|
||||
|
|
|
@ -1319,7 +1319,30 @@ if ($tab == 'main') {
|
|||
$maintab['active'] = false;
|
||||
}
|
||||
|
||||
// Interfaces tab.
|
||||
$agent_interfaces = agents_get_network_interfaces(
|
||||
false,
|
||||
['id_agente' => $id_agente]
|
||||
);
|
||||
|
||||
$agent_interfaces_count = count($agent_interfaces[$id_agente]['interfaces']);
|
||||
|
||||
if ($agent_interfaces_count > 0) {
|
||||
$interfacetab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&tab=interface">'.html_print_image(
|
||||
'images/link.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Interfaces'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
if ($tab == 'interface') {
|
||||
$interfacetab['active'] = true;
|
||||
} else {
|
||||
$interfacetab['active'] = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Alert tab.
|
||||
$alerttab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&tab=alert">'.html_print_image(
|
||||
|
@ -1600,6 +1623,7 @@ $onheader = [
|
|||
'manage' => $managetab,
|
||||
'main' => $maintab,
|
||||
'alert' => $alerttab,
|
||||
'interface' => $interfacetab,
|
||||
'inventory' => $inventorytab,
|
||||
'collection' => $collectiontab,
|
||||
'gis' => $gistab,
|
||||
|
@ -1718,6 +1742,10 @@ switch ($tab) {
|
|||
$tab_name = '';
|
||||
break;
|
||||
|
||||
case 'interface':
|
||||
$tab_name = 'Interfaces';
|
||||
break;
|
||||
|
||||
case 'alert':
|
||||
$tab_name = 'Alerts';
|
||||
break;
|
||||
|
@ -1848,6 +1876,10 @@ switch ($tab) {
|
|||
include 'datos_agente.php';
|
||||
break;
|
||||
|
||||
case 'interface':
|
||||
include 'interface_view.php';
|
||||
break;
|
||||
|
||||
case 'alert':
|
||||
include 'alerts_status.php';
|
||||
break;
|
||||
|
|
|
@ -16,13 +16,6 @@ global $config;
|
|||
|
||||
check_login();
|
||||
|
||||
if (!(check_acl($config['id_user'], 0, 'IW') && check_acl($config['id_user'], 0, 'IR'))) {
|
||||
// Doesn't have access to this page.
|
||||
db_pandora_audit('ACL Violation', 'Trying to access IntegriaIMS ticket creation');
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once $config['homedir'].'/include/functions_integriaims.php';
|
||||
|
||||
$update = (isset($_GET['incident_id']) === true);
|
||||
|
@ -42,7 +35,7 @@ if ($config['integria_enabled'] == 0) {
|
|||
}
|
||||
|
||||
// Check connection to Integria IMS API.
|
||||
$has_connection = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_login');
|
||||
$has_connection = integria_api_call(null, null, null, null, 'get_login');
|
||||
|
||||
if ($has_connection === false) {
|
||||
ui_print_error_message(__('Integria IMS API is not reachable'));
|
||||
|
@ -59,19 +52,19 @@ $integria_users_values = [];
|
|||
$integria_types_values = [];
|
||||
$integria_status_values = [];
|
||||
|
||||
$integria_groups_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_groups');
|
||||
$integria_groups_csv = integria_api_call(null, null, null, null, 'get_groups');
|
||||
|
||||
get_array_from_csv_data_pair($integria_groups_csv, $integria_group_values);
|
||||
|
||||
$integria_status_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incidents_status');
|
||||
$integria_status_csv = integria_api_call(null, null, null, null, 'get_incidents_status');
|
||||
|
||||
get_array_from_csv_data_pair($integria_status_csv, $integria_status_values);
|
||||
|
||||
$integria_criticity_levels_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_priorities');
|
||||
$integria_criticity_levels_csv = integria_api_call(null, null, null, null, 'get_incident_priorities');
|
||||
|
||||
get_array_from_csv_data_pair($integria_criticity_levels_csv, $integria_criticity_values);
|
||||
|
||||
$integria_users_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_users');
|
||||
$integria_users_csv = integria_api_call(null, null, null, null, 'get_users');
|
||||
|
||||
$csv_array = explode("\n", $integria_users_csv);
|
||||
|
||||
|
@ -81,7 +74,7 @@ foreach ($csv_array as $csv_line) {
|
|||
}
|
||||
}
|
||||
|
||||
$integria_types_csv = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_types');
|
||||
$integria_types_csv = integria_api_call(null, null, null, null, 'get_types');
|
||||
|
||||
get_array_from_csv_data_pair($integria_types_csv, $integria_types_values);
|
||||
|
||||
|
@ -105,7 +98,7 @@ $incident_content = str_replace(',', ':::', $incident_content);
|
|||
// Perform action.
|
||||
if ($create_incident === true) {
|
||||
// Call Integria IMS API method to create an incident.
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $incident_creator, $config['integria_pass'], $config['integria_api_pass'], 'create_incident', [$incident_title, $incident_group_id, $incident_criticity_id, $incident_content, '', $incident_type, '', $incident_owner, '0', $incident_status], false, '', ',');
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'create_incident', [$incident_title, $incident_group_id, $incident_criticity_id, $incident_content, '', $incident_type, '', $incident_owner, '0', $incident_status], false, '', ',');
|
||||
|
||||
// Necessary to explicitly set true if not false because function returns api call result in case of success instead of true value.
|
||||
$incident_created_ok = ($result_api_call != false) ? true : false;
|
||||
|
@ -117,7 +110,7 @@ if ($create_incident === true) {
|
|||
);
|
||||
} else if ($update_incident === true) {
|
||||
// Call Integria IMS API method to update an incident.
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'update_incident', [$incident_id_edit, $incident_title, $incident_content, '', $incident_group_id, $incident_criticity_id, 0, $incident_status, $incident_owner, 0, $incident_type], false, '', ',');
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'update_incident', [$incident_id_edit, $incident_title, $incident_content, '', $incident_group_id, $incident_criticity_id, 0, $incident_status, $incident_owner, 0, $incident_type], false, '', ',');
|
||||
|
||||
// Necessary to explicitly set true if not false because function returns api call result in case of success instead of true value.
|
||||
$incident_updated_ok = ($result_api_call != false) ? true : false;
|
||||
|
@ -132,7 +125,7 @@ if ($create_incident === true) {
|
|||
// If incident id is specified, retrieve incident values from api to populate combos with such values.
|
||||
if ($update) {
|
||||
// Call Integria IMS API method to get details of an incident given its id.
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_details', [$incident_id_edit], false, '', ',');
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'get_incident_details', [$incident_id_edit], false, '', ',');
|
||||
|
||||
// API call does not return indexes, therefore future modifications of API function in Integria IMS may lead to inconsistencies when accessing resulting array in this file.
|
||||
$incident_details_separator = explode(',', $result_api_call);
|
||||
|
|
|
@ -18,13 +18,6 @@ require_once 'include/functions_integriaims.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (!check_acl($config['id_user'], 0, 'IR')) {
|
||||
// Doesn't have access to this page.
|
||||
db_pandora_audit('ACL Violation', 'Trying to access IntegriaIMS ticket creation');
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if Integria integration enabled.
|
||||
if ($config['integria_enabled'] == 0) {
|
||||
ui_print_error_message(__('In order to access ticket management system, integration with Integria IMS must be enabled and properly configured'));
|
||||
|
@ -32,7 +25,7 @@ if ($config['integria_enabled'] == 0) {
|
|||
}
|
||||
|
||||
// Check connection to Integria IMS API.
|
||||
$has_connection = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_login', []);
|
||||
$has_connection = integria_api_call(null, null, null, null, 'get_login', []);
|
||||
|
||||
if ($has_connection === false) {
|
||||
ui_print_error_message(__('Integria IMS API is not reachable'));
|
||||
|
@ -46,10 +39,10 @@ ui_require_css_file('integriaims');
|
|||
$incident_id = (int) get_parameter('incident_id');
|
||||
// API call.
|
||||
$result_api_call_list = integria_api_call(
|
||||
$config['integria_hostname'],
|
||||
$config['integria_user'],
|
||||
$config['integria_pass'],
|
||||
$config['integria_api_pass'],
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'get_incident_details',
|
||||
[$incident_id]
|
||||
);
|
||||
|
@ -124,10 +117,7 @@ $table_files->head[1] = __('Timestamp');
|
|||
$table_files->head[2] = __('Description');
|
||||
$table_files->head[3] = __('User');
|
||||
$table_files->head[4] = __('Size');
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$table_files->head[5] = __('Delete');
|
||||
}
|
||||
$table_files->head[5] = __('Delete');
|
||||
|
||||
$table_files->data = [];
|
||||
|
||||
|
@ -159,7 +149,7 @@ if ($upload_file && ($_FILES['userfile']['name'] != '')) {
|
|||
|
||||
$filecontent = base64_encode(file_get_contents($_FILES['userfile']['tmp_name']));
|
||||
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'attach_file', [$incident_id, $filename, $filesize, $filedescription, $filecontent], false, '', ';');
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'attach_file', [$incident_id, $filename, $filesize, $filedescription, $filecontent], false, '', '|;|');
|
||||
|
||||
// API method returns '0' string if success.
|
||||
$file_added = ($result_api_call === '0') ? true : false;
|
||||
|
@ -176,7 +166,7 @@ if ($upload_file && ($_FILES['userfile']['name'] != '')) {
|
|||
|
||||
// Delete file.
|
||||
if (isset($_GET['delete_file'])) {
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'delete_file', [$delete_file_id]);
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'delete_file', [$delete_file_id]);
|
||||
|
||||
$file_deleted = false;
|
||||
|
||||
|
@ -193,7 +183,7 @@ if (isset($_GET['delete_file'])) {
|
|||
|
||||
// Download file.
|
||||
if (isset($_GET['download_file'])) {
|
||||
$file_base64 = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'download_file', [$download_file_id]);
|
||||
$file_base64 = integria_api_call(null, null, null, null, 'download_file', [$download_file_id]);
|
||||
ob_end_clean();
|
||||
|
||||
$decoded = base64_decode($file_base64);
|
||||
|
@ -219,7 +209,7 @@ if (isset($_GET['download_file'])) {
|
|||
}
|
||||
|
||||
// Retrieve files belonging to incident and create list table.
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_files', [$incident_id]);
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'get_incident_files', [$incident_id]);
|
||||
|
||||
if ($result_api_call != false && strlen($result_api_call) > 0) {
|
||||
$files = [];
|
||||
|
@ -240,11 +230,10 @@ foreach ($files as $key => $value) {
|
|||
$table_files->data[$i][2] = $value[12];
|
||||
$table_files->data[$i][3] = $value[8];
|
||||
$table_files->data[$i][4] = $value[13];
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$table_files->data[$i][5] .= '<a id="link_delete_file" href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/dashboard_detail_integriaims_incident&incident_id='.$incident_id.'&delete_file='.$value[0]).'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$table_files->data[$i][5] .= html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']);
|
||||
}
|
||||
$table_files->data[$i][5] .= '<a id="link_delete_file" href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/dashboard_detail_integriaims_incident&incident_id='.$incident_id.'&delete_file='.$value[0]).'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$table_files->data[$i][5] .= html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']);
|
||||
|
||||
|
||||
$table_files->data[$i][5] .= '</a>';
|
||||
|
||||
|
@ -267,9 +256,7 @@ $table_files_section->data[2][0] .= '<div class="w100p right">'.html_print_submi
|
|||
|
||||
$upload_file_form = '<div class="w100p">';
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$upload_file_form .= '<form method="post" id="file_control" enctype="multipart/form-data">'.'<h4>'.__('Add attachment').'</h4>'.html_print_table($table_files_section, true).html_print_input_hidden('upload_file', 1, true);
|
||||
}
|
||||
$upload_file_form .= '<form method="post" id="file_control" enctype="multipart/form-data">'.'<h4>'.__('Add attachment').'</h4>'.html_print_table($table_files_section, true).html_print_input_hidden('upload_file', 1, true);
|
||||
|
||||
$upload_file_form .= '<h4>'.__('Attached files').'</h4>'.html_print_table($table_files, true).'</form></div>';
|
||||
|
||||
|
@ -322,7 +309,7 @@ $table_comments_section->data[1][1] .= '<div class="w100p right">'.html_print_su
|
|||
|
||||
// Upload comment. If ticket is closed, this action cannot be performed.
|
||||
if ($upload_comment && $array_get_incidents[6] != 7) {
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'create_workunit', [$incident_id, $comment_description, '0.00', 0, 1, '0'], false, '', '|;|');
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'create_workunit', [$incident_id, $comment_description, '0.00', 0, 1, '0'], false, '', '|;|');
|
||||
|
||||
// API method returns id of new comment if success.
|
||||
$comment_added = ($result_api_call >= '0') ? true : false;
|
||||
|
@ -335,7 +322,7 @@ if ($upload_comment && $array_get_incidents[6] != 7) {
|
|||
}
|
||||
|
||||
// Retrieve comments belonging to incident and create comments table.
|
||||
$result_api_call = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_incident_workunits', [$incident_id]);
|
||||
$result_api_call = integria_api_call(null, null, null, null, 'get_incident_workunits', [$incident_id]);
|
||||
|
||||
if ($result_api_call != false && strlen($result_api_call) > 0) {
|
||||
$comments = [];
|
||||
|
@ -361,9 +348,8 @@ if (!empty($comments)) {
|
|||
|
||||
$upload_comment_form = '<div class="w100p">';
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$upload_comment_form .= '<form method="post" id="comment_form" enctype="multipart/form-data"><h4>'.__('Add comment').'</h4>'.html_print_table($table_comments_section, true).html_print_input_hidden('upload_comment', 1, true).'</form>';
|
||||
}
|
||||
$upload_comment_form .= '<form method="post" id="comment_form" enctype="multipart/form-data"><h4>'.__('Add comment').'</h4>'.html_print_table($table_comments_section, true).html_print_input_hidden('upload_comment', 1, true).'</form>';
|
||||
|
||||
|
||||
$upload_comment_form .= '<h4>'.__('Comments').'</h4>'.$comment_table.'</div>';
|
||||
|
||||
|
|
|
@ -18,12 +18,6 @@ require_once $config['homedir'].'/include/functions_graph.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'IR') && ! check_acl($config['id_user'], 0, 'IW') && ! check_acl($config['id_user'], 0, 'IM')) {
|
||||
db_pandora_audit('ACL Violation', 'Trying to access Incident section');
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
ui_print_page_header(__('Incidents').' » '.__('Statistics'), 'images/book_edit.png', false, '', false, '');
|
||||
|
||||
if (!$config['integria_enabled']) {
|
||||
|
|
|
@ -20,14 +20,6 @@ require_once '../../include/functions_integriaims.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'IR') && ! check_acl($config['id_user'], 0, 'IW') && ! check_acl($config['id_user'], 0, 'IM')) {
|
||||
// Doesn't have access to this page.
|
||||
db_pandora_audit('ACL Violation', 'Trying to access IntegriaIMS ticket creation');
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
// API calls.
|
||||
$status_incident = integriaims_get_details('status');
|
||||
$group_incident = integriaims_get_details('group');
|
||||
|
|
|
@ -18,13 +18,6 @@ require_once 'include/functions_integriaims.php';
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'IR')) {
|
||||
// Doesn't have access to this page.
|
||||
db_pandora_audit('ACL Violation', 'Trying to access IntegriaIMS ticket creation');
|
||||
include 'general/noaccess.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
// Header tabs.
|
||||
$onheader = integriaims_tabs('list_tab');
|
||||
ui_print_page_header(
|
||||
|
@ -43,7 +36,7 @@ if ($config['integria_enabled'] == 0) {
|
|||
}
|
||||
|
||||
// Check connection to Integria IMS API.
|
||||
$has_connection = integria_api_call($config['integria_hostname'], $config['integria_user'], $config['integria_pass'], $config['integria_api_pass'], 'get_login', []);
|
||||
$has_connection = integria_api_call(null, null, null, null, 'get_login', []);
|
||||
|
||||
if ($has_connection === false) {
|
||||
ui_print_error_message(__('Integria IMS API is not reachable'));
|
||||
|
@ -70,10 +63,10 @@ $delete_incident = get_parameter('delete_incident');
|
|||
if ($delete_incident) {
|
||||
// Call Integria IMS API method to delete an incident.
|
||||
$result_api_call_delete = integria_api_call(
|
||||
$config['integria_hostname'],
|
||||
$config['integria_user'],
|
||||
$config['integria_pass'],
|
||||
$config['integria_api_pass'],
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
'delete_incident',
|
||||
[$delete_incident]
|
||||
);
|
||||
|
@ -266,9 +259,7 @@ $table->head[4] = __('Prior');
|
|||
$table->head[5] = __('Updated/Started');
|
||||
$table->head[6] = __('Creator');
|
||||
$table->head[7] = __('Owner');
|
||||
if (check_acl($config['id_user'], 0, 'IW') || check_acl($config['id_user'], 0, 'IM')) {
|
||||
$table->head[8] = '';
|
||||
}
|
||||
$table->head[8] = '';
|
||||
|
||||
$table->data = [];
|
||||
$i = 0;
|
||||
|
@ -294,18 +285,14 @@ foreach ($incidents_paginated as $key => $value) {
|
|||
$table->data[$i][7] = $array_get_incidents[$key][5];
|
||||
$table->data[$i][8] = '';
|
||||
$table->cellclass[$i][8] = 'action_buttons';
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$table->data[$i][8] .= '<a href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/configure_integriaims_incident&incident_id='.$array_get_incidents[$key][0]).'">';
|
||||
$table->data[$i][8] .= html_print_image('images/config.png', true, ['title' => __('Edit')]);
|
||||
$table->data[$i][8] .= '</a>';
|
||||
}
|
||||
$table->data[$i][8] .= '<a href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/configure_integriaims_incident&incident_id='.$array_get_incidents[$key][0]).'">';
|
||||
$table->data[$i][8] .= html_print_image('images/config.png', true, ['title' => __('Edit')]);
|
||||
$table->data[$i][8] .= '</a>';
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IM')) {
|
||||
$table->data[$i][8] .= '<a id="link_delete_incident" href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/list_integriaims_incidents&delete_incident='.$array_get_incidents[$key][0]).'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$table->data[$i][8] .= html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']);
|
||||
$table->data[$i][8] .= '</a>';
|
||||
}
|
||||
$table->data[$i][8] .= '<a id="link_delete_incident" href="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/list_integriaims_incidents&delete_incident='.$array_get_incidents[$key][0]).'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$table->data[$i][8] .= html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']);
|
||||
$table->data[$i][8] .= '</a>';
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
@ -320,13 +307,11 @@ if (empty($table->data) === true) {
|
|||
}
|
||||
|
||||
// Show button to create incident.
|
||||
if (check_acl($config['id_user'], 0, 'IR')) {
|
||||
echo '<form method="POST" action="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/configure_integriaims_incident').'">';
|
||||
echo '<div class="wi100p right">';
|
||||
html_print_submit_button(__('Create'), 'create_new_incident', false, 'class="sub next"');
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
}
|
||||
echo '<form method="POST" action="'.ui_get_full_url('index.php?sec=incident&sec2=operation/incidents/configure_integriaims_incident').'">';
|
||||
echo '<div class="wi100p right">';
|
||||
html_print_submit_button(__('Create'), 'create_new_incident', false, 'class="sub next"');
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
|
||||
// Datapicker library for show calendar.
|
||||
ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/');
|
||||
|
|
|
@ -58,6 +58,9 @@ if (check_acl($config['id_user'], 0, 'AR')) {
|
|||
$sub2['operation/agentes/status_monitor']['text'] = __('Monitor detail');
|
||||
$sub2['operation/agentes/status_monitor']['refr'] = 0;
|
||||
|
||||
$sub2['operation/agentes/interface_view']['text'] = __('Interface view');
|
||||
$sub2['operation/agentes/interface_view']['refr'] = 0;
|
||||
|
||||
enterprise_hook('tag_view_submenu');
|
||||
|
||||
$sub2['operation/agentes/alerts_status']['text'] = __('Alert detail');
|
||||
|
@ -267,9 +270,9 @@ if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, '
|
|||
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
|
||||
$own_groups = array_keys(users_get_groups($config['id_user'], 'IR'));
|
||||
$own_groups = array_keys(users_get_groups($config['id_user'], 'MR'));
|
||||
} else {
|
||||
$own_groups = array_keys(users_get_groups($config['id_user'], 'IR', false));
|
||||
$own_groups = array_keys(users_get_groups($config['id_user'], 'MR', false));
|
||||
}
|
||||
|
||||
foreach ($gisMaps as $gisMap) {
|
||||
|
@ -278,10 +281,6 @@ if (check_acl($config['id_user'], 0, 'MR') || check_acl($config['id_user'], 0, '
|
|||
continue;
|
||||
}
|
||||
|
||||
if (! check_acl($config['id_user'], $gisMap['group_id'], 'IR')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['text'] = mb_substr(io_safe_output($gisMap['map_name']), 0, 15);
|
||||
$sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['id'] = mb_substr(io_safe_output($gisMap['map_name']), 0, 15);
|
||||
$sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['title'] = io_safe_output($gisMap['map_name']);
|
||||
|
@ -459,30 +458,25 @@ $sub['operation/users/user_edit_notifications']['refr'] = 0;
|
|||
|
||||
|
||||
// Incidents.
|
||||
if (check_acl($config['id_user'], 0, 'IR')
|
||||
|| check_acl($config['id_user'], 0, 'IW')
|
||||
|| check_acl($config['id_user'], 0, 'IM')
|
||||
) {
|
||||
$temp_sec2 = $sec2;
|
||||
$sec2 = 'incident';
|
||||
$sec2sub = 'operation/incidents/incident_statistics';
|
||||
$sub[$sec2]['text'] = __('Incidents');
|
||||
$sub[$sec2]['id'] = 'Incidents';
|
||||
$sub[$sec2]['type'] = 'direct';
|
||||
$sub[$sec2]['subtype'] = 'nolink';
|
||||
$sub[$sec2]['refr'] = 0;
|
||||
$sub[$sec2]['subsecs'] = [
|
||||
'operation/incidents/incident_detail',
|
||||
'operation/integria_incidents',
|
||||
];
|
||||
$temp_sec2 = $sec2;
|
||||
$sec2 = 'incident';
|
||||
$sec2sub = 'operation/incidents/incident_statistics';
|
||||
$sub[$sec2]['text'] = __('Incidents');
|
||||
$sub[$sec2]['id'] = 'Incidents';
|
||||
$sub[$sec2]['type'] = 'direct';
|
||||
$sub[$sec2]['subtype'] = 'nolink';
|
||||
$sub[$sec2]['refr'] = 0;
|
||||
$sub[$sec2]['subsecs'] = [
|
||||
'operation/incidents/incident_detail',
|
||||
'operation/integria_incidents',
|
||||
];
|
||||
|
||||
$sub2 = [];
|
||||
$sub2[$sec2sub]['text'] = __('Integria IMS statistics');
|
||||
$sub2['operation/incidents/list_integriaims_incidents']['text'] = __('Integria IMS ticket list');
|
||||
$sub2 = [];
|
||||
$sub2[$sec2sub]['text'] = __('Integria IMS statistics');
|
||||
$sub2['operation/incidents/list_integriaims_incidents']['text'] = __('Integria IMS ticket list');
|
||||
|
||||
$sub[$sec2]['sub2'] = $sub2;
|
||||
$sec2 = $temp_sec2;
|
||||
}
|
||||
$sub[$sec2]['sub2'] = $sub2;
|
||||
$sec2 = $temp_sec2;
|
||||
|
||||
|
||||
// Messages.
|
||||
|
|
|
@ -370,7 +370,7 @@ if (is_metaconsole()) {
|
|||
).'</td>';
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
echo '<td><span id="filter_group_color"><b>'.__('Group').'</b></span></td>';
|
||||
echo "<td colspan='2'>".html_print_select_groups($config['id_user'], 'IW', $own_info['is_admin'], 'assign_group', $filter['id_group'], '', '', -1, true, false, false).'</td>';
|
||||
echo "<td colspan='2'>".html_print_select_groups($config['id_user'], 'AR', $own_info['is_admin'], 'assign_group', $filter['id_group'], '', '', -1, true, false, false).'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
$advanced_toggle = '<table class="w100p">';
|
||||
|
|
|
@ -16,7 +16,7 @@ global $config;
|
|||
require_once 'include/functions_custom_graphs.php';
|
||||
|
||||
// Check ACL
|
||||
$searchGraphs = check_acl($config['id_user'], 0, 'IR');
|
||||
$searchGraphs = check_acl($config['id_user'], 0, 'RR');
|
||||
|
||||
$graphs = false;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ global $config;
|
|||
|
||||
require_once 'include/functions_custom_graphs.php';
|
||||
|
||||
$searchGraphs = check_acl($config['id_user'], 0, 'IR');
|
||||
$searchGraphs = check_acl($config['id_user'], 0, 'RR');
|
||||
|
||||
if ($graphs === false || !$searchGraphs) {
|
||||
echo "<br><div class='nf'>".__('Zero results found')."</div>\n";
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
|
||||
$totalHelps = check_acl($config['id_user'], 0, 'IR');
|
||||
|
||||
if ($helps === false || !$searchHelps) {
|
||||
echo "<br><div class='nf'>".__('Zero results found.').sprintf(
|
||||
__('You can find more help in the <a class="underline" href="%s">wiki</a>'),
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
|
||||
$searchMaps = check_acl($config['id_user'], 0, 'IR');
|
||||
$searchMaps = check_acl($config['id_user'], 0, 'VR');
|
||||
|
||||
$maps = false;
|
||||
$totalMaps = 0;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
|
||||
$searchMaps = check_acl($config['id_user'], 0, 'IR');
|
||||
$searchMaps = check_acl($config['id_user'], 0, 'VR');
|
||||
|
||||
if ($maps === false || !$searchMaps) {
|
||||
echo "<br><div class='nf'>".__('Zero results found')."</div>\n";
|
||||
|
|
|
@ -19,9 +19,7 @@ require_once 'include/functions_reports.php';
|
|||
$linkReport = false;
|
||||
$searchReports = check_acl($config['id_user'], 0, 'RR');
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$linkReport = true;
|
||||
}
|
||||
$linkReport = true;
|
||||
|
||||
if ($reports === false || !$searchReports) {
|
||||
echo "<br><div class='nf'>".__('Zero results found')."</div>\n";
|
||||
|
|
|
@ -19,7 +19,8 @@ enterprise_include('operation/reporting/custom_reporting.php');
|
|||
|
||||
$searchAgents = $searchAlerts = $searchModules = check_acl($config['id_user'], 0, 'AR');
|
||||
$searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'AR');
|
||||
$searchMaps = $searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'IR');
|
||||
$searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'RR');
|
||||
$searchMaps = check_acl($config['id_user'], 0, 'VR');
|
||||
$searchMain = true;
|
||||
$searchHelps = true;
|
||||
|
||||
|
|
|
@ -133,10 +133,10 @@ if ($config['pure']) {
|
|||
|
||||
|
||||
// OPERATIONS
|
||||
// Delete SNMP Trap entry Event (only incident management access).
|
||||
// Delete SNMP Trap entry Event.
|
||||
if (isset($_GET['delete'])) {
|
||||
$id_trap = (int) get_parameter_get('delete', 0);
|
||||
if ($id_trap > 0 && check_acl($config['id_user'], 0, 'IM')) {
|
||||
if ($id_trap > 0) {
|
||||
if ($group_by) {
|
||||
$sql_ids_traps = 'SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = '.$id_trap.')
|
||||
AND source IN (SELECT source FROM ttrap WHERE id_trap = '.$id_trap.')';
|
||||
|
@ -156,42 +156,30 @@ if (isset($_GET['delete'])) {
|
|||
__('Could not be deleted')
|
||||
);
|
||||
}
|
||||
} else {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to delete SNMP event ID #'.$id_trap
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Check Event (only incident write access).
|
||||
// Check Event.
|
||||
if (isset($_GET['check'])) {
|
||||
$id_trap = (int) get_parameter_get('check', 0);
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
$values = [
|
||||
'status' => 1,
|
||||
'id_usuario' => $config['id_user'],
|
||||
];
|
||||
$result = db_process_sql_update('ttrap', $values, ['id_trap' => $id_trap]);
|
||||
enterprise_hook('snmp_update_forwarded_modules', [$id_trap]);
|
||||
$values = [
|
||||
'status' => 1,
|
||||
'id_usuario' => $config['id_user'],
|
||||
];
|
||||
$result = db_process_sql_update('ttrap', $values, ['id_trap' => $id_trap]);
|
||||
enterprise_hook('snmp_update_forwarded_modules', [$id_trap]);
|
||||
|
||||
ui_print_result_message(
|
||||
$result,
|
||||
__('Successfully updated'),
|
||||
__('Could not be updated')
|
||||
);
|
||||
} else {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to checkout SNMP Trap ID'.$id_trap
|
||||
);
|
||||
}
|
||||
ui_print_result_message(
|
||||
$result,
|
||||
__('Successfully updated'),
|
||||
__('Could not be updated')
|
||||
);
|
||||
}
|
||||
|
||||
// Mass-process DELETE.
|
||||
if (isset($_POST['deletebt'])) {
|
||||
$trap_ids = get_parameter_post('snmptrapid', []);
|
||||
if (is_array($trap_ids) && check_acl($config['id_user'], 0, 'IW')) {
|
||||
if (is_array($trap_ids)) {
|
||||
if ($group_by) {
|
||||
foreach ($trap_ids as $key => $value) {
|
||||
$sql_ids_traps = 'SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = '.$value.')
|
||||
|
@ -210,28 +198,18 @@ if (isset($_POST['deletebt'])) {
|
|||
enterprise_hook('snmp_update_forwarded_modules', [$forward_info]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to mass-delete SNMP Trap ID'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Mass-process UPDATE.
|
||||
if (isset($_POST['updatebt'])) {
|
||||
$trap_ids = get_parameter_post('snmptrapid', []);
|
||||
if (is_array($trap_ids) && check_acl($config['id_user'], 0, 'IW')) {
|
||||
if (is_array($trap_ids)) {
|
||||
foreach ($trap_ids as $id_trap) {
|
||||
$sql = sprintf("UPDATE ttrap SET status = 1, id_usuario = '%s' WHERE id_trap = %d", $config['id_user'], $id_trap);
|
||||
db_process_sql($sql);
|
||||
enterprise_hook('snmp_update_forwarded_modules', [$id_trap]);
|
||||
}
|
||||
} else {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to mass-delete SNMP Trap ID'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1025,7 +1003,7 @@ if ($traps !== false) {
|
|||
// Actions.
|
||||
$data[8] = '';
|
||||
|
||||
if (empty($trap['status']) && check_acl($config['id_user'], 0, 'IW')) {
|
||||
if (empty($trap['status'])) {
|
||||
$data[8] .= '<a href="'.$urlPagination.'&check='.$trap['id_trap'].'">'.html_print_image('images/ok.png', true, ['border' => '0', 'title' => __('Validate')]).'</a> ';
|
||||
}
|
||||
|
||||
|
@ -1045,17 +1023,15 @@ if ($traps !== false) {
|
|||
} else {
|
||||
$agent_trap_group = db_get_value('id_grupo', 'tagente', 'nombre', $trap['source']);
|
||||
|
||||
if ((check_acl($config['id_user'], $agent_trap_group, 'IM'))) {
|
||||
$data[8] .= '<a href="'.$urlPagination.'&delete='.$trap['id_trap'].'&offset='.$offset.'" onClick="javascript:return confirm(\''.__('Are you sure?').'\')">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'title' => __('Delete'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a> ';
|
||||
}
|
||||
$data[8] .= '<a href="'.$urlPagination.'&delete='.$trap['id_trap'].'&offset='.$offset.'" onClick="javascript:return confirm(\''.__('Are you sure?').'\')">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'title' => __('Delete'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a> ';
|
||||
}
|
||||
|
||||
$data[8] .= '<a href="javascript: toggleVisibleExtendedInfo('.$trap['id_trap'].');">'.html_print_image(
|
||||
|
@ -1217,14 +1193,11 @@ if ($idx == 0) {
|
|||
unset($table);
|
||||
|
||||
echo '<div class="w98p right">';
|
||||
if (check_acl($config['id_user'], 0, 'IW')) {
|
||||
html_print_submit_button(__('Validate'), 'updatebt', false, 'class="sub ok"');
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'IM')) {
|
||||
echo ' ';
|
||||
html_print_submit_button(__('Delete'), 'deletebt', false, 'class="sub delete" onClick="javascript:return confirm(\''.__('Are you sure?').'\')"');
|
||||
}
|
||||
html_print_submit_button(__('Validate'), 'updatebt', false, 'class="sub ok"');
|
||||
|
||||
echo ' ';
|
||||
html_print_submit_button(__('Delete'), 'deletebt', false, 'class="sub delete" onClick="javascript:return confirm(\''.__('Are you sure?').'\')"');
|
||||
|
||||
echo '</div></form>';
|
||||
|
||||
|
|
|
@ -444,7 +444,6 @@ enterprise_hook('close_meta_frame');
|
|||
.hide()
|
||||
.prop("id", "module_details_window")
|
||||
.appendTo('body');
|
||||
console.log("vamos a ver");
|
||||
function show_module_detail_dialog(module_id, id_agent, server_name, offset, period, module_name) {
|
||||
var params = {};
|
||||
var f = new Date();
|
||||
|
|
|
@ -127,7 +127,8 @@ if (isset($_GET['modified']) && !$view_mode) {
|
|||
$upd_info['ehorus_user_level_pass'] = get_parameter('ehorus_user_level_pass');
|
||||
$upd_info['ehorus_user_level_enabled'] = get_parameter('ehorus_user_level_enabled', 0);
|
||||
|
||||
|
||||
$upd_info['integria_user_level_user'] = get_parameter('integria_user_level_user');
|
||||
$upd_info['integria_user_level_pass'] = get_parameter('integria_user_level_pass');
|
||||
|
||||
$is_admin = db_get_value('is_admin', 'tusuario', 'id_user', $id);
|
||||
|
||||
|
@ -731,12 +732,57 @@ if ($config['ehorus_enabled'] && $config['ehorus_user_level_conf']) {
|
|||
$row['control'] .= '<span id="test-ehorus-message" class="invisible"></span>';
|
||||
$table_remote->data['ehorus_test'] = $row;
|
||||
|
||||
echo '<div class="ehorus_user_conf">';
|
||||
|
||||
echo '<div class="ehorus_user_conf user_edit_fourth_row">';
|
||||
html_print_table($table_remote);
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
if ($config['integria_enabled'] && $config['integria_user_level_conf']) {
|
||||
// Integria IMS user remote login.
|
||||
$table_remote = new StdClass();
|
||||
$table_remote->data = [];
|
||||
$table_remote->width = '100%';
|
||||
$table_remote->id = 'integria-remote-setup';
|
||||
$table_remote->class = 'white_box';
|
||||
$table_remote->size['name'] = '30%';
|
||||
$table_remote->style['name'] = 'font-weight: bold';
|
||||
|
||||
// Integria IMS user level authentication.
|
||||
// Title
|
||||
$row = [];
|
||||
$row['control'] = '<p class="edit_user_labels">'.__('Integria user configuration').': </p>';
|
||||
$table_remote->data['integria_user_level_conf'] = $row;
|
||||
|
||||
// Integria IMS user.
|
||||
$row = [];
|
||||
$row['name'] = __('User');
|
||||
$row['control'] = html_print_input_text('integria_user_level_user', $user_info['integria_user_level_user'], '', 30, 100, true);
|
||||
$table_remote->data['integria_user_level_user'] = $row;
|
||||
|
||||
// Integria IMS pass.
|
||||
$row = [];
|
||||
$row['name'] = __('Password');
|
||||
$row['control'] = html_print_input_password('integria_user_level_pass', io_output_password($user_info['integria_user_level_pass']), '', 30, 100, true);
|
||||
$table_remote->data['integria_user_level_pass'] = $row;
|
||||
|
||||
// Test.
|
||||
$integria_host = db_get_value('value', 'tconfig', 'token', 'integria_hostname');
|
||||
$integria_api_pass = db_get_value('value', 'tconfig', 'token', 'integria_api_pass');
|
||||
|
||||
$row = [];
|
||||
$row['name'] = __('Test');
|
||||
$row['control'] = html_print_button(__('Start'), 'test-integria', false, 'integria_connection_test("'.$integria_host.'",'.$integria_api_pass.')', 'class="sub next"', true);
|
||||
$row['control'] .= ' <span id="test-integria-spinner" class="invisible"> '.html_print_image('images/spinner.gif', true).'</span>';
|
||||
$row['control'] .= ' <span id="test-integria-success" class="invisible"> '.html_print_image('images/status_sets/default/severity_normal.png', true).'</span>';
|
||||
$row['control'] .= ' <span id="test-integria-failure" class="invisible"> '.html_print_image('images/status_sets/default/severity_critical.png', true).'</span>';
|
||||
$row['control'] .= '<span id="test-integria-message" class="invisible"></span>';
|
||||
$table_remote->data['integria_test'] = $row;
|
||||
|
||||
echo '<div class="integria_user_conf">';
|
||||
html_print_table($table_remote);
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
|
||||
echo '<div class="edit_user_button">';
|
||||
if (!$config['user_can_update_info']) {
|
||||
|
@ -1280,4 +1326,75 @@ function ehorus_connection_test(host, port) {
|
|||
hideLoadingImage();
|
||||
});
|
||||
}
|
||||
|
||||
function integria_connection_test(api_hostname, api_pass) {
|
||||
var user = $('input#text-integria_user_level_user').val();
|
||||
var pass = $('input#password-integria_user_level_pass').val();
|
||||
|
||||
var badRequestMessage = '<?php echo __('Empty user or password'); ?>';
|
||||
var notFoundMessage = '<?php echo __('User not found'); ?>';
|
||||
var invalidPassMessage = '<?php echo __('Invalid password'); ?>';
|
||||
|
||||
var hideLoadingImage = function () {
|
||||
$('#test-integria-spinner').hide();
|
||||
}
|
||||
var showLoadingImage = function () {
|
||||
$('#test-integria-spinner').show();
|
||||
}
|
||||
var hideSuccessImage = function () {
|
||||
$('#test-integria-success').hide();
|
||||
}
|
||||
var showSuccessImage = function () {
|
||||
$('#test-integria-success').show();
|
||||
}
|
||||
var hideFailureImage = function () {
|
||||
$('#test-integria-failure').hide();
|
||||
}
|
||||
var showFailureImage = function () {
|
||||
$('#test-integria-failure').show();
|
||||
}
|
||||
var hideMessage = function () {
|
||||
$('#test-integria-message').hide();
|
||||
}
|
||||
var showMessage = function () {
|
||||
$('#test-integria-message').show();
|
||||
}
|
||||
var changeTestMessage = function (message) {
|
||||
$('#test-integria-message').text(message);
|
||||
}
|
||||
|
||||
hideSuccessImage();
|
||||
hideFailureImage();
|
||||
hideMessage();
|
||||
showLoadingImage();
|
||||
|
||||
$.ajax({
|
||||
url: "ajax.php",
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
page: 'godmode/setup/setup_integria',
|
||||
operation: 'check_api_access',
|
||||
integria_user: user,
|
||||
integria_pass: pass,
|
||||
api_hostname: api_hostname,
|
||||
api_pass: api_pass,
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, xhr) {
|
||||
if (data.login == '1') {
|
||||
showSuccessImage();
|
||||
} else {
|
||||
showFailureImage();
|
||||
showMessage();
|
||||
}
|
||||
})
|
||||
.fail(function(xhr, textStatus, errorThrown) {
|
||||
showFailureImage();
|
||||
showMessage();
|
||||
})
|
||||
.always(function(xhr, textStatus) {
|
||||
hideLoadingImage();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.754
|
||||
%define release 210511
|
||||
%define release 210518
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.754
|
||||
%define release 210511
|
||||
%define release 210518
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.754
|
||||
%define release 210511
|
||||
%define release 210518
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -1049,9 +1049,6 @@ CREATE TABLE IF NOT EXISTS `torigen` (
|
|||
CREATE TABLE IF NOT EXISTS `tperfil` (
|
||||
`id_perfil` int(10) unsigned NOT NULL auto_increment,
|
||||
`name` TEXT NOT NULL,
|
||||
`incident_edit` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`incident_view` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`incident_management` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`agent_view` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`agent_edit` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`alert_edit` tinyint(1) NOT NULL DEFAULT 0,
|
||||
|
@ -1267,6 +1264,8 @@ CREATE TABLE IF NOT EXISTS `tusuario` (
|
|||
`ehorus_user_level_user` VARCHAR(60),
|
||||
`ehorus_user_level_pass` VARCHAR(45),
|
||||
`ehorus_user_level_enabled` TINYINT(1),
|
||||
`integria_user_level_user` VARCHAR(60),
|
||||
`integria_user_level_pass` VARCHAR(45),
|
||||
CONSTRAINT `fk_filter_id` FOREIGN KEY (`id_filter`) REFERENCES tevent_filter (`id_filter`) ON DELETE SET NULL,
|
||||
UNIQUE KEY `id_user` (`id_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
@ -2263,6 +2262,11 @@ CREATE TABLE IF NOT EXISTS `talert_snmp_action` (
|
|||
`al_field13` text NOT NULL,
|
||||
`al_field14` text NOT NULL,
|
||||
`al_field15` text NOT NULL,
|
||||
`al_field16` text NOT NULL,
|
||||
`al_field17` text NOT NULL,
|
||||
`al_field18` text NOT NULL,
|
||||
`al_field19` text NOT NULL,
|
||||
`al_field20` text NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
|
|
@ -364,7 +364,7 @@ INSERT INTO `tusuario_perfil` (`id_up`, `id_usuario`, `id_perfil`, `id_grupo`, `
|
|||
-- Dumping data for table `tperfil`
|
||||
--
|
||||
|
||||
INSERT INTO `tperfil` VALUES (1,'Operator (Read)',0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0),(2,'Operator (Write)',1,1,0,1,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,0),(3,'Chief Operator',1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1),(4,'Group coordinator',1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1),(5,'Pandora Administrator',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
||||
INSERT INTO `tperfil` VALUES (1,'Operator (Read)',1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0),(2,'Operator (Write)',1,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,0),(3,'Chief Operator',1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1),(4,'Group coordinator',1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1),(5,'Pandora Administrator',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
||||
|
||||
--
|
||||
-- Dumping data for table `tnews`
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.754-210511
|
||||
Version: 7.0NG.754-210518
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.754-210511"
|
||||
pandora_version="7.0NG.754-210518"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -38,6 +38,7 @@ use PandoraFMS::DiscoveryServer;
|
|||
use PandoraFMS::WMIServer;
|
||||
use PandoraFMS::PluginServer;
|
||||
use PandoraFMS::PredictionServer;
|
||||
use PandoraFMS::WebServer;
|
||||
|
||||
# Constants for Win32 services.
|
||||
use constant WIN32_SERVICE_STOPPED => 0x01;
|
||||
|
@ -123,6 +124,7 @@ sub pandora_startup () {
|
|||
push (@Servers, new PandoraFMS::WMIServer (\%Config, $DBH));
|
||||
push (@Servers, new PandoraFMS::PluginServer (\%Config, $DBH));
|
||||
push (@Servers, new PandoraFMS::PredictionServer (\%Config, $DBH));
|
||||
push (@Servers, new PandoraFMS::WebServer (\%Config, $DBH));
|
||||
} else {
|
||||
# Metaconsole service modules are run by the prediction server
|
||||
push (@Servers, new PandoraFMS::PredictionServer (\%Config, $DBH));
|
||||
|
|
|
@ -25,6 +25,7 @@ incomingdir /var/spool/pandora/data_in
|
|||
log_file /var/log/pandora/pandora_server.log
|
||||
|
||||
# Log file for Pandora FMS SNMP console. Its generated by NetSNMP Trap daemon
|
||||
# If you change it, please update the file /etc/logrotate.d/pandora_server accordingly.
|
||||
|
||||
snmp_logfile /var/log/pandora/pandora_snmptrap.log
|
||||
|
||||
|
@ -424,11 +425,11 @@ update_parent 1
|
|||
|
||||
# openstreetmaps_description 1
|
||||
|
||||
# Enable (1) or disable (0) Pandora FMS Web Server/Goliat (PANDORA FMS ENTERPRISE ONLY).
|
||||
# Enable (1) or disable (0) Pandora FMS Web Server/Goliat.
|
||||
|
||||
webserver 1
|
||||
|
||||
# Number of threads for the Web Server/Goliat (PANDORA FMS ENTERPRISE ONLY).
|
||||
# Number of threads for the Web Server/Goliat.
|
||||
|
||||
web_threads 1
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.754";
|
||||
my $pandora_build = "210511";
|
||||
my $pandora_build = "210518";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -77,7 +77,7 @@ sub help_screen {
|
|||
sub pandora_init {
|
||||
my $pa_config = $_[0];
|
||||
my $init_string = $_[1];
|
||||
print "\n$init_string $pandora_version Build $pandora_build Copyright (c) 2004-20".substr($pandora_build,0,2)." " . pandora_get_initial_copyright_notice() . "\n";
|
||||
print "$init_string v$pandora_version Build $pandora_build\n\n";
|
||||
print "This program is OpenSource, licensed under the terms of GPL License version 2.\n";
|
||||
print "You can download latest versions and documentation at official web page.\n\n";
|
||||
|
||||
|
|
|
@ -1339,6 +1339,9 @@ sub pandora_execute_action ($$$$$$$$$;$) {
|
|||
my $cid_data = "CID_IMAGE";
|
||||
my $dataname = "CID_IMAGE.png";
|
||||
|
||||
# Decode ampersand. Used for macros with encoded names.
|
||||
$field3 =~ s/&/&/g;
|
||||
|
||||
if (defined($data) && $data =~ /^data:image\/png;base64, /) {
|
||||
# macro _data_ substitution in case is image.
|
||||
$attach_data_as_image = 1;
|
||||
|
@ -4028,6 +4031,12 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
|
|||
$alert->{'al_field13'} = subst_alert_macros ($alert->{'al_field13'}, \%macros);
|
||||
$alert->{'al_field14'} = subst_alert_macros ($alert->{'al_field14'}, \%macros);
|
||||
$alert->{'al_field15'} = subst_alert_macros ($alert->{'al_field15'}, \%macros);
|
||||
$alert->{'al_field16'} = subst_alert_macros ($alert->{'al_field16'}, \%macros);
|
||||
$alert->{'al_field17'} = subst_alert_macros ($alert->{'al_field17'}, \%macros);
|
||||
$alert->{'al_field18'} = subst_alert_macros ($alert->{'al_field18'}, \%macros);
|
||||
$alert->{'al_field19'} = subst_alert_macros ($alert->{'al_field19'}, \%macros);
|
||||
$alert->{'al_field20'} = subst_alert_macros ($alert->{'al_field20'}, \%macros);
|
||||
|
||||
|
||||
# Check time threshold
|
||||
$alert->{'last_fired'} = '1970-01-01 00:00:00' unless defined ($alert->{'last_fired'});
|
||||
|
@ -4067,6 +4076,14 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
|
|||
'field13' => $alert->{'al_field13'},
|
||||
'field14' => $alert->{'al_field14'},
|
||||
'field15' => $alert->{'al_field15'},
|
||||
'field16' => $alert->{'al_field16'},
|
||||
'field17' => $alert->{'al_field17'},
|
||||
'field18' => $alert->{'al_field18'},
|
||||
'field19' => $alert->{'al_field19'},
|
||||
'field20' => $alert->{'al_field20'},
|
||||
|
||||
|
||||
|
||||
'description' => $alert->{'description'},
|
||||
'times_fired' => $times_fired,
|
||||
'time_threshold' => 0,
|
||||
|
@ -4152,6 +4169,12 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
|
|||
'field13' => $other_alert->{'al_field13'},
|
||||
'field14' => $other_alert->{'al_field14'},
|
||||
'field15' => $other_alert->{'al_field15'},
|
||||
'field16' => $other_alert->{'al_field16'},
|
||||
'field17' => $other_alert->{'al_field17'},
|
||||
'field18' => $other_alert->{'al_field18'},
|
||||
'field19' => $other_alert->{'al_field19'},
|
||||
'field20' => $other_alert->{'al_field20'},
|
||||
|
||||
'description' => '',
|
||||
'times_fired' => $times_fired,
|
||||
'time_threshold' => 0,
|
||||
|
@ -4629,11 +4652,17 @@ sub get_module_status ($$$) {
|
|||
}
|
||||
# (-inf, critical_min), [critical_max, +inf)
|
||||
else {
|
||||
return 1 if ($data < $critical_min || $data >= $critical_max);
|
||||
return 1 if ($data <= $critical_max && $critical_max < $critical_min);
|
||||
if ($critical_min == 0) {
|
||||
return 1 if ($data > $critical_max);
|
||||
}elsif ($critical_max == 0) {
|
||||
return 1 if ($data <= $critical_min);
|
||||
} else {
|
||||
return 1 if ($data < $critical_min || $data >= $critical_max);
|
||||
return 1 if ($data <= $critical_max && $critical_max < $critical_min);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Warning
|
||||
if ($warning_min ne $warning_max) {
|
||||
# [warning_min, warning_max)
|
||||
|
@ -4643,8 +4672,14 @@ sub get_module_status ($$$) {
|
|||
}
|
||||
# (-inf, warning_min), [warning_max, +inf)
|
||||
else {
|
||||
return 2 if ($data < $warning_min || $data >= $warning_max);
|
||||
return 2 if ($data <= $warning_max && $warning_max < $warning_min);
|
||||
if ($warning_min == 0) {
|
||||
return 1 if ($data > $warning_max);
|
||||
}elsif ($warning_max == 0) {
|
||||
return 1 if ($data <= $warning_min);
|
||||
} else {
|
||||
return 2 if ($data < $warning_min || $data >= $warning_max);
|
||||
return 2 if ($data <= $warning_max && $warning_max < $warning_min);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,365 @@
|
|||
##################################################################################
|
||||
# Goliath Tools CURL Module
|
||||
##################################################################################
|
||||
# Copyright (c) 2013-2021 Artica Soluciones Tecnologicas S.L
|
||||
# This code is not free or OpenSource. Please don't redistribute.
|
||||
##################################################################################
|
||||
|
||||
package PandoraFMS::Goliat::GoliatCURL;
|
||||
|
||||
use PandoraFMS::Goliat::GoliatTools;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Data::Dumper;
|
||||
use PandoraFMS::DB;
|
||||
|
||||
use IO::Socket::INET6;
|
||||
use URI::Escape;
|
||||
use Time::Local;
|
||||
use Time::HiRes qw ( gettimeofday );
|
||||
|
||||
# Japanese encoding support
|
||||
use Encode::Guess qw/euc-jp shiftjis iso-2022-jp/;
|
||||
|
||||
require Exporter;
|
||||
|
||||
our @ISA = ("Exporter");
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
our @EXPORT = qw(
|
||||
g_http_task
|
||||
@task_requests
|
||||
@task_reqsec
|
||||
@task_fails
|
||||
@task_time
|
||||
@task_end
|
||||
@task_sessions
|
||||
@task_ssec
|
||||
@task_get_string
|
||||
@task_get_content
|
||||
@task_session_fails
|
||||
);
|
||||
|
||||
our @task_requests;
|
||||
our @task_reqsec;
|
||||
our @task_fails ;
|
||||
our @task_time;
|
||||
our @task_end;
|
||||
our @task_sessions;
|
||||
our @task_ssec;
|
||||
our @task_get_string;
|
||||
our @task_get_content;
|
||||
our @task_session_fails;
|
||||
our $goliat_abort;
|
||||
|
||||
# Returns a string than can be safely used as a command line parameter for CURL
|
||||
sub safe_param ($) {
|
||||
my $string = shift;
|
||||
|
||||
$string =~ s/'/"/g;
|
||||
return "'" . $string . "'";
|
||||
}
|
||||
|
||||
sub g_http_task {
|
||||
my ( $config, $thread_id, @work_list ) = @_;
|
||||
my ( $ax, $bx, $cx ); # used in FOR loop
|
||||
my ( $ttime1, $ttime2, $ttime_tot );
|
||||
|
||||
my $resp; # HTTP Response
|
||||
my $total_requests = 0;
|
||||
my $total_valid_requests = 0;
|
||||
my $total_invalid_request = 0;
|
||||
my $cookie_file = "/tmp/gtc_".$thread_id."_".g_trash_ascii (3);
|
||||
my $check_string = 1;
|
||||
my $get_string = "";
|
||||
my $get_content = "";
|
||||
my $get_content_advanced = "";
|
||||
my $timeout = 10;
|
||||
|
||||
#my $ua = new LWP::UserAgent;
|
||||
$task_requests [$thread_id] = 0 ;
|
||||
$task_sessions [$thread_id] = 0 ;
|
||||
$task_reqsec[$thread_id] = 0;
|
||||
$task_fails[$thread_id] = 0;
|
||||
$task_session_fails[$thread_id] = 0;
|
||||
$task_ssec[$thread_id] = 0;
|
||||
$task_end[$thread_id] = 0;
|
||||
$task_time[$thread_id] = 0;
|
||||
$task_get_string[$thread_id] = "";
|
||||
$task_get_content[$thread_id] = "";
|
||||
|
||||
# Set command line options for CURL
|
||||
my $curl_opts;
|
||||
|
||||
# Follow redirects
|
||||
$curl_opts .= " --location-trusted";
|
||||
|
||||
# User agent
|
||||
if ($config->{"agent"} ne '') {
|
||||
$curl_opts .= " -A " . safe_param($config->{"agent"})
|
||||
}
|
||||
|
||||
# Prevent pages from being cached
|
||||
$curl_opts .= " -H 'Pragma: no-cache'";
|
||||
|
||||
# Timeout
|
||||
if (defined ($config->{"timeout"}) && $config->{"timeout"} > 0) {
|
||||
$timeout = $config->{"timeout"};
|
||||
}
|
||||
|
||||
# Maximum file size
|
||||
if (defined($config->{"maxsize"}) && $config->{"maxsize"} > 0) {
|
||||
$curl_opts .= " --max-filesize " . $config->{"maxsize"};
|
||||
}
|
||||
|
||||
# Disable SSL certificate host verification
|
||||
$curl_opts .= " -k";
|
||||
|
||||
# Proxy
|
||||
if ($config->{'proxy'} ne ""){
|
||||
$curl_opts .= " -x " . safe_param($config->{'proxy'});
|
||||
}
|
||||
|
||||
# Proxy HTTP authentication
|
||||
if ($config->{'auth_user'} ne "") {
|
||||
$curl_opts .= " --proxy-anyauth -U " . safe_param($config->{'auth_user'} . ':' . $config->{'auth_pass'});
|
||||
}
|
||||
|
||||
# Delete existing cookies
|
||||
my $cookie_carry_on = 0;
|
||||
if ( -e $cookie_file){
|
||||
unlink ($cookie_file);
|
||||
}
|
||||
|
||||
$ttime1 = Time::HiRes::gettimeofday();
|
||||
for ($ax = 0; $ax != $config->{'retries'}; $ax++){
|
||||
for ($bx = 0; $bx < $config->{"work_items"}; $bx++){
|
||||
if ($config->{'con_delay'} > 0){
|
||||
sleep ($config->{'con_delay'});
|
||||
}
|
||||
$total_requests++;
|
||||
# Start to count!
|
||||
$check_string = 1;
|
||||
# Prepare parameters
|
||||
my $task_curl_opts = $curl_opts;
|
||||
my $params = "";
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'variable_name'}[$cx])){
|
||||
if ($cx > 0){
|
||||
$params = $params."&";
|
||||
}
|
||||
$params = $params . $work_list[$bx]->{'variable_name'}[$cx] . "=" . uri_escape($work_list[$bx]->{'variable_value'}[$cx]);
|
||||
$cx++;
|
||||
}
|
||||
|
||||
# Cookie carry on
|
||||
if (defined ($work_list[$bx]->{'cookie'}) && $work_list[$bx]->{'cookie'} == 1){
|
||||
$cookie_carry_on = 1;
|
||||
}
|
||||
|
||||
if ($cookie_carry_on == 1) {
|
||||
$task_curl_opts .= " -c " . safe_param ($cookie_file);
|
||||
$task_curl_opts .= " -b " . safe_param ($cookie_file);
|
||||
}
|
||||
|
||||
# HTTP authentication
|
||||
if ($work_list[$bx]->{'http_auth_user'} ne "" && $work_list[$bx]->{'http_auth_pass'} ne "") {
|
||||
|
||||
if($config->{'http_check_type'} == 0){
|
||||
$task_curl_opts .= " --anyauth -u " . safe_param($work_list[$bx]->{'http_auth_user'} . ':' . $work_list[$bx]->{'http_auth_pass'});
|
||||
}
|
||||
|
||||
if ($config->{'http_check_type'} == 1) {
|
||||
$task_curl_opts .= " --ntlm -u " . safe_param($work_list[$bx]->{'http_auth_user'} . ':' . $work_list[$bx]->{'http_auth_pass'});
|
||||
}
|
||||
|
||||
if ($config->{'http_check_type'} == 2) {
|
||||
$task_curl_opts .= " --digest -u " . safe_param($work_list[$bx]->{'http_auth_user'} . ':' . $work_list[$bx]->{'http_auth_pass'});
|
||||
}
|
||||
|
||||
if ($config->{'http_check_type'} == 3) {
|
||||
$task_curl_opts .= " --basic -u " . safe_param($work_list[$bx]->{'http_auth_user'} . ':' . $work_list[$bx]->{'http_auth_pass'});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
# GET
|
||||
if ($work_list[$bx]->{'type'} eq "GET"){
|
||||
$task_curl_opts .= " -H 'Accept: text/html'";
|
||||
if ($cx > 0){
|
||||
$params = $work_list[$bx]->{'url'} . "?" . $params;
|
||||
} else {
|
||||
$params = $work_list[$bx]->{'url'};
|
||||
}
|
||||
|
||||
$resp = curl ($config->{"plugin_exec"}, $timeout, $task_curl_opts, $params, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'}, $config->{"moduleId"}, $config->{"dbh"});
|
||||
|
||||
# POST
|
||||
} elsif ($work_list[$bx]->{'type'} eq "POST") {
|
||||
$task_curl_opts .= " -d " . safe_param($params);
|
||||
$task_curl_opts .= " -H 'Content-type: application/x-www-form-urlencoded'";
|
||||
$resp = curl ($config->{"plugin_exec"}, $timeout, $task_curl_opts, $work_list[$bx]->{'url'}, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'}, $config->{"moduleId"}, $config->{"dbh"});
|
||||
|
||||
# HEAD
|
||||
} else {
|
||||
$task_curl_opts .= " -I";
|
||||
if ($cx > 0){
|
||||
$params = $work_list[$bx]->{'url'} . "?" . uri_escape($params);
|
||||
} else {
|
||||
$params = $work_list[$bx]->{'url'};
|
||||
}
|
||||
$resp = curl ($config->{"plugin_exec"}, $timeout, $task_curl_opts, $params, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'}, $config->{"moduleId"}, $config->{"dbh"});
|
||||
}
|
||||
|
||||
# Get string ?
|
||||
if (defined($work_list[$bx]->{'get_string'})) {
|
||||
my $temp = $work_list[$bx]->{'get_string'};
|
||||
if ($resp =~ m/($temp)/) {
|
||||
$task_get_string[$thread_id] = $1;
|
||||
}
|
||||
}
|
||||
|
||||
# Get response ?
|
||||
if ($work_list[$bx]->{'get_content_advanced'} ne "") {
|
||||
my $temp = $work_list[$bx]->{'get_content_advanced'};
|
||||
if ($resp =~ m/$temp/) {
|
||||
$task_get_content[$thread_id] = $1 if defined ($1);
|
||||
}
|
||||
} elsif ($work_list[$bx]->{'get_content'} ne "") {
|
||||
my $temp = $work_list[$bx]->{'get_content'};
|
||||
if ($resp =~ m/($temp)/) {
|
||||
$task_get_content[$thread_id] = $1;
|
||||
}
|
||||
} else {
|
||||
$task_get_content[$thread_id] = $resp;
|
||||
}
|
||||
|
||||
# Resource bashing
|
||||
#if ((defined($work_list[$bx]->{'get_resources'})) && ($work_list[$bx]->{'get_resources'} == 1)){
|
||||
# $total_requests = g_get_all_links ($config, $ua, $resp, $total_requests, $work_list[$bx]->{'url'}, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'});
|
||||
#}
|
||||
|
||||
# CHECKSTRING check
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'checkstring'}[$cx])) {
|
||||
my $match_string = $work_list[$bx]->{'checkstring'}[$cx];
|
||||
my $as_string = $resp;
|
||||
my $guess = Encode::Guess::guess_encoding($as_string);
|
||||
if (ref $guess) {
|
||||
$as_string = $guess->decode($as_string);
|
||||
}
|
||||
unless (utf8::is_utf8($match_string)) {
|
||||
utf8::decode($match_string);
|
||||
}
|
||||
|
||||
if ( $as_string =~ m/$match_string/i ){
|
||||
$total_valid_requests++;
|
||||
} else {
|
||||
$total_invalid_request++;
|
||||
$bx = $config->{"work_items"}; # Abort session remaining request
|
||||
$check_string=0;
|
||||
}
|
||||
$cx++;
|
||||
}
|
||||
|
||||
# CHECKNOTSTRING check
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'checknotstring'}[$cx])) {
|
||||
my $match_string = $work_list[$bx]->{'checknotstring'}[$cx];
|
||||
my $as_string = $resp;
|
||||
|
||||
my $guess = Encode::Guess::guess_encoding($as_string);
|
||||
if (ref $guess) {
|
||||
$as_string = $guess->decode($as_string);
|
||||
}
|
||||
unless (utf8::is_utf8($match_string)) {
|
||||
utf8::decode($match_string);
|
||||
}
|
||||
|
||||
if ( $as_string !~ m/$match_string/i ){
|
||||
$total_valid_requests++;
|
||||
} else {
|
||||
$total_invalid_request++;
|
||||
$bx = $config->{"work_items"}; # Abort session remaining request
|
||||
$check_string=0;
|
||||
}
|
||||
$cx++;
|
||||
}
|
||||
|
||||
# End just now by pressing CTRL-C or Kill Signal !
|
||||
#if ($goliat_abort == 1){
|
||||
#$ax = $config->{'retries'};
|
||||
#$bx = $config->{'items'};
|
||||
#goto END_LOOP;
|
||||
#}
|
||||
} #main work_detail loop
|
||||
$ttime2 = Time::HiRes::gettimeofday();
|
||||
|
||||
$ttime_tot = $ttime2 - $ttime1; # Total time for this task
|
||||
$task_time[$thread_id] = $ttime_tot;
|
||||
$task_requests [$thread_id] = $total_requests;
|
||||
if ($ttime_tot > 0 ){
|
||||
$task_reqsec[$thread_id] = $total_requests / $ttime_tot;
|
||||
} else {
|
||||
$task_reqsec[$thread_id] = $total_requests;
|
||||
}
|
||||
$task_fails[$thread_id] = $total_invalid_request;
|
||||
if ($check_string == 0){
|
||||
$task_session_fails[$thread_id]++
|
||||
}
|
||||
$task_sessions [$thread_id]++;
|
||||
if ($task_sessions [$thread_id] > 0 ){
|
||||
$task_ssec[$thread_id] = $ttime_tot / $task_sessions [$thread_id];
|
||||
} else {
|
||||
$task_ssec[$thread_id] = $task_sessions[$thread_id];
|
||||
}
|
||||
sleep $config->{'ses_delay'};
|
||||
}
|
||||
END_LOOP:
|
||||
|
||||
if ( -f $cookie_file){
|
||||
unlink ($cookie_file);
|
||||
}
|
||||
|
||||
$task_end[$thread_id] = 1;
|
||||
}
|
||||
|
||||
# Call CURL and return its output.
|
||||
sub curl {
|
||||
my ($exec, $timeout, $curl_opts, $url, $headers, $debug, $moduleId, $dbh) = @_;
|
||||
|
||||
while (my ($header, $value) = each %{$headers}) {
|
||||
$curl_opts .= " -H " . safe_param($header . ':' . $value);
|
||||
}
|
||||
|
||||
my $cmd = "curl $curl_opts " . safe_param($url);
|
||||
my $response = `"$exec" $timeout $cmd 2>/dev/null`;
|
||||
|
||||
# Curl command stored for live debugging feature.
|
||||
set_update_agentmodule ($dbh, $moduleId, { 'debug_content' => $cmd }) if defined($dbh);
|
||||
|
||||
return $response if ($debug eq '');
|
||||
|
||||
# Debug
|
||||
if (open (DEBUG, '>>', $debug . '.req')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $cmd;
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
if (open (DEBUG, '>>', $debug . '.res')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $response;
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
# End of function declaration
|
||||
# End of defined Code
|
||||
|
||||
1;
|
||||
__END__
|
|
@ -0,0 +1,265 @@
|
|||
##########################################################################
|
||||
# Goliat Config package
|
||||
##########################################################################
|
||||
# Copyright (c) 2007-2021 Artica Soluciones Tecnologicas S.L
|
||||
# This code is not free or OpenSource. Please don't redistribute.
|
||||
##########################################################################
|
||||
|
||||
package PandoraFMS::Goliat::GoliatConfig;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use PandoraFMS::Tools;
|
||||
use PandoraFMS::Goliat::GoliatTools;
|
||||
|
||||
require Exporter;
|
||||
our @ISA = ("Exporter");
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
our @EXPORT = qw( g_help_screen
|
||||
g_init
|
||||
g_load_config );
|
||||
|
||||
my $g_version = "1.0";
|
||||
my $g_build = "110929";
|
||||
our $VERSION = $g_version." ".$g_build;
|
||||
|
||||
|
||||
sub g_load_config {
|
||||
my ( $config , $work_list )= @_ ;
|
||||
my $archivo_cfg = $config->{'config_file'};
|
||||
my $buffer_line;
|
||||
my $task_block = 0;
|
||||
my $commit_block = 0;
|
||||
my $task_url = "";
|
||||
my $task_cookie = 0;
|
||||
my $task_resources = 1;
|
||||
my $task_type = "";
|
||||
my $task_headers = {};
|
||||
my $task_debug = "";
|
||||
my $http_auth_user = "";
|
||||
my $http_auth_pass = "";
|
||||
my $http_auth_realm = "";
|
||||
my $http_auth_serverport = "";
|
||||
my $get_string = "";
|
||||
my $get_content = "";
|
||||
my $get_content_advanced = "";
|
||||
my @task_variable_name;
|
||||
my @task_variable_value;
|
||||
my @task_check_string;
|
||||
my @task_check_not_string;
|
||||
my $parametro;
|
||||
my $temp1;
|
||||
|
||||
# Default options
|
||||
$config->{'con_delay'} =0;
|
||||
$config->{'ses_delay'} =0;
|
||||
if (!defined($config->{'agent'})){
|
||||
$config->{'agent'}="PandoraFMS/Goliat 4.0; Linux)";
|
||||
}
|
||||
if (!defined($config->{'proxy'})){
|
||||
$config->{'proxy'}="";
|
||||
}
|
||||
|
||||
if (!defined($config->{'retries'})){
|
||||
$config->{'retries'} = 1;
|
||||
}
|
||||
|
||||
if ((!is_numeric($config->{'retries'})) || ($config->{'retries'} == 0)){
|
||||
$config->{'retries'} = 1;
|
||||
}
|
||||
|
||||
$config->{'refresh'} = "5";
|
||||
$config->{"max_depth"} = 25;
|
||||
$config->{'log_file'}="/var/log/pandora/pandora_goliat.log";
|
||||
$config->{'log_output'} = 0;
|
||||
|
||||
# Collect items from config file and put in an array
|
||||
open (CFG, "< $archivo_cfg");
|
||||
while (<CFG>){
|
||||
$buffer_line = $_;
|
||||
if ($buffer_line =~ /^[a-zA-Z]/){ # begins with letters
|
||||
$parametro = $buffer_line;
|
||||
} else {
|
||||
$parametro = "";
|
||||
}
|
||||
# Need to commit block ??
|
||||
if (($commit_block == 1) && ($task_block == 1)) {
|
||||
my %work_item;
|
||||
$work_item{'url'} = $task_url;
|
||||
$work_item{'cookie'} = $task_cookie;
|
||||
$work_item{'type'} = $task_type;
|
||||
$work_item{'get_resources'} = $task_resources;
|
||||
$work_item{'get_string'} = $get_string;
|
||||
$work_item{'get_content'} = $get_content;
|
||||
$work_item{'get_content_advanced'} = $get_content_advanced;
|
||||
$work_item{'http_auth_user'} = $http_auth_user;
|
||||
$work_item{'http_auth_pass'} = $http_auth_pass;
|
||||
$work_item{'http_auth_realm'} = $http_auth_realm;
|
||||
$work_item{'http_auth_serverport'} = $http_auth_serverport;
|
||||
$work_item{'headers'} = $task_headers;
|
||||
$work_item{'debug'} = $task_debug;
|
||||
|
||||
my $ax=0;
|
||||
while ($#task_check_string >= 0){
|
||||
$temp1 = pop (@task_check_string);
|
||||
$work_item{'checkstring'}[$ax] = $temp1;
|
||||
$ax++;
|
||||
}
|
||||
$ax=0;
|
||||
while ($#task_check_not_string >= 0){
|
||||
$temp1 = pop (@task_check_not_string);
|
||||
$work_item{'checknotstring'}[$ax] = $temp1;
|
||||
$ax++;
|
||||
}
|
||||
$ax=0;
|
||||
while ($#task_variable_name >= 0){
|
||||
$temp1 = pop (@task_variable_name);
|
||||
$work_item{'variable_name'}[$ax] = $temp1;
|
||||
$ax++;
|
||||
}
|
||||
$ax=0;
|
||||
while ($#task_variable_value >= 0){
|
||||
$temp1 = pop (@task_variable_value);
|
||||
$work_item{'variable_value'}[$ax] = $temp1;
|
||||
$ax++;
|
||||
|
||||
}
|
||||
push @{$work_list}, \%work_item;
|
||||
$commit_block = 0;
|
||||
$task_block = 0;
|
||||
$task_url = "";
|
||||
$task_cookie = 0;
|
||||
$task_resources = 0;
|
||||
$task_type = "";
|
||||
$task_headers = {};
|
||||
$task_debug = "";
|
||||
$config->{"work_items"}++;
|
||||
$commit_block = 0;
|
||||
$task_block = 0;
|
||||
$http_auth_user = "";
|
||||
$http_auth_pass = "";
|
||||
$http_auth_realm = "";
|
||||
$get_string = "";
|
||||
$get_content = "";
|
||||
$get_content_advanced = "";
|
||||
}
|
||||
# ~~~~~~~~~~~~~~
|
||||
# Main setup items
|
||||
# ~~~~~~~~~~~~~~
|
||||
|
||||
if ($parametro =~ m/^task_begin/i) {
|
||||
$task_block = 1;
|
||||
}
|
||||
elsif ($parametro =~ m/^task_end/i) {
|
||||
$commit_block = 1;
|
||||
}
|
||||
elsif ($parametro =~ m/^ses_delay\s(.*)/i) {
|
||||
$config->{'ses_delay'} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^con_delay\s(.*)/i) {
|
||||
$config->{'con_delay'} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^agent\s(.*)/i) {
|
||||
$config->{'agent'} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^proxy\s(.*)/i) {
|
||||
$config->{'proxy'} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^max_depth\s(.*)/i) {
|
||||
$config->{'max_depth'} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^log_file\s(.*)/i) {
|
||||
$config->{"log_file"} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^log_output\s(.*)/i) {
|
||||
$config->{"log_output"} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^log_http\s(.*)/i) {
|
||||
$config->{"log_http"} = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^retries\s(.*)/i) {
|
||||
$config->{"retries"} = $1;
|
||||
}
|
||||
# ~~~~~~~~~~~~~~
|
||||
# Task items
|
||||
# ~~~~~~~~~~~~~~
|
||||
elsif ($parametro =~ m/^variable_name\s(.*)/i) {
|
||||
push (@task_variable_name, $1);
|
||||
}
|
||||
elsif ($parametro =~ m/^variable_value\s(.*)/i) {
|
||||
push (@task_variable_value, $1);
|
||||
}
|
||||
elsif ($parametro =~ m/^check_string\s(.*)/i) {
|
||||
push (@task_check_string, $1);
|
||||
}
|
||||
elsif ($parametro =~ m/^check_not_string\s(.*)/i) {
|
||||
push (@task_check_not_string, $1);
|
||||
}
|
||||
elsif ($parametro =~ m/^get\s(.*)/i) {
|
||||
$task_type = "GET";
|
||||
$task_url = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^post\s(.*)/i) {
|
||||
$task_type = "POST";
|
||||
$task_url = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^head\s(.*)/i) {
|
||||
$task_type = "HEAD";
|
||||
$task_url = $1;
|
||||
}
|
||||
# New in 4.0 version
|
||||
elsif ($parametro =~ m/^get_string\s(.*)/i) {
|
||||
$get_string = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^get_content\s(.*)/i) {
|
||||
$get_content = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^get_content_advanced\s(.*)/i) {
|
||||
$get_content_advanced = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^http_auth_user\s(.*)/i) {
|
||||
$http_auth_user = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^http_auth_pass\s(.*)/i) {
|
||||
$http_auth_pass = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^http_auth_realm\s(.*)/i) {
|
||||
$http_auth_realm = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^http_auth_serverport\s(.*)/i) {
|
||||
$http_auth_serverport = $1;
|
||||
}
|
||||
elsif ($parametro =~ m/^cookie\s(.*)/i) {
|
||||
if ($1 =~ m/1/i){
|
||||
$task_cookie = 1;
|
||||
} else {
|
||||
$task_cookie = 0;
|
||||
}
|
||||
}
|
||||
elsif ($parametro =~ m/^resource\s(.*)/i) {
|
||||
if ($1 =~ m/1/i){
|
||||
$task_resources = 1;
|
||||
} else {
|
||||
$task_resources = 0;
|
||||
}
|
||||
}
|
||||
# New in 5.0 version
|
||||
elsif ($parametro =~ m/^header\s+(\S+)\s(.*)/i) {
|
||||
$task_headers->{$1} = $2;
|
||||
}
|
||||
elsif ($parametro =~ m/^debug\s+(.*)/i) {
|
||||
$task_debug = $1;
|
||||
}
|
||||
|
||||
}
|
||||
close (CFG);
|
||||
}
|
||||
|
||||
# End of function declaration
|
||||
# End of defined Code
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
|
|
@ -0,0 +1,478 @@
|
|||
##################################################################################
|
||||
# Goliath Tools LWP Module
|
||||
##################################################################################
|
||||
# Copyright (c) 2007-2021 Artica Soluciones Tecnologicas S.L
|
||||
# This code is not free or OpenSource. Please don't redistribute.
|
||||
##################################################################################
|
||||
|
||||
package PandoraFMS::Goliat::GoliatLWP;
|
||||
|
||||
use PandoraFMS::Goliat::GoliatTools;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Data::Dumper;
|
||||
|
||||
use IO::Socket::INET6;
|
||||
use LWP::UserAgent;
|
||||
use LWP::ConnCache;
|
||||
use HTTP::Request::Common;
|
||||
use HTTP::Response;
|
||||
use HTML::TreeBuilder;
|
||||
use HTML::Element;
|
||||
use HTTP::Cookies;
|
||||
use URI::URL;
|
||||
use Time::Local;
|
||||
use Time::HiRes qw ( gettimeofday );
|
||||
|
||||
# For IPv6 support in Net::HTTP.
|
||||
BEGIN {
|
||||
$Net::HTTP::SOCKET_CLASS = 'IO::Socket::INET6';
|
||||
require Net::HTTP;
|
||||
}
|
||||
|
||||
# Japanese encoding support
|
||||
use Encode::Guess qw/euc-jp shiftjis iso-2022-jp/;
|
||||
|
||||
require Exporter;
|
||||
|
||||
our @ISA = ("Exporter");
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
our @EXPORT = qw(
|
||||
g_http_task
|
||||
@task_requests
|
||||
@task_reqsec
|
||||
@task_fails
|
||||
@task_time
|
||||
@task_end
|
||||
@task_sessions
|
||||
@task_ssec
|
||||
@task_get_string
|
||||
@task_get_content
|
||||
@task_session_fails
|
||||
);
|
||||
|
||||
our @task_requests;
|
||||
our @task_reqsec;
|
||||
our @task_fails;
|
||||
our @task_time;
|
||||
our @task_end;
|
||||
our @task_sessions;
|
||||
our @task_ssec;
|
||||
our @task_get_string;
|
||||
our @task_get_content;
|
||||
our @task_session_fails;
|
||||
our $goliat_abort;
|
||||
|
||||
sub parse_html ($;$)
|
||||
{
|
||||
my $p = $_[1];
|
||||
$p = _new_tree_maker() unless $p;
|
||||
$p->parse($_[0]);
|
||||
}
|
||||
|
||||
|
||||
sub parse_htmlfile ($;$)
|
||||
{
|
||||
my($file, $p) = @_;
|
||||
local(*HTML);
|
||||
open(HTML, $file) or return undef;
|
||||
$p = _new_tree_maker() unless $p;
|
||||
$p->parse_file(\*HTML);
|
||||
}
|
||||
|
||||
sub _new_tree_maker
|
||||
{
|
||||
my $p = HTML::TreeBuilder->new(implicit_tags => 1,
|
||||
ignore_unknown => 1,
|
||||
ignore_text => 0,
|
||||
'warn' => 0,
|
||||
);
|
||||
$p->strict_comment(1);
|
||||
$p;
|
||||
}
|
||||
|
||||
|
||||
sub g_http_task {
|
||||
my ( $config, $thread_id, @work_list ) = @_;
|
||||
my ( $ax, $bx, $cx ); # used in FOR loop
|
||||
my ( $ttime1, $ttime2, $ttime_tot );
|
||||
|
||||
my $resp; # HTTP Response
|
||||
my $total_requests = 0;
|
||||
my $total_valid_requests = 0;
|
||||
my $total_invalid_request = 0;
|
||||
my $cookie_file = "/tmp/gtc_".$thread_id."_".g_trash_ascii (3);
|
||||
my $check_string = 1;
|
||||
my $get_string = "";
|
||||
my $get_content = "";
|
||||
my $get_content_advanced = "";
|
||||
|
||||
my $ua = new LWP::UserAgent;
|
||||
$task_requests [$thread_id] = 0 ;
|
||||
$task_sessions [$thread_id] = 0 ;
|
||||
$task_reqsec[$thread_id] = 0;
|
||||
$task_fails[$thread_id] = 0;
|
||||
$task_session_fails[$thread_id] = 0;
|
||||
$task_ssec[$thread_id] = 0;
|
||||
$task_end[$thread_id] = 0;
|
||||
$task_time[$thread_id] = 0;
|
||||
$task_get_string[$thread_id] = "";
|
||||
$task_get_content[$thread_id] = "";
|
||||
|
||||
$ua->agent($config->{"agent"});
|
||||
$ua->protocols_allowed( ['http', 'https'] );
|
||||
$ua->default_headers->push_header('pragma' => "no-cache");
|
||||
$ua->timeout ($config->{"timeout"});
|
||||
$ua->max_size($config->{"maxsize"});
|
||||
$ua->use_alarm($config->{"alarm"});
|
||||
|
||||
# Disable SSL certificate host verification
|
||||
if ($ua->can ('ssl_opts')) {
|
||||
$ua->ssl_opts("verify_hostname" => 0);
|
||||
}
|
||||
|
||||
# Set proxy
|
||||
|
||||
if ($config->{'proxy'} ne ""){
|
||||
$ua->proxy(['http','https'], $config->{'proxy'});
|
||||
}
|
||||
|
||||
# Set HTTP Proxy auth
|
||||
if ($config->{'auth_user'} ne "") {
|
||||
$ua->credentials(
|
||||
$config->{'auth_server'},
|
||||
$config->{'auth_realm'},
|
||||
$config->{'auth_user'} => $config->{'auth_pass'} );
|
||||
}
|
||||
|
||||
if ( -e $cookie_file){
|
||||
unlink ($cookie_file);
|
||||
}
|
||||
my $cookies = HTTP::Cookies->new ('file' => $cookie_file, 'autosave' => '0');
|
||||
|
||||
$ttime1 = Time::HiRes::gettimeofday();
|
||||
for ($ax = 0; $ax != $config->{'retries'}; $ax++){
|
||||
for ($bx = 0; $bx < $config->{"work_items"}; $bx++){
|
||||
if ($config->{'con_delay'} > 0){
|
||||
sleep ($config->{'con_delay'});
|
||||
}
|
||||
$total_requests++;
|
||||
# Start to count!
|
||||
$check_string = 1;
|
||||
# Prepare parameters
|
||||
my $params = "";
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'variable_name'}[$cx])){
|
||||
if ($cx > 0){
|
||||
$params = $params."&";
|
||||
}
|
||||
$params = $params . $work_list[$bx]->{'variable_name'}[$cx] . "=" . $work_list[$bx]->{'variable_value'}[$cx];
|
||||
$cx++;
|
||||
}
|
||||
|
||||
if ( (defined($work_list[$bx]->{'http_auth_realm'})) && (defined($work_list[$bx]->{'http_auth_serverport'}))&& (defined($work_list[$bx]->{'http_auth_user'})) && (defined($work_list[$bx]->{'http_auth_pass'}))) {
|
||||
if ($work_list[$bx]->{'http_auth_realm'} ne "") {
|
||||
$ua->credentials(
|
||||
$work_list[$bx]->{'http_auth_serverport'},
|
||||
$work_list[$bx]->{'http_auth_realm'},
|
||||
$work_list[$bx]->{'http_auth_user'} => $work_list[$bx]->{'http_auth_pass'}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# GET
|
||||
if ($work_list[$bx]->{'type'} eq "GET"){
|
||||
if ($cx > 0){
|
||||
$params = $work_list[$bx]->{'url'} . "?" . $params;
|
||||
} else {
|
||||
$params = $work_list[$bx]->{'url'};
|
||||
}
|
||||
$resp = g_get_page ( $ua, $params, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'});
|
||||
|
||||
# POST
|
||||
} elsif ($work_list[$bx]->{'type'} eq "POST") {
|
||||
$resp = g_post_page ( $ua, $work_list[$bx]->{'url'}, $params, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'});
|
||||
|
||||
# HEAD
|
||||
} else {
|
||||
if ($cx > 0){
|
||||
$params = $work_list[$bx]->{'url'} . "?" . $params;
|
||||
} else {
|
||||
$params = $work_list[$bx]->{'url'};
|
||||
}
|
||||
$resp = g_head_page ( $ua, $params, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'});
|
||||
}
|
||||
|
||||
# Check for errors.
|
||||
if ($resp->code() == 500) {
|
||||
$total_invalid_request++;
|
||||
$bx = $config->{"work_items"};
|
||||
$check_string=0;
|
||||
last;
|
||||
}
|
||||
|
||||
# Get string ?
|
||||
if (defined($work_list[$bx]->{'get_string'})) {
|
||||
my $as_string = $resp->as_string;
|
||||
my $temp = $work_list[$bx]->{'get_string'};
|
||||
if ($as_string =~ m/($temp)/) {
|
||||
$task_get_string[$thread_id] = $1;
|
||||
}
|
||||
}
|
||||
|
||||
# Get response ?
|
||||
if ($work_list[$bx]->{'get_content_advanced'} ne "") {
|
||||
my $content = $resp->decoded_content;
|
||||
my $temp = $work_list[$bx]->{'get_content_advanced'};
|
||||
if ($content =~ m/$temp/) {
|
||||
$task_get_content[$thread_id] = $1 if defined ($1);
|
||||
}
|
||||
} elsif ($work_list[$bx]->{'get_content'} ne "") {
|
||||
my $content = $resp->decoded_content;
|
||||
my $temp = $work_list[$bx]->{'get_content'};
|
||||
if ($content =~ m/($temp)/) {
|
||||
$task_get_content[$thread_id] = $1;
|
||||
}
|
||||
}
|
||||
|
||||
# Resource bashing
|
||||
if ((defined($work_list[$bx]->{'get_resources'})) && ($work_list[$bx]->{'get_resources'} == 1)){
|
||||
$total_requests = g_get_all_links ($config, $ua, $resp, $total_requests, $work_list[$bx]->{'url'}, $work_list[$bx]->{'headers'}, $work_list[$bx]->{'debug'});
|
||||
}
|
||||
|
||||
# CHECKSTRING check
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'checkstring'}[$cx])) {
|
||||
my $match_string = $work_list[$bx]->{'checkstring'}[$cx];
|
||||
my $as_string = $resp->as_string;
|
||||
|
||||
my $guess = Encode::Guess::guess_encoding($as_string);
|
||||
if (ref $guess) {
|
||||
$as_string = $guess->decode($as_string);
|
||||
}
|
||||
unless (utf8::is_utf8($match_string)) {
|
||||
utf8::decode($match_string);
|
||||
}
|
||||
|
||||
if ( $as_string =~ m/$match_string/i ){
|
||||
$total_valid_requests++;
|
||||
} else {
|
||||
$total_invalid_request++;
|
||||
$bx = $config->{"work_items"}; # Abort session remaining request
|
||||
$check_string=0;
|
||||
}
|
||||
$cx++;
|
||||
}
|
||||
|
||||
# CHECKNOTSTRING check
|
||||
$cx = 0;
|
||||
while (defined($work_list[$bx]->{'checknotstring'}[$cx])) {
|
||||
my $match_string = $work_list[$bx]->{'checknotstring'}[$cx];
|
||||
my $as_string = $resp->as_string;
|
||||
|
||||
my $guess = Encode::Guess::guess_encoding($as_string);
|
||||
if (ref $guess) {
|
||||
$as_string = $guess->decode($as_string);
|
||||
}
|
||||
unless (utf8::is_utf8($match_string)) {
|
||||
utf8::decode($match_string);
|
||||
}
|
||||
|
||||
if ( $as_string !~ m/$match_string/i ){
|
||||
$total_valid_requests++;
|
||||
} else {
|
||||
$total_invalid_request++;
|
||||
$bx = $config->{"work_items"}; # Abort session remaining request
|
||||
$check_string=0;
|
||||
}
|
||||
$cx++;
|
||||
}
|
||||
|
||||
# Cookie carry on
|
||||
if (defined ($work_list[$bx]->{'cookie'}) && $work_list[$bx]->{'cookie'} == 1){
|
||||
$cookies->extract_cookies($resp);
|
||||
$ua->cookie_jar($cookies);
|
||||
}
|
||||
|
||||
# End just now by pressing CTRL-C or Kill Signal !
|
||||
#if ($goliat_abort == 1){
|
||||
#$ax = $config->{'retries'};
|
||||
#$bx = $config->{'items'};
|
||||
#goto END_LOOP;
|
||||
#}
|
||||
} #main work_detail loop
|
||||
$ttime2 = Time::HiRes::gettimeofday();
|
||||
|
||||
$ttime_tot = $ttime2 - $ttime1; # Total time for this task
|
||||
$task_time[$thread_id] = $ttime_tot;
|
||||
$task_requests [$thread_id] = $total_requests;
|
||||
if ($ttime_tot > 0 ){
|
||||
$task_reqsec[$thread_id] = $total_requests / $ttime_tot;
|
||||
} else {
|
||||
$task_reqsec[$thread_id] = $total_requests;
|
||||
}
|
||||
$task_fails[$thread_id] = $total_invalid_request;
|
||||
if ($check_string == 0){
|
||||
$task_session_fails[$thread_id]++
|
||||
}
|
||||
$task_sessions [$thread_id]++;
|
||||
if ($task_sessions [$thread_id] > 0 ){
|
||||
$task_ssec[$thread_id] = $ttime_tot / $task_sessions [$thread_id];
|
||||
} else {
|
||||
$task_ssec[$thread_id] = $task_sessions[$thread_id];
|
||||
}
|
||||
sleep $config->{'ses_delay'};
|
||||
}
|
||||
END_LOOP:
|
||||
|
||||
$cookies->clear;
|
||||
|
||||
if ( -f $cookie_file){
|
||||
unlink ($cookie_file);
|
||||
}
|
||||
|
||||
$task_end[$thread_id] = 1;
|
||||
}
|
||||
|
||||
|
||||
sub g_get_all_links {
|
||||
my ($config, $ua, $response, $counter, $myurl, $headers, $debug) = @_;
|
||||
my $html;
|
||||
|
||||
if ($response->is_success) {
|
||||
$html = $response->content;
|
||||
} else {
|
||||
return $counter;
|
||||
}
|
||||
# Beware this funcion, needs to be destroyed after use it !!!
|
||||
my $parsed_html = parse_html($html);
|
||||
#$ua->conn_cache(LWP::ConnCache->new());
|
||||
|
||||
my @url_list;
|
||||
my $url = "";
|
||||
my $link;
|
||||
my $full_url;
|
||||
|
||||
for (@{ $parsed_html->extract_links( ) }) {
|
||||
$link=$_->[0];
|
||||
if (($link =~ m/.png/i) || ($link =~ m/.gif/i) || ($link =~ m/.htm/i) ||
|
||||
($link =~ m/.html/i) || ($link =~ m/.pdf/i) || ($link =~ m/.jpg/i)
|
||||
|| ($link =~ m/.ico/i)){
|
||||
$url = new URI::URL $link;
|
||||
$full_url = $url->abs($myurl);
|
||||
@url_list = $full_url;
|
||||
}
|
||||
|
||||
}
|
||||
$parsed_html->delete;
|
||||
my $ax = 0;
|
||||
while ($full_url = pop(@url_list)) {
|
||||
g_get_page ($ua, $full_url, $headers, $debug);
|
||||
$counter++;
|
||||
$ax++;
|
||||
if ($ax > $config->{"max_depth"}){
|
||||
return $counter;
|
||||
}
|
||||
}
|
||||
return $counter;
|
||||
}
|
||||
|
||||
sub g_get_page {
|
||||
my $ua = $_[0];
|
||||
my $url = $_[1];
|
||||
my $headers = $_[2];
|
||||
my $debug = $_[3];
|
||||
|
||||
my $req = HTTP::Request->new(GET => $url);
|
||||
$req->header('Accept' => 'text/html');
|
||||
while (my ($header, $value) = each %{$headers}) {
|
||||
$req->header($header => $value);
|
||||
}
|
||||
my $response = $ua->request($req);
|
||||
return $response if ($debug eq '');
|
||||
|
||||
# Debug
|
||||
if (open (DEBUG, '>>', $debug . '.req')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $req->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
if (open (DEBUG, '>>', $debug . '.res')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $response->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
sub g_head_page {
|
||||
my $ua = $_[0];
|
||||
my $url = $_[1];
|
||||
my $headers = $_[2];
|
||||
my $debug = $_[3];
|
||||
|
||||
my $req = HTTP::Request->new(HEAD => $url);
|
||||
$req->header('Accept' => 'text/html');
|
||||
while (my ($header, $value) = each %{$headers}) {
|
||||
$req->header($header => $value);
|
||||
}
|
||||
my $response = $ua->request($req);
|
||||
return $response if ($debug eq '');
|
||||
|
||||
# Debug
|
||||
if (open (DEBUG, '>>', $debug . '.req')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $req->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
if (open (DEBUG, '>>', $debug . '.res')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $response->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
sub g_post_page {
|
||||
my $ua = $_[0];
|
||||
my $url = $_[1];
|
||||
my $content = $_[2];
|
||||
my $headers = $_[3];
|
||||
my $debug = $_[4];
|
||||
|
||||
my $req = HTTP::Request->new(POST => $url);
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
$req->content ($content);
|
||||
while (my ($header, $value) = each %{$headers}) {
|
||||
$req->header($header => $value);
|
||||
}
|
||||
my $response = $ua->request($req);
|
||||
return $response if ($debug eq '');
|
||||
|
||||
# Debug
|
||||
if (open (DEBUG, '>>', $debug . '.req')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $req->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
if (open (DEBUG, '>>', $debug . '.res')) {
|
||||
print DEBUG "[Goliat debug " . time () . "]\n";
|
||||
print DEBUG $response->as_string ();
|
||||
print "\n";
|
||||
close (DEBUG);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
# End of function declaration
|
||||
# End of defined Code
|
||||
|
||||
1;
|
||||
__END__
|
|
@ -0,0 +1,222 @@
|
|||
###############################################################################
|
||||
# Goliath Tools Module
|
||||
###############################################################################
|
||||
# Copyright (c) 2007-2021 Artica Soluciones Tecnologicas S.L
|
||||
# This code is not free or OpenSource. Please don't redistribute.
|
||||
###############################################################################
|
||||
|
||||
package PandoraFMS::Goliat::GoliatTools;
|
||||
|
||||
use 5.008004;
|
||||
use strict;
|
||||
use warnings;
|
||||
use integer;
|
||||
|
||||
require Exporter;
|
||||
|
||||
our @ISA = ("Exporter");
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
our @EXPORT = qw(
|
||||
g_clean_string
|
||||
g_clean_string_unicode
|
||||
g_random_string
|
||||
g_trash_ascii
|
||||
g_trash_unicode
|
||||
g_unicode );
|
||||
|
||||
# Delaracion de funciones publicas
|
||||
|
||||
##############################################################################
|
||||
# clean_string (string) - Purge a string for any forbidden characters (esc, etc)
|
||||
##############################################################################
|
||||
sub g_clean_string {
|
||||
my $micadena;
|
||||
$micadena = $_[0];
|
||||
$micadena =~ s/[^\-\:\;\.\,\_\s\a\*\=\(\)a-zA-Z0-9]/ /g;
|
||||
$micadena =~ s/[\n\l\f]/ /g;
|
||||
return $micadena;
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
# limpia_cadena_unicode (string) - Purge a string for any unicode character
|
||||
##############################################################################
|
||||
sub g_clean_string_unicode {
|
||||
my $micadena;
|
||||
$micadena = $_[0];
|
||||
$micadena =~ s/[%]/%%/g;
|
||||
return $micadena;
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# Hex converter - Convert dec value in hex representation (00 - FF)
|
||||
#############################################################################
|
||||
sub g_decToHex { #return a 16bit (o uno de 8bit) hex value
|
||||
my @hex = (0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F");
|
||||
my @dec = @_;
|
||||
my $s3 = $hex[($dec[0]/4096)%16];
|
||||
my $s2 = $hex[($dec[0]/256)%16];
|
||||
my $s1 = $hex[($dec[0]/16)%16];
|
||||
my $s0 = $hex[$dec[0]%16];
|
||||
return "$s1$s0";
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# unicode - Generate unicode string (recursive)
|
||||
#############################################################################
|
||||
|
||||
sub g_unicode {
|
||||
my $config_word = $_[0];
|
||||
my $config_depth = $_[1];
|
||||
my $config_char="%";
|
||||
if ($config_depth == 0) {
|
||||
return $config_word;
|
||||
}
|
||||
|
||||
my $a;
|
||||
my $pos=0;
|
||||
my $output="";
|
||||
my $len;
|
||||
|
||||
for ($a=0;$a<$config_depth;$a++){
|
||||
$len = length($config_word);
|
||||
while ($pos < $len ) {
|
||||
my $item;
|
||||
$item = substr($config_word,$pos,1);
|
||||
$output = $output.$config_char.decToHex(ord($item));
|
||||
$pos++;
|
||||
}
|
||||
$config_word = $output;
|
||||
}
|
||||
return $output
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# trash - Generate "unicode" style trash string
|
||||
#############################################################################
|
||||
|
||||
sub g_trash_unicode {
|
||||
my $config_depth = $_[0];
|
||||
my $config_char="%";
|
||||
my $a;
|
||||
my $output;
|
||||
|
||||
for ($a=0;$a<$config_depth;$a++){
|
||||
$output = $output.$config_char.decToHex(int(rand(25)+97));
|
||||
}
|
||||
return $output
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# trash_ascii - Generate ASCII random strings
|
||||
#############################################################################
|
||||
|
||||
sub g_trash_ascii {
|
||||
my $config_depth = $_[0];
|
||||
my $config_char="%";
|
||||
my $a;
|
||||
my $output;
|
||||
|
||||
for ($a=0;$a<$config_depth;$a++){
|
||||
$output = $output.chr(int(rand(25)+97));
|
||||
}
|
||||
return $output
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# random_string (min, max, type) - Generate ASCII alphanumeric string,
|
||||
# from min and max
|
||||
#############################################################################
|
||||
|
||||
sub g_random_string {
|
||||
my $config_min = $_[0];
|
||||
my $config_max = $_[1];
|
||||
my $config_type = $_[2]; # alphanumeric, alpha, numeric, lowalpha, highalpha
|
||||
my $a;
|
||||
my $output = "";
|
||||
my @valid_chars;
|
||||
my $rango;
|
||||
|
||||
# First fill list of valid chars (A-Z, a-z, 0-9)
|
||||
if (($config_type eq "alphanumeric") || ($config_type eq "numeric")){
|
||||
for ($a=48;$a<58;$a++){ # numeric
|
||||
push @valid_chars, chr($a);
|
||||
}
|
||||
}
|
||||
|
||||
if (($config_type eq "alphanumeric") || ($config_type eq "alpha") ||
|
||||
($config_type eq "highalpha") || ($config_type eq "lowalpha") ){
|
||||
if (($config_type eq "alphanumeric") || ($config_type eq "highalpha") || ($config_type eq "alpha")){
|
||||
for ($a=65;$a<91;$a++){ # alpha (CAPS)
|
||||
push @valid_chars, chr($a);
|
||||
}
|
||||
}
|
||||
if (($config_type eq "alphanumeric") || ($config_type eq "lowalpha") || ($config_type eq "alpha")){
|
||||
for ($a=97;$a<123;$a++){ # alpha (low)
|
||||
push @valid_chars, chr($a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$rango = @valid_chars;
|
||||
|
||||
# Fill min. value
|
||||
for ($a=0;$a<$config_min;$a++){
|
||||
$output = $output.$valid_chars[(int(rand($rango)))];
|
||||
}
|
||||
|
||||
# Fill to max;
|
||||
if (($config_max - $config_min) != 0){
|
||||
for ($a=0;$a<rand($config_max - $config_min +1)-1;$a++){
|
||||
$output = $output.$valid_chars[(int(rand($rango)))];
|
||||
}
|
||||
}
|
||||
return $output
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Goliath-Tools Library tools for Goliath application.
|
||||
This is an internal module, does not use for independent apps.
|
||||
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use GoliatTools;
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
|
||||
=head2 EXPORT
|
||||
|
||||
Pues no se que poner aqui :)
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Mention other useful documentation such as the documentation of
|
||||
related modules or operating system documentation (such as man pages
|
||||
in UNIX), or any relevant external documentation such as RFCs or
|
||||
standards.
|
||||
|
||||
If you have a mailing list set up for your module, mention it here.
|
||||
|
||||
If you have a web site set up for your module, mention it here.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
slerena, E<lt>slerena@Egmail.com<gt>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2005 by Sancho Lerena
|
||||
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the same terms as Perl itself, either Perl version 5.8.4 or,
|
||||
at your option, any later version of Perl 5 you may have available.
|
||||
|
||||
Licenced under GPL
|
||||
|
||||
=cut
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.754";
|
||||
my $pandora_build = "210511";
|
||||
my $pandora_build = "210518";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue