mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
Merge branch 'develop' into ent-10983-selector-de-rango-de-fechas-para-multiples-elementos-a-la-vez-en-dashboards
This commit is contained in:
commit
b23e4330a6
@ -1,6 +1,6 @@
|
||||
Source: pandora_gotty
|
||||
Section: utils
|
||||
Version: 1.0.0
|
||||
Version: 1.1.0
|
||||
Priority: optional
|
||||
Maintainer: PandoraFMS
|
||||
Build-Depends: debhelper (>= 12)
|
||||
|
@ -1,5 +1,5 @@
|
||||
%define name pandora_gotty
|
||||
%define version 1.0
|
||||
%define version 1.1
|
||||
%define release 1%{?dist}
|
||||
Summary: pandora_gptty for Pandora FMS
|
||||
Name: %{name}
|
||||
|
@ -74,7 +74,7 @@ def exec_ssh (user:str, add:str, port:int):
|
||||
try:
|
||||
print("> Starting SSH connection...")
|
||||
ssh_command = f"ssh {user}@{add} -p {port}"
|
||||
subprocess.run(ssh_command, shell=True)
|
||||
subprocess.run(ssh_command, shell=True, encoding='utf-8', text=True)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
raise SystemExit(e)
|
||||
@ -88,7 +88,7 @@ def exec_telnet (add:str, port:int):
|
||||
try:
|
||||
print("> Starting Telnet connection...")
|
||||
ssh_command = f"telnet -E {add} {port}"
|
||||
subprocess.run(ssh_command, shell=True)
|
||||
subprocess.run(ssh_command, shell=True, encoding='utf-8', text=True)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
raise SystemExit(e)
|
||||
|
@ -22,13 +22,16 @@ else
|
||||
fi
|
||||
SPEC_FILES="$CODEHOME/pandora_console/pandora_console.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat_bin.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat.spec \
|
||||
$CODEHOME/pandora_server/pandora_server.spec \
|
||||
$PANDHOME_ENT/pandora_console/enterprise/pandora_console_enterprise.spec \
|
||||
$PANDHOME_ENT/pandora_server/PandoraFMS-Enterprise/pandora_server_enterprise.spec \
|
||||
$CODEHOME/pandora_console/pandora_console.redhat.spec \
|
||||
$CODEHOME/pandora_console/pandora_console.rhel7.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat_bin.spec \
|
||||
$CODEHOME/pandora_server/pandora_server.redhat.spec \
|
||||
$PANDHOME_ENT/pandora_agents/pandora_agent.spec \
|
||||
$PANDHOME_ENT/pandora_server/pandora_server_enterprise.redhat.spec \
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, AIX version
|
||||
# Version 7.0NG.774, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, FreeBSD Version
|
||||
# Version 7.0NG.774, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, HP-UX Version
|
||||
# Version 7.0NG.774, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, GNU/Linux
|
||||
# Version 7.0NG.774, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, GNU/Linux
|
||||
# Version 7.0NG.774, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, Solaris Version
|
||||
# Version 7.0NG.774, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2023 Pandora FMS
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
@ -54,7 +54,6 @@ if (!$@) {
|
||||
|
||||
use constant AGENT_VERSION => '4.0.1';
|
||||
use constant AGENT_BUILD => '111213';
|
||||
|
||||
# Commands to retrieve total memory information in kB
|
||||
use constant TOTALMEMORY_CMDS => {
|
||||
linux => 'cat /proc/meminfo | grep MemTotal: | awk \'{ print $2 }\'',
|
||||
@ -117,7 +116,6 @@ my $ConfDir = '';
|
||||
|
||||
# Pandora FMS agent configuration file
|
||||
my $ConfFile = 'pandora_agent.conf';
|
||||
|
||||
# Broker agent configuration files
|
||||
my @BrokerPid;
|
||||
|
||||
@ -264,7 +262,6 @@ sub valid_regexp ($) {
|
||||
sub rmrf {
|
||||
my $path = shift;
|
||||
local *DIR;
|
||||
|
||||
if (-d $path) {
|
||||
opendir (DIR, $path) || return;
|
||||
while (defined (my $file_name = readdir(DIR))) {
|
||||
@ -348,7 +345,6 @@ sub log_message ($$;$) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Add the given directory to the PATH.
|
||||
################################################################################
|
||||
@ -582,7 +578,6 @@ sub write_broker_conf($){
|
||||
}
|
||||
|
||||
while (my $line = <CONF_FILE>){
|
||||
|
||||
# Skip broker definitions
|
||||
if ($line =~ m/^\s*broker_agent/) {
|
||||
next;
|
||||
@ -1810,7 +1805,6 @@ sub exec_plugin ($) {
|
||||
$Sem->down () if (defined ($Sem));
|
||||
$Xml .= $output;
|
||||
$Sem->up () if (defined ($Sem));
|
||||
|
||||
$ThreadSem->up () if (defined ($ThreadSem) && $Conf{'agent_threads'} > 1);
|
||||
}
|
||||
|
||||
@ -2287,4 +2281,4 @@ This is released under the GNU Lesser General Public License.
|
||||
|
||||
Copyright (c) 2005-2023 Pandora FMS
|
||||
|
||||
=cut
|
||||
=cut
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.773.3, AIX version
|
||||
# Version 7.0NG.774, AIX version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# FreeBSD/IPSO version
|
||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.773.3, HPUX Version
|
||||
# Version 7.0NG.774, HPUX Version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2023 Pandora FMS
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2023 Pandora FMS
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# Licensed under GPL license v2,
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.773.3, Solaris version
|
||||
# Version 7.0NG.774, Solaris version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, AIX version
|
||||
# Version 7.0NG.774, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.773.3-231023
|
||||
Version: 7.0NG.774-231114
|
||||
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.773.3-231023"
|
||||
pandora_version="7.0NG.774-231114"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -31,7 +31,7 @@ fi
|
||||
if [ "$#" -ge 2 ]; then
|
||||
VERSION="$2"
|
||||
else
|
||||
VERSION="7.0NG.773.3"
|
||||
VERSION="7.0NG.774"
|
||||
fi
|
||||
|
||||
# Path for the generated DMG file
|
||||
|
@ -19,11 +19,11 @@
|
||||
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.773.3" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.774" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.773.3" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.774" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<!-- <installation-check script="check()" />
|
||||
<script>
|
||||
<![CDATA[
|
||||
|
@ -5,9 +5,9 @@
|
||||
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
||||
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
||||
|
||||
<key>CFBundleVersion</key> <string>7.0NG.773.3</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.773.3 Pandora FMS on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.773.3</string>
|
||||
<key>CFBundleVersion</key> <string>7.0NG.774</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.774 Pandora FMS on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.774</string>
|
||||
|
||||
<key>NSPrincipalClass</key><string>NSApplication</string>
|
||||
<key>NSMainNibFile</key><string>MainMenu</string>
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, GNU/Linux
|
||||
# Version 7.0NG.774, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, FreeBSD Version
|
||||
# Version 7.0NG.774, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, HP-UX Version
|
||||
# Version 7.0NG.774, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2004-2023 Pandora FMS
|
||||
# https://pandorafms.com
|
||||
@ -313,6 +313,15 @@ module_plugin autodiscover --default
|
||||
|
||||
#Hardening plugin for security compliance analysis. Enable to use it.
|
||||
#module_begin
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_sca
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_hardening -t 150
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# Logs extraction
|
||||
#module_begin
|
||||
#module_name Syslog
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp /var/log/logfile.log
|
||||
#module_pattern .*
|
||||
#module_end
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, GNU/Linux
|
||||
# Version 7.0NG.774, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, NetBSD Version
|
||||
# Version 7.0NG.774, NetBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.773.3, Solaris Version
|
||||
# Version 7.0NG.774, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -39,6 +39,14 @@ BEGIN {
|
||||
|
||||
use File::Copy;
|
||||
use Scalar::Util qw(looks_like_number);
|
||||
use File::Basename;
|
||||
|
||||
BEGIN {
|
||||
eval {
|
||||
require MIME::Base64;
|
||||
};
|
||||
}
|
||||
|
||||
BEGIN { push @INC, '/usr/lib/perl5'; }
|
||||
|
||||
################################################################################
|
||||
@ -1030,8 +1038,8 @@ my $Sem = undef;
|
||||
# Semaphore used to control the number of threads
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.773.3';
|
||||
use constant AGENT_BUILD => '231023';
|
||||
use constant AGENT_VERSION => '7.0NG.774';
|
||||
use constant AGENT_BUILD => '231114';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
@ -1562,6 +1570,9 @@ sub parse_conf_modules($) {
|
||||
} elsif ($line =~ /^\s*module_occupiedpercentdisk\s+(.*)$/) {
|
||||
$module->{'func'} = \&module_occupiedpercentdisk;
|
||||
$module->{'params'} = $1;
|
||||
}elsif ($line =~ /^\s*module_regexp\s+(.*)$/) {
|
||||
$module->{'func'} = \&module_logger;
|
||||
$module->{'params'} = $1;
|
||||
} elsif ($line =~ /^\s*module_max\s+(.*)\s*$/) {
|
||||
$module->{'max'} = $1;
|
||||
} elsif ($line =~ /^\s*module_min\s+(.*)\s*$/) {
|
||||
@ -1817,7 +1828,11 @@ sub parse_conf_modules($) {
|
||||
# Macros
|
||||
} elsif ($line =~ /^\s*module_macro(\S+)\s+(.*)\s*$/) {
|
||||
$module->{'macros'}{$1} = $2;
|
||||
# Regexp
|
||||
}
|
||||
elsif ($line =~ /^\s*module_pattern(\S+)\s+(.*)\s*$/) {
|
||||
$module->{'filter'} = $1;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -3663,6 +3678,11 @@ sub write_module_xml ($@) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($module->{'func'} == \&module_logger) {
|
||||
$Xml .= $data[0];
|
||||
return
|
||||
}
|
||||
|
||||
# Critical section
|
||||
$Sem->down () if (defined ($Sem));
|
||||
|
||||
@ -3860,6 +3880,237 @@ sub module_plugin ($) {
|
||||
return ($output);
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Read the logs
|
||||
################################################################################
|
||||
sub module_logger ($) {
|
||||
my $module = shift;
|
||||
|
||||
my $status = grep_logs(
|
||||
$module->{'name'},
|
||||
$module->{'params'},
|
||||
$module->{'filter'}
|
||||
);
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
my $encode_sub = defined(&MIME::Base64::encode_base64) ? \&MIME::Base64::encode_base64 : sub {
|
||||
my ($str, $endl) = @_;
|
||||
|
||||
my @ALPHABET = ('A'..'Z', 'a'..'z', 0..9, '+', '/');
|
||||
my $str_len = length($str);
|
||||
my $str_base64 = '';
|
||||
|
||||
for (my $i = 0; $i < $str_len; $i += 3) {
|
||||
my $chunk = substr($str, $i, 3);
|
||||
my $chunk_len = length($chunk);
|
||||
|
||||
my $num = 0;
|
||||
$num |= ord(substr($chunk, 0, 1)) << 16 if ($chunk_len >= 1);
|
||||
$num |= ord(substr($chunk, 1, 1)) << 8 if ($chunk_len >= 2);
|
||||
$num |= ord(substr($chunk, 2, 1)) if ($chunk_len == 3);
|
||||
|
||||
my $enc_1 = ($num & 0xfc0000) >> 18;
|
||||
my $enc_2 = ($num & 0x03f000) >> 12;
|
||||
my $enc_3 = ($num & 0x000fc0) >> 6;
|
||||
my $enc_4 = ($num & 0x00003f);
|
||||
|
||||
$str_base64 .= $ALPHABET[$enc_1];
|
||||
$str_base64 .= $ALPHABET[$enc_2];
|
||||
$str_base64 .= $chunk_len >= 2 ? $ALPHABET[$enc_3] : '=';
|
||||
$str_base64 .= $chunk_len == 3 ? $ALPHABET[$enc_4] : '=';
|
||||
}
|
||||
|
||||
return $str_base64;
|
||||
};
|
||||
|
||||
sub grep_logs {
|
||||
my ($str_name, $str_file, $str_regex) = @_;
|
||||
|
||||
if(!$str_name){
|
||||
log_message("module_logger", "Missing module name");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$str_file){
|
||||
log_message("module_logger", "Missing file name");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$str_regex){
|
||||
$str_regex = '.*';
|
||||
}
|
||||
|
||||
my $idx_dir = '/tmp/';
|
||||
my $idx_file = '';
|
||||
my $idx_pos = 0;
|
||||
my $idx_size = 0;
|
||||
my $idx_ino = '';
|
||||
my $module_name = $str_name;
|
||||
my $log_file = $str_file;
|
||||
my $reg_exp = $str_regex;
|
||||
|
||||
# Check that log file exists
|
||||
if (! -e $log_file) {
|
||||
log_message("module_logger", "File $log_file does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
# Create index file storage directory
|
||||
if (! -d $idx_dir) {
|
||||
if (!mkdir($idx_dir)){
|
||||
log_message("module_logger", "Error creating directory $idx_dir: " . $!);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
# Create index file if it does not exist
|
||||
$idx_file = $idx_dir.$module_name."_".basename($log_file).".idx";
|
||||
if (! -e $idx_file) {
|
||||
return if create_idx(\$idx_pos, \$idx_ino, \$idx_file, \$log_file, \$idx_size) == 1;
|
||||
return
|
||||
} else{
|
||||
|
||||
return if load_idx(\$idx_pos, \$idx_ino, \$idx_file, \$idx_size) == 1;
|
||||
my @data = parse_log(\$idx_pos, \$idx_ino, \$idx_file, \$log_file, \$module_name, \$reg_exp, \$idx_size);
|
||||
|
||||
my $output = create_log($module_name, @data);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
# Start the function definition
|
||||
|
||||
sub create_idx {
|
||||
my ($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $log_file_ref, $idx_size_ref) = @_;
|
||||
my $first_line;
|
||||
|
||||
log_message("module_logger", "Creating index file $$idx_file_ref");
|
||||
|
||||
if (!open(LOGFILE, $$log_file_ref)){
|
||||
log_message("module_logger", "Error opening file $$log_file_ref: ".$!);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Go to EOF and save the position
|
||||
seek(LOGFILE, 0, 2);
|
||||
$$idx_pos_ref = tell(LOGFILE);
|
||||
|
||||
close(LOGFILE);
|
||||
|
||||
# Save the file inode number
|
||||
$$idx_ino_ref = (stat($$log_file_ref))[1];
|
||||
|
||||
return 1 if save_idx($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $idx_size_ref) == 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub save_idx {
|
||||
my ($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $idx_size_ref) = @_;
|
||||
|
||||
log_message("module_logger", "Saving index file $$idx_file_ref");
|
||||
|
||||
if (!open(IDXFILE, "> $$idx_file_ref")){
|
||||
log_message("module_logger", "Error opening file $$idx_file_ref: ". $!);
|
||||
return 1;
|
||||
}
|
||||
|
||||
print (IDXFILE $$idx_pos_ref . " " . $$idx_ino_ref . " " . $$idx_size_ref);
|
||||
close(IDXFILE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub load_idx {
|
||||
my ($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $idx_size_ref) = @_;
|
||||
my $line;
|
||||
my $current_ino;
|
||||
my $current_size;
|
||||
|
||||
log_message("module_logger", "Loading index file $$idx_file_ref");
|
||||
|
||||
if (!open(IDXFILE, $$idx_file_ref)){
|
||||
log_message("module_logger", "Error opening file $$idx_file_ref: " .$!);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Read position and date
|
||||
$line = <IDXFILE>;
|
||||
($$idx_pos_ref, $$idx_ino_ref, $$idx_size_ref) = split(' ', $line);
|
||||
|
||||
close(IDXFILE);
|
||||
|
||||
# Reset the file index if the file has changed
|
||||
$current_ino = (stat($$idx_file_ref))[1];
|
||||
$current_size = -s "$$idx_file_ref";
|
||||
if ($current_ino != $$idx_ino_ref || $current_size < $$idx_size_ref) {
|
||||
log_message("module_logger", "File changed, resetting index");
|
||||
|
||||
$$idx_pos_ref = 0;
|
||||
$$idx_ino_ref = $current_ino;
|
||||
}
|
||||
$$idx_size_ref = $current_size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub parse_log {
|
||||
my ($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $log_file_ref, $module_name_ref, $reg_exp_ref, $idx_size_ref) = @_;
|
||||
|
||||
my $line;
|
||||
|
||||
log_message("module_logger", "Parsing log file $$log_file_ref");
|
||||
|
||||
# Open log file for reading
|
||||
if (!open(LOGFILE, $$log_file_ref)){
|
||||
log_message("module_logger", "Error opening file $$log_file_ref: " . $!);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Go to starting position.
|
||||
seek(LOGFILE, $$idx_pos_ref, 0);
|
||||
|
||||
# Parse log file
|
||||
my @data;
|
||||
while ($line = <LOGFILE>) {
|
||||
if ($line =~ m/$$reg_exp_ref/i) {
|
||||
push (@data, $line);
|
||||
}
|
||||
}
|
||||
|
||||
$$idx_pos_ref = tell(LOGFILE);
|
||||
close(LOGFILE);
|
||||
|
||||
# Save the index file
|
||||
return 1 if save_idx($idx_pos_ref, $idx_ino_ref, $idx_file_ref, $idx_size_ref) == 1;
|
||||
|
||||
return @data;
|
||||
}
|
||||
|
||||
sub create_log {
|
||||
my ($module_name, @data) = @_;
|
||||
|
||||
# No data
|
||||
if ($#data < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
# Log module
|
||||
my $output = "<log_module>\n";
|
||||
$output .= "<source><![CDATA[" . $module_name . "]]></source>\n";
|
||||
$output .= "<encoding>base64</encoding>\n";
|
||||
$output .= "<data><![CDATA[";
|
||||
$output .= &$encode_sub(join('', @data), '');
|
||||
$output .= "]]></data>\n";
|
||||
$output .= "</log_module>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# TERM Handler
|
||||
################################################################################
|
||||
@ -4030,6 +4281,8 @@ sub init_module ($) {
|
||||
$module->{'module_ff_interval'} = undef;
|
||||
$module->{'macros'} = {};
|
||||
$module->{'alert_template'} = undef;
|
||||
$module->{'filter'} = undef;
|
||||
$module->{'absoluteinterval'} = undef;
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 231023
|
||||
%define version 7.0NG.774
|
||||
%define release 231114
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -4,8 +4,8 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 230919
|
||||
%define version 7.0NG.774
|
||||
%define release 231114
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
@ -4,8 +4,8 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 230919
|
||||
%define version 7.0NG.774
|
||||
%define release 231114
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
@ -4,8 +4,8 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 231023
|
||||
%define version 7.0NG.774
|
||||
%define release 231114
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 231023
|
||||
%define version 7.0NG.774
|
||||
%define release 231114
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -9,8 +9,8 @@
|
||||
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.773.3"
|
||||
PI_BUILD="231023"
|
||||
PI_VERSION="7.0NG.774"
|
||||
PI_BUILD="231114"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2023 Pandora FMS
|
||||
# Version 7.0NG.773.3
|
||||
# Version 7.0NG.774
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
@ -526,7 +526,15 @@ module_plugin "%PROGRAMFILES%\Pandora_Agent\util\autodiscover.exe" --default
|
||||
|
||||
# Hardening plugin for security compliance analysis.
|
||||
#module_begin
|
||||
#module_plugin "%PROGRAMFILES%\Pandora_Agent\util\pandora_sca.exe"
|
||||
#module_plugin "%PROGRAMFILES%\Pandora_Agent\util\pandora_hardening.exe -t 150"
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
||||
|
||||
# Logs extraction
|
||||
#module_begin
|
||||
#module_name X_Server_log
|
||||
#module_description Logs extraction module
|
||||
#module_type log
|
||||
#module_regexp C:\server\logs\xserver.log
|
||||
#module_pattern .*
|
||||
#module_end
|
||||
|
3
pandora_agents/win32/bin/util/pandora_hardening.exe
Executable file
3
pandora_agents/win32/bin/util/pandora_hardening.exe
Executable file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:db207ef67053764be7e9b42cd04ea5509cc2a023548aab1c037745ca277b68a3
|
||||
size 4858753
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6d93bd9d56c938063045fa2093198d324746f84df2b74567648f3baebd635657
|
||||
size 5248006
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
||||
{Yes}
|
||||
|
||||
AppName
|
||||
{Pandora FMS Windows Agent v7.0NG.773.3}
|
||||
{Pandora FMS Windows Agent v7.0NG.774}
|
||||
|
||||
ApplicationID
|
||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{231023}
|
||||
{231114}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.773.3 Build 231023")
|
||||
#define PANDORA_VERSION ("7.0NG.774 Build 231114")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.773.3(Build 231023))"
|
||||
VALUE "ProductVersion", "(7.0NG.774(Build 231114))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0NG.773.3-231023
|
||||
Version: 7.0NG.774-231114
|
||||
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.773.3-231023"
|
||||
pandora_version="7.0NG.774-231114"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -223,6 +223,8 @@ function quickShell()
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
@ -541,6 +543,9 @@ if (is_ajax() === true) {
|
||||
// Maximum time to establish a connection.
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
|
||||
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
||||
curl_exec($ch);
|
||||
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
|
@ -1718,3 +1718,5 @@ operation/incidents/list_integriaims_incidents.php
|
||||
include/functions_incidents.php
|
||||
include/functions_integriaims.php
|
||||
include/ajax/integria_incidents.ajax.php
|
||||
enterprise/operation/log/log_source.php
|
||||
enterprise/include/class/LogSource.class.php
|
||||
|
@ -1,4 +1,4 @@
|
||||
pandorafms.vmware=459175dce8ab811e874ce2e7216f0db4
|
||||
pandorafms.vmware=9959cc3e5cc6bfcfadd6d05b56d4a11b
|
||||
pandorafms.mysql=fadb4750d18285c0eca34f47c6aa3cfe
|
||||
pandorafms.mssql=1cc215409741d19080269ffba112810e
|
||||
pandorafms.oracle=2d9320a514d1e48a0b2804e1653c31c6
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -922,6 +922,23 @@ $tableAdvancedAgent->data['safe_operation'][] = html_print_label_input_block(
|
||||
)
|
||||
);
|
||||
|
||||
$tableAdvancedAgent->data['vul_scan_enabled'][] = html_print_label_input_block(
|
||||
__('Vulnerability scanning'),
|
||||
html_print_select(
|
||||
[
|
||||
0 => __('Disabled'),
|
||||
1 => __('Enabled'),
|
||||
2 => __('Use global settings'),
|
||||
],
|
||||
'vul_scan_enabled',
|
||||
$vul_scan_enabled,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($tableAdvancedAgent, true),
|
||||
'<span class="subsection_header_title">'.__('Advanced options').'</span>',
|
||||
|
@ -231,6 +231,7 @@ if ($create_agent) {
|
||||
$quiet = (int) get_parameter('quiet', 0);
|
||||
$cps = (int) get_parameter_switch('cps', -1);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
|
||||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
||||
@ -298,6 +299,7 @@ if ($create_agent) {
|
||||
'quiet' => $quiet,
|
||||
'cps' => $cps,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
]
|
||||
);
|
||||
} else {
|
||||
@ -610,6 +612,7 @@ if ($id_agente) {
|
||||
$agent_wizard['active'] = false;
|
||||
}
|
||||
|
||||
|
||||
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
|
||||
if ($has_remote_conf !== false) {
|
||||
$agent_name = agents_get_name($id_agente);
|
||||
@ -642,24 +645,26 @@ if ($id_agente) {
|
||||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'vulnerabilities' => $vulnerabilities,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
];
|
||||
} else {
|
||||
$onheader = [
|
||||
'view' => $viewtab,
|
||||
'separator' => '',
|
||||
'main' => $maintab,
|
||||
'module' => $moduletab,
|
||||
'ncm' => $ncm_tab,
|
||||
'alert' => $alerttab,
|
||||
'template' => $templatetab,
|
||||
'inventory' => $inventorytab,
|
||||
'pluginstab' => $pluginstab,
|
||||
'policy' => (enterprise_installed() === true) ? $policyTab : '',
|
||||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
'view' => $viewtab,
|
||||
'separator' => '',
|
||||
'main' => $maintab,
|
||||
'module' => $moduletab,
|
||||
'ncm' => $ncm_tab,
|
||||
'alert' => $alerttab,
|
||||
'template' => $templatetab,
|
||||
'inventory' => $inventorytab,
|
||||
'pluginstab' => $pluginstab,
|
||||
'policy' => (enterprise_installed() === true) ? $policyTab : '',
|
||||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'vulnerabilities' => $vulnerabilities,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
];
|
||||
}
|
||||
|
||||
@ -760,6 +765,11 @@ if ($id_agente) {
|
||||
$help_header = 'gis_tab';
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
$tab_name = __('Vulnerabilities');
|
||||
$help_header = 'vulnerabilities_tab';
|
||||
break;
|
||||
|
||||
case 'incident':
|
||||
$tab_name = __('Incidents');
|
||||
break;
|
||||
@ -1004,6 +1014,7 @@ if ($update_agent) {
|
||||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||
$satellite_server = (int) get_parameter('satellite_server', 0);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
|
||||
if ($fields === false) {
|
||||
$fields = [];
|
||||
@ -1130,6 +1141,7 @@ if ($update_agent) {
|
||||
'safe_mode_module' => $safe_mode_module,
|
||||
'satellite_server' => $satellite_server,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
];
|
||||
|
||||
if ($config['metaconsole_agent_cache'] == 1) {
|
||||
@ -1287,6 +1299,7 @@ if ($id_agente) {
|
||||
$safe_mode = ($safe_mode_module) ? 1 : 0;
|
||||
$satellite_server = (int) $agent['satellite_server'];
|
||||
$fixed_ip = (int) $agent['fixed_ip'];
|
||||
$vul_scan_enabled = (int) $agent['vul_scan_enabled'];
|
||||
}
|
||||
|
||||
$update_module = (bool) get_parameter('update_module');
|
||||
@ -1326,6 +1339,12 @@ if ($update_module === true || $create_module === true) {
|
||||
*/
|
||||
|
||||
$post_process = (string) get_parameter('post_process', 0.0);
|
||||
if (modules_made_compatible($id_module_type) === true) {
|
||||
$made_enabled = (bool) get_parameter_checkbox('made_enabled', 0);
|
||||
} else {
|
||||
$made_enabled = false;
|
||||
}
|
||||
|
||||
$prediction_module = (int) get_parameter('prediction_module');
|
||||
$max_timeout = (int) get_parameter('max_timeout');
|
||||
$max_retries = (int) get_parameter('max_retries');
|
||||
@ -1348,6 +1367,14 @@ if ($update_module === true || $create_module === true) {
|
||||
}
|
||||
|
||||
$configuration_data = (string) get_parameter('configuration_data');
|
||||
$array_configuration_data = explode(PHP_EOL, io_safe_output($configuration_data));
|
||||
$configuration_data = '';
|
||||
foreach ($array_configuration_data as $value) {
|
||||
$configuration_data .= trim($value).PHP_EOL;
|
||||
}
|
||||
|
||||
$configuration_data = io_safe_input($configuration_data);
|
||||
|
||||
$old_configuration_data = (string) get_parameter('old_configuration_data');
|
||||
$new_configuration_data = '';
|
||||
|
||||
@ -1488,6 +1515,14 @@ if ($update_module === true || $create_module === true) {
|
||||
}
|
||||
|
||||
$plugin_parameter = (string) get_parameter('plugin_parameter');
|
||||
|
||||
$array_plugin_parameter = explode(PHP_EOL, io_safe_output($plugin_parameter));
|
||||
$plugin_parameter = '';
|
||||
foreach ($array_plugin_parameter as $value) {
|
||||
$plugin_parameter .= trim($value).PHP_EOL;
|
||||
}
|
||||
|
||||
$plugin_parameter = io_safe_input($plugin_parameter);
|
||||
}
|
||||
|
||||
$parent_module_id = (int) get_parameter('parent_module_id');
|
||||
@ -1704,6 +1739,7 @@ if ($update_module) {
|
||||
'plugin_parameter' => $plugin_parameter,
|
||||
'id_plugin' => $id_plugin,
|
||||
'post_process' => $post_process,
|
||||
'made_enabled' => $made_enabled,
|
||||
'prediction_module' => $prediction_module,
|
||||
'max_timeout' => $max_timeout,
|
||||
'max_retries' => $max_retries,
|
||||
@ -1902,6 +1938,7 @@ if ($create_module) {
|
||||
'plugin_parameter' => $plugin_parameter,
|
||||
'id_plugin' => $id_plugin,
|
||||
'post_process' => $post_process,
|
||||
'made_enabled' => $made_enabled,
|
||||
'prediction_module' => $prediction_module,
|
||||
'max_timeout' => $max_timeout,
|
||||
'max_retries' => $max_retries,
|
||||
@ -2401,6 +2438,10 @@ switch ($tab) {
|
||||
include 'agent_conf_gis.php';
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
include enterprise_include('godmode/agentes/vulnerabilities_editor.php');
|
||||
break;
|
||||
|
||||
case 'incident':
|
||||
include 'agent_incidents.php';
|
||||
break;
|
||||
|
@ -294,6 +294,7 @@ if ($id_agent_module) {
|
||||
$plugin_parameter = $module['plugin_parameter'];
|
||||
$id_plugin = $module['id_plugin'];
|
||||
$post_process = $module['post_process'];
|
||||
$made_enabled = $module['made_enabled'];
|
||||
$prediction_module = $module['prediction_module'];
|
||||
$custom_integer_1 = $module['custom_integer_1'];
|
||||
$custom_integer_2 = $module['custom_integer_2'];
|
||||
@ -408,6 +409,7 @@ if ($id_agent_module) {
|
||||
$id_module_group = 1;
|
||||
$id_module_type = 1;
|
||||
$post_process = '';
|
||||
$made_enabled = false;
|
||||
$max_timeout = 0;
|
||||
$max_retries = 0;
|
||||
$min = '';
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -318,7 +318,7 @@ foreach ($texts as $code => $text) {
|
||||
return;
|
||||
}
|
||||
|
||||
$(plugin_parameter).val('task_begin\ncookie 0\nresource 0\ntask_end');
|
||||
$(plugin_parameter).val('task_begin\nget https://demoweb.com/page/\ncheck_string text string or HTML code to search (regexp)\ntask_end\n');
|
||||
|
||||
$('#button-btn_loadbasic').attr('disabled', 'disabled');
|
||||
|
||||
|
@ -484,6 +484,7 @@ echo '</form>';
|
||||
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
ui_require_javascript_file('tinymce', 'vendor/tinymce/tinymce/');
|
||||
ui_require_javascript_file('alert');
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -500,194 +501,6 @@ $(document).ready (function () {
|
||||
render_command_description(command_description);
|
||||
}
|
||||
|
||||
function ajax_get_integria_custom_fields(ticket_type_id, values, recovery_values) {
|
||||
var values = values || [];
|
||||
var recovery_values = recovery_values || [];
|
||||
var max_macro_fields = <?php echo $config['max_macro_fields']; ?>;
|
||||
|
||||
if (ticket_type_id === null || ticket_type_id === '' || (Array.isArray(values) && values.length === 0 && Array.isArray(recovery_values) && recovery_values.length === 0)) {
|
||||
for (var i=8; i <= max_macro_fields; i++) {
|
||||
$('[name=field'+i+'_value\\[\\]').val('');
|
||||
$('[name=field'+i+'_recovery_value\\[\\]').val('');
|
||||
}
|
||||
}
|
||||
|
||||
// On ticket type change, hide all table rows and inputs corresponding to custom fields, regardless of what its type is.
|
||||
for (var i=8; i <= max_macro_fields; i++) {
|
||||
$('[name=field'+i+'_value\\[\\]').hide();
|
||||
$('[name=field'+i+'_recovery_value\\[\\]').hide();
|
||||
$('#table_macros-field'+i).hide();
|
||||
$('[name=field'+i+'_value_container').hide();
|
||||
$('[name=field'+i+'_recovery_value_container').hide();
|
||||
}
|
||||
|
||||
jQuery.post(
|
||||
"ajax.php",
|
||||
{
|
||||
page: "godmode/alerts/configure_alert_action",
|
||||
get_integria_ticket_custom_types: 1,
|
||||
ticket_type_id: ticket_type_id
|
||||
},
|
||||
function(data) {
|
||||
var max_macro_fields = <?php echo $config['max_macro_fields']; ?>;
|
||||
data.forEach(function(custom_field, key) {
|
||||
var custom_field_key = key+8; // Custom fields start from field 8.
|
||||
|
||||
if (custom_field_key > max_macro_fields) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Display field row for current input.
|
||||
var custom_field_row = $('#table_macros-field'+custom_field_key);
|
||||
custom_field_row.show();
|
||||
|
||||
// Replace label text of field row for current input.
|
||||
var label_html = $('#table_macros-field'+custom_field_key+' td').first().html();
|
||||
var label_name = label_html.split('<br>')[0];
|
||||
var new_html_content = custom_field_row.html().replace(label_name, custom_field.label);
|
||||
custom_field_row.html(new_html_content);
|
||||
|
||||
switch (custom_field.type) {
|
||||
case 'CHECKBOX':
|
||||
var checkbox_selector = $('input[type="checkbox"][name=field'+custom_field_key+'_value\\[\\]]');
|
||||
var checkbox_recovery_selector = $('input[type="checkbox"][name=field'+custom_field_key+'_recovery_value\\[\\]]');
|
||||
|
||||
checkbox_selector.on('change', function() {
|
||||
if (checkbox_selector.prop('checked')) {
|
||||
checkbox_selector.attr('value', "1");
|
||||
} else {
|
||||
checkbox_selector.attr('value', "0");
|
||||
}
|
||||
});
|
||||
|
||||
checkbox_recovery_selector.on('change', function() {
|
||||
if (checkbox_recovery_selector.prop('checked')) {
|
||||
checkbox_recovery_selector.attr('value', "1");
|
||||
} else {
|
||||
checkbox_recovery_selector.attr('value', "0");
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
if (values[key] == 1) {
|
||||
checkbox_selector.prop('checked', true);
|
||||
checkbox_selector.attr('value', "1");
|
||||
} else {
|
||||
checkbox_selector.prop('checked', false);
|
||||
checkbox_selector.attr('value', "0");
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
if (recovery_values[key] == 1) {
|
||||
checkbox_recovery_selector.prop('checked', true);
|
||||
checkbox_recovery_selector.attr('value', "1");
|
||||
} else {
|
||||
checkbox_recovery_selector.prop('checked', false);
|
||||
checkbox_recovery_selector.attr('value', "0");
|
||||
}
|
||||
}
|
||||
|
||||
$('[name=field'+custom_field_key+'_value_container]').show();
|
||||
$('[name=field'+custom_field_key+'_recovery_value_container]').show();
|
||||
$('input[type="checkbox"][name=field'+custom_field_key+'_value\\[\\]]').show();
|
||||
$('input[type="checkbox"][name=field'+custom_field_key+'_recovery_value\\[\\]]').show();
|
||||
break;
|
||||
case 'COMBO':
|
||||
var combo_input = $('select[name=field'+custom_field_key+'_value\\[\\]]');
|
||||
var combo_input_recovery = $('select[name=field'+custom_field_key+'_recovery_value\\[\\]]');
|
||||
|
||||
combo_input.find('option').remove();
|
||||
combo_input_recovery.find('option').remove();
|
||||
|
||||
var combo_values_array = custom_field.comboValue.split(',');
|
||||
|
||||
combo_values_array.forEach(function(value) {
|
||||
combo_input.append($('<option>', {
|
||||
value: value,
|
||||
text: value
|
||||
}));
|
||||
|
||||
combo_input_recovery.append($('<option>', {
|
||||
value: value,
|
||||
text: value
|
||||
}));
|
||||
});
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
combo_input.val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
combo_input_recovery.val(recovery_values[key]);
|
||||
}
|
||||
|
||||
combo_input.show();
|
||||
combo_input_recovery.show();
|
||||
break;
|
||||
case 'DATE':
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_value\\[\\]]').removeClass("hasDatepicker");
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').removeClass("hasDatepicker");
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_value\\[\\]]').datepicker("destroy");
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').datepicker("destroy");
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_value\\[\\]]').show();
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').show();
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_value\\[\\]]').datepicker({dateFormat: "<?php echo 'yy-mm-dd 00:00:00'; ?>"});
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').datepicker({dateFormat: "<?php echo 'yy-mm-dd 00:00:00'; ?>"});
|
||||
$.datepicker.setDefaults($.datepicker.regional[ "<?php echo get_user_language(); ?>"]);
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_value\\[\\]]').val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$('input.datepicker[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').val(recovery_values[key]);
|
||||
}
|
||||
break;
|
||||
case 'NUMERIC':
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$('input[type="number"][name=field'+custom_field_key+'_value\\[\\]]').val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$('input[type="number"][name=field'+custom_field_key+'_recovery_value\\[\\]]').val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$('input[type="number"][name=field'+custom_field_key+'_value\\[\\]]').show();
|
||||
$('input[type="number"][name=field'+custom_field_key+'_recovery_value\\[\\]]').show();
|
||||
break;
|
||||
case 'TEXT':
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$('input.normal[type="text"][name=field'+custom_field_key+'_value\\[\\]]').val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$('input.normal[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$('input.normal[type="text"][name=field'+custom_field_key+'_value\\[\\]]').show();
|
||||
$('input.normal[type="text"][name=field'+custom_field_key+'_recovery_value\\[\\]]').show();
|
||||
break;
|
||||
case 'TEXTAREA':
|
||||
default:
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$('textarea[name=field'+custom_field_key+'_value\\[\\]]').val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$('textarea[name=field'+custom_field_key+'_recovery_value\\[\\]]').val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$('textarea[name=field'+custom_field_key+'_value\\[\\]]').show();
|
||||
$('textarea[name=field'+custom_field_key+'_recovery_value\\[\\]]').show();
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
"json"
|
||||
);
|
||||
}
|
||||
|
||||
$("#id_command").change (function () {
|
||||
values = Array ();
|
||||
// No se envia el valor del commando.
|
||||
@ -914,12 +727,22 @@ $(document).ready (function () {
|
||||
}
|
||||
|
||||
if ($('#field5_value').val() !== '') {
|
||||
ajax_get_integria_custom_fields($('#field5_value').val(), integria_custom_fields_values, integria_custom_fields_rvalues);
|
||||
ajax_get_integria_custom_fields(
|
||||
$('#field5_value').val(),
|
||||
integria_custom_fields_values,
|
||||
integria_custom_fields_rvalues,
|
||||
max_macro_fields
|
||||
);
|
||||
$('#field5_value').trigger('change');
|
||||
}
|
||||
|
||||
$('#field5_value').on('change', function() {
|
||||
ajax_get_integria_custom_fields($(this).val());
|
||||
ajax_get_integria_custom_fields(
|
||||
$(this).val(),
|
||||
[],
|
||||
[],
|
||||
max_macro_fields
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -916,7 +916,24 @@ $table->data[17][0] = html_print_label_input_block(
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[17][1] = html_print_label_input_block(
|
||||
$table->data['made_enabled'][1] = html_print_label_input_block(
|
||||
__('MADE enabled').ui_print_help_tip(
|
||||
__('By activating this option, the module data will be processed by the MADE engine (if active), and events will be generated automatically by the IA engine'),
|
||||
true
|
||||
),
|
||||
html_print_checkbox_switch(
|
||||
'made_enabled',
|
||||
1,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'wp100 static'
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[17][2] = html_print_label_input_block(
|
||||
__('SNMP community'),
|
||||
html_print_input_text(
|
||||
'snmp_community',
|
||||
@ -1653,7 +1670,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").hide();
|
||||
|
||||
var params = {
|
||||
@ -1728,7 +1746,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").show ();
|
||||
|
||||
switch($('#module_type').val()) {
|
||||
@ -1838,7 +1857,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").hide ();
|
||||
$('input[type=checkbox]').attr('checked', false);
|
||||
$('input[type=checkbox]').attr('disabled', true);
|
||||
@ -1877,7 +1897,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").show();
|
||||
}
|
||||
else {
|
||||
@ -1908,7 +1929,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").hide();
|
||||
}
|
||||
}
|
||||
@ -1932,6 +1954,9 @@ $(document).ready (function () {
|
||||
else if (this.id == "checkbox-dynamic_two_tailed") {
|
||||
return; //Do none
|
||||
}
|
||||
else if (this.id == "checkbox-made_enabled") {
|
||||
return; //Do none
|
||||
}
|
||||
else {
|
||||
if (this.id == "checkbox-force_group") {
|
||||
$("#checkbox-recursion").prop("checked", false);
|
||||
@ -1964,7 +1989,7 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-40").show ();
|
||||
}
|
||||
else {
|
||||
@ -1995,7 +2020,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").hide();
|
||||
}
|
||||
}
|
||||
@ -2085,7 +2111,8 @@ $(document).ready (function () {
|
||||
"tr#delete_table-36, " +
|
||||
"tr#delete_table-37, " +
|
||||
"tr#delete_table-38, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-39, " +
|
||||
"tr#delete_table-made_enabled, " +
|
||||
"tr#delete_table-40").hide();
|
||||
|
||||
jQuery.post ("ajax.php",
|
||||
@ -2315,6 +2342,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
||||
'module_interval',
|
||||
'disabled',
|
||||
'post_process',
|
||||
'made_enabled',
|
||||
'unit_select',
|
||||
'snmp_community',
|
||||
'snmp_oid',
|
||||
@ -2626,6 +2654,10 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
||||
$values['macros'] = json_encode($module_macros);
|
||||
}
|
||||
|
||||
if (modules_made_compatible($module['id_tipo_modulo']) === false) {
|
||||
$values['made_enabled'] = 0;
|
||||
}
|
||||
|
||||
$result = modules_update_agent_module(
|
||||
$module['id_agente_modulo'],
|
||||
$values,
|
||||
|
@ -571,6 +571,7 @@ if (!$maps && is_metaconsole() === false) {
|
||||
}
|
||||
|
||||
if ($maps || is_metaconsole() === true) {
|
||||
$buttons = '';
|
||||
if ($vconsoles_write || $vconsoles_manage) {
|
||||
if (is_metaconsole() === false) {
|
||||
$actionUrl = 'index.php?sec=network&sec2=godmode/reporting/visual_console_builder';
|
||||
@ -578,20 +579,22 @@ if ($maps || is_metaconsole() === true) {
|
||||
$actionUrl = 'index.php?sec=screen&sec2=screens/screens&action=visualmap&action2=new&operation=new_visualmap&tab=data&pure='.$pure;
|
||||
}
|
||||
|
||||
echo '<form action="'.$actionUrl.'" method="post">';
|
||||
html_print_input_hidden('edit_layout', 1);
|
||||
$buttons .= '<form action="'.$actionUrl.'" method="post">';
|
||||
$buttons .= html_print_input_hidden('edit_layout', 1, true);
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Create'),
|
||||
'',
|
||||
false,
|
||||
[ 'icon' => 'next'],
|
||||
true
|
||||
),
|
||||
[ 'right_content' => $tablePagination ]
|
||||
$buttons .= html_print_submit_button(
|
||||
__('Create'),
|
||||
'',
|
||||
false,
|
||||
[ 'icon' => 'next'],
|
||||
true
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
$buttons .= '</form>';
|
||||
}
|
||||
|
||||
html_print_action_buttons(
|
||||
$buttons,
|
||||
[ 'right_content' => $tablePagination ]
|
||||
);
|
||||
}
|
||||
|
@ -1932,33 +1932,8 @@ if (is_metaconsole() === true) {
|
||||
<td class="bolder"><?php echo __('Source'); ?></td>
|
||||
<td >
|
||||
<?php
|
||||
$agents = agents_get_group_agents($group);
|
||||
if ((empty($agents)) || $agents == -1) {
|
||||
$agents = [];
|
||||
}
|
||||
|
||||
$sql_log = 'SELECT source AS k, source AS v
|
||||
FROM tagente,tagent_module_log
|
||||
WHERE tagente.id_agente = tagent_module_log.id_agent
|
||||
AND tagente.disabled = 0';
|
||||
|
||||
if (!empty($agents)) {
|
||||
$index = 0;
|
||||
foreach ($agents as $key => $a) {
|
||||
if ($index == 0) {
|
||||
$sql_log .= ' AND (id_agente = '.$key;
|
||||
} else {
|
||||
$sql_log .= ' OR id_agente = '.$key;
|
||||
}
|
||||
|
||||
$index++;
|
||||
}
|
||||
|
||||
$sql_log .= ')';
|
||||
}
|
||||
|
||||
html_print_select_from_sql(
|
||||
$sql_log,
|
||||
html_print_select(
|
||||
[],
|
||||
'source',
|
||||
$source,
|
||||
'onselect=source_change_agents();',
|
||||
@ -1966,7 +1941,7 @@ if (is_metaconsole() === true) {
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
false
|
||||
false,
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
@ -6702,68 +6677,41 @@ function loadGeneralAgents(agent_group) {
|
||||
function loadLogAgents() {
|
||||
var params = [];
|
||||
|
||||
params.push("get_log_agents=1");
|
||||
params.push("source=<?php echo $source; ?>");
|
||||
params.push('id_agents=<?php echo json_encode($id_agents); ?>');
|
||||
params.push("page=include/ajax/reporting.ajax");
|
||||
let source = '<?php echo $source; ?>';
|
||||
let agent = '<?php echo json_encode($id_agents); ?>';
|
||||
agent = JSON.parse(agent);
|
||||
|
||||
$('#id_agents3')
|
||||
.find('option')
|
||||
.remove();
|
||||
var params = {};
|
||||
params["get_agent_source"] = 1;
|
||||
params["log_alert"] = 1;
|
||||
params["page"] = "enterprise/include/ajax/log_viewer.ajax";
|
||||
|
||||
$('#id_agents3')
|
||||
.append('<option>Loading agents...</option>');
|
||||
|
||||
jQuery.ajax ({
|
||||
data: params.join ("&"),
|
||||
type: 'POST',
|
||||
url: action=
|
||||
<?php
|
||||
echo '"'.ui_get_full_url(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
).'"';
|
||||
?>
|
||||
+ "/ajax.php",
|
||||
timeout: 300000,
|
||||
dataType: 'json',
|
||||
success: function (data) {
|
||||
if (data['correct']) {
|
||||
$('#id_agents3')
|
||||
.find('option')
|
||||
.remove();
|
||||
|
||||
var selectElements = [];
|
||||
var selectedStr = 'selected="selected"';
|
||||
|
||||
if (data['select_agents'] === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Array.isArray(data['select_agents'])) {
|
||||
data['select_agents'].forEach(function(agentAlias, agentID) {
|
||||
var optionAttr = '';
|
||||
if (typeof data['agents_selected'][agentID] !== 'undefined') {
|
||||
optionAttr = ' selected="selected"';
|
||||
}
|
||||
|
||||
$('#id_agents3')
|
||||
.append('<option value="'+agentID+'" '+optionAttr+'>'+agentAlias+'</option>');
|
||||
});
|
||||
jQuery.ajax({
|
||||
data: params,
|
||||
dataType: "json",
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
async: true,
|
||||
success: function(data) {
|
||||
$('#id_agents3')
|
||||
.find('option')
|
||||
.remove();
|
||||
$.each(data['source'],function(key,value) {
|
||||
if (value === source) {
|
||||
$('#source').append( `<option selected='selected' value='${key}'>${value}</option>`);
|
||||
} else {
|
||||
for (const [agentID, agentAlias] of Object.entries(data['select_agents'])) {
|
||||
var optionAttr = '';
|
||||
if (typeof data['agents_selected'][agentID] !== 'undefined') {
|
||||
optionAttr = ' selected="selected"';
|
||||
}
|
||||
|
||||
$('#id_agents3')
|
||||
.append('<option value="'+agentID+'" '+optionAttr+'>'+agentAlias+'</option>');
|
||||
}
|
||||
$('#source').append( `<option value='${key}'>${value}</option>`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$.each(data['agent'],function(key,value) {
|
||||
const result = agent.includes(key);
|
||||
if (result === true) {
|
||||
$('#id_agents3').append( `<option selected='selected' value='${key}'>${value}</option>`);
|
||||
} else {
|
||||
$('#id_agents3').append( `<option value='${key}'>${value}</option>`);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -7948,23 +7896,46 @@ function set_last_value_period() {
|
||||
}
|
||||
|
||||
function source_change_agents() {
|
||||
$("#id_agents3").empty();
|
||||
$("#spinner_hack").show();
|
||||
jQuery.post ("ajax.php",
|
||||
{"page" : "operation/agentes/ver_agente",
|
||||
"get_agents_source_json" : 1,
|
||||
"source" : $("#source").val()
|
||||
},
|
||||
function (data, status) {
|
||||
for (var clave in data) {
|
||||
$("#id_agents3").append(
|
||||
'<option value="'+clave+'">'+data[clave]+'</option>'
|
||||
);
|
||||
const source = $("#source").val();
|
||||
if (source === '') {
|
||||
$("#id_agents3 option[value!=0]").attr("style","display:");
|
||||
} else {
|
||||
$("#spinner_hack").show();
|
||||
$("#id_agents3 option").attr("style","display:none");
|
||||
|
||||
var params = {};
|
||||
params["get_agent_source"] = 1;
|
||||
params["page"] = "enterprise/include/ajax/log_viewer.ajax";
|
||||
|
||||
jQuery.ajax({
|
||||
data: params,
|
||||
dataType: "json",
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
async: true,
|
||||
success: function(data) {
|
||||
let source_array = [];
|
||||
$.each(data['source'],function(key,value) {
|
||||
if (value === source) {
|
||||
const split = key.split('-');
|
||||
source_array.push(split[1]);
|
||||
}
|
||||
});
|
||||
|
||||
$.each(data['agent'],function(key,value) {
|
||||
const result = source_array.includes(key);
|
||||
if (result === true) {
|
||||
$(`#id_agents3 option[value*='${key}']`).attr("style","display:");
|
||||
}
|
||||
});
|
||||
|
||||
$("#spinner_hack").hide();
|
||||
},
|
||||
error: function(error){
|
||||
$("#spinner_hack").hide();
|
||||
}
|
||||
$("#spinner_hack").hide();
|
||||
},
|
||||
"json"
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function dialog_message(message_id) {
|
||||
|
@ -24,14 +24,6 @@ if (! check_acl($config['id_user'], 0, 'AR')
|
||||
|
||||
ui_require_css_file('discovery');
|
||||
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
ui_include_time_picker();
|
||||
ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/');
|
||||
ui_require_javascript_file('tinymce', 'vendor/tinymce/tinymce/');
|
||||
ui_require_css_file('main.min', 'include/javascript/fullcalendar/');
|
||||
ui_require_javascript_file('main.min', 'include/javascript/fullcalendar/');
|
||||
ui_require_javascript_file('pandora_fullcalendar');
|
||||
|
||||
|
||||
/**
|
||||
* Mask class names.
|
||||
@ -212,115 +204,3 @@ if ($classname_selected === null) {
|
||||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
}
|
||||
|
||||
$is_management_allowed = is_management_allowed();
|
||||
$task_id = get_parameter('task', '');
|
||||
if ($task_id !== '') {
|
||||
$task = db_get_row_filter(
|
||||
'tuser_task_scheduled',
|
||||
['id' => $task_id]
|
||||
);
|
||||
$args = unserialize($task['args']);
|
||||
$event_calendar = io_safe_output($args['weekly_schedule']);
|
||||
} else {
|
||||
$event_calendar = '{"monday":[{"start":"00:00:00","end":"00:00:00"}],"tuesday":[{"start":"00:00:00","end":"00:00:00"}],"wednesday":[{"start":"00:00:00","end":"00:00:00"}],"thursday":[{"start":"00:00:00","end":"00:00:00"}],"friday":[{"start":"00:00:00","end":"00:00:00"}],"saturday":[{"start":"00:00:00","end":"00:00:00"}],"sunday":[{"start":"00:00:00","end":"00:00:00"}]}';
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready (function () {
|
||||
$("#table-new-job-3").hide();
|
||||
var edit = '<?php echo $task_id; ?>';
|
||||
if (edit != '') {
|
||||
exec_calendar();
|
||||
}
|
||||
|
||||
$("#scheduled").change(exec_calendar);
|
||||
|
||||
function exec_calendar() {
|
||||
if ($("#scheduled").val() == "weekly") {
|
||||
var is_management_allowed = parseInt('<?php echo (int) $is_management_allowed; ?>');
|
||||
var eventsBBDD = '<?php echo $event_calendar; ?>';
|
||||
var events = loadEventBBDD(eventsBBDD);
|
||||
var calendarEl = document.getElementById('calendar_map');
|
||||
|
||||
var options = {
|
||||
contentHeight: "auto",
|
||||
headerToolbar: {
|
||||
left: "",
|
||||
center: "",
|
||||
right: is_management_allowed === 0 ? '' : "timeGridWeek,dayGridWeek"
|
||||
},
|
||||
buttonText: {
|
||||
dayGridWeek: '<?php echo __('Simple'); ?>',
|
||||
timeGridWeek: '<?php echo __('Detailed'); ?>'
|
||||
},
|
||||
dayHeaderFormat: { weekday: "short" },
|
||||
initialView: "dayGridWeek",
|
||||
navLinks: false,
|
||||
selectable: true,
|
||||
selectMirror: true,
|
||||
slotDuration: "01:00:00",
|
||||
slotLabelInterval: "02:00:00",
|
||||
snapDuration: "01:00:00",
|
||||
slotMinTime: "00:00:00",
|
||||
slotMaxTime: "24:00:00",
|
||||
scrollTime: "01:00:00",
|
||||
locale: "en-GB",
|
||||
firstDay: 1,
|
||||
eventTimeFormat: {
|
||||
hour: "numeric",
|
||||
minute: "2-digit",
|
||||
hour12: false
|
||||
},
|
||||
eventColor: "#82b92e",
|
||||
editable: is_management_allowed === 0 ? false : true,
|
||||
dayMaxEvents: 3,
|
||||
dayPopoverFormat: { weekday: "long" },
|
||||
defaultAllDay: false,
|
||||
displayEventTime: true,
|
||||
displayEventEnd: true,
|
||||
selectOverlap: false,
|
||||
eventOverlap: false,
|
||||
allDaySlot: true,
|
||||
droppable: false,
|
||||
select: is_management_allowed === 0 ? false : select_alert_template,
|
||||
selectAllow: is_management_allowed === 0 ? false : selectAllow_alert_template,
|
||||
eventAllow: is_management_allowed === 0 ? false : eventAllow_alert_template,
|
||||
eventDrop: is_management_allowed === 0 ? false : eventDrop_alert_template,
|
||||
eventDragStop: is_management_allowed === 0 ? false : eventDragStop_alert_template,
|
||||
eventResize: is_management_allowed === 0 ? false : eventResize_alert_template,
|
||||
eventMouseEnter: is_management_allowed === 0 ? false : eventMouseEnter_alert_template,
|
||||
eventMouseLeave: is_management_allowed === 0 ? false : eventMouseLeave_alert_template,
|
||||
eventClick: is_management_allowed === 0 ? false : eventClick_alert_template,
|
||||
};
|
||||
|
||||
var settings = {
|
||||
timeFormat: '<?php echo TIME_FORMAT_JS; ?>',
|
||||
timeOnlyTitle: '<?php echo __('Choose time'); ?>',
|
||||
timeText: '<?php echo __('Time'); ?>',
|
||||
hourText: '<?php echo __('Hour'); ?>',
|
||||
minuteText: '<?php echo __('Minute'); ?>',
|
||||
secondText: '<?php echo __('Second'); ?>',
|
||||
currentText: '<?php echo __('Now'); ?>',
|
||||
closeText: '<?php echo __('Close'); ?>',
|
||||
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||
removeText: '<?php echo __('Remove'); ?>',
|
||||
userLanguage: '<?php echo get_user_language(); ?>',
|
||||
loadingText: '<?php echo __('Loading, this operation might take several minutes...'); ?>',
|
||||
tooltipText: '<?php echo __('Drag out to remove'); ?>',
|
||||
alert: '<?php echo __('Alert'); ?>'
|
||||
}
|
||||
|
||||
var calendar = fullCalendarPandora(calendarEl, options, settings, events);
|
||||
calendar.render();
|
||||
|
||||
$("#table-new-job-3").show();
|
||||
$('.fc-event-title').hide();
|
||||
$(".fc-button-active" ).trigger( "click" );
|
||||
} else {
|
||||
$("#calendar_map").html();
|
||||
$("#table-new-job-3").hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
@ -151,6 +151,10 @@ if (isset($_GET['server']) === true) {
|
||||
$title .= __('Netflow server').' ID: '.$id_server;
|
||||
break;
|
||||
|
||||
case SERVER_TYPE_MADE:
|
||||
$title .= __('MADE server').' ID: '.$id_server;
|
||||
break;
|
||||
|
||||
default:
|
||||
$title = __('Update server').' ID: '.$id_server;
|
||||
break;
|
||||
|
@ -97,6 +97,24 @@ try {
|
||||
'column_names' => $column_names,
|
||||
'ajax_url' => 'include/ajax/os',
|
||||
'ajax_data' => ['method' => 'drawOSTable'],
|
||||
'pagination_options' => [
|
||||
[
|
||||
$config['block_size'],
|
||||
10,
|
||||
25,
|
||||
100,
|
||||
200,
|
||||
500,
|
||||
],
|
||||
[
|
||||
$config['block_size'],
|
||||
10,
|
||||
25,
|
||||
100,
|
||||
200,
|
||||
500,
|
||||
],
|
||||
],
|
||||
'ajax_postprocess' => 'process_datatables_item(item)',
|
||||
'no_sortable_columns' => [
|
||||
-1,
|
||||
@ -137,6 +155,10 @@ if (is_metaconsole() === true) {
|
||||
true
|
||||
);
|
||||
$buttons .= '</form>';
|
||||
} else {
|
||||
$buttons .= '<form method="post" action="index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit">';
|
||||
$buttons .= html_print_submit_button(__('Create OS'), 'update_button', false, ['icon' => 'next'], true);
|
||||
$buttons .= '</form>';
|
||||
}
|
||||
|
||||
html_print_action_buttons(
|
||||
@ -150,15 +172,6 @@ html_print_action_buttons(
|
||||
|
||||
echo '<div id="aux" class="invisible"></div>';
|
||||
|
||||
echo '<form method="post" action="index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit">';
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(__('Create OS'), 'update_button', false, ['icon' => 'next'], true),
|
||||
['type' => 'form_action']
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
||||
?>
|
||||
<script language="javascript" type="text/javascript">
|
||||
function process_datatables_item(item) {
|
||||
|
@ -767,6 +767,7 @@ $table->data[$i][] = html_print_label_input_block(
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
echo '<form class="max_floating_element_size" id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
||||
|
||||
echo '<fieldset class="margin-bottom-10">';
|
||||
|
@ -2129,6 +2129,15 @@ $table_other->data[$row][] = html_print_label_input_block(
|
||||
__('Data multiplier to use in graphs/data'),
|
||||
html_print_select($options_data_multiplier, 'use_data_multiplier', $config['use_data_multiplier'], '', '', 1, true, false, false)
|
||||
);
|
||||
$table_other->data[$row][] = html_print_label_input_block(
|
||||
__('Hide general stats for non admin users in tactical view'),
|
||||
html_print_checkbox_switch(
|
||||
'disable_general_statistics',
|
||||
1,
|
||||
$config['disable_general_statistics'],
|
||||
true
|
||||
)
|
||||
);
|
||||
$row++;
|
||||
|
||||
/*
|
||||
|
@ -2063,7 +2063,7 @@ if ($create_alert || $update_alert) {
|
||||
}
|
||||
|
||||
// DIALOG ADD MORE ACTIONS.
|
||||
echo '<div id="add_action_snmp-div" class="invisible left">';
|
||||
echo '<div id="add_action_snmp-div" class="invisible">';
|
||||
|
||||
echo '<form id="add_action_form" method="post">';
|
||||
echo '<table class="w100p">';
|
||||
@ -2212,6 +2212,7 @@ if ($create_alert || $update_alert) {
|
||||
|
||||
ui_require_javascript_file('pandora', 'include/javascript/', true);
|
||||
ui_require_javascript_file('tinymce', 'vendor/tinymce/tinymce/');
|
||||
ui_require_javascript_file('alert');
|
||||
?>
|
||||
<script language="javascript" type="text/javascript">
|
||||
|
||||
@ -2287,6 +2288,7 @@ $(document).ready (function () {
|
||||
name: "content_type",
|
||||
value: "<?php echo $al_field4; ?>"
|
||||
})
|
||||
|
||||
jQuery.post (<?php echo "'".ui_get_full_url('ajax.php', false, false, false)."'"; ?>,
|
||||
values,
|
||||
function (data, status) {
|
||||
@ -2317,6 +2319,26 @@ $(document).ready (function () {
|
||||
}
|
||||
$('#table_macros-field').show();
|
||||
}
|
||||
|
||||
if($("#alert_type option:selected").text() === "Create Pandora ITSM ticket") {
|
||||
// At start hide all rows and inputs corresponding to custom fields, regardless of what its type is.
|
||||
if (i>=8) {
|
||||
$('[name=field'+i+'_value\\[\\]').hide();
|
||||
$('[name=field'+i+'_recovery_value\\[\\]').hide();
|
||||
$('#table_macros-field'+i).hide();
|
||||
$('[name=field'+i+'_value_container').hide();
|
||||
$('[name=field'+i+'_recovery_value_container').hide();
|
||||
}
|
||||
|
||||
if ($('#field5_value').val() !== '') {
|
||||
ajax_get_integria_custom_fields($('#field5_value').val(), [], [], max_fields);
|
||||
$('#field5_value').trigger('change');
|
||||
}
|
||||
|
||||
$('#field5_value').on('change', function() {
|
||||
ajax_get_integria_custom_fields($(this).val(), [], [], max_fields);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
"json"
|
||||
@ -2341,7 +2363,8 @@ $(document).ready (function () {
|
||||
});
|
||||
|
||||
function show_add_action_snmp(id_alert_snmp) {
|
||||
$("#add_action_snmp-div").hide()
|
||||
$("#add_action_snmp-div")
|
||||
.hide()
|
||||
.dialog ({
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
|
@ -33,8 +33,6 @@ check_login();
|
||||
|
||||
require_once $config['homedir'].'/vendor/autoload.php';
|
||||
|
||||
use PandoraFMS\Dashboard\Manager;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_profile.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
require_once $config['homedir'].'/include/functions_groups.php';
|
||||
@ -1376,72 +1374,6 @@ if (is_metaconsole() === true) {
|
||||
);
|
||||
}
|
||||
|
||||
$values = [
|
||||
-1 => __('Use global conf'),
|
||||
1 => __('Yes'),
|
||||
0 => __('No'),
|
||||
];
|
||||
|
||||
$home_screen = '<div class="label_select"><p class="edit_user_labels">'.__('Home screen').ui_print_help_tip(
|
||||
__('User can customize the home page. By default, will display \'Agent Detail\'. Example: Select \'Other\' and type index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=1 to show agent detail view'),
|
||||
true
|
||||
).'</p>';
|
||||
|
||||
$dashboards = Manager::getDashboards(
|
||||
-1,
|
||||
-1,
|
||||
false,
|
||||
false,
|
||||
$id_usr
|
||||
);
|
||||
|
||||
$dashboards_aux = [];
|
||||
if ($dashboards === false) {
|
||||
$dashboards = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$dashboards_aux[$dashboard['id']] = $dashboard['name'];
|
||||
}
|
||||
}
|
||||
|
||||
$home_screen .= '<div id="show_db" style="display: none; width: 100%;">';
|
||||
$home_screen .= html_print_select($dashboards_aux, 'dashboard', $user_info['data_section'], '', '', '', true);
|
||||
$home_screen .= '</div>';
|
||||
|
||||
$layouts = visual_map_get_user_layouts($config['id_user'], true);
|
||||
$layouts_aux = [];
|
||||
if ($layouts === false) {
|
||||
$layouts_aux = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($layouts as $layout) {
|
||||
$layouts_aux[$layout] = $layout;
|
||||
}
|
||||
}
|
||||
|
||||
$home_screen .= '<div id="show_vc" style="display: none; width: 100%;">';
|
||||
$home_screen .= html_print_select(
|
||||
$layouts_aux,
|
||||
'visual_console',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true
|
||||
);
|
||||
$home_screen .= '</div>';
|
||||
|
||||
$home_screen .= html_print_input_text(
|
||||
'data_section',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
60,
|
||||
255,
|
||||
true,
|
||||
false
|
||||
);
|
||||
|
||||
$home_screen = '';
|
||||
|
||||
$size_pagination = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Block size for pagination').'</p>';
|
||||
$size_pagination .= html_print_input_text(
|
||||
'block_size',
|
||||
@ -2078,17 +2010,20 @@ if (is_metaconsole() === false) {
|
||||
}
|
||||
|
||||
function show_data_section() {
|
||||
var $section = $("#section").val();
|
||||
var $allElements = $('div[id^="custom_home_screen_"]');
|
||||
var $elementSelected = $('div[id="custom_home_screen_' + $section + '"]');
|
||||
var section = $("#section").val();
|
||||
if(section === 'other'){
|
||||
section = 'external_link';
|
||||
}
|
||||
var allElements = $('div[id^="custom_home_screen_"]');
|
||||
var elementSelected = $('div[id="custom_home_screen_' + section + '"]');
|
||||
// Hide all elements.
|
||||
$allElements.each(function() {
|
||||
allElements.each(function() {
|
||||
$(this).addClass('invisible');
|
||||
$(this).children().addClass('invisible');
|
||||
})
|
||||
// Show only the selected.
|
||||
$elementSelected.removeClass('invisible');
|
||||
$elementSelected.children().removeClass('invisible');
|
||||
elementSelected.removeClass('invisible');
|
||||
elementSelected.children().removeClass('invisible');
|
||||
}
|
||||
|
||||
function switch_ehorus_conf() {
|
||||
|
@ -26,6 +26,8 @@
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
use PandoraFMS\Dashboard\Manager;
|
||||
|
||||
// Load global vars.
|
||||
global $config;
|
||||
|
||||
@ -45,16 +47,75 @@ $homeScreenValues = [
|
||||
HOME_SCREEN_DASHBOARD => __('Dashboard'),
|
||||
];
|
||||
|
||||
$dashboards = Manager::getDashboards(
|
||||
-1,
|
||||
-1,
|
||||
false,
|
||||
false,
|
||||
$id_usr
|
||||
);
|
||||
|
||||
$dashboards_aux = [];
|
||||
if ($dashboards === false) {
|
||||
$dashboards = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$dashboards_aux[$dashboard['id']] = $dashboard['name'];
|
||||
}
|
||||
}
|
||||
|
||||
// Custom Home Screen controls.
|
||||
$customHomeScreenAddition = [];
|
||||
// Home screen. Dashboard.
|
||||
$customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select($dashboards_aux, 'dashboard', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%');
|
||||
// Home screen. Visual consoles.
|
||||
$customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select($layouts_aux, 'visual_console', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%');
|
||||
// Home screen. External link and Other.
|
||||
$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true);
|
||||
$customHomeScreenAddition[HOME_SCREEN_OTHER] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true);
|
||||
$customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select(
|
||||
$dashboards_aux,
|
||||
'dashboard',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false,
|
||||
'width: 100%'
|
||||
);
|
||||
|
||||
$layouts = visual_map_get_user_layouts($config['id_user'], true);
|
||||
$layouts_aux = [];
|
||||
if ($layouts === false) {
|
||||
$layouts_aux = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($layouts as $layout) {
|
||||
$layouts_aux[$layout] = $layout;
|
||||
}
|
||||
}
|
||||
|
||||
// Home screen. Visual consoles.
|
||||
$customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select(
|
||||
$layouts_aux,
|
||||
'visual_console',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false,
|
||||
'width: 100%'
|
||||
);
|
||||
// Home screen. External link and Other.
|
||||
$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text(
|
||||
'data_section',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
60,
|
||||
255,
|
||||
true
|
||||
);
|
||||
$customHomeScreenDataField = '';
|
||||
foreach ($customHomeScreenAddition as $key => $customField) {
|
||||
$customHomeScreenDataField .= html_print_div(
|
||||
@ -576,7 +637,7 @@ $userManagementTable->data['fields_autorefreshTime'][0] .= ui_print_input_placeh
|
||||
true
|
||||
);
|
||||
|
||||
// eHorus conf
|
||||
// EHorus conf.
|
||||
if (isset($config['ehorus_user_level_conf']) === true && (bool) $config['ehorus_user_level_conf'] === true) {
|
||||
$userManagementTable->data['captions_ehorus_user_level_enabled'][1] = __('Pandora RC user access enabled');
|
||||
$userManagementTable->data['fields_ehorus_user_level_enabled'][1] = html_print_checkbox_switch(
|
||||
@ -791,7 +852,7 @@ $userManagementTable->data['fields_addSettings'][0] = html_print_textarea(
|
||||
5,
|
||||
65,
|
||||
$user_info['comments'],
|
||||
($view_mode ? 'readonly="readonly"' : ''),
|
||||
($view_mode) ? 'readonly="readonly"' : '',
|
||||
true,
|
||||
''
|
||||
);
|
||||
@ -945,15 +1006,7 @@ $(document).ready(function () {
|
||||
$('#advanced-line1_looknfeel-1 > a').css('display', 'block');
|
||||
})
|
||||
|
||||
var ehorus_user_level_enabled =
|
||||
<?php
|
||||
if (isset($user_info['ehorus_user_level_enabled']) === true) {
|
||||
echo $user_info['ehorus_user_level_enabled'];
|
||||
} else {
|
||||
echo 0;
|
||||
}
|
||||
?>
|
||||
;
|
||||
var ehorus_user_level_enabled = '<?php echo (isset($user_info['ehorus_user_level_enabled']) === true) ? $user_info['ehorus_user_level_enabled'] : 0; ?>';
|
||||
var chk_ehorus_user_level_enabled = ehorus_user_level_enabled;
|
||||
|
||||
if (ehorus_user_level_enabled == 0) {
|
||||
|
BIN
pandora_console/images/Anomaly-detection.png
Normal file
BIN
pandora_console/images/Anomaly-detection.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 803 B |
BIN
pandora_console/images/Anomaly-detection@2x.png
Normal file
BIN
pandora_console/images/Anomaly-detection@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
14
pandora_console/images/Anomaly-detection@svg.svg
Normal file
14
pandora_console/images/Anomaly-detection@svg.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Anomaly detection@svg</title>
|
||||
<g id="Anomaly-detection" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Dark-/-20-/-details">
|
||||
<g id="Group">
|
||||
<rect id="Rectangle" x="0" y="0" width="20" height="20"></rect>
|
||||
<line x1="14" y1="14" x2="18" y2="18" id="Path-9" stroke="#3F3F3F" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></line>
|
||||
<circle id="Oval" stroke="#3F3F3F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" cx="8" cy="8" r="7"></circle>
|
||||
</g>
|
||||
<path d="M2,11 C2,11 3.33333333,11 6,11 C7.33333333,7 8,5 8,5 C8,5 8.66666667,7 10,11 L14,11" id="Path" stroke="#3F3F3F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1013 B |
9
pandora_console/images/alert_recovered@svg.svg
Normal file
9
pandora_console/images/alert_recovered@svg.svg
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
|
||||
<title>Dark / 20 / alert@svg</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Dark-/-20-/-alert" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M10,20 C11.4190985,20 12.5702076,18.8808594 12.5702076,17.5 L7.42979244,17.5 C7.42979244,18.8808594 8.5809015,20 10,20 Z M18.6540098,14.1519531 C17.8777645,13.3410156 16.425318,12.1210937 16.425318,8.125 C16.425318,5.08984375 14.2364028,2.66015625 11.2849029,2.0640625 L11.2849029,1.25 C11.2849029,0.559765625 10.7095493,0 10,0 C9.29045075,0 8.71509711,0.559765625 8.71509711,1.25 L8.71509711,2.0640625 C5.76359722,2.66015625 3.57468198,5.08984375 3.57468198,8.125 C3.57468198,12.1210938 2.12223547,13.3410156 1.3459902,14.1519531 C1.10492023,14.4039062 0.998045886,14.7050781 1.00002702,15 C1.00447442,15.640625 1.52156948,16.25 2.28977909,16.25 L17.7102209,16.25 C18.4784305,16.25 18.9959274,15.640625 18.999973,15 C19.0019541,14.7050781 18.8950798,14.4035156 18.6540098,14.1519531 L18.6540098,14.1519531 Z" id="Shape" fill="#82b92e"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
7
pandora_console/images/vulnerability_scan@svg.svg
Normal file
7
pandora_console/images/vulnerability_scan@svg.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Vulnerability scanner@svg</title>
|
||||
<g id="Vulnerability-scanner" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M1,15 C1.55228475,15 2,15.4477153 2,16 L2,18 L4,18 C4.55228475,18 5,18.4477153 5,19 C5,19.5522847 4.55228475,20 4,20 L1,20 C0.44771525,20 0,19.5522847 0,19 L2.22044605e-16,16 C2.22044605e-16,15.4477153 0.44771525,15 1,15 Z M19,15 C19.5522847,15 20,15.4477153 20,16 L20,19 C20,19.5522847 19.5522847,20 19,20 L16,20 C15.4477153,20 15,19.5522847 15,19 C15,18.4477153 15.4477153,18 16,18 L18,18 L18,16 C18,15.4477153 18.4477153,15 19,15 Z M10,3.054 L10.2249383,3.05813847 C13.4344251,3.17642824 16,5.81560306 16,9.054 L16,14.0937431 L13.104,16.031 L12.0698805,13.7307161 L14.2125487,13.4284958 C14.556044,13.3800462 14.7107272,12.9297411 14.4915053,12.6217094 L10.3337249,6.72755475 C10.2297804,6.58020088 10.0683722,6.50924823 9.91239579,6.53116927 C9.62831588,6.5712384 9.45479699,6.90055719 9.56613598,7.20888317 L10.9914706,11.1541491 L8.78753031,11.4650118 C8.51830424,11.5029857 8.34782116,11.7998997 8.42525378,12.0959539 L9.92,18.054 L4,14.0937431 L4,9.054 C4,5.81560306 6.56557489,3.17642824 9.77506174,3.05813847 L10,3.054 Z M4,0 C4.55228475,-1.01453063e-16 5,0.44771525 5,1 C5,1.55228475 4.55228475,2 4,2 L2,2 L2,4 C2,4.55228475 1.55228475,5 1,5 C0.44771525,5 2.22044605e-16,4.55228475 2.22044605e-16,4 L0,1 C0,0.44771525 0.44771525,1.01453063e-16 1,0 L4,0 Z M19,0 C19.5522847,1.01453063e-16 20,0.44771525 20,1 L20,4 C20,4.55228475 19.5522847,5 19,5 C18.4477153,5 18,4.55228475 18,4 L18,2 L16,2 C15.4477153,2 15,1.55228475 15,1 C15,0.44771525 15.4477153,-1.01453063e-16 16,0 Z" id="Scan" fill="#3F3F3F" transform="translate(10, 10) scale(1, -1) translate(-10, -10)"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
@ -2065,14 +2065,6 @@ if ($table_events) {
|
||||
// (propagate ACL funct!).
|
||||
$groups = users_get_groups($config['id_user']);
|
||||
|
||||
$tags_condition = tags_get_acl_tags(
|
||||
$config['id_user'],
|
||||
array_keys($groups),
|
||||
'ER',
|
||||
'event_condition',
|
||||
'AND'
|
||||
);
|
||||
|
||||
$tableEvents24h = new stdClass();
|
||||
$tableEvents24h->class = 'filter_table';
|
||||
$tableEvents24h->styleTable = 'border: 0;padding: 0;margin: 0 0 10px;';
|
||||
@ -2107,7 +2099,7 @@ if ($table_events) {
|
||||
);
|
||||
} else {
|
||||
events_print_event_table(
|
||||
'estado <> 1 '.$tags_condition,
|
||||
'estado <> 1',
|
||||
200,
|
||||
'100%',
|
||||
false,
|
||||
|
@ -483,6 +483,13 @@ if (check_login()) {
|
||||
'tagente_modulo',
|
||||
['id_agente_modulo' => $module_id]
|
||||
);
|
||||
|
||||
$made_enabled = db_get_value_filter(
|
||||
'made_enabled',
|
||||
'tagente_modulo',
|
||||
['id_agente_modulo' => $module_id]
|
||||
);
|
||||
|
||||
$unit = db_get_value_filter(
|
||||
'unit',
|
||||
'tagente_modulo',
|
||||
|
@ -738,7 +738,7 @@ class SnmpConsole extends HTML
|
||||
$sql_count = sprintf($sql_count, $whereSubquery);
|
||||
|
||||
$traps = db_get_all_rows_sql($sql, true);
|
||||
$total = (int) db_get_value_sql($sql_count, false, true);
|
||||
$total = (int) db_get_value_sql($sql_count, false, false);
|
||||
|
||||
if (empty($traps) === false) {
|
||||
$data = $traps;
|
||||
|
@ -20,8 +20,8 @@
|
||||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC231023';
|
||||
$pandora_version = 'v7.0NG.773.3';
|
||||
$build_version = 'PC231114';
|
||||
$pandora_version = 'v7.0NG.774';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
$script_tz = @date_default_timezone_get();
|
||||
|
@ -442,6 +442,7 @@ define('SERVER_TYPE_CORRELATION', 22);
|
||||
define('SERVER_TYPE_NCM', 23);
|
||||
define('SERVER_TYPE_NETFLOW', 24);
|
||||
define('SERVER_TYPE_LOG', 25);
|
||||
define('SERVER_TYPE_MADE', 26);
|
||||
|
||||
// REPORTS.
|
||||
define('REPORT_TOP_N_MAX', 1);
|
||||
|
@ -22,7 +22,7 @@ require_once $config['homedir'].'/include/functions_modules.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
|
||||
|
||||
function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby=-1, $acl=false, $total=false, $id_agent=0)
|
||||
function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby=-1, $acl=false, $total=false, $id_agent=0, $only_enabled=false)
|
||||
{
|
||||
$sql = '';
|
||||
$alerts = [];
|
||||
@ -121,6 +121,10 @@ function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby
|
||||
// Only enabled agent.
|
||||
$sql .= ' AND t3.disabled = 0';
|
||||
|
||||
if ($only_enabled === true) {
|
||||
$sql .= ' AND t0.disabled = 0';
|
||||
}
|
||||
|
||||
$row_alerts = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($total) {
|
||||
|
@ -487,6 +487,10 @@ function config_update_config()
|
||||
$error_update[] = __('Legacy database HA');
|
||||
}
|
||||
|
||||
if (config_update_value('agent_vulnerabilities', get_parameter('agent_vulnerabilities'), true) === false) {
|
||||
$error_update[] = __('agent_vulnerabilities');
|
||||
}
|
||||
|
||||
if (config_update_value('ipam_ocuppied_critical_treshold', get_parameter('ipam_ocuppied_critical_treshold'), true) === false) {
|
||||
$error_update[] = __('Ipam Ocuppied Manager Critical');
|
||||
}
|
||||
@ -1568,6 +1572,10 @@ function config_update_config()
|
||||
$error_update[] = __('Use data multiplier');
|
||||
}
|
||||
|
||||
if (config_update_value('disable_general_statistics', get_parameter('disable_general_statistics', 0), true) === false) {
|
||||
$error_update[] = __('Hide general stats for non admin users in tactical view');
|
||||
}
|
||||
|
||||
if (config_update_value('decimal_separator', (string) get_parameter('decimal_separator', '.'), true) === false) {
|
||||
$error_update[] = __('Decimal separator');
|
||||
} else {
|
||||
@ -2441,6 +2449,10 @@ function config_process_config()
|
||||
config_update_value('show_experimental_features', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['agent_vulnerabilities'])) {
|
||||
config_update_value('agent_vulnerabilities', 1);
|
||||
}
|
||||
|
||||
if (!isset($config['console_log_enabled'])) {
|
||||
config_update_value('console_log_enabled', 0);
|
||||
}
|
||||
@ -3703,6 +3715,10 @@ function config_process_config()
|
||||
config_update_value('use_data_multiplier', '1');
|
||||
}
|
||||
|
||||
if (!isset($config['disable_general_statistics'])) {
|
||||
config_update_value('disable_general_statistics', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['command_snapshot'])) {
|
||||
config_update_value('command_snapshot', 1);
|
||||
}
|
||||
|
@ -2593,7 +2593,7 @@ function events_print_type_img(
|
||||
|
||||
switch ($type) {
|
||||
case 'alert_recovered':
|
||||
$style .= ' alert_module_background_state icon_background_normal ';
|
||||
$icon = 'images/alert_recovered@svg.svg';
|
||||
break;
|
||||
|
||||
case 'alert_manual_validation':
|
||||
@ -2609,20 +2609,16 @@ function events_print_type_img(
|
||||
case 'going_up_normal':
|
||||
case 'going_down_normal':
|
||||
// This is to be backwards compatible.
|
||||
// $style .= ' event_module_background_state icon_background_normal';
|
||||
$icon = 'images/module_ok.png';
|
||||
break;
|
||||
|
||||
case 'going_up_warning':
|
||||
$icon = 'images/module_warning.png';
|
||||
// $style .= ' event_module_background_state icon_background_warning';
|
||||
case 'going_down_warning':
|
||||
$icon = 'images/module_warning.png';
|
||||
// $style .= ' event_module_background_state icon_background_warning';
|
||||
break;
|
||||
|
||||
case 'going_unknown':
|
||||
// $style .= ' event_module_background_state icon_background_unknown';
|
||||
$icon = 'images/module_unknown.png';
|
||||
break;
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
use Models\VisualConsole\Items\Percentile;
|
||||
|
||||
require_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||
require_once $config['homedir'].'/include/functions_reporting.php';
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
@ -2686,7 +2688,9 @@ function graph_agent_status(
|
||||
$return=false,
|
||||
$show_not_init=false,
|
||||
$data_agents=false,
|
||||
$donut_narrow_graph=false
|
||||
$donut_narrow_graph=false,
|
||||
$onClick='',
|
||||
$data_in_percentage=false,
|
||||
) {
|
||||
global $config;
|
||||
|
||||
@ -2766,6 +2770,25 @@ function graph_agent_status(
|
||||
'labels' => array_keys($data),
|
||||
];
|
||||
|
||||
if (empty($onClick) === false) {
|
||||
$options['onClick'] = $onClick;
|
||||
}
|
||||
|
||||
if ($data_in_percentage === true) {
|
||||
$percentages = [];
|
||||
$total = array_sum($data);
|
||||
foreach ($data as $key => $value) {
|
||||
$percentage = (($value / $total) * 100);
|
||||
if ($percentage < 1 && $percentage > 0) {
|
||||
$percentage = 1;
|
||||
}
|
||||
|
||||
$percentages[$key] = format_numeric($percentage, 0);
|
||||
}
|
||||
|
||||
$data = $percentages;
|
||||
}
|
||||
|
||||
if ($donut_narrow_graph == true) {
|
||||
$out = ring_graph(
|
||||
$data,
|
||||
@ -4625,9 +4648,15 @@ function graph_nodata_image($options)
|
||||
return base64_encode($dataImg);
|
||||
}
|
||||
|
||||
$widthImage = '200px';
|
||||
$style = '';
|
||||
if (isset($options['nodata_image']['width']) === true) {
|
||||
$widthImage = $options['nodata_image']['width'];
|
||||
$style .= 'width: '.$options['nodata_image']['width'].'; ';
|
||||
} else {
|
||||
$style .= 'width: 200px; ';
|
||||
}
|
||||
|
||||
if (isset($options['nodata_image']['height']) === true) {
|
||||
$style .= 'height: '.$options['nodata_image']['height'].'; ';
|
||||
}
|
||||
|
||||
return html_print_image(
|
||||
@ -4635,7 +4664,7 @@ function graph_nodata_image($options)
|
||||
true,
|
||||
[
|
||||
'title' => __('No data'),
|
||||
'style' => 'width: '.$widthImage.';',
|
||||
'style' => $style,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
@ -5409,7 +5409,7 @@ function html_print_link_with_params($text, $params=[], $type='text', $style='',
|
||||
$formStyle = ' style="'.$formStyle.'"';
|
||||
}
|
||||
|
||||
$html = '<form method="POST"'.$formStyle.'>';
|
||||
$html = '<form method="POST"'.$formStyle.' class="link-with-params">';
|
||||
switch ($type) {
|
||||
case 'image':
|
||||
$html .= html_print_input_image($text, $text, $text, $style, true);
|
||||
|
@ -4762,3 +4762,31 @@ function export_agents_module_csv($filters)
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if modules are compatible with MADE server.
|
||||
*
|
||||
* @param integer $id_tipo_modulo
|
||||
* @retur boolean True if compatible, false otherwise.
|
||||
*/
|
||||
function modules_made_compatible($id_tipo_modulo)
|
||||
{
|
||||
$compatible_types = [
|
||||
1,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
15,
|
||||
16,
|
||||
22,
|
||||
30,
|
||||
34,
|
||||
];
|
||||
|
||||
if (array_search($id_tipo_modulo, $compatible_types) === false) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -992,6 +992,19 @@ function servers_get_info($id_server=-1, $sql_limit=-1)
|
||||
$id_modulo = 0;
|
||||
break;
|
||||
|
||||
case SERVER_TYPE_MADE:
|
||||
$server['img'] = html_print_image(
|
||||
'images/Anomaly-detection@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('MADE server'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$server['type'] = 'made';
|
||||
$id_modulo = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
$server['img'] = '';
|
||||
$server['type'] = 'unknown';
|
||||
|
@ -669,6 +669,12 @@ function get_build_setup_charts($type, $options, $data)
|
||||
|
||||
$chart->setId($id);
|
||||
|
||||
if (isset($options['onClick']) === true
|
||||
&& empty($options['onClick']) === false
|
||||
) {
|
||||
$chart->options()->setOnClick($options['onClick']);
|
||||
}
|
||||
|
||||
// Height is null maximum possible.
|
||||
if (isset($options['height']) === true
|
||||
&& empty($options['height']) === false
|
||||
@ -1019,6 +1025,7 @@ function get_build_setup_charts($type, $options, $data)
|
||||
$chart->setCircumference($options['circumference']);
|
||||
}
|
||||
|
||||
$stacked = false;
|
||||
if (isset($options['scales']) === true
|
||||
&& empty($options['scales']) === false
|
||||
&& is_array($options['scales']) === true
|
||||
@ -1082,6 +1089,13 @@ function get_build_setup_charts($type, $options, $data)
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['scales']['x']['stacked']) === true
|
||||
&& empty($options['scales']['x']['stacked']) === false
|
||||
) {
|
||||
$scales->getX()->setStacked($options['scales']['x']['stacked']);
|
||||
$stacked = true;
|
||||
}
|
||||
|
||||
if (isset($options['scales']['x']['ticks']) === true
|
||||
&& empty($options['scales']['x']['ticks']) === false
|
||||
&& is_array($options['scales']['x']['ticks']) === true
|
||||
@ -1131,6 +1145,13 @@ function get_build_setup_charts($type, $options, $data)
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['scales']['y']['stacked']) === true
|
||||
&& empty($options['scales']['y']['stacked']) === false
|
||||
) {
|
||||
$scales->getY()->setStacked($options['scales']['y']['stacked']);
|
||||
$stacked = true;
|
||||
}
|
||||
|
||||
if (isset($options['scales']['y']['ticks']) === true
|
||||
&& empty($options['scales']['y']['ticks']) === false
|
||||
&& is_array($options['scales']['y']['ticks']) === true
|
||||
@ -1247,11 +1268,37 @@ function get_build_setup_charts($type, $options, $data)
|
||||
break;
|
||||
|
||||
case 'BAR':
|
||||
$setData->setLabel('data')->setBackgroundColor($colors);
|
||||
$setData->setLabel('data')->setBorderColor($borders);
|
||||
$setData->setLabel('data')->setBorderWidth(2);
|
||||
|
||||
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
||||
if (isset($options['multiple']) === true && empty($options['multiple']) === false) {
|
||||
$i = 0;
|
||||
foreach ($options['multiple'] as $key_label => $label) {
|
||||
$dataSet = $chart->createDataSet();
|
||||
$dataSet->setLabel($label);
|
||||
$dataSet->setBackgroundColor($colors[$i]);
|
||||
$dataSet->setBorderColor($borders[$i]);
|
||||
$dataSet->setBorderWidth(2);
|
||||
$dataSet->data()->exchangeArray(array_values($data[$key_label]));
|
||||
$chart->addDataSet($dataSet);
|
||||
$i++;
|
||||
}
|
||||
} else if ($chart->options()->getScales()->getX()->isStacked() === true) {
|
||||
$i = 0;
|
||||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setBackgroundColor($colors[$i]);
|
||||
$dataSet1->setBorderColor($borders[$i]);
|
||||
$dataSet1->setLabel($dataset['label']);
|
||||
$dataSet1->setBorderWidth(2);
|
||||
$dataSet1->data()->exchangeArray($dataset['data']);
|
||||
$dataSet1->setStack($dataset['stack']);
|
||||
$chart->addDataSet($dataSet1);
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$setData->setLabel('data')->setBackgroundColor($colors);
|
||||
$setData->setLabel('data')->setBorderColor($borders);
|
||||
$setData->setLabel('data')->setBorderWidth(2);
|
||||
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
||||
}
|
||||
|
||||
// Para las horizontales.
|
||||
if (isset($options['axis']) === true
|
||||
@ -1266,6 +1313,7 @@ function get_build_setup_charts($type, $options, $data)
|
||||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
||||
$dataSet1->setLabel($dataset['label']);
|
||||
$dataSet1->setBorderColor($dataset['borderColor']);
|
||||
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
||||
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
||||
@ -1298,7 +1346,11 @@ function get_build_setup_charts($type, $options, $data)
|
||||
break;
|
||||
}
|
||||
|
||||
if ($type !== 'RADAR' && $type !== 'LINE') {
|
||||
if ($type !== 'RADAR'
|
||||
&& $type !== 'LINE'
|
||||
&& $stacked === false
|
||||
&& (isset($options['multiple']) === false || empty($options['multiple']) === true)
|
||||
) {
|
||||
$chart->addDataSet($setData);
|
||||
}
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/* eslint-disable no-unused-vars */
|
||||
/* global $, load_modal, generalShowMsg, confirmDialog */
|
||||
/* global $, load_modal, generalShowMsg, confirmDialog, jQuery */
|
||||
|
||||
function allowDrop(ev) {
|
||||
ev.preventDefault();
|
||||
@ -172,3 +172,317 @@ function disabled_alert(settings) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function ajax_get_integria_custom_fields(
|
||||
ticket_type_id,
|
||||
values,
|
||||
recovery_values,
|
||||
max_macro_fields
|
||||
) {
|
||||
values = values || [];
|
||||
recovery_values = recovery_values || [];
|
||||
|
||||
if (
|
||||
ticket_type_id === null ||
|
||||
ticket_type_id === "" ||
|
||||
(Array.isArray(values) &&
|
||||
values.length === 0 &&
|
||||
Array.isArray(recovery_values) &&
|
||||
recovery_values.length === 0)
|
||||
) {
|
||||
for (let i = 8; i <= max_macro_fields; i++) {
|
||||
$("[name=field" + i + "_value\\[\\]").val("");
|
||||
$("[name=field" + i + "_recovery_value\\[\\]").val("");
|
||||
}
|
||||
}
|
||||
|
||||
// On ticket type change, hide all table rows and inputs corresponding to custom fields, regardless of what its type is.
|
||||
for (let i = 8; i <= max_macro_fields; i++) {
|
||||
$("[name=field" + i + "_value\\[\\]").hide();
|
||||
$("[name=field" + i + "_recovery_value\\[\\]").hide();
|
||||
$("#table_macros-field" + i).hide();
|
||||
$("[name=field" + i + "_value_container").hide();
|
||||
$("[name=field" + i + "_recovery_value_container").hide();
|
||||
}
|
||||
|
||||
jQuery.post(
|
||||
"ajax.php",
|
||||
{
|
||||
page: "godmode/alerts/configure_alert_action",
|
||||
get_integria_ticket_custom_types: 1,
|
||||
ticket_type_id: ticket_type_id
|
||||
},
|
||||
function(data) {
|
||||
data.forEach(function(custom_field, key) {
|
||||
var custom_field_key = key + 8; // Custom fields start from field 8.
|
||||
|
||||
if (custom_field_key > max_macro_fields) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Display field row for current input.
|
||||
var custom_field_row = $("#table_macros-field" + custom_field_key);
|
||||
custom_field_row.show();
|
||||
|
||||
// Replace label text of field row for current input.
|
||||
var label_html = $("#table_macros-field" + custom_field_key + " td")
|
||||
.first()
|
||||
.html();
|
||||
var label_name = label_html.split("<br>")[0];
|
||||
var new_html_content = custom_field_row
|
||||
.html()
|
||||
.replace(label_name, custom_field.label);
|
||||
custom_field_row.html(new_html_content);
|
||||
|
||||
switch (custom_field.type) {
|
||||
case "CHECKBOX":
|
||||
var checkbox_selector = $(
|
||||
'input[type="checkbox"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
);
|
||||
var checkbox_recovery_selector = $(
|
||||
'input[type="checkbox"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
);
|
||||
|
||||
checkbox_selector.on("change", function() {
|
||||
if (checkbox_selector.prop("checked")) {
|
||||
checkbox_selector.attr("value", "1");
|
||||
} else {
|
||||
checkbox_selector.attr("value", "0");
|
||||
}
|
||||
});
|
||||
|
||||
checkbox_recovery_selector.on("change", function() {
|
||||
if (checkbox_recovery_selector.prop("checked")) {
|
||||
checkbox_recovery_selector.attr("value", "1");
|
||||
} else {
|
||||
checkbox_recovery_selector.attr("value", "0");
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
if (values[key] == 1) {
|
||||
checkbox_selector.prop("checked", true);
|
||||
checkbox_selector.attr("value", "1");
|
||||
} else {
|
||||
checkbox_selector.prop("checked", false);
|
||||
checkbox_selector.attr("value", "0");
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
if (recovery_values[key] == 1) {
|
||||
checkbox_recovery_selector.prop("checked", true);
|
||||
checkbox_recovery_selector.attr("value", "1");
|
||||
} else {
|
||||
checkbox_recovery_selector.prop("checked", false);
|
||||
checkbox_recovery_selector.attr("value", "0");
|
||||
}
|
||||
}
|
||||
|
||||
$("[name=field" + custom_field_key + "_value_container]").show();
|
||||
$(
|
||||
"[name=field" + custom_field_key + "_recovery_value_container]"
|
||||
).show();
|
||||
$(
|
||||
'input[type="checkbox"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
'input[type="checkbox"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).show();
|
||||
break;
|
||||
case "COMBO":
|
||||
var combo_input = $(
|
||||
"select[name=field" + custom_field_key + "_value\\[\\]]"
|
||||
);
|
||||
var combo_input_recovery = $(
|
||||
"select[name=field" + custom_field_key + "_recovery_value\\[\\]]"
|
||||
);
|
||||
|
||||
combo_input.find("option").remove();
|
||||
combo_input_recovery.find("option").remove();
|
||||
|
||||
var combo_values_array = custom_field.comboValue.split(",");
|
||||
|
||||
combo_values_array.forEach(function(value) {
|
||||
combo_input.append(
|
||||
$("<option>", {
|
||||
value: value,
|
||||
text: value
|
||||
})
|
||||
);
|
||||
|
||||
combo_input_recovery.append(
|
||||
$("<option>", {
|
||||
value: value,
|
||||
text: value
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
combo_input.val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
combo_input_recovery.val(recovery_values[key]);
|
||||
}
|
||||
|
||||
combo_input.show();
|
||||
combo_input_recovery.show();
|
||||
break;
|
||||
case "DATE":
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).removeClass("hasDatepicker");
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).removeClass("hasDatepicker");
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).datepicker("destroy");
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).datepicker("destroy");
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).datepicker({ dateFormat: "<?php echo 'yy-mm-dd 00:00:00'; ?>" });
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).datepicker({ dateFormat: "<?php echo 'yy-mm-dd 00:00:00'; ?>" });
|
||||
$.datepicker.setDefaults(
|
||||
$.datepicker.regional["<?php echo get_user_language(); ?>"]
|
||||
);
|
||||
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$(
|
||||
'input.datepicker[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).val(recovery_values[key]);
|
||||
}
|
||||
break;
|
||||
case "NUMERIC":
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$(
|
||||
'input[type="number"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$(
|
||||
'input[type="number"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$(
|
||||
'input[type="number"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
'input[type="number"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).show();
|
||||
break;
|
||||
case "TEXT":
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$(
|
||||
'input.normal[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).val(values[key]);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$(
|
||||
'input.normal[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$(
|
||||
'input.normal[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
'input.normal[type="text"][name=field' +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).show();
|
||||
break;
|
||||
case "TEXTAREA":
|
||||
default:
|
||||
if (typeof values[key] !== "undefined") {
|
||||
$("textarea[name=field" + custom_field_key + "_value\\[\\]]").val(
|
||||
values[key]
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof recovery_values[key] !== "undefined") {
|
||||
$(
|
||||
"textarea[name=field" +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).val(recovery_values[key]);
|
||||
}
|
||||
|
||||
$(
|
||||
"textarea[name=field" + custom_field_key + "_value\\[\\]]"
|
||||
).show();
|
||||
$(
|
||||
"textarea[name=field" +
|
||||
custom_field_key +
|
||||
"_recovery_value\\[\\]]"
|
||||
).show();
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
"json"
|
||||
);
|
||||
}
|
||||
|
@ -73,8 +73,40 @@ $(document).ready(function() {
|
||||
$("#heatmap-title").html($(title).html());
|
||||
}
|
||||
});
|
||||
rescaling();
|
||||
|
||||
$(window).on("resize", function() {
|
||||
rescaling();
|
||||
});
|
||||
});
|
||||
|
||||
function showLabel(element, event, label) {
|
||||
$(".label_heatmap").remove();
|
||||
const tooltip = $(document.createElement("div"));
|
||||
tooltip.html(label);
|
||||
tooltip.attr("class", "label_heatmap");
|
||||
$("#heatmap-group").append(tooltip);
|
||||
var x = event.clientX;
|
||||
var y = event.clientY;
|
||||
tooltip.attr(
|
||||
"style",
|
||||
"position: fixed; top:" + (y + 15) + "px; left:" + (x + 20) + "px;"
|
||||
);
|
||||
}
|
||||
|
||||
function hideLabel() {
|
||||
$(".label_heatmap").remove();
|
||||
}
|
||||
|
||||
function rescaling() {
|
||||
if (window.innerWidth < 1300) {
|
||||
$(".trigger-100").attr("style", "width: 100%;");
|
||||
$(".trigger-100").addClass("br-b");
|
||||
} else {
|
||||
$(".trigger-100").removeAttr("style");
|
||||
$(".trigger-100").removeClass("br-b");
|
||||
}
|
||||
}
|
||||
function autoRefresh(interval, id, method, php_class) {
|
||||
setInterval(() => {
|
||||
$.ajax({
|
||||
@ -92,3 +124,114 @@ function autoRefresh(interval, id, method, php_class) {
|
||||
});
|
||||
}, interval);
|
||||
}
|
||||
|
||||
function redirectStatus(e, element) {
|
||||
if (element.length > 0) {
|
||||
switch (e.chart.legend.legendItems[element[0].index].text) {
|
||||
case "Critical":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=1&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Warning":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=2&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Unknown":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=3&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Not init":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=5&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Normal":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=0&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=-1&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function redirectHeatmap(view, id, id_agente = 0) {
|
||||
switch (view) {
|
||||
case "group":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=godmode/groups/tactical&id_group=${id}`
|
||||
);
|
||||
break;
|
||||
|
||||
case "agent":
|
||||
window.location.assign(
|
||||
`index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=${id}`
|
||||
);
|
||||
break;
|
||||
|
||||
case "module":
|
||||
if (id_agente > 0) {
|
||||
window.location.assign(
|
||||
`index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente=${id_agente}&tab=module&id_agent_module=${id}&edit_module=1`
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function redirectAgentStatus(e, element) {
|
||||
if (element.length > 0) {
|
||||
switch (e.chart.legend.legendItems[element[0].index].text) {
|
||||
case "No monitors":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente`
|
||||
);
|
||||
break;
|
||||
|
||||
case "CRITICAL":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=1`
|
||||
);
|
||||
break;
|
||||
|
||||
case "WARNING":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=2`
|
||||
);
|
||||
break;
|
||||
|
||||
case "UKNOWN":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=3`
|
||||
);
|
||||
break;
|
||||
|
||||
case "NORMAL":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=0`
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente`
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -30,6 +30,8 @@ namespace PandoraFMS\Dashboard;
|
||||
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_inventory.php';
|
||||
|
||||
/**
|
||||
* Inventory Widget.
|
||||
*/
|
||||
@ -608,7 +610,7 @@ class InventoryWidget extends Widget
|
||||
}
|
||||
}
|
||||
|
||||
$id_table = 'id_'.$row['id_module_inventory'].'_'.$nodo['server_uid'];
|
||||
$id_table = 'id_'.$row['id_module_inventory'].'_'.uniqid().'_'.$nodo['server_uid'];
|
||||
$table = ui_print_datatable(
|
||||
[
|
||||
'id' => $id_table,
|
||||
@ -619,7 +621,7 @@ class InventoryWidget extends Widget
|
||||
'no_sortable_columns' => [],
|
||||
'data_element' => $data,
|
||||
'searching' => true,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
'direction' => 'asc',
|
||||
@ -727,7 +729,7 @@ class InventoryWidget extends Widget
|
||||
}
|
||||
}
|
||||
|
||||
$id_table = 'id_'.$row['id_module_inventory'].'_'.$nodo['server_uid'];
|
||||
$id_table = 'id_'.$row['id_module_inventory'].'_'.uniqid().'_'.$nodo['server_uid'];
|
||||
|
||||
$table = ui_print_datatable(
|
||||
[
|
||||
@ -739,7 +741,7 @@ class InventoryWidget extends Widget
|
||||
'no_sortable_columns' => [],
|
||||
'data_element' => $data,
|
||||
'searching' => true,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
'direction' => 'asc',
|
||||
@ -893,7 +895,7 @@ class InventoryWidget extends Widget
|
||||
}
|
||||
}
|
||||
|
||||
$id_table = 'id_'.$key_row.'_'.$row['id_module_inventory'].'_'.$row['id_agente'];
|
||||
$id_table = 'id_'.$key_row.'_'.$row['id_module_inventory'].'_'.uniqid().'_'.$row['id_agente'];
|
||||
|
||||
$table = ui_print_datatable(
|
||||
[
|
||||
@ -905,7 +907,7 @@ class InventoryWidget extends Widget
|
||||
'no_sortable_columns' => [],
|
||||
'data_element' => $data,
|
||||
'searching' => true,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
'direction' => 'asc',
|
||||
@ -985,7 +987,7 @@ class InventoryWidget extends Widget
|
||||
array_push($data, $data_tmp);
|
||||
}
|
||||
|
||||
$id_table = 'id_'.$row['id_module_inventory'];
|
||||
$id_table = 'id_'.$row['id_module_inventory'].'_'.uniqid();
|
||||
}
|
||||
|
||||
if ($count_rows > 1) {
|
||||
@ -999,7 +1001,7 @@ class InventoryWidget extends Widget
|
||||
'no_sortable_columns' => [],
|
||||
'data_element' => $data,
|
||||
'searching' => true,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
'direction' => 'asc',
|
||||
@ -1035,7 +1037,7 @@ class InventoryWidget extends Widget
|
||||
'no_sortable_columns' => [],
|
||||
'data_element' => $data,
|
||||
'searching' => true,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
'direction' => 'asc',
|
||||
@ -1098,7 +1100,7 @@ class InventoryWidget extends Widget
|
||||
'columns' => $columns,
|
||||
'column_names' => $columns_names,
|
||||
'ordering' => $ordering,
|
||||
'dom_elements' => 'frtilp',
|
||||
'dom_elements' => 'rtilp',
|
||||
'searching' => $searching,
|
||||
'order' => [
|
||||
'field' => $columns[0],
|
||||
|
@ -1098,7 +1098,6 @@ class SecurityHardening extends Widget
|
||||
function selectData(e){
|
||||
$(".row_input").hide();
|
||||
dataTypes_'.$id.'[e.value].forEach(element => {
|
||||
console.log(element);
|
||||
$(element).show();
|
||||
});
|
||||
}
|
||||
|
@ -300,6 +300,10 @@ class SingleGraphWidget extends Widget
|
||||
$values['period'] = SECONDS_1DAY;
|
||||
}
|
||||
|
||||
if (isset($values['period_projection']) === false) {
|
||||
$values['period_projection'] = SECONDS_1DAY;
|
||||
}
|
||||
|
||||
if (isset($values['showLegend']) === false) {
|
||||
$values['showLegend'] = 1;
|
||||
}
|
||||
@ -443,7 +447,7 @@ class SingleGraphWidget extends Widget
|
||||
$trickHight = 0;
|
||||
if ($this->values['showLegend'] === 1) {
|
||||
// Needed for legend.
|
||||
$trickHight = 40;
|
||||
$trickHight = 60;
|
||||
}
|
||||
|
||||
$output = '<div class="container-center widget-mrgn-0px">';
|
||||
@ -452,10 +456,16 @@ class SingleGraphWidget extends Widget
|
||||
'period' => $this->values['period'],
|
||||
'date' => strtotime(date('Y-m-d H:i:s')),
|
||||
'only_image' => false,
|
||||
'homeurl' => ui_get_full_url(false, false, false, false).'/',
|
||||
'height' => ((int) $size['height'] - $trickHight),
|
||||
'landscape' => $content['landscape'],
|
||||
'return_img_base_64' => true,
|
||||
'show_legend' => $this->values['showLegend'],
|
||||
'width' => '100%',
|
||||
'height' => ((int) $size['height'] - $trickHight),
|
||||
'title' => $module_name,
|
||||
'unit' => $units_name,
|
||||
'homeurl' => $config['homeurl'],
|
||||
'menu' => false,
|
||||
];
|
||||
|
||||
$params_combined = [
|
||||
|
@ -79,11 +79,17 @@ class Element
|
||||
public function __construct(
|
||||
$ajax_controller='include/ajax/general_tactical_view.ajax'
|
||||
) {
|
||||
global $config;
|
||||
$this->interval = 0;
|
||||
$this->title = __('Default element');
|
||||
$this->ajaxController = $ajax_controller;
|
||||
// Without ACL.
|
||||
$agent = db_get_row('tagente', 'nombre', 'pandora.internals', '*');
|
||||
$agent_name = $config['self_monitoring_agent_name'];
|
||||
if (empty($agent_name) === true) {
|
||||
$agent_name = 'pandora.internals';
|
||||
}
|
||||
|
||||
$agent = db_get_row('tagente', 'nombre', $agent_name, '*');
|
||||
if (is_array($agent) === true) {
|
||||
$this->monitoringAgent = $agent;
|
||||
}
|
||||
|
@ -50,6 +50,22 @@ class GeneralTacticalView
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns whether general statistics are disabled.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function disableGeneralStatistics():bool
|
||||
{
|
||||
global $config;
|
||||
if (users_is_admin($config['id_user']) === true) {
|
||||
return false;
|
||||
} else {
|
||||
return (bool) $config['disable_general_statistics'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate all the elements that will build the dashboard
|
||||
*
|
||||
@ -109,6 +125,7 @@ class GeneralTacticalView
|
||||
{
|
||||
$data = [];
|
||||
$data['javascript'] = $this->javascript();
|
||||
$data['disableGeneralStatistics'] = $this->disableGeneralStatistics();
|
||||
$data = array_merge($data, $this->elements);
|
||||
View::render(
|
||||
'tacticalView/view',
|
||||
|
@ -429,12 +429,29 @@ class Agents extends Element
|
||||
'cutout' => 80,
|
||||
'nodata_image' => ['width' => '80%'],
|
||||
'colors' => $colors,
|
||||
'onClick' => 'redirectAgentStatus',
|
||||
];
|
||||
|
||||
// To avoid that if a value is too small it is not seen.
|
||||
$percentages = [];
|
||||
$total = array_sum($data);
|
||||
foreach ($data as $key => $value) {
|
||||
$percentage = (($value / $total) * 100);
|
||||
if ($percentage < 1 && $percentage > 0) {
|
||||
$percentage = 1;
|
||||
}
|
||||
|
||||
$percentages[$key] = format_numeric($percentage, 0);
|
||||
}
|
||||
|
||||
$data = $percentages;
|
||||
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
[
|
||||
'content' => $pie,
|
||||
'style' => 'margin: 0 auto; max-width: 80%; max-height: 220px;',
|
||||
'class' => 'clickable',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user