mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-24 14:25:18 +02:00
fixed conflicts
This commit is contained in:
commit
5b5694c5f6
@ -258,6 +258,7 @@ console_dependencies=" \
|
||||
mod_ssl \
|
||||
libzstd \
|
||||
openldap-clients \
|
||||
chromium \
|
||||
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
|
||||
execute_cmd "yum install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
|
||||
|
||||
|
@ -312,6 +312,7 @@ console_dependencies=" \
|
||||
mod_ssl \
|
||||
libzstd \
|
||||
openldap-clients \
|
||||
chromium \
|
||||
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
|
||||
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
|
||||
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
|
||||
|
@ -18,6 +18,7 @@ WORKDIR=/opt/pandora/deploy
|
||||
|
||||
S_VERSION='2022052501'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
rm -f $LOGFILE &> /dev/null # remove last log before start
|
||||
|
||||
# define default variables
|
||||
[ "$TZ" ] || TZ="Europe/Madrid"
|
||||
@ -271,6 +272,10 @@ echo -en "${cyan}Installing phantomjs...${reset}"
|
||||
/usr/bin/phantomjs --version &>> "$LOGFILE"
|
||||
check_cmd_status "Error Installing phanromjs"
|
||||
|
||||
# Chrome
|
||||
execute_cmd "wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" "Downloading google chrome"
|
||||
execute_cmd "apt install -y ./google-chrome-stable_current_amd64.deb" "Intalling google chrome"
|
||||
execute_cmd "ln -s /usr/bin/google-chrome /usr/bin/chromium-browser" "Creating /usr/bin/chromium-browser Symlink"
|
||||
|
||||
# SDK VMware perl dependencies
|
||||
vmware_dependencies=" \
|
||||
|
@ -262,13 +262,11 @@ RUN dnf install -y --setopt=tsflags=nodocs \
|
||||
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm
|
||||
|
||||
# Install utils
|
||||
RUN dnf install -y supervisor crontabs http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm --setopt=tsflags=nodocs
|
||||
RUN dnf install -y supervisor chromium crontabs http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm --setopt=tsflags=nodocs
|
||||
# SDK VMware perl dependencies
|
||||
RUN dnf install -y http://firefly.artica.es/centos8/perl-Crypt-OpenSSL-AES-0.02-1.el8.x86_64.rpm http://firefly.artica.es/centos8/perl-Crypt-SSLeay-0.73_07-1.gf.el8.x86_64.rpm perl-Net-HTTP perl-libwww-perl openssl-devel perl-Crypt-CBC perl-Bytes-Random-Secure perl-Crypt-Random-Seed perl-Math-Random-ISAAC perl-JSON http://firefly.artica.es/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm
|
||||
# Instant client Oracle
|
||||
RUN dnf install -y https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm
|
||||
# Install Phantom
|
||||
RUN dnf install -y supervisor crontabs http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm --setopt=tsflags=nodocs
|
||||
|
||||
|
||||
EXPOSE 80 443 41121 162/udp
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.767-221205
|
||||
Version: 7.0NG.767-230105
|
||||
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.767-221205"
|
||||
pandora_version="7.0NG.767-230105"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -1015,7 +1015,7 @@ my $Sem = undef;
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.767';
|
||||
use constant AGENT_BUILD => '221205';
|
||||
use constant AGENT_BUILD => '230105';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
@ -2403,6 +2403,11 @@ sub check_collections () {
|
||||
if (open (MD5_FILE, "< $ConfDir/collections/$collection_md5_file")) {
|
||||
$local_collection_md5 = <MD5_FILE>;
|
||||
close MD5_FILE;
|
||||
if ( ! defined ($local_collection_md5) ) {
|
||||
log_message ('Collection', "Size of $ConfDir/collections/$collection_md5_file is 0");
|
||||
unlink ("$ConfDir/collections/$collection_md5_file");
|
||||
$local_collection_md5 = "Size 0";
|
||||
}
|
||||
} else {
|
||||
log_message ('Collection', "Could not open dir $ConfDir/collections/$collection_md5_file");
|
||||
next;
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.767
|
||||
%define release 221205
|
||||
%define release 230105
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.767
|
||||
%define release 221205
|
||||
%define release 230105
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -10,7 +10,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.767"
|
||||
PI_BUILD="221205"
|
||||
PI_BUILD="230105"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -12,32 +12,34 @@
|
||||
#
|
||||
###################################################
|
||||
|
||||
from sys import argv
|
||||
from sys import path
|
||||
from sys import stderr
|
||||
from sys import exit
|
||||
from subprocess import Popen
|
||||
from subprocess import PIPE
|
||||
from subprocess import DEVNULL
|
||||
from subprocess import getstatusoutput
|
||||
import psutil
|
||||
try:
|
||||
from sys import argv
|
||||
from sys import stderr
|
||||
from sys import exit
|
||||
from subprocess import Popen
|
||||
from subprocess import PIPE
|
||||
from subprocess import DEVNULL
|
||||
from subprocess import getstatusoutput
|
||||
import psutil
|
||||
except ModuleNotFoundError as err:
|
||||
print("{} error: {}. Exiting...".format(argv[0], err), file=stderr)
|
||||
exit(1)
|
||||
|
||||
global module_list
|
||||
module_list = []
|
||||
version = "1.1"
|
||||
VERSION = "1.2"
|
||||
|
||||
|
||||
#########################################################################################
|
||||
# Powershell class
|
||||
#########################################################################################
|
||||
class PSCheck:
|
||||
@staticmethod
|
||||
@staticmethod
|
||||
def check_service(servicename, option=False, memcpu=False):
|
||||
"""Check services with powershell by parsing their DisplayName. Returns a dict\
|
||||
list with the name of the service and a boolean with its status.\n
|
||||
list with the name of the service and a boolean with its status.\n
|
||||
Requires service name (case insensitive)."""
|
||||
pscall = Popen(["powershell", "Get-Service", "-Name", "'*"+ str(servicename) + "*'",
|
||||
"|", "Select-Object", "-ExpandProperty", "Name"],
|
||||
"|", "Select-Object", "-ExpandProperty", "Name"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
result = pscall.communicate()
|
||||
result = str(result[0]).strip().split("\n")
|
||||
@ -50,15 +52,15 @@ class PSCheck:
|
||||
procname = PSCheck.get_serviceprocess(element)
|
||||
# Get process status
|
||||
parstatus = PSCheck.getstatus(element)
|
||||
if memcpu == True and parstatus == 1:
|
||||
if memcpu and parstatus == 1:
|
||||
usage = get_memcpu(str(procname), str(element))
|
||||
output += usage
|
||||
# Generate module with name and status
|
||||
parent = service_module(str(element), parstatus)
|
||||
output += parent
|
||||
if option == True:
|
||||
if option:
|
||||
children = PSCheck.getchildren(element, memcpu)
|
||||
if type(children) == list and len(children) > 1:
|
||||
if isinstance(children, list) and len(children) > 1:
|
||||
for child in children:
|
||||
output += child
|
||||
else:
|
||||
@ -66,7 +68,6 @@ class PSCheck:
|
||||
else:
|
||||
next
|
||||
|
||||
#if output != '':
|
||||
if output and element and procname:
|
||||
return ({"name" : element, "process" : procname, "modules": output})
|
||||
else:
|
||||
@ -84,22 +85,22 @@ class PSCheck:
|
||||
status = PSCheck.getstatus(child)
|
||||
kids += service_module(str(child), status, "Service " + str(servicename) + " - Status")
|
||||
if status:
|
||||
if memcpu == True:
|
||||
if memcpu:
|
||||
kidsusage = get_memcpu(str(child))
|
||||
for usage in kidsusage:
|
||||
kids += usage
|
||||
else:
|
||||
next
|
||||
return (kids)
|
||||
return kids
|
||||
|
||||
@staticmethod
|
||||
def getstatus(servicename):
|
||||
"""Gets the status of a given Windows service"""
|
||||
running = Popen(["powershell", "Get-Service", "-Name '" + str(servicename) +
|
||||
"' |", "Select-Object", "-ExpandProperty", "Status"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
"' |", "Select-Object", "-ExpandProperty", "Status"],
|
||||
stdout=PIPE, stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
status = running.communicate()[0].strip()
|
||||
return (int(status == "Running"))
|
||||
return int(status == "Running")
|
||||
|
||||
@staticmethod
|
||||
def get_serviceprocess(servicename):
|
||||
@ -108,7 +109,7 @@ class PSCheck:
|
||||
srv_pid = service.pid()
|
||||
process = psutil.Process(srv_pid)
|
||||
proc_name = process.name()
|
||||
return (proc_name)
|
||||
return proc_name
|
||||
|
||||
|
||||
#########################################################################################
|
||||
@ -124,13 +125,13 @@ def service_module(name, value, parent=None):
|
||||
"module_parent" : parent,
|
||||
}]
|
||||
#print ("service_module END "+str(now(0,1)))
|
||||
return (module)
|
||||
return module
|
||||
|
||||
def get_memcpu (process, servicename):
|
||||
def get_memcpu (process, servicename=None):
|
||||
"""Creates a module for Memory and CPU for a given process. Returns a list of dictionaries."""
|
||||
modules = []
|
||||
if process:
|
||||
if servicename != None:
|
||||
if servicename is not None:
|
||||
parentname = servicename
|
||||
else:
|
||||
parentname = process
|
||||
@ -147,7 +148,7 @@ def get_memcpu (process, servicename):
|
||||
"unit" : "%",
|
||||
"module_parent" : "Service "+ parentname + " - Status",
|
||||
}]
|
||||
return (modules)
|
||||
return modules
|
||||
|
||||
def proc_percentbyname(procname): ############# 03/03/2020
|
||||
"""Gets Memory and CPU usage for a given process. Returns a list."""
|
||||
@ -165,7 +166,7 @@ def proc_percentbyname(procname): ############# 03/03/2020
|
||||
except psutil.NoSuchProcess:
|
||||
next
|
||||
#print ("proc_percentbyname END "+str(now(0,1)))
|
||||
return ([sum(memory),sum(cpu)])
|
||||
return [sum(memory),sum(cpu)]
|
||||
|
||||
def win_service(servicelist, option=False, memcpu=False):
|
||||
"""Creates modules for Windows servers."""
|
||||
@ -173,7 +174,7 @@ def win_service(servicelist, option=False, memcpu=False):
|
||||
for srvc in servicelist:
|
||||
if srvc and len(srvc) > 2:
|
||||
output = PSCheck.check_service(srvc, option, memcpu)
|
||||
if output != None and output["modules"]:
|
||||
if output is not None and output["modules"]:
|
||||
modules += PSCheck.check_service(srvc.strip(), option, memcpu)["modules"]
|
||||
module_list.append(srvc)
|
||||
#winprocess = output["name"]
|
||||
@ -197,9 +198,9 @@ def lnx_service(services_list, memcpu=False):
|
||||
if sysctl == 0:
|
||||
### Systemd available
|
||||
syscall = Popen(["systemctl", "show", "-pLoadState", "-pActiveState", srvc], stdout=PIPE,
|
||||
stdin=DEVNULL, universal_newlines=True)
|
||||
stdin=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()
|
||||
srvstatus= result[0].strip().lower().split("\n")
|
||||
srvstatus = result[0].strip().lower().split("\n")
|
||||
if srvstatus[0] == "loadstate=not-found":
|
||||
next
|
||||
else:
|
||||
@ -212,7 +213,7 @@ def lnx_service(services_list, memcpu=False):
|
||||
elif sysctl != 0 and servic == 0:
|
||||
### Systemd not available, switch to service command
|
||||
syscall = Popen(["service", srvc, "status"], stdout=PIPE,
|
||||
stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
stdin=DEVNULL, stderr=DEVNULL, universal_newlines=True)
|
||||
result = syscall.communicate()[0].lower()
|
||||
if "is running" in result:
|
||||
modules += service_module(srvc, 1)
|
||||
@ -223,15 +224,15 @@ def lnx_service(services_list, memcpu=False):
|
||||
else:
|
||||
next
|
||||
else:
|
||||
print ("No systemd or service commands available. Exiting...", file=stderr)
|
||||
print("No systemd or service commands available. Exiting...", file=stderr)
|
||||
exit()
|
||||
if status:
|
||||
module_list.append(srvc)
|
||||
if memcpu == True:
|
||||
if memcpu:
|
||||
modules += get_memcpu(srvc, None)
|
||||
|
||||
for m in modules:
|
||||
print_module (m, 1)
|
||||
print_module(m, 1)
|
||||
|
||||
|
||||
#########################################################################################
|
||||
@ -339,7 +340,7 @@ def print_module(module, str_flag=False):
|
||||
|
||||
#### Print flag
|
||||
if str_flag is not False:
|
||||
print (module_xml)
|
||||
print(module_xml)
|
||||
|
||||
return (module_xml)
|
||||
|
||||
@ -362,7 +363,7 @@ def main():
|
||||
"postfix", "mysqld", "postgres", "oracle", "mongod"]
|
||||
discover(OS, service_list)
|
||||
else:
|
||||
print ("OS not recognized. Exiting...", file=stderr)
|
||||
print("OS not recognized. Exiting...", file=stderr)
|
||||
exit()
|
||||
|
||||
def discover(osyst, servicelist):
|
||||
@ -383,24 +384,24 @@ def discover(osyst, servicelist):
|
||||
elif osyst == "Linux":
|
||||
lnx_service(servicelist, memcpu)
|
||||
else:
|
||||
print ("\nPandora FMS Autodiscovery plugin v{}".format(version))
|
||||
print ("Checks the status of the services in list and monitors CPU and Memory for each of them.\n")
|
||||
print ("Usage:")
|
||||
print ("{} [options] [--usage]".format(argv[0]))
|
||||
print ("--help")
|
||||
print ("\tPrints this help screen")
|
||||
print ("--default")
|
||||
print ("\tRuns this tool with default monitoring.")
|
||||
print ("\tServices monitored by default for {}:".format(osyst))
|
||||
print ("\t",", ".join(servicelist))
|
||||
print ("--list \"<srvc1,srvc2,srvc3>\"")
|
||||
print ("\tReplaces default services for a given list (comma-separated)")
|
||||
print("\nPandora FMS Autodiscovery plugin v{}".format(VERSION))
|
||||
print("Checks the status of the services in list and monitors CPU and Memory for each of them.\n")
|
||||
print("Usage:")
|
||||
print("{} [options] [--usage]".format(argv[0]))
|
||||
print("--help")
|
||||
print("\tPrints this help screen")
|
||||
print("--default")
|
||||
print("\tRuns this tool with default monitoring.")
|
||||
print("\tServices monitored by default for {}:".format(osyst))
|
||||
print("\t", ", ".join(servicelist))
|
||||
print("--list \"<srvc1,srvc2,srvc3>\"")
|
||||
print("\tReplaces default services for a given list (comma-separated)")
|
||||
if osyst == "Windows":
|
||||
print ("\tEach element of the list will be treated as a regexp, but they must be over 2 characters.")
|
||||
print ("\tElements under 2 characters will be discarded.")
|
||||
print ("--usage")
|
||||
print ("\tAdds modules for CPU and Memory usage per service/process (optional, can take some time).\n")
|
||||
print("\tEach element of the list will be treated as a regexp, but they must be over 2 characters.")
|
||||
print("\tElements under 2 characters will be discarded.")
|
||||
print("--usage")
|
||||
print("\tAdds modules for CPU and Memory usage per service/process (optional, can take some time).\n")
|
||||
|
||||
|
||||
##### RUN ####
|
||||
main()
|
||||
main()
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{221205}
|
||||
{230105}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.767 Build 221205")
|
||||
#define PANDORA_VERSION ("7.0NG.767 Build 230105")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.767(Build 221205))"
|
||||
VALUE "ProductVersion", "(7.0NG.767(Build 230105))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0NG.767-221205
|
||||
Version: 7.0NG.767-230105
|
||||
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.767-221205"
|
||||
pandora_version="7.0NG.767-230105"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -9,13 +9,24 @@
|
||||
],
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.2.0"
|
||||
"php": "8.0.0"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"mpdf/mpdf": "^8.0.15",
|
||||
"swiftmailer/swiftmailer": "^6.0",
|
||||
"amphp/parallel-functions": "^1.0"
|
||||
"amphp/parallel-functions": "^1.0",
|
||||
"chrome-php/chrome": "^1.7.1",
|
||||
"artica/phpchartjs": "^1.0"
|
||||
},
|
||||
"repositories": {
|
||||
"phpchartjs": {
|
||||
"type": "path",
|
||||
"url": "../../../phpchartjs",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
874
pandora_console/composer.lock
generated
874
pandora_console/composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "643ac0dc8a8e1f129104399054f8dd0c",
|
||||
"content-hash": "be2ad3d9d4df55d7ccb87981e82c4932",
|
||||
"packages": [
|
||||
{
|
||||
"name": "amphp/amp",
|
||||
@ -549,6 +549,205 @@
|
||||
],
|
||||
"time": "2021-10-25T18:29:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "artica/phpchartjs",
|
||||
"version": "v1.0.2",
|
||||
"dist": {
|
||||
"type": "path",
|
||||
"url": "../../../phpchartjs",
|
||||
"reference": "4957e7cd699e50cee8e0ba7304e1423aafb2cad2"
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-json": "*",
|
||||
"halfpastfouram/collection": "1.0.0",
|
||||
"laminas/laminas-json": ">3.1.2",
|
||||
"php": ">=7.2",
|
||||
"symfony/var-dumper": "^3.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "*",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"sensiolabs/security-checker": "^5.0",
|
||||
"squizlabs/php_codesniffer": "3.5.3"
|
||||
},
|
||||
"type": "package",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Artica\\PHPChartJS\\": "src/",
|
||||
"Test\\": "test/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": [
|
||||
"./vendor/bin/phpunit"
|
||||
],
|
||||
"cs-check": [
|
||||
"./vendor/bin/phpcs"
|
||||
],
|
||||
"cs-fix": [
|
||||
"./vendor/bin/phpcbf"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"AGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Bob Kruithof"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Barbero"
|
||||
}
|
||||
],
|
||||
"description": "PHP library for ChartJS",
|
||||
"homepage": "https://artica.es/",
|
||||
"keywords": [
|
||||
"chartjs",
|
||||
"graph",
|
||||
"php"
|
||||
],
|
||||
"transport-options": {
|
||||
"symlink": false,
|
||||
"relative": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "chrome-php/chrome",
|
||||
"version": "v1.7.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chrome-php/chrome.git",
|
||||
"reference": "5783c749b2ee385d1c481b0906f1b8acef0296e4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chrome-php/chrome/zipball/5783c749b2ee385d1c481b0906f1b8acef0296e4",
|
||||
"reference": "5783c749b2ee385d1c481b0906f1b8acef0296e4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"chrome-php/wrench": "^1.3",
|
||||
"evenement/evenement": "^3.0.1",
|
||||
"monolog/monolog": "^1.27.1 || ^2.8 || ^3.2",
|
||||
"php": "^7.3 || ^8.0",
|
||||
"psr/log": "^1.1 || ^2.0 || ^3.0",
|
||||
"symfony/filesystem": "^4.4 || ^5.0 || ^6.0",
|
||||
"symfony/polyfill-mbstring": "^1.26",
|
||||
"symfony/process": "^4.4 || ^5.0 || ^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.1",
|
||||
"phpunit/phpunit": "^9.5.23",
|
||||
"symfony/var-dumper": "^4.4 || ^5.0 || ^6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"HeadlessChromium\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
},
|
||||
{
|
||||
"name": "Enrico Dias",
|
||||
"email": "enrico@enricodias.com",
|
||||
"homepage": "https://github.com/enricodias"
|
||||
}
|
||||
],
|
||||
"description": "Instrument headless chrome/chromium instances from PHP",
|
||||
"keywords": [
|
||||
"browser",
|
||||
"chrome",
|
||||
"chromium",
|
||||
"crawl",
|
||||
"headless",
|
||||
"pdf",
|
||||
"puppeteer",
|
||||
"screenshot"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/chrome-php/chrome/issues",
|
||||
"source": "https://github.com/chrome-php/chrome/tree/v1.7.1"
|
||||
},
|
||||
"time": "2022-09-04T21:11:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "chrome-php/wrench",
|
||||
"version": "v1.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chrome-php/wrench.git",
|
||||
"reference": "68b8282d5d0d54a519c3212ee3e4c35bef40b7d9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chrome-php/wrench/zipball/68b8282d5d0d54a519c3212ee3e4c35bef40b7d9",
|
||||
"reference": "68b8282d5d0d54a519c3212ee3e4c35bef40b7d9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-sockets": "*",
|
||||
"php": "^7.3 || ^8.0",
|
||||
"psr/log": "^1.1 || ^2.0 || ^3.0",
|
||||
"symfony/polyfill-php80": "^1.26"
|
||||
},
|
||||
"conflict": {
|
||||
"wrench/wrench": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.1",
|
||||
"phpunit/phpunit": "^9.5.23"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"bin-links": true,
|
||||
"forward-command": false
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Wrench\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Graham Campbell",
|
||||
"email": "hello@gjcampbell.co.uk",
|
||||
"homepage": "https://github.com/GrahamCampbell"
|
||||
}
|
||||
],
|
||||
"description": "A simple PHP WebSocket implementation",
|
||||
"keywords": [
|
||||
"WebSockets",
|
||||
"hybi",
|
||||
"websocket"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/chrome-php/wrench/issues",
|
||||
"source": "https://github.com/chrome-php/wrench/tree/v1.3.0"
|
||||
},
|
||||
"time": "2022-08-28T11:42:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/lexer",
|
||||
"version": "1.2.2",
|
||||
@ -693,6 +892,265 @@
|
||||
],
|
||||
"time": "2021-10-11T09:18:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"version": "v3.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/igorw/evenement.git",
|
||||
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": [
|
||||
"event-dispatcher",
|
||||
"event-emitter"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/igorw/evenement/issues",
|
||||
"source": "https://github.com/igorw/evenement/tree/master"
|
||||
},
|
||||
"time": "2017-07-23T21:35:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "halfpastfouram/collection",
|
||||
"version": "v1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/halfpastfouram/collection.git",
|
||||
"reference": "0862d0b431fef9dc2245518dc06b86ff00dcd102"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/halfpastfouram/collection/zipball/0862d0b431fef9dc2245518dc06b86ff00dcd102",
|
||||
"reference": "0862d0b431fef9dc2245518dc06b86ff00dcd102",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6.0 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeclimate/php-test-reporter": "dev-master",
|
||||
"phpunit/phpunit": "5.2.*"
|
||||
},
|
||||
"type": "package",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Test\\": "test/",
|
||||
"Halfpastfour\\Collection\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"AGPL 3.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Bob Kruithof"
|
||||
}
|
||||
],
|
||||
"description": "A flexible PHP Collection complete with custom Iterator.",
|
||||
"homepage": "http://github.com/halfpastfouram/collection",
|
||||
"keywords": [
|
||||
"collection",
|
||||
"php"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/halfpastfouram/collection/issues",
|
||||
"source": "https://github.com/halfpastfouram/collection/tree/master"
|
||||
},
|
||||
"time": "2016-12-18T13:04:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-json",
|
||||
"version": "3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-json.git",
|
||||
"reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-json/zipball/7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec",
|
||||
"reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "~8.0.0 || ~8.1.0 || ~8.2.0"
|
||||
},
|
||||
"conflict": {
|
||||
"zendframework/zend-json": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"laminas/laminas-coding-standard": "~2.4.0",
|
||||
"laminas/laminas-stdlib": "^2.7.7 || ^3.1",
|
||||
"phpunit/phpunit": "^9.5.25"
|
||||
},
|
||||
"suggest": {
|
||||
"laminas/laminas-json-server": "For implementing JSON-RPC servers",
|
||||
"laminas/laminas-xml2json": "For converting XML documents to JSON"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laminas\\Json\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
|
||||
"homepage": "https://laminas.dev",
|
||||
"keywords": [
|
||||
"json",
|
||||
"laminas"
|
||||
],
|
||||
"support": {
|
||||
"chat": "https://laminas.dev/chat",
|
||||
"docs": "https://docs.laminas.dev/laminas-json/",
|
||||
"forum": "https://discourse.laminas.dev",
|
||||
"issues": "https://github.com/laminas/laminas-json/issues",
|
||||
"rss": "https://github.com/laminas/laminas-json/releases.atom",
|
||||
"source": "https://github.com/laminas/laminas-json"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://funding.communitybridge.org/projects/laminas-project",
|
||||
"type": "community_bridge"
|
||||
}
|
||||
],
|
||||
"time": "2022-10-17T04:06:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Seldaek/monolog.git",
|
||||
"reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
|
||||
"reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2",
|
||||
"psr/log": "^1.0.1 || ^2.0 || ^3.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
|
||||
"doctrine/couchdb": "~1.0@dev",
|
||||
"elasticsearch/elasticsearch": "^7 || ^8",
|
||||
"ext-json": "*",
|
||||
"graylog2/gelf-php": "^1.4.2",
|
||||
"guzzlehttp/guzzle": "^7.4",
|
||||
"guzzlehttp/psr7": "^2.2",
|
||||
"mongodb/mongodb": "^1.8",
|
||||
"php-amqplib/php-amqplib": "~2.4 || ^3",
|
||||
"phpspec/prophecy": "^1.15",
|
||||
"phpstan/phpstan": "^0.12.91",
|
||||
"phpunit/phpunit": "^8.5.14",
|
||||
"predis/predis": "^1.1 || ^2.0",
|
||||
"rollbar/rollbar": "^1.3 || ^2 || ^3",
|
||||
"ruflin/elastica": "^7",
|
||||
"swiftmailer/swiftmailer": "^5.3|^6.0",
|
||||
"symfony/mailer": "^5.4 || ^6",
|
||||
"symfony/mime": "^5.4 || ^6"
|
||||
},
|
||||
"suggest": {
|
||||
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
||||
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
||||
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
|
||||
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
||||
"ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
|
||||
"ext-mbstring": "Allow to work properly with unicode symbols",
|
||||
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
|
||||
"ext-openssl": "Required to send log messages using SSL",
|
||||
"ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
|
||||
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
||||
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
|
||||
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
||||
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
||||
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Monolog\\": "src/Monolog"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jordi Boggiano",
|
||||
"email": "j.boggiano@seld.be",
|
||||
"homepage": "https://seld.be"
|
||||
}
|
||||
],
|
||||
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
|
||||
"homepage": "https://github.com/Seldaek/monolog",
|
||||
"keywords": [
|
||||
"log",
|
||||
"logging",
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Seldaek/monolog/issues",
|
||||
"source": "https://github.com/Seldaek/monolog/tree/2.8.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/Seldaek",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-07-24T11:55:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mpdf/mpdf",
|
||||
"version": "v8.0.15",
|
||||
@ -940,30 +1398,30 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "1.1.4",
|
||||
"version": "2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "d49695b909c3b7628b6289db5479a1c204601f11"
|
||||
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
|
||||
"reference": "d49695b909c3b7628b6289db5479a1c204601f11",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
|
||||
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
"php": ">=8.0.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1.x-dev"
|
||||
"dev-master": "2.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Log\\": "Psr/Log/"
|
||||
"Psr\\Log\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -984,9 +1442,9 @@
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/log/tree/1.1.4"
|
||||
"source": "https://github.com/php-fig/log/tree/2.0.0"
|
||||
},
|
||||
"time": "2021-05-03T11:20:27+00:00"
|
||||
"time": "2021-07-14T16:41:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "setasign/fpdi",
|
||||
@ -1136,6 +1594,152 @@
|
||||
"abandoned": "symfony/mailer",
|
||||
"time": "2021-10-18T15:26:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v5.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "ac09569844a9109a5966b9438fc29113ce77cf51"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51",
|
||||
"reference": "ac09569844a9109a5966b9438fc29113ce77cf51",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.8",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Filesystem\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v5.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-09-21T19:53:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.27.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ctype": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Ctype\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Gert de Pagter",
|
||||
"email": "BackEndTea@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill for ctype functions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"ctype",
|
||||
"polyfill",
|
||||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-iconv",
|
||||
"version": "v1.24.0",
|
||||
@ -1392,16 +1996,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.24.0",
|
||||
"version": "v1.27.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
|
||||
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1416,7 +2020,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.23-dev"
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
@ -1424,12 +2028,12 @@
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@ -1455,7 +2059,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1471,7 +2075,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-11-30T18:21:41+00:00"
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php72",
|
||||
@ -1548,6 +2152,232 @@
|
||||
}
|
||||
],
|
||||
"time": "2021-05-27T09:17:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.27.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php80\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ion Bazan",
|
||||
"email": "ion.bazan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v5.4.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1",
|
||||
"reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Process\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Executes commands in sub-processes",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/process/tree/v5.4.11"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-06-27T16:58:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v3.4.47",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-dumper.git",
|
||||
"reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/0719f6cf4633a38b2c1585140998579ce23b4b7d",
|
||||
"reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5.9|>=7.0.8",
|
||||
"symfony/polyfill-mbstring": "~1.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-iconv": "*",
|
||||
"twig/twig": "~1.34|~2.4"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
|
||||
"ext-intl": "To show region name in time zone dump",
|
||||
"ext-symfony_debug": ""
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"Resources/functions/dump.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\VarDumper\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony mechanism for exploring and dumping PHP variables",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"dump"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
@ -1559,7 +2389,7 @@
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
"php": "7.2.0"
|
||||
"php": "8.0.0"
|
||||
},
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
||||
|
@ -1666,4 +1666,24 @@ godmode/um_client/vendor/sebastian/object-enumerator
|
||||
godmode/um_client/vendor/sebastian
|
||||
godmode/um_client/vendor
|
||||
update_manager_client/resources/styles/pandora.css
|
||||
enterprise/views/cluster/edit.php
|
||||
enterprise/views/cluster/list.php
|
||||
enterprise/views/cluster/view.php
|
||||
enterprise/include/lib/Cluster.php
|
||||
enterprise/include/lib/ClusterModule.php
|
||||
enterprise/include/lib/ClusterViewer/ClusterManager.php
|
||||
enterprise/include/lib/ClusterViewer/ClusterWizard.php
|
||||
enterprise/operation/cluster/cluster.php
|
||||
enterprise/meta/general/upload_head_image.php
|
||||
general/first_task/transactional_list.php
|
||||
enterprise/include/ajax/transactional.ajax.php
|
||||
enterprise/include/class/Transactionalmap.class.php
|
||||
enterprise/include/help/es/help_transactional_map_phases.php
|
||||
enterprise/include/javascript/transactional/TransactionalController.js
|
||||
enterprise/include/functions_transactional.php
|
||||
enterprise/operation/agentes/manage_transmap.php
|
||||
enterprise/operation/agentes/manage_transmap_creation.php
|
||||
enterprise/operation/agentes/manage_transmap_creation_phases_data.php
|
||||
enterprise/operation/agentes/transactional_map.php
|
||||
include/test.js
|
||||
include/web2image.js
|
||||
|
49
pandora_console/extras/mr/60.sql
Normal file
49
pandora_console/extras/mr/60.sql
Normal file
File diff suppressed because one or more lines are too long
@ -68,7 +68,7 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no cluster
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
?>
|
||||
|
||||
<form action='index.php?sec=estado&sec2=enterprise/operation/cluster/cluster&op=new' method="post">
|
||||
<form action='index.php?sec=estado&sec2=operation/cluster/cluster&op=new' method="post">
|
||||
<input type="submit" class="button_task ui_toggle" value="<?php echo __('Create Cluster'); ?>" />
|
||||
</form>
|
||||
|
||||
@ -76,4 +76,4 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no cluster
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
global $networkmaps_write;
|
||||
global $networkmaps_manage;
|
||||
check_login();
|
||||
ui_require_css_file('first_task');
|
||||
?>
|
||||
<?php
|
||||
ui_print_info_message(['no_close' => true, 'message' => __('There are no transactions defined yet.') ]);
|
||||
|
||||
if ($networkmaps_write || $networkmaps_manage) {
|
||||
?>
|
||||
|
||||
<div class="new_task">
|
||||
<div class="image_task">
|
||||
<?php echo html_print_image('images/first_task/icono_grande_topology.png', true, ['title' => __('Transactions')]); ?>
|
||||
</div>
|
||||
<div class="text_task">
|
||||
<h3> <?php echo __('Create Transactions'); ?></h3><p id="description_task">
|
||||
<?php
|
||||
echo __(
|
||||
'The new transactional server allows you to execute tasks dependent on the others following a user-defined design. This means that it is possible to coordinate several executions to check a target at a given time.
|
||||
|
||||
Transaction graphs represent the different processes within our infrastructure that we use to deliver our service.'
|
||||
);
|
||||
?>
|
||||
</p>
|
||||
<form action="index.php?sec=network&sec2=enterprise/operation/agentes/manage_transmap_creation&create_transaction=1" method="post">
|
||||
<input type="submit" class="button_task" value="<?php echo __('Create Transactions'); ?>" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
@ -91,7 +91,7 @@ $login_body_class = '';
|
||||
// Overrides the default background with the defined by the user.
|
||||
if (!empty($config['login_background'])) {
|
||||
$background_url = 'images/backgrounds/'.$config['login_background'];
|
||||
$login_body_style = "style=\"background:linear-gradient(74deg, rgba(2, 2, 2, 0.333) 36%, transparent 36%), url('".$background_url."');\"";
|
||||
$login_body_style = "style=\"background-size: 100% 100% !important;background:linear-gradient(74deg, rgba(2, 2, 2, 0.333) 36%, transparent 36%), url('".$background_url."');\"";
|
||||
}
|
||||
|
||||
// Support for Internet Explorer and Microsoft Edge browsers
|
||||
|
@ -59,6 +59,7 @@ ui_print_warning_message(
|
||||
]
|
||||
);
|
||||
|
||||
$table = new StdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
$table->data = [];
|
||||
|
@ -872,6 +872,35 @@ foreach ($fields as $field) {
|
||||
true,
|
||||
true
|
||||
);
|
||||
} else if ($field['is_link_enabled']) {
|
||||
list($link_text, $link_url) = json_decode($custom_value, true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
$link_text = '';
|
||||
$link_url = '';
|
||||
}
|
||||
|
||||
$data_field[1] = '<span style="line-height: 3.5;">'.__('Link text:').'</span>';
|
||||
$data_field[1] .= '<br>';
|
||||
$data_field[1] .= html_print_textarea(
|
||||
'customvalue_'.$field['id_field'].'[]',
|
||||
2,
|
||||
65,
|
||||
$link_text,
|
||||
'class="min-height-30px',
|
||||
true
|
||||
);
|
||||
$data_field[1] .= '<br>';
|
||||
$data_field[1] .= '<span style="line-height: 3.5;">'.__('Link URL:').'</span>';
|
||||
$data_field[1] .= '<br>';
|
||||
$data_field[1] .= html_print_textarea(
|
||||
'customvalue_'.$field['id_field'].'[]',
|
||||
2,
|
||||
65,
|
||||
$link_url,
|
||||
'class="min-height-30px',
|
||||
true
|
||||
);
|
||||
} else {
|
||||
$data_field[1] = html_print_textarea(
|
||||
'customvalue_'.$field['id_field'],
|
||||
|
@ -238,7 +238,15 @@ if ($create_agent) {
|
||||
$field_values = [];
|
||||
|
||||
foreach ($fields as $field) {
|
||||
$field_values[$field['id_field']] = (string) get_parameter_post('customvalue_'.$field['id_field'], '');
|
||||
$field_value = get_parameter_post('customvalue_'.$field['id_field'], '');
|
||||
|
||||
if ($field['is_link_enabled']) {
|
||||
$field_value = json_encode($field_value);
|
||||
} else {
|
||||
$field_value = (string) $field_value;
|
||||
}
|
||||
|
||||
$field_values[$field['id_field']] = $field_value;
|
||||
}
|
||||
|
||||
// Check if agent exists (BUG WC-50518-2).
|
||||
@ -999,7 +1007,22 @@ if ($update_agent) {
|
||||
$field_values = [];
|
||||
|
||||
foreach ($fields as $field) {
|
||||
$field_values[$field['id_field']] = (string) get_parameter_post('customvalue_'.$field['id_field'], '');
|
||||
$field_value = get_parameter_post('customvalue_'.$field['id_field'], '');
|
||||
|
||||
if ($field['is_link_enabled']) {
|
||||
if ($field_value[1] !== '') {
|
||||
$parsed_url = parse_url($field_value[1]);
|
||||
if (empty($parsed_url['scheme']) === true) {
|
||||
$field_value[1] = 'http://'.ltrim($field_value[1], '/');
|
||||
}
|
||||
}
|
||||
|
||||
$field_value = json_encode($field_value);
|
||||
} else {
|
||||
$field_value = (string) $field_value;
|
||||
}
|
||||
|
||||
$field_values[$field['id_field']] = $field_value;
|
||||
}
|
||||
|
||||
foreach ($field_values as $key => $value) {
|
||||
@ -2095,6 +2118,9 @@ if ($delete_module) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Before delete the main module, check and delete the childrens from the original module.
|
||||
module_check_childrens_and_delete($id_borrar_modulo);
|
||||
|
||||
// Also call base function to delete modules.
|
||||
modules_delete_agent_module($id_borrar_modulo);
|
||||
|
||||
@ -2450,6 +2476,11 @@ switch ($tab) {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Change description when edit port
|
||||
$( "#text-tcp_port" ).change(function() {
|
||||
$( "#textarea_description" ).text(`Checks port ${$( "#text-tcp_port" ).val()} is opened`);
|
||||
});
|
||||
|
||||
// Set the position and width of the subtab
|
||||
/*
|
||||
|
@ -30,6 +30,8 @@ $display_on_front = (bool) get_parameter('display_on_front', 0);
|
||||
$is_password_type = (bool) get_parameter('is_password_type', 0);
|
||||
$is_combo_enable = (bool) get_parameter('is_combo_enable', 0);
|
||||
$combo_values = (string) get_parameter('combo_values', '');
|
||||
$is_link_enabled = (bool) get_parameter('is_link_enabled', 0);
|
||||
|
||||
// Header.
|
||||
if ($id_field) {
|
||||
$field = db_get_row_filter('tagent_custom_fields', ['id_field' => $id_field]);
|
||||
@ -38,6 +40,7 @@ if ($id_field) {
|
||||
$is_password_type = $field['is_password_type'];
|
||||
$combo_values = $field['combo_values'] ? $field['combo_values'] : '';
|
||||
$is_combo_enable = $config['is_combo_enable'];
|
||||
$is_link_enabled = $field['is_link_enabled'];
|
||||
ui_print_page_header(__('Update agent custom field'), 'images/custom_field.png', false, '', true, '');
|
||||
} else {
|
||||
ui_print_page_header(__('Create agent custom field'), 'images/custom_field.png', false, '', true, '');
|
||||
@ -128,6 +131,17 @@ $table->data[4][1] = html_print_textarea(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[5][0] = __('Link type');
|
||||
$table->data[5][1] = html_print_checkbox_switch_extended(
|
||||
'is_link_enabled',
|
||||
1,
|
||||
$is_link_enabled,
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
);
|
||||
|
||||
echo '<form name="field" method="post" action="index.php?sec=gagente&sec2=godmode/agentes/fields_manager">';
|
||||
html_print_table($table);
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
@ -167,25 +181,46 @@ $(document).ready (function () {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if ($('input[type=checkbox][name=is_link_enabled]').is(":checked") === true) {
|
||||
$('#configure_field-1').hide();
|
||||
$('#configure_field-3').hide();
|
||||
} else {
|
||||
$('#configure_field-1').show();
|
||||
$('#configure_field-3').show();
|
||||
}
|
||||
|
||||
$('input[type=checkbox][name=is_link_enabled]').change(function () {
|
||||
if( $(this).is(":checked") ){
|
||||
$('#configure_field-1').hide();
|
||||
$('#configure_field-3').hide();
|
||||
} else{
|
||||
$('#configure_field-1').show();
|
||||
$('#configure_field-3').show();
|
||||
}
|
||||
});
|
||||
|
||||
$('input[type=checkbox][name=is_combo_enable]').change(function () {
|
||||
if( $(this).is(":checked") ){
|
||||
$('#configure_field-4').show();
|
||||
dialog_message("#message_no_set_password");
|
||||
$('#configure_field-1').hide();
|
||||
$('#configure_field-5').hide();
|
||||
}
|
||||
else{
|
||||
$('#configure_field-4').hide();
|
||||
$('#configure_field-1').show();
|
||||
$('#configure_field-5').show();
|
||||
}
|
||||
});
|
||||
$('input[type=checkbox][name=is_password_type]').change(function () {
|
||||
if( $(this).is(":checked")){
|
||||
dialog_message("#message_no_set_combo");
|
||||
$('#configure_field-3').hide();
|
||||
$('#configure_field-5').hide();
|
||||
}
|
||||
else{
|
||||
$('#configure_field-3').show();
|
||||
$('#configure_field-5').show();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -38,11 +38,12 @@ $display_on_front = (int) get_parameter('display_on_front', 0);
|
||||
$is_password_type = (int) get_parameter('is_password_type', 0);
|
||||
$combo_values = (string) get_parameter('combo_values', '');
|
||||
$combo_value_selected = (string) get_parameter('combo_value_selected', '');
|
||||
$is_link_enabled = (bool) get_parameter('is_link_enabled', 0);
|
||||
|
||||
// Create field.
|
||||
if ($create_field) {
|
||||
// Check if name field is empty.
|
||||
if ($name == '') {
|
||||
if ($name === '') {
|
||||
ui_print_error_message(__('The name must not be empty'));
|
||||
} else if ($name == db_get_value('name', 'tagent_custom_fields', 'name', $name)) {
|
||||
ui_print_error_message(__('The name must be unique'));
|
||||
@ -54,6 +55,7 @@ if ($create_field) {
|
||||
'display_on_front' => $display_on_front,
|
||||
'is_password_type' => $is_password_type,
|
||||
'combo_values' => $combo_values,
|
||||
'is_link_enabled' => $is_link_enabled,
|
||||
]
|
||||
);
|
||||
ui_print_success_message(__('Field successfully created'));
|
||||
@ -63,12 +65,13 @@ if ($create_field) {
|
||||
// Update field.
|
||||
if ($update_field) {
|
||||
// Check if name field is empty.
|
||||
if ($name != '') {
|
||||
if ($name !== '') {
|
||||
$values = [
|
||||
'name' => $name,
|
||||
'display_on_front' => $display_on_front,
|
||||
'is_password_type' => $is_password_type,
|
||||
'combo_values' => $combo_values,
|
||||
'is_link_enabled' => $is_link_enabled,
|
||||
];
|
||||
|
||||
$result = db_process_sql_update('tagent_custom_fields', $values, ['id_field' => $id_field]);
|
||||
|
@ -732,17 +732,15 @@ if ($agents !== false) {
|
||||
}
|
||||
|
||||
if ($agent['id_os'] == CLUSTER_OS_ID) {
|
||||
if (enterprise_installed()) {
|
||||
$cluster = PandoraFMS\Enterprise\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2='.ENTERPRISE_DIR;
|
||||
$url .= '/operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=update&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.ui_print_truncate_text($agent['alias'], 'agent_medium').'</a>';
|
||||
}
|
||||
$cluster = PandoraFMS\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2=';
|
||||
$url .= 'operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=update&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.ui_print_truncate_text($agent['alias'], 'agent_medium').'</a>';
|
||||
} else {
|
||||
echo '<a alt ='.$agent['nombre']." href='index.php?sec=gagente&
|
||||
sec2=godmode/agentes/configurar_agente&tab=$main_tab&
|
||||
@ -792,18 +790,16 @@ if ($agents !== false) {
|
||||
echo '</span><div class="left actions clear_left" style=" visibility: hidden">';
|
||||
if ($check_aw) {
|
||||
if ($agent['id_os'] == CLUSTER_OS_ID) {
|
||||
if (enterprise_installed()) {
|
||||
$cluster = PandoraFMS\Enterprise\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2='.ENTERPRISE_DIR;
|
||||
$url .= '/operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=update&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.__('Edit').'</a>';
|
||||
echo ' | ';
|
||||
}
|
||||
$cluster = PandoraFMS\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2=';
|
||||
$url .= 'operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=update&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.__('Edit').'</a>';
|
||||
echo ' | ';
|
||||
} else {
|
||||
echo '<a href="index.php?sec=gagente&
|
||||
sec2=godmode/agentes/configurar_agente&tab=main&
|
||||
@ -825,17 +821,15 @@ if ($agents !== false) {
|
||||
echo ' | ';
|
||||
|
||||
if ($agent['id_os'] == CLUSTER_OS_ID) {
|
||||
if (enterprise_installed()) {
|
||||
$cluster = PandoraFMS\Enterprise\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2='.ENTERPRISE_DIR;
|
||||
$url .= '/operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=view&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.__('View').'</a>';
|
||||
}
|
||||
$cluster = PandoraFMS\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2=';
|
||||
$url .= 'operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=view&id='.$cluster->id()
|
||||
);
|
||||
echo '<a href="'.$url.'">'.__('View').'</a>';
|
||||
} else {
|
||||
echo '<a href="index.php?sec=estado
|
||||
&sec2=operation/agentes/ver_agente
|
||||
|
@ -52,13 +52,13 @@ if (!isset($policy_page)) {
|
||||
echo '<form id="create_module_type" method="post" action="'.$url.'">';
|
||||
|
||||
echo '<table width="100%" cellpadding="2" cellspacing="2" class="databox filters" >';
|
||||
echo "<tr><td class='datos bolder w20p'>";
|
||||
echo __('Search').' '.html_print_input_text(
|
||||
echo "<tr><td class='datos bolder w12p'><span class='mrgn_right_7px'>";
|
||||
echo __('Search').'</span>'.html_print_input_text(
|
||||
'search_string',
|
||||
$search_string,
|
||||
'',
|
||||
15,
|
||||
255,
|
||||
5,
|
||||
5,
|
||||
true
|
||||
);
|
||||
html_print_input_hidden('search', 1);
|
||||
@ -73,7 +73,6 @@ echo '</td>';
|
||||
echo "<td class='datos w10p'>";
|
||||
html_print_submit_button(__('Filter'), 'filter', false, 'class="sub search"');
|
||||
echo '</td>';
|
||||
echo "<td class='datos w10p'></td>";
|
||||
echo '</form>';
|
||||
// Check if there is at least one server of each type available to assign that
|
||||
// kind of modules. If not, do not show server type in combo.
|
||||
@ -179,7 +178,7 @@ if (($policy_page) || (isset($agent))) {
|
||||
// Create module/type combo.
|
||||
echo '<form id="create_module_type" method="post" action="'.$url.'">';
|
||||
if (!$policy_page) {
|
||||
echo '<td class="datos w20p bolder">';
|
||||
echo '<td class="datos w15p bolder">';
|
||||
echo __('Show in hierachy mode');
|
||||
if ($checked == 'true') {
|
||||
$checked = true;
|
||||
@ -198,8 +197,8 @@ if (($policy_page) || (isset($agent))) {
|
||||
echo '</td>';
|
||||
}
|
||||
|
||||
echo '<td class="datos w20p bolder">';
|
||||
echo __('<p>Type</p>');
|
||||
echo '<td class="datos w20p bolder lign_right"><span class="mrgn_right_7px">';
|
||||
echo __('Type').'</span>';
|
||||
html_print_select(
|
||||
$modules,
|
||||
'moduletype',
|
||||
@ -216,7 +215,7 @@ if (($policy_page) || (isset($agent))) {
|
||||
);
|
||||
html_print_input_hidden('edit_module', 1);
|
||||
echo '</td>';
|
||||
echo '<td class="datos w10p">';
|
||||
echo '<td class="datos w5p">';
|
||||
echo '<input align="right" name="updbutton" type="submit" class="sub next" value="'.__('Create').'">';
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
@ -247,6 +246,8 @@ if ($module_action === 'delete') {
|
||||
$print_result_msg = true;
|
||||
$count_correct_delete_modules = 0;
|
||||
foreach ($id_agent_modules_delete as $id_agent_module_del) {
|
||||
// Before delete the main module, check and delete the childrens from the original module.
|
||||
module_check_childrens_and_delete($id_agent_module_del);
|
||||
$id_grupo = (int) agents_get_agent_group($id_agente);
|
||||
$all_groups = agents_get_all_groups_agent($id_agente, $id_grupo);
|
||||
|
||||
@ -445,8 +446,6 @@ if ($module_action === 'delete') {
|
||||
}
|
||||
} else if ($module_action === 'disable') {
|
||||
$id_agent_modules_disable = (array) get_parameter('id_delete');
|
||||
|
||||
$count_correct_delete_modules = 0;
|
||||
$updated_count = 0;
|
||||
|
||||
foreach ($id_agent_modules_disable as $id_agent_module_disable) {
|
||||
@ -490,6 +489,52 @@ if ($module_action === 'delete') {
|
||||
);
|
||||
}
|
||||
}
|
||||
} else if ($module_action === 'enable') {
|
||||
$id_agent_modules_enable = (array) get_parameter('id_delete');
|
||||
$updated_count = 0;
|
||||
|
||||
foreach ($id_agent_modules_enable as $id_agent_module_enable) {
|
||||
$sql = sprintf(
|
||||
'UPDATE tagente_modulo
|
||||
SET disabled = 0
|
||||
WHERE id_agente_modulo = %d',
|
||||
$id_agent_module_enable
|
||||
);
|
||||
|
||||
$id_agent_changed[] = modules_get_agentmodule_agent($id_agent_module_enable);
|
||||
$agent_update_result = db_process_sql_update(
|
||||
'tagente',
|
||||
['update_module_count' => 1],
|
||||
['id_agente' => $id_agent_changed]
|
||||
);
|
||||
|
||||
if (db_process_sql($sql) !== false && $agent_update_result !== false) {
|
||||
$updated_count++;
|
||||
}
|
||||
}
|
||||
|
||||
$count_modules_to_enable = count($id_agent_modules_enable);
|
||||
|
||||
if ($updated_count === 0) {
|
||||
ui_print_error_message(
|
||||
sprintf(
|
||||
__('There was a problem completing the operation. Applied to 0/%d modules.'),
|
||||
$count_modules_to_enable
|
||||
)
|
||||
);
|
||||
} else {
|
||||
if ($updated_count == $count_modules_to_enable) {
|
||||
ui_print_success_message(__('Operation finished successfully.'));
|
||||
} else {
|
||||
ui_print_error_message(
|
||||
sprintf(
|
||||
__('There was a problem completing the operation. Applied to %d/%d modules.'),
|
||||
$updated_count,
|
||||
$count_modules_to_enable
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1274,6 +1319,7 @@ if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
|
||||
html_print_select(
|
||||
[
|
||||
'disable' => 'Disable selected modules',
|
||||
'enable' => 'Enable selected modules',
|
||||
'delete' => 'Delete selected modules',
|
||||
],
|
||||
'module_action',
|
||||
@ -1286,6 +1332,8 @@ if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
|
||||
false
|
||||
);
|
||||
|
||||
echo '    ';
|
||||
|
||||
html_print_submit_button(
|
||||
__('Execute action'),
|
||||
'submit_modules_action',
|
||||
|
@ -69,7 +69,7 @@ if (strstr($page, 'policy_modules') === false) {
|
||||
|
||||
define('ID_NETWORK_COMPONENT_TYPE', 2);
|
||||
|
||||
if (empty($update_module_id)) {
|
||||
if (empty($edit_module)) {
|
||||
// Function in module_manager_editor_common.php.
|
||||
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ if (strstr($page, 'policy_modules') === false) {
|
||||
|
||||
define('ID_NETWORK_COMPONENT_TYPE', 4);
|
||||
|
||||
if (empty($update_module_id)) {
|
||||
if (empty($edit_module)) {
|
||||
// Function in module_manager_editor_common.php
|
||||
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
|
||||
} else {
|
||||
|
@ -82,7 +82,7 @@ if ($plugin_pass == '' && !$id_agent_module) {
|
||||
$plugin_pass = 1;
|
||||
}
|
||||
|
||||
if (empty($update_module_id)) {
|
||||
if (empty($edit_module)) {
|
||||
// Function in module_manager_editor_common.php
|
||||
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
|
||||
} else {
|
||||
|
@ -34,7 +34,7 @@ $extra_title = __('WMI server module');
|
||||
|
||||
define('ID_NETWORK_COMPONENT_TYPE', 6);
|
||||
|
||||
if (empty($update_module_id)) {
|
||||
if (empty($edit_module)) {
|
||||
// Function in module_manager_editor_common.php
|
||||
add_component_selection(ID_NETWORK_COMPONENT_TYPE);
|
||||
} else {
|
||||
|
@ -1842,6 +1842,10 @@ function insert_downtime_agent($id_downtime, $user_groups_ad)
|
||||
$(document).ready (function () {
|
||||
populate_agents_selector();
|
||||
|
||||
// Add data-pendingdelete attribute to exclude delete_pending modules
|
||||
document.querySelector("#id_agents").dataset.pendingdelete = true
|
||||
document.querySelector("#modules_selection_mode").dataset.pendingdelete = true
|
||||
|
||||
$("#id_agents").change(agent_changed_by_multiple_agents);
|
||||
$("#modules_selection_mode").change(agent_changed_by_multiple_agents);
|
||||
|
||||
|
@ -124,6 +124,8 @@ if (!empty($groups)) {
|
||||
if (!empty($downtimes)) {
|
||||
ob_clean();
|
||||
// Show contentype header
|
||||
// Set cookie for download control.
|
||||
setDownloadCookieToken();
|
||||
header('Content-type: text/csv');
|
||||
header('Content-Disposition: attachment; filename="pandora_planned_downtime_'.date('Y/m/d H:i:s').'.csv"');
|
||||
|
||||
@ -161,7 +163,7 @@ if (!empty($downtimes)) {
|
||||
if (!empty($downtime_agents)) {
|
||||
foreach ($downtime_agents as $downtime_agent) {
|
||||
$downtime_items = [];
|
||||
$downtime_items[] = $downtime_agent[alias];
|
||||
$downtime_items[] = $downtime_agent['alias'];
|
||||
|
||||
if (!$downtime_agent['all_modules']) {
|
||||
$agent_id = $downtime_agent['agent_id'];
|
||||
|
@ -907,7 +907,7 @@ if ($downtimes === false && $filter_performed === false) {
|
||||
__('Export to CSV'),
|
||||
'csv_export',
|
||||
false,
|
||||
'location.href="godmode/agentes/planned_downtime.export_csv.php?'.$filter_params_str.'"',
|
||||
'blockResubmit($(this)); location.href=\'godmode/agentes/planned_downtime.export_csv.php?'.$filter_params_str.'\'',
|
||||
'class="sub next"'
|
||||
);
|
||||
echo '</div>';
|
||||
|
@ -40,6 +40,7 @@ $update_command = (bool) get_parameter('update_command');
|
||||
$create_command = (bool) get_parameter('create_command');
|
||||
$delete_command = (bool) get_parameter('delete_command');
|
||||
$copy_command = (bool) get_parameter('copy_command');
|
||||
$content_type = (string) get_parameter('content_type', 'text/plain');
|
||||
|
||||
$url = 'index.php?sec='.$sec.'&sec2=godmode/alerts/alert_commands';
|
||||
|
||||
@ -226,7 +227,7 @@ if (is_ajax()) {
|
||||
'field'.$i.'_value',
|
||||
'text/plain',
|
||||
'',
|
||||
'',
|
||||
$content_type == 'text/plain',
|
||||
$is_management_allowed,
|
||||
'',
|
||||
'',
|
||||
@ -238,7 +239,7 @@ if (is_ajax()) {
|
||||
'field'.$i.'_value',
|
||||
'text/html',
|
||||
'',
|
||||
'text/html',
|
||||
$content_type == 'text/html',
|
||||
$is_management_allowed,
|
||||
'',
|
||||
'',
|
||||
|
@ -231,7 +231,7 @@ if (strlen(trim($agentName)) > 0) {
|
||||
}
|
||||
|
||||
if ($actionID != -1 && $actionID != '') {
|
||||
$where .= ' AND talert_template_modules.id IN (SELECT id_alert_template_module FROM talert_template_module_actions WHERE id_alert_action = '.$actionID.') OR talert_template_modules.id IN (SELECT id FROM talert_template_modules ttm WHERE ttm.id_alert_template IN (SELECT tat.id FROM talert_templates tat WHERE tat.id_alert_action = '.$actionID.'))';
|
||||
$where .= ' AND (talert_template_modules.id IN (SELECT id_alert_template_module FROM talert_template_module_actions WHERE id_alert_action = '.$actionID.') OR talert_template_modules.id IN (SELECT id FROM talert_template_modules ttm WHERE ttm.id_alert_template IN (SELECT tat.id FROM talert_templates tat WHERE tat.id_alert_action = '.$actionID.')))';
|
||||
}
|
||||
|
||||
if ($status_alert === 'disabled') {
|
||||
|
@ -353,9 +353,18 @@ if ($delete_action) {
|
||||
if ($enable_alert) {
|
||||
$searchFlag = true;
|
||||
$id_alert = (int) get_parameter('id_alert');
|
||||
$id_agente = ($id_agente !== 0) ? $id_agente : alerts_get_agent_by_alert($id_alert);
|
||||
|
||||
$result = alerts_agent_module_disable($id_alert, false);
|
||||
|
||||
if ($id_agente) {
|
||||
db_process_sql(
|
||||
'UPDATE tagente
|
||||
SET update_alert_count = 1
|
||||
WHERE id_agente = '.$id_agente
|
||||
);
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ALERT_MANAGEMENT,
|
||||
@ -380,9 +389,18 @@ if ($enable_alert) {
|
||||
if ($disable_alert) {
|
||||
$searchFlag = true;
|
||||
$id_alert = (int) get_parameter('id_alert');
|
||||
$id_agente = ($id_agente !== 0) ? $id_agente : alerts_get_agent_by_alert($id_alert);
|
||||
|
||||
$result = alerts_agent_module_disable($id_alert, true);
|
||||
|
||||
if ($id_agente) {
|
||||
db_process_sql(
|
||||
'UPDATE tagente
|
||||
SET update_alert_count = 1
|
||||
WHERE id_agente = '.$id_agente
|
||||
);
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ALERT_MANAGEMENT,
|
||||
|
@ -66,6 +66,7 @@ if ($id) {
|
||||
$severity = explode(',', $filter['severity']);
|
||||
$status = $filter['status'];
|
||||
$search = $filter['search'];
|
||||
$not_search = $filter['not_search'];
|
||||
$text_agent = $filter['text_agent'];
|
||||
$id_agent = $filter['id_agent'];
|
||||
$text_module = $filter['text_module'];
|
||||
@ -73,6 +74,7 @@ if ($id) {
|
||||
$pagination = $filter['pagination'];
|
||||
$event_view_hr = $filter['event_view_hr'];
|
||||
$id_user_ack = $filter['id_user_ack'];
|
||||
$owner_user = $filter['owner_user'];
|
||||
$group_rep = $filter['group_rep'];
|
||||
$date_from = str_replace('-', '/', $filter['date_from']);
|
||||
$date_to = str_replace('-', '/', $filter['date_to']);
|
||||
@ -115,10 +117,12 @@ if ($id) {
|
||||
$severity = '';
|
||||
$status = '';
|
||||
$search = '';
|
||||
$not_search = 0;
|
||||
$text_agent = '';
|
||||
$pagination = '';
|
||||
$event_view_hr = '';
|
||||
$id_user_ack = '';
|
||||
$owner_user = '';
|
||||
$group_rep = '';
|
||||
$date_from = '';
|
||||
$date_to = '';
|
||||
@ -140,6 +144,7 @@ if ($update || $create) {
|
||||
$severity = implode(',', get_parameter('severity', -1));
|
||||
$status = get_parameter('status', '');
|
||||
$search = get_parameter('search', '');
|
||||
$not_search = get_parameter_switch('not_search', 0);
|
||||
$text_agent = get_parameter('text_agent', '');
|
||||
$id_agent = (int) get_parameter('id_agent');
|
||||
$text_module = get_parameter('text_module', '');
|
||||
@ -157,6 +162,7 @@ if ($update || $create) {
|
||||
$pagination = get_parameter('pagination', '');
|
||||
$event_view_hr = get_parameter('event_view_hr', '');
|
||||
$id_user_ack = get_parameter('id_user_ack', '');
|
||||
$owner_user = get_parameter('owner_user', '');
|
||||
$group_rep = get_parameter('group_rep', '');
|
||||
$date_from = get_parameter('date_from', '');
|
||||
$date_to = get_parameter('date_to', '');
|
||||
@ -185,12 +191,14 @@ if ($update || $create) {
|
||||
'severity' => $severity,
|
||||
'status' => $status,
|
||||
'search' => $search,
|
||||
'not_search' => $not_search,
|
||||
'text_agent' => $text_agent,
|
||||
'id_agent_module' => $id_agent_module,
|
||||
'id_agent' => $id_agent,
|
||||
'pagination' => $pagination,
|
||||
'event_view_hr' => $event_view_hr,
|
||||
'id_user_ack' => $id_user_ack,
|
||||
'owner_user' => $owner_user,
|
||||
'group_rep' => $group_rep,
|
||||
'tag_with' => $tag_with_json,
|
||||
'tag_without' => $tag_without_json,
|
||||
@ -376,6 +384,15 @@ $table->data[6][1] = html_print_input_text(
|
||||
255,
|
||||
true
|
||||
);
|
||||
$table->data[6][1] .= ' '.html_print_checkbox_switch(
|
||||
'not_search',
|
||||
$not_search,
|
||||
$not_search,
|
||||
true,
|
||||
false,
|
||||
'checked_slide_events(this);',
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[7][0] = '<b>'.__('Agent search').'</b>';
|
||||
$params = [];
|
||||
@ -420,7 +437,12 @@ $table->data[9][1] = html_print_input_text(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[10][0] = '<b>'.__('User ack.').'</b>'.' '.ui_print_help_tip(__('Choose between the users who have validated an event. '), true);
|
||||
$table->data[10][0] = '<b>'.__('User ack.').'</b>';
|
||||
$table->data[10][0] .= ' ';
|
||||
$table->data[10][0] .= ui_print_help_tip(
|
||||
__('Choose between the users who have validated an event. '),
|
||||
true
|
||||
);
|
||||
|
||||
if ($strict_user) {
|
||||
$users = [$config['id_user'] => $config['id_user']];
|
||||
@ -442,14 +464,25 @@ $table->data[10][1] = html_print_select(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[11][0] = '<b>'.__('Owner.').'</b>';
|
||||
$table->data[11][1] = html_print_select(
|
||||
$users,
|
||||
'owner_user',
|
||||
$owner_user,
|
||||
'',
|
||||
__('Any'),
|
||||
0,
|
||||
true
|
||||
);
|
||||
|
||||
$repeated_sel = [
|
||||
EVENT_GROUP_REP_ALL => __('All events'),
|
||||
EVENT_GROUP_REP_EVENTS => __('Group events'),
|
||||
EVENT_GROUP_REP_AGENTS => __('Group agents'),
|
||||
EVENT_GROUP_REP_EXTRAIDS => __('Group extra id'),
|
||||
];
|
||||
$table->data[11][0] = '<b>'.__('Repeated').'</b>';
|
||||
$table->data[11][1] = html_print_select(
|
||||
$table->data[12][0] = '<b>'.__('Repeated').'</b>';
|
||||
$table->data[12][1] = html_print_select(
|
||||
$repeated_sel,
|
||||
'group_rep',
|
||||
$group_rep,
|
||||
@ -459,11 +492,11 @@ $table->data[11][1] = html_print_select(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[12][0] = '<b>'.__('Date from').'</b>';
|
||||
$table->data[12][1] = html_print_input_text('date_from', $date_from, '', 15, 10, true);
|
||||
$table->data[13][0] = '<b>'.__('Date from').'</b>';
|
||||
$table->data[13][1] = html_print_input_text('date_from', $date_from, '', 15, 10, true);
|
||||
|
||||
$table->data[13][0] = '<b>'.__('Date to').'</b>';
|
||||
$table->data[13][1] = html_print_input_text('date_to', $date_to, '', 15, 10, true);
|
||||
$table->data[14][0] = '<b>'.__('Date to').'</b>';
|
||||
$table->data[14][1] = html_print_input_text('date_to', $date_to, '', 15, 10, true);
|
||||
|
||||
$tag_with = json_decode($tag_with_json_clean, true);
|
||||
if (empty($tag_with)) {
|
||||
@ -502,9 +535,9 @@ $remove_with_tag_disabled = empty($tag_with_temp);
|
||||
$add_without_tag_disabled = empty($tags_select_without);
|
||||
$remove_without_tag_disabled = empty($tag_without_temp);
|
||||
|
||||
$table->colspan[14][0] = '2';
|
||||
$table->data[14][0] = '<b>'.__('Events with following tags').'</b>';
|
||||
$table->data[15][0] = html_print_select(
|
||||
$table->colspan[15][0] = '2';
|
||||
$table->data[15][0] = '<b>'.__('Events with following tags').'</b>';
|
||||
$table->data[16][0] = html_print_select(
|
||||
$tags_select_with,
|
||||
'select_with',
|
||||
'',
|
||||
@ -518,7 +551,7 @@ $table->data[15][0] = html_print_select(
|
||||
false,
|
||||
'width: 220px;'
|
||||
);
|
||||
$table->data[15][1] = html_print_button(
|
||||
$table->data[16][1] = html_print_button(
|
||||
__('Add'),
|
||||
'add_whith',
|
||||
$add_with_tag_disabled,
|
||||
@ -527,7 +560,7 @@ $table->data[15][1] = html_print_button(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[16][0] = html_print_select(
|
||||
$table->data[17][0] = html_print_select(
|
||||
$tag_with_temp,
|
||||
'tag_with_temp',
|
||||
[],
|
||||
@ -541,12 +574,12 @@ $table->data[16][0] = html_print_select(
|
||||
false,
|
||||
'width: 220px; height: 50px;'
|
||||
);
|
||||
$table->data[16][0] .= html_print_input_hidden(
|
||||
$table->data[17][0] .= html_print_input_hidden(
|
||||
'tag_with',
|
||||
$tag_with_base64,
|
||||
true
|
||||
);
|
||||
$table->data[16][1] = html_print_button(
|
||||
$table->data[17][1] = html_print_button(
|
||||
__('Remove'),
|
||||
'remove_whith',
|
||||
$remove_with_tag_disabled,
|
||||
@ -555,9 +588,9 @@ $table->data[16][1] = html_print_button(
|
||||
true
|
||||
);
|
||||
|
||||
$table->colspan[17][0] = '2';
|
||||
$table->data[17][0] = '<b>'.__('Events without following tags').'</b>';
|
||||
$table->data[18][0] = html_print_select(
|
||||
$table->colspan[18][0] = '2';
|
||||
$table->data[18][0] = '<b>'.__('Events without following tags').'</b>';
|
||||
$table->data[19][0] = html_print_select(
|
||||
$tags_select_without,
|
||||
'select_without',
|
||||
'',
|
||||
@ -571,7 +604,7 @@ $table->data[18][0] = html_print_select(
|
||||
false,
|
||||
'width: 220px;'
|
||||
);
|
||||
$table->data[18][1] = html_print_button(
|
||||
$table->data[19][1] = html_print_button(
|
||||
__('Add'),
|
||||
'add_whithout',
|
||||
$add_without_tag_disabled,
|
||||
@ -580,7 +613,7 @@ $table->data[18][1] = html_print_button(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[19][0] = html_print_select(
|
||||
$table->data[20][0] = html_print_select(
|
||||
$tag_without_temp,
|
||||
'tag_without_temp',
|
||||
[],
|
||||
@ -594,12 +627,12 @@ $table->data[19][0] = html_print_select(
|
||||
false,
|
||||
'width: 220px; height: 50px;'
|
||||
);
|
||||
$table->data[19][0] .= html_print_input_hidden(
|
||||
$table->data[20][0] .= html_print_input_hidden(
|
||||
'tag_without',
|
||||
$tag_without_base64,
|
||||
true
|
||||
);
|
||||
$table->data[19][1] = html_print_button(
|
||||
$table->data[20][1] = html_print_button(
|
||||
__('Remove'),
|
||||
'remove_whithout',
|
||||
$remove_without_tag_disabled,
|
||||
@ -608,8 +641,8 @@ $table->data[19][1] = html_print_button(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[20][0] = '<b>'.__('Alert events').'</b>';
|
||||
$table->data[20][1] = html_print_select(
|
||||
$table->data[21][0] = '<b>'.__('Alert events').'</b>';
|
||||
$table->data[21][1] = html_print_select(
|
||||
[
|
||||
'-1' => __('All'),
|
||||
'0' => __('Filter alert events'),
|
||||
@ -624,8 +657,8 @@ $table->data[20][1] = html_print_select(
|
||||
);
|
||||
|
||||
if (!is_metaconsole()) {
|
||||
$table->data[21][0] = '<b>'.__('Module search').'</b>';
|
||||
$table->data[21][1] .= html_print_autocomplete_modules(
|
||||
$table->data[22][0] = '<b>'.__('Module search').'</b>';
|
||||
$table->data[22][1] .= html_print_autocomplete_modules(
|
||||
'module_search',
|
||||
$text_module,
|
||||
false,
|
||||
@ -637,17 +670,17 @@ if (!is_metaconsole()) {
|
||||
);
|
||||
}
|
||||
|
||||
$table->data[22][0] = '<b>'.__('Source').'</b>';
|
||||
$table->data[22][1] = html_print_input_text('source', $source, '', 35, 255, true);
|
||||
$table->data[23][0] = '<b>'.__('Source').'</b>';
|
||||
$table->data[23][1] = html_print_input_text('source', $source, '', 35, 255, true);
|
||||
|
||||
$table->data[23][0] = '<b>'.__('Extra ID').'</b>';
|
||||
$table->data[23][1] = html_print_input_text('id_extra', $id_extra, '', 11, 255, true);
|
||||
$table->data[24][0] = '<b>'.__('Extra ID').'</b>';
|
||||
$table->data[24][1] = html_print_input_text('id_extra', $id_extra, '', 11, 255, true);
|
||||
|
||||
$table->data[24][0] = '<b>'.__('Comment').'</b>';
|
||||
$table->data[24][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true);
|
||||
$table->data[25][0] = '<b>'.__('Comment').'</b>';
|
||||
$table->data[25][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true);
|
||||
|
||||
$table->data[25][0] = '<b>'.__('Custom data filter type').'</b>';
|
||||
$table->data[25][1] = html_print_select(
|
||||
$table->data[26][0] = '<b>'.__('Custom data filter type').'</b>';
|
||||
$table->data[26][1] = html_print_select(
|
||||
[
|
||||
'0' => __('Filter custom data by name field'),
|
||||
'1' => __('Filter custom data by value field'),
|
||||
@ -660,12 +693,12 @@ $table->data[25][1] = html_print_select(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[26][0] = '<b>'.__('Custom data').'</b>';
|
||||
$table->data[26][1] = html_print_input_text('custom_data', $custom_data, '', 35, 255, true);
|
||||
$table->data[27][0] = '<b>'.__('Custom data').'</b>';
|
||||
$table->data[27][1] = html_print_input_text('custom_data', $custom_data, '', 35, 255, true);
|
||||
|
||||
if (is_metaconsole()) {
|
||||
$table->data[27][0] = '<b>'.__('Id souce event').'</b>';
|
||||
$table->data[27][1] = html_print_input_text(
|
||||
$table->data[28][0] = '<b>'.__('Id souce event').'</b>';
|
||||
$table->data[28][1] = html_print_input_text(
|
||||
'id_source_event',
|
||||
$id_source_event,
|
||||
'',
|
||||
@ -727,6 +760,14 @@ $(document).ready( function() {
|
||||
|
||||
});
|
||||
|
||||
function checked_slide_events(element) {
|
||||
var value = $("#checkbox-"+element.name).val();
|
||||
if (value == 0) {
|
||||
$("#checkbox-"+element.name).val(1);
|
||||
} else {
|
||||
$("#checkbox-"+element.name).val(0);
|
||||
}
|
||||
}
|
||||
|
||||
function click_button_remove_tag(what_button) {
|
||||
if (what_button == "with") {
|
||||
|
@ -92,6 +92,7 @@ if (is_ajax() === true) {
|
||||
if ($get_group_agents === true) {
|
||||
ob_clean();
|
||||
$id_group = (int) get_parameter('id_group');
|
||||
$id_os = (int) get_parameter('id_os', 0);
|
||||
$disabled = (int) get_parameter('disabled', 0);
|
||||
$search = (string) get_parameter('search', '');
|
||||
$recursion = (int) get_parameter('recursion', 0);
|
||||
@ -151,6 +152,10 @@ if (is_ajax() === true) {
|
||||
$filter['status'] = $status_agents;
|
||||
}
|
||||
|
||||
if ($id_os !== 0) {
|
||||
$filter['id_os'] = $id_os;
|
||||
}
|
||||
|
||||
$_sql_post = ' 1=1 ';
|
||||
if ($show_void_agents == 0) {
|
||||
$_sql_post .= ' AND id_agente IN (SELECT a.id_agente FROM tagente a, tagente_modulo b WHERE a.id_agente=b.id_agente AND b.delete_pending=0) AND \'1\'';
|
||||
@ -782,18 +787,18 @@ if ($tab == 'tree') {
|
||||
|
||||
$form = "<form method='post' action=''>";
|
||||
$form .= "<table class='databox filters bolder' width='100%'>";
|
||||
$form .= '<tr><td>'.__('Search').' ';
|
||||
$form .= '<tr><td>'.__('Search').' ';
|
||||
$form .= html_print_input_text(
|
||||
'search',
|
||||
$search,
|
||||
'',
|
||||
100,
|
||||
100,
|
||||
30,
|
||||
30,
|
||||
true
|
||||
);
|
||||
$form .= '</td><td>';
|
||||
$form .= '</td><td style="text-align: right">';
|
||||
$form .= "<input name='find' type='submit' class='sub search' value='".__('Search')."'>";
|
||||
$form .= '<td></tr>';
|
||||
$form .= '</tr>';
|
||||
$form .= '</table>';
|
||||
$form .= '</form>';
|
||||
|
||||
|
@ -181,6 +181,7 @@ if (empty($alert_templates)) {
|
||||
$alert_templates = '';
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'delete_table';
|
||||
$table->width = '98%';
|
||||
$table->data = [];
|
||||
|
@ -192,6 +192,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'delete_table';
|
||||
$table->class = 'databox filters';
|
||||
$table->width = '100%';
|
||||
|
@ -249,6 +249,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'delete_table';
|
||||
$table->class = 'databox filters';
|
||||
$table->width = '100%';
|
||||
|
@ -148,6 +148,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'delete_table';
|
||||
$table->class = 'databox filters';
|
||||
$table->width = '100%';
|
||||
|
@ -164,6 +164,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'delete_table';
|
||||
$table->class = 'databox filters';
|
||||
$table->width = '100%';
|
||||
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Godmode menu.
|
||||
*
|
||||
@ -200,14 +201,14 @@ if ($access_console_node === true) {
|
||||
$sub['gmassive']['type'] = 'direct';
|
||||
$sub['gmassive']['subtype'] = 'nolink';
|
||||
$sub2 = [];
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_agents']['text'] = __('Agents operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_modules']['text'] = __('Modules operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_plugins']['text'] = __('Plugins operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_agents']['text'] = __('Agents operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_modules']['text'] = __('Modules operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_plugins']['text'] = __('Plugins operations');
|
||||
if ((bool) check_acl($config['id_user'], 0, 'UM') === true) {
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_users']['text'] = __('Users operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_users']['text'] = __('Users operations');
|
||||
}
|
||||
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_alerts']['text'] = __('Alerts operations');
|
||||
$sub2['godmode/massive/massive_operations&tab=massive_alerts']['text'] = __('Alerts operations');
|
||||
enterprise_hook('massivepolicies_submenu');
|
||||
enterprise_hook('massivesnmp_submenu');
|
||||
enterprise_hook('massivesatellite_submenu');
|
||||
@ -422,10 +423,10 @@ if ((bool) check_acl($config['id_user'], 0, 'PM') === true || (bool) check_acl($
|
||||
if (is_user_admin($config['id_user']) === true) {
|
||||
$sub['extensions/db_status']['text'] = __('DB Schema Check');
|
||||
$sub['extensions/db_status']['id'] = 'DB Schema Check';
|
||||
$sub['extensions/db_status']['sec'] = 'gbman';
|
||||
$sub['extensions/db_status']['sec'] = 'gextensions';
|
||||
$sub['extensions/dbmanager']['text'] = __('DB Interface');
|
||||
$sub['extensions/dbmanager']['id'] = 'DB Interface';
|
||||
$sub['extensions/dbmanager']['sec'] = 'gbman';
|
||||
$sub['extensions/dbmanager']['sec'] = 'gextensions';
|
||||
enterprise_hook('dbBackupManager');
|
||||
enterprise_hook('elasticsearch_interface_menu');
|
||||
}
|
||||
@ -578,6 +579,14 @@ if ($access_console_node === true) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($access_console_node === true) {
|
||||
// About.
|
||||
$menu_godmode['about']['text'] = __('About');
|
||||
$menu_godmode['about']['id'] = 'about';
|
||||
}
|
||||
|
||||
if ((bool) $config['pure'] === false) {
|
||||
menu_print_menu($menu_godmode);
|
||||
}
|
||||
|
||||
echo '<div id="about-div"></div>';
|
||||
|
@ -189,6 +189,8 @@ if ($export_profile) {
|
||||
}
|
||||
}
|
||||
|
||||
// Set cookie for download control.
|
||||
setDownloadCookieToken();
|
||||
// Send headers to tell the browser we're sending a file
|
||||
header('Content-type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename='.preg_replace('/\s/', '_', $profile_info['name']).'.csv');
|
||||
@ -285,7 +287,7 @@ foreach ($result as $row) {
|
||||
]
|
||||
);
|
||||
$data[3] = '<a href="index.php?sec=gmodules&sec2=godmode/modules/manage_network_templates'.'&delete_profile=1&delete_profile='.$row['id_np'].'" '.'onclick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[3] .= '<a href="index.php?sec=gmodules&sec2=godmode/modules/manage_network_templates'.'&export_profile='.$row['id_np'].'">'.html_print_image('images/csv.png', true, ['title' => __('Export to CSV'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[3] .= '<a onclick="blockResubmit($(this))" href="index.php?sec=gmodules&sec2=godmode/modules/manage_network_templates'.'&export_profile='.$row['id_np'].'">'.html_print_image('images/csv.png', true, ['title' => __('Export to CSV'), 'class' => 'invert_filter']).'</a>';
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
|
@ -229,7 +229,8 @@ if ($add_module === true) {
|
||||
// Safe output remove all entities.
|
||||
io_safe_output_array($id_modules, '');
|
||||
|
||||
$id_modules = array_map(function ($mod) {
|
||||
$id_modules = array_map(
|
||||
function ($mod) {
|
||||
return io_safe_input($mod);
|
||||
},
|
||||
$id_modules
|
||||
|
@ -169,6 +169,7 @@ $visual_format = 0;
|
||||
$filter_search = '';
|
||||
$filter_exclude = '';
|
||||
|
||||
$use_prefix_notation = true;
|
||||
|
||||
// Added for select fields.
|
||||
$total_time = true;
|
||||
@ -461,6 +462,7 @@ switch ($action) {
|
||||
$lapse = $item['lapse'];
|
||||
$lapse_calc = $item['lapse_calc'];
|
||||
$visual_format = $item['visual_format'];
|
||||
$use_prefix_notation = $item['use_prefix_notation'];
|
||||
break;
|
||||
|
||||
case 'max_value':
|
||||
@ -476,6 +478,7 @@ switch ($action) {
|
||||
$lapse = $item['lapse'];
|
||||
$lapse_calc = $item['lapse_calc'];
|
||||
$visual_format = $item['visual_format'];
|
||||
$use_prefix_notation = $item['use_prefix_notation'];
|
||||
break;
|
||||
|
||||
case 'min_value':
|
||||
@ -491,6 +494,7 @@ switch ($action) {
|
||||
$lapse = $item['lapse'];
|
||||
$lapse_calc = $item['lapse_calc'];
|
||||
$visual_format = $item['visual_format'];
|
||||
$use_prefix_notation = $item['use_prefix_notation'];
|
||||
break;
|
||||
|
||||
case 'sumatory':
|
||||
@ -504,6 +508,7 @@ switch ($action) {
|
||||
$idAgentModule = $item['id_agent_module'];
|
||||
$period = $item['period'];
|
||||
$uncompressed_module = $item['uncompressed_module'];
|
||||
$use_prefix_notation = $item['use_prefix_notation'];
|
||||
break;
|
||||
|
||||
case 'historical_data':
|
||||
@ -773,6 +778,7 @@ switch ($action) {
|
||||
$show_resume = $item['show_resume'];
|
||||
$show_graph = $item['show_graph'];
|
||||
$order_uptodown = $item['order_uptodown'];
|
||||
$use_prefix_notation = $item['use_prefix_notation'];
|
||||
|
||||
$text_agent = '';
|
||||
if (isset($style['text_agent']) === true
|
||||
@ -3404,6 +3410,22 @@ $class = 'databox filters';
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_use_prefix_notation" class="datos advanced_elements">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Use prefix notation');
|
||||
ui_print_help_tip(
|
||||
__('Use prefix notation for numeric values (example: 20,8Kbytes/sec), otherwise full value will be displayed (example: 20.742 bytes/sec)')
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_checkbox_switch('use_prefix_notation', 1, $use_prefix_notation);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_uncompressed_module" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
@ -6367,6 +6389,7 @@ function chooseType() {
|
||||
$("#row_show_summary").hide();
|
||||
$("#row_group_by").hide();
|
||||
$("#row_type_show").hide();
|
||||
$("#row_use_prefix_notation").hide();
|
||||
|
||||
// SLA list default state.
|
||||
$("#sla_list").hide();
|
||||
@ -6561,6 +6584,7 @@ function chooseType() {
|
||||
$("#row_lapse").show();
|
||||
$("#row_visual_format").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
$("#row_use_prefix_notation").show();
|
||||
break;
|
||||
|
||||
case 'max_value':
|
||||
@ -6572,6 +6596,7 @@ function chooseType() {
|
||||
$("#row_lapse").show();
|
||||
$("#row_visual_format").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
$("#row_use_prefix_notation").show();
|
||||
break;
|
||||
|
||||
case 'min_value':
|
||||
@ -6583,6 +6608,7 @@ function chooseType() {
|
||||
$("#row_lapse").show();
|
||||
$("#row_visual_format").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
$("#row_use_prefix_notation").show();
|
||||
break;
|
||||
|
||||
case 'sumatory':
|
||||
@ -6592,6 +6618,7 @@ function chooseType() {
|
||||
$("#row_period").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
$("#row_uncompressed_module").show();
|
||||
$("#row_use_prefix_notation").show();
|
||||
break;
|
||||
|
||||
case 'historical_data':
|
||||
@ -6879,6 +6906,7 @@ function chooseType() {
|
||||
$("#row_show_resume").show();
|
||||
$("#row_show_graph").show();
|
||||
$("#row_historical_db_check").hide();
|
||||
$("#row_use_prefix_notation").show();
|
||||
break;
|
||||
|
||||
case 'exception':
|
||||
|
@ -1055,7 +1055,7 @@ switch ($action) {
|
||||
]
|
||||
);
|
||||
$data[2] .= '</a>';
|
||||
$data[3] = '<a href="'.ui_get_full_url(false, false, false, false).'ajax.php?page='.$config['homedir'].'/operation/reporting/reporting_xml&id='.$report['id_report'].'">';
|
||||
$data[3] = '<a onclick="blockResubmit($(this))" href="'.ui_get_full_url(false, false, false, false).'ajax.php?page='.$config['homedir'].'/operation/reporting/reporting_xml&id='.$report['id_report'].'">';
|
||||
$data[3] .= html_print_image(
|
||||
'images/xml.png',
|
||||
true,
|
||||
@ -1888,6 +1888,9 @@ switch ($action) {
|
||||
$values['visual_format'] = get_parameter(
|
||||
'visual_format'
|
||||
);
|
||||
$values['use_prefix_notation'] = get_parameter(
|
||||
'use_prefix_notation'
|
||||
);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
@ -1911,6 +1914,9 @@ switch ($action) {
|
||||
$values['show_graph'] = get_parameter(
|
||||
'combo_graph_options'
|
||||
);
|
||||
$values['use_prefix_notation'] = get_parameter(
|
||||
'use_prefix_notation'
|
||||
);
|
||||
$good_format = true;
|
||||
break;
|
||||
}
|
||||
@ -2176,6 +2182,8 @@ switch ($action) {
|
||||
'historical_db_check'
|
||||
);
|
||||
$values['top_n_value'] = get_parameter('max_items');
|
||||
|
||||
$values['server_name'] = get_parameter('combo_server');
|
||||
} else if ($values['type'] == 'url') {
|
||||
$values['external_source'] = get_parameter('url');
|
||||
} else if ($values['type'] == 'event_report_group') {
|
||||
@ -2704,6 +2712,9 @@ switch ($action) {
|
||||
$values['visual_format'] = get_parameter(
|
||||
'visual_format'
|
||||
);
|
||||
$values['use_prefix_notation'] = get_parameter(
|
||||
'use_prefix_notation'
|
||||
);
|
||||
$good_format = true;
|
||||
break;
|
||||
|
||||
@ -2720,6 +2731,9 @@ switch ($action) {
|
||||
$values['show_graph'] = get_parameter(
|
||||
'combo_graph_options'
|
||||
);
|
||||
$values['use_prefix_notation'] = get_parameter(
|
||||
'use_prefix_notation'
|
||||
);
|
||||
$good_format = true;
|
||||
break;
|
||||
}
|
||||
|
@ -399,10 +399,7 @@ if (($create != '') || ($view != '')) {
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Plugin command').ui_print_help_tip(__('Specify interpreter and plugin path. The server needs permissions to run it.'), true);
|
||||
$data[1] = '<input type="text" name="form_execute" id="form_execute" class="command_component command_advanced_conf text_input" size=100 value="'.$form_execute.'" '.$disabled.'>';
|
||||
if ($locked) {
|
||||
$data[1] .= html_print_image('images/lock_mc.png', true, ['class' => 'command_advanced_conf lock', 'class' => 'invert_filter']);
|
||||
}
|
||||
$data[1] = '<input type="text" name="form_execute" id="form_execute" class="command_component command_advanced_conf text_input" size=100 value="'.$form_execute.'" >';
|
||||
|
||||
$data[1] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$form_id.'" class="bot">';
|
||||
$data[1] .= html_print_image('images/file.png', true, ['class' => 'invert_filter'], false, true);
|
||||
@ -411,11 +408,7 @@ if (($create != '') || ($view != '')) {
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Plug-in parameters');
|
||||
$data[1] = '<input type="text" name="form_parameters" id="form_parameters" class="command_component command_advanced_conf text_input" size=100 value="'.$parameters.'" '.$disabled.'>';
|
||||
if ($locked) {
|
||||
$data[1] .= html_print_image('images/lock_mc.png', true, ['class' => 'command_advanced_conf lock', 'class' => 'invert_filter']);
|
||||
}
|
||||
|
||||
$data[1] = '<input type="text" name="form_parameters" id="form_parameters" class="command_component command_advanced_conf text_input" size=100 value="'.$parameters.'" >';
|
||||
$table->data['plugin_parameters'] = $data;
|
||||
|
||||
$data = [];
|
||||
@ -484,16 +477,10 @@ if (($create != '') || ($view != '')) {
|
||||
$datam = [];
|
||||
$datam[0] = __('Description')."<span class='normal_weight'> ($macro_name)</span>";
|
||||
$datam[0] .= html_print_input_hidden($macro_name_name, $macro_name, true);
|
||||
$datam[1] = html_print_input_text_extended($macro_desc_name, $macro_desc_value, 'text-'.$macro_desc_name, '', 30, 255, $locked, '', "class='command_macro text_input'", true);
|
||||
if ($locked) {
|
||||
$datam[1] .= html_print_image('images/lock_mc.png', true, ['class' => 'command_macro lock', 'class' => 'invert_filter']);
|
||||
}
|
||||
$datam[1] = html_print_input_text_extended($macro_desc_name, $macro_desc_value, 'text-'.$macro_desc_name, '', 30, 255, false, '', "class='command_macro text_input'", true);
|
||||
|
||||
$datam[2] = __('Default value')."<span class='normal_weight'> ($macro_name)</span>";
|
||||
$datam[3] = html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, $locked, '', "class='command_component command_macro text_input'", true);
|
||||
if ($locked) {
|
||||
$datam[3] .= html_print_image('images/lock_mc.png', true, ['class' => 'command_macro lock', 'class' => 'invert_filter']);
|
||||
}
|
||||
$datam[3] = html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true);
|
||||
|
||||
$table->data['plugin_'.$next_name_number] = $datam;
|
||||
|
||||
@ -524,24 +511,15 @@ if (($create != '') || ($view != '')) {
|
||||
|
||||
$datam = [];
|
||||
$datam[0] = __('Help')."<span class='normal_weight'> ($macro_name)</span><br><br><br>";
|
||||
$tadisabled = $locked === true ? ' disabled' : '';
|
||||
$datam[1] = html_print_textarea(
|
||||
$macro_help_name,
|
||||
6,
|
||||
100,
|
||||
$macro_help_value,
|
||||
'class="command_macro" class="w97p"'.$tadisabled,
|
||||
'class="command_macro" class="w97p"',
|
||||
true
|
||||
);
|
||||
|
||||
if ($locked) {
|
||||
$datam[1] .= html_print_image(
|
||||
'images/lock_mc.png',
|
||||
true,
|
||||
['class' => 'command_macro lock invert_filter']
|
||||
);
|
||||
}
|
||||
|
||||
$datam[1] .= '<br><br><br>';
|
||||
|
||||
$table->data['plugin_'.$next_name_number] = $datam;
|
||||
@ -551,15 +529,16 @@ if (($create != '') || ($view != '')) {
|
||||
|
||||
// Add/Delete buttons
|
||||
$datam = [];
|
||||
$datam[0] = '<a id="add_macro_btn" href="javascript:;">'.'<span class="bolder">'.__('Add macro').'</span>'.' '.html_print_image(
|
||||
'images/add.png',
|
||||
true,
|
||||
['class' => 'invert_filter']
|
||||
).'</a>';
|
||||
$datam[0] .= '<div id="next_macro" class="invisible">'.$i.'</div>';
|
||||
$datam[0] .= '<div id="next_row" class="invisible">'.$next_name_number.'</div>';
|
||||
|
||||
if (!$locked) {
|
||||
$datam[0] = '<a id="add_macro_btn" href="javascript:;">'.'<span class="bolder">'.__('Add macro').'</span>'.' '.html_print_image(
|
||||
'images/add.png',
|
||||
true,
|
||||
['class' => 'invert_filter']
|
||||
).'</a>';
|
||||
$datam[0] .= '<div id="next_macro" class="invisible">'.$i.'</div>';
|
||||
$datam[0] .= '<div id="next_row" class="invisible">'.$next_name_number.'</div>';
|
||||
|
||||
$delete_macro_style = '';
|
||||
if ($i <= 2) {
|
||||
$delete_macro_style = 'display:none;';
|
||||
@ -1002,8 +981,11 @@ ui_require_javascript_file('pandora_modules');
|
||||
});
|
||||
update_preview();
|
||||
}
|
||||
$('a#add_macro_btn').click(add_macro_click_event);
|
||||
|
||||
|
||||
if (locked === 0) {
|
||||
$('a#add_macro_btn').click(add_macro_click_event);
|
||||
}
|
||||
|
||||
// Delete macro
|
||||
var delete_macro_click_event = function (event) {
|
||||
delete_macro_form('table-form-plugin_');
|
||||
@ -1031,45 +1013,12 @@ ui_require_javascript_file('pandora_modules');
|
||||
}
|
||||
}
|
||||
|
||||
var command_click_locked_event = function (event) {
|
||||
var $element = $(this);
|
||||
|
||||
if (!$element.is('input') || ($element.is('input') && ($element.prop('readonly') || $element.prop('disabled')))) {
|
||||
if ($element.prop('id') === 'form_parameters') {
|
||||
var message = '<?php echo __('Some modules or components are using the plugin'); ?>'
|
||||
+ '.\n' + '<?php echo __('Are you sure you want to unlock this item?'); ?>';
|
||||
|
||||
if (confirm(message)) {
|
||||
if ($element.is('input')) {
|
||||
$element
|
||||
.prop('readonly', false)
|
||||
.prop('disabled', false)
|
||||
.siblings('img.command_advanced_conf.lock')
|
||||
.remove();
|
||||
}
|
||||
else {
|
||||
$element
|
||||
.siblings('input.command_advanced_conf')
|
||||
.prop('readonly', false)
|
||||
.prop('disabled', false)
|
||||
$element.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert("<?php echo __('The plugin command cannot be updated because some modules or components are using the plugin.'); ?>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var macros_click_locked_event = function (event) {
|
||||
alert("<?php echo __('The plugin macros cannot be updated because some modules or components are using the plugin'); ?>");
|
||||
}
|
||||
|
||||
if (locked) {
|
||||
$('a#add_macro_btn').click(add_macro_click_locked_event);
|
||||
$('.command_advanced_conf').click(command_click_locked_event);
|
||||
$('.command_macro').click(macros_click_locked_event);
|
||||
}
|
||||
|
||||
|
||||
|
@ -684,23 +684,6 @@ $table_other->data[$i++][1] = html_print_input_text(
|
||||
true
|
||||
);
|
||||
|
||||
if (enterprise_installed() === true) {
|
||||
$table_other->data[$i][0] = __('PhantomJS cache cleanup ').$tip;
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'select',
|
||||
'name' => 'phantomjs_cache_interval',
|
||||
'return' => true,
|
||||
'fields' => [
|
||||
PHANTOM_CACHE_CLEANUP_ONCE => __('No scheduled'),
|
||||
PHANTOM_CACHE_CLEANUP_WEEKLY => __('Each week'),
|
||||
PHANTOM_CACHE_CLEANUP_DAILY => __('Each day'),
|
||||
],
|
||||
'selected' => ($config['phantomjs_cache_interval'] ?? PHANTOM_CACHE_CLEANUP_ONCE),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
// Agent Wizard defaults.
|
||||
$defaultAgentWizardOptions = json_decode(io_safe_output($config['agent_wizard_defaults']));
|
||||
$tableSnmpWizard = new stdClass();
|
||||
|
@ -77,6 +77,7 @@ if (is_ajax()) {
|
||||
true
|
||||
).' ';
|
||||
$table->data['autocreate_remote_users'] = $row;
|
||||
$table->data['csrf_token'] = html_print_csrf_hidden();
|
||||
|
||||
add_enterprise_auth_autocreate_profiles($table, $type_auth);
|
||||
}
|
||||
@ -475,6 +476,8 @@ if (!is_metaconsole()) {
|
||||
html_print_input_hidden('hash_save_config', md5('save'.$config['dbpass']));
|
||||
}
|
||||
|
||||
html_print_csrf_hidden();
|
||||
|
||||
html_print_table($table);
|
||||
echo '<div id="table_auth_result"></div>';
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
|
@ -95,11 +95,11 @@ $table->data[$i++][1] = html_print_input_text(
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Phantomjs bin directory');
|
||||
$table->data[$i][0] = __('Chromium path');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'phantomjs_bin',
|
||||
'chromium_path',
|
||||
io_safe_output(
|
||||
$config['phantomjs_bin']
|
||||
$config['chromium_path']
|
||||
),
|
||||
'',
|
||||
30,
|
||||
|
@ -1312,6 +1312,27 @@ $table_other->data[$row][1] = '<em>'.__('Example').'</em> '.date($config['date_f
|
||||
$table_other->data[$row][1] .= html_print_input_text('date_format', $config['date_format'], '', 30, 100, true);
|
||||
$row++;
|
||||
|
||||
$decimal_separators = [
|
||||
',' => ',',
|
||||
'.' => '.'
|
||||
];
|
||||
|
||||
$table_other->data[$row][0] = __('Decimal separator');
|
||||
$table_other->data[$row][1] = html_print_select(
|
||||
$decimal_separators,
|
||||
'decimal_separator',
|
||||
$config['decimal_separator'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false
|
||||
);
|
||||
|
||||
|
||||
$row++;
|
||||
|
||||
if ($config['prominent_time'] == 'comparation') {
|
||||
$timestamp = false;
|
||||
$comparation = true;
|
||||
|
@ -1599,6 +1599,10 @@ $(document).ready (function () {
|
||||
name: "get_recovery_fields",
|
||||
value: "0"
|
||||
});
|
||||
values.push({
|
||||
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) {
|
||||
@ -1624,8 +1628,9 @@ $(document).ready (function () {
|
||||
// The row provided has a predefined class. We delete it.
|
||||
$('#table_macros-field' + i)
|
||||
.removeAttr('class');
|
||||
|
||||
$("[name=field" + i + "_value]").val(old_value).trigger('change');
|
||||
if(old_value && i != 4){
|
||||
$("[name=field" + i + "_value]").val(old_value).trigger('change');
|
||||
}
|
||||
$('#table_macros-field').show();
|
||||
}
|
||||
}
|
||||
|
@ -404,6 +404,7 @@ if ($id_profile || $new_profile) {
|
||||
html_print_input_hidden('create_profile', 1);
|
||||
} else {
|
||||
html_print_input_hidden('id', $id_profile);
|
||||
html_print_input_hidden('old_name_profile', $name);
|
||||
html_print_input_hidden('update_profile', 1);
|
||||
html_print_submit_button(__('Update'), 'upd', false, 'class="sub upd"');
|
||||
}
|
||||
@ -415,15 +416,53 @@ enterprise_hook('close_meta_frame');
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
<script type="text/javascript" language="javascript">
|
||||
$(document).ready (function () {
|
||||
var disable_option = '<?php echo $disable_option; ?>';
|
||||
|
||||
if (disable_option != '') {
|
||||
var ids = ['#checkbox-db_management', '#checkbox-user_management', '#checkbox-pandora_management'];
|
||||
if (disable_option != '') {
|
||||
var ids = ['#checkbox-db_management', '#checkbox-user_management', '#checkbox-pandora_management'];
|
||||
ids.forEach(id => {
|
||||
$(id).css({'cursor':'not-allowed', 'opacity':'0.5'});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//Not enable enter for prevent submits
|
||||
$(window).keydown(function(event){
|
||||
if(event.keyCode == 13) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#text-name').on('blur',function(){
|
||||
/* Check if the name is already on use for new profiles or check if the
|
||||
name is already on use for update checking if the name is distinct of the original*/
|
||||
if($('#hidden-create_profile').val()==1 || ($('#hidden-update_profile').val()==1 && $('#hidden-old_name_profile').val()!=$('#text-name').val())){
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
dataType: "html",
|
||||
data: {
|
||||
page: 'include/ajax/profile',
|
||||
search_profile_nanme: true,
|
||||
profile_name: $('#text-name').val().trim(),
|
||||
},
|
||||
success: function (data) {
|
||||
if(data === 'true'){
|
||||
alert( <?php echo "'".__('Profile name already on use, please, change the name before save')."'"; ?> );
|
||||
if($('#hidden-old_name_profile').val()){
|
||||
$('#text-name').val($('#hidden-old_name_profile').val());
|
||||
}else{
|
||||
$('#text-name').val("");
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (data) {
|
||||
console.error("Fatal error in AJAX call to interpreter order", data)
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
@ -319,6 +319,17 @@ if ($delete_user === true) {
|
||||
if ($id_user != $config['id_user']) {
|
||||
$user_row = users_get_user_by_id($id_user);
|
||||
|
||||
$private_dashboards = db_get_all_rows_filter(
|
||||
'tdashboard',
|
||||
['id_user' => $id_user],
|
||||
'id'
|
||||
);
|
||||
|
||||
if (isset($private_dashboards) === true) {
|
||||
db_process_sql_delete('tdashboard', ['id_user' => $id_user]);
|
||||
header('Refresh:1');
|
||||
}
|
||||
|
||||
$result = delete_user($id_user);
|
||||
|
||||
if ($result) {
|
||||
@ -335,12 +346,16 @@ if ($delete_user === true) {
|
||||
);
|
||||
|
||||
// Delete the user in all the consoles.
|
||||
if (is_metaconsole() === true && isset($_GET['delete_all'])) {
|
||||
if (is_metaconsole() === true) {
|
||||
$servers = metaconsole_get_servers();
|
||||
foreach ($servers as $server) {
|
||||
// Connect to the remote console.
|
||||
if (metaconsole_connect($server) === NOERR) {
|
||||
// Delete the user.
|
||||
if (isset($private_dashboards) === true) {
|
||||
db_process_sql_delete('tdashboard', ['id_user' => $id_user]);
|
||||
}
|
||||
|
||||
$result = delete_user($id_user);
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
@ -367,6 +382,8 @@ if ($delete_user === true) {
|
||||
__('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
|
||||
);
|
||||
}
|
||||
|
||||
header('Refresh:1');
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('There was a problem deleting the user'));
|
||||
|
@ -1450,17 +1450,17 @@ class DiscoveryTaskList extends HTML
|
||||
|
||||
// Header information.
|
||||
if ((int) $task['status'] <= 0 && empty($summary)) {
|
||||
if ($task['type'] == DISCOVERY_APP_VMWARE && $task['utimestamp'] != 0) {
|
||||
$outputMessage = __('Task completed.');
|
||||
if ((int) $task['utimestamp'] !== 0) {
|
||||
$output .= $this->progressTaskGraph($task);
|
||||
} else {
|
||||
$outputMessage = __('This task has never executed');
|
||||
}
|
||||
|
||||
$output .= ui_print_info_message(
|
||||
$outputMessage,
|
||||
'',
|
||||
true
|
||||
);
|
||||
$output .= ui_print_info_message(
|
||||
$outputMessage,
|
||||
'',
|
||||
true
|
||||
);
|
||||
}
|
||||
} else if ($task['status'] == 1
|
||||
|| ($task['utimestamp'] == 0 && $task['interval_sweep'])
|
||||
) {
|
||||
|
BIN
pandora_console/images/menu/about.menu_gray.png
Normal file
BIN
pandora_console/images/menu/about.menu_gray.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 759 B |
BIN
pandora_console/images/menu/about.menu_white.png
Normal file
BIN
pandora_console/images/menu/about.menu_white.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 563 B |
BIN
pandora_console/images/widgets/DataMatrix.png
Normal file
BIN
pandora_console/images/widgets/DataMatrix.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
@ -654,7 +654,7 @@ if ($get_agent_alerts_datatable === true) {
|
||||
}
|
||||
|
||||
$idGroup = $filter_alert['ag_group'];
|
||||
$tag_filter = $filter_alert['tag_filter'];
|
||||
$tag_filter = $filter_alert['tag'];
|
||||
$action_filter = $filter_alert['action'];
|
||||
|
||||
try {
|
||||
@ -884,9 +884,9 @@ if ($get_agent_alerts_datatable === true) {
|
||||
users_get_groups($config['id_user'], $access, false)
|
||||
);
|
||||
|
||||
$alerts['alerts_simple'] = get_group_alerts($id_groups, $filter_alert, $options_simple, $whereAlertSimple, false, false, $idGroup, false, $strict_user, $tag_filter, $action_filter);
|
||||
$alerts['alerts_simple'] = get_group_alerts($id_groups, $filter_alert, $options_simple, $whereAlertSimple, false, false, $idGroup, false, $strict_user, $tag_filter, $action_filter, false);
|
||||
|
||||
$countAlertsSimple = get_group_alerts($id_groups, $filter_alert, false, $whereAlertSimple, false, false, $idGroup, true, $strict_user, $tag_filter, $action_filter);
|
||||
$countAlertsSimple = get_group_alerts($id_groups, $filter_alert, false, $whereAlertSimple, false, false, $idGroup, true, $strict_user, $tag_filter, $action_filter, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -429,7 +429,9 @@ if (check_login()) {
|
||||
$table_modules->data[$key][1] = remove_right_zeros(
|
||||
number_format(
|
||||
$value['datos'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
@ -59,6 +59,7 @@ $drawConsoleSound = (bool) get_parameter('drawConsoleSound', false);
|
||||
$process_buffers = (bool) get_parameter('process_buffers', false);
|
||||
$get_extended_event = (bool) get_parameter('get_extended_event');
|
||||
$change_status = (bool) get_parameter('change_status');
|
||||
$get_Acknowledged = (bool) get_parameter('get_Acknowledged');
|
||||
$change_owner = (bool) get_parameter('change_owner');
|
||||
$add_comment = (bool) get_parameter('add_comment');
|
||||
$dialogue_event_response = (bool) get_parameter('dialogue_event_response');
|
||||
@ -351,12 +352,14 @@ if ($save_event_filter) {
|
||||
$values['severity'] = implode(',', get_parameter('severity', -1));
|
||||
$values['status'] = get_parameter('status');
|
||||
$values['search'] = get_parameter('search');
|
||||
$values['not_search'] = get_parameter('not_search');
|
||||
$values['text_agent'] = get_parameter('text_agent');
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
$values['id_agent_module'] = get_parameter('id_agent_module');
|
||||
$values['pagination'] = get_parameter('pagination');
|
||||
$values['event_view_hr'] = get_parameter('event_view_hr');
|
||||
$values['id_user_ack'] = get_parameter('id_user_ack');
|
||||
$values['owner_user'] = get_parameter('owner_user');
|
||||
$values['group_rep'] = get_parameter('group_rep');
|
||||
$values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([]));
|
||||
$values['tag_without'] = get_parameter(
|
||||
@ -409,12 +412,14 @@ if ($update_event_filter) {
|
||||
$values['severity'] = implode(',', get_parameter('severity', -1));
|
||||
$values['status'] = get_parameter('status');
|
||||
$values['search'] = get_parameter('search');
|
||||
$values['not_search'] = get_parameter('not_search');
|
||||
$values['text_agent'] = get_parameter('text_agent');
|
||||
$values['id_agent'] = get_parameter('id_agent');
|
||||
$values['id_agent_module'] = get_parameter('id_agent_module');
|
||||
$values['pagination'] = get_parameter('pagination');
|
||||
$values['event_view_hr'] = get_parameter('event_view_hr');
|
||||
$values['id_user_ack'] = get_parameter('id_user_ack');
|
||||
$values['owner_user'] = get_parameter('owner_user');
|
||||
$values['group_rep'] = get_parameter('group_rep');
|
||||
$values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([]));
|
||||
$values['tag_without'] = get_parameter(
|
||||
@ -481,6 +486,7 @@ if ($get_filter_values) {
|
||||
'user_comment' => '',
|
||||
'id_extra' => '',
|
||||
'id_user_ack' => '',
|
||||
'owner_user' => '',
|
||||
'date_from' => '',
|
||||
'time_from' => '',
|
||||
'date_to' => '',
|
||||
@ -642,6 +648,8 @@ function load_form_filter() {
|
||||
$("#status").val(val);
|
||||
if (i == 'search')
|
||||
$('#text-search').val(val);
|
||||
if (i == 'not_search')
|
||||
$('#checkbox-not_search').val(val);
|
||||
if (i == 'text_agent')
|
||||
$('input[name=text_agent]').val(val);
|
||||
if (i == 'id_agent')
|
||||
@ -654,6 +662,8 @@ function load_form_filter() {
|
||||
$("#text-event_view_hr").val(val);
|
||||
if (i == 'id_user_ack')
|
||||
$("#id_user_ack").val(val);
|
||||
if (i == 'owner_user')
|
||||
$("#owner_user").val(val);
|
||||
if (i == 'group_rep')
|
||||
$("#group_rep").val(val);
|
||||
if (i == 'tag_with')
|
||||
@ -898,12 +908,14 @@ function save_new_filter() {
|
||||
"severity" : $("#severity").val(),
|
||||
"status" : $("#status").val(),
|
||||
"search" : $("#text-search").val(),
|
||||
"not_search" : $("#checkbox-not_search").val(),
|
||||
"text_agent" : $("#text_id_agent").val(),
|
||||
"id_agent" : $('input:hidden[name=id_agent]').val(),
|
||||
"id_agent_module" : $('input:hidden[name=module_search_hidden]').val(),
|
||||
"pagination" : $("#pagination").val(),
|
||||
"event_view_hr" : $("#text-event_view_hr").val(),
|
||||
"id_user_ack" : $("#id_user_ack").val(),
|
||||
"owner_user" : $("#owner_user").val(),
|
||||
"group_rep" : $("#group_rep").val(),
|
||||
"tag_with": Base64.decode($("#hidden-tag_with").val()),
|
||||
"tag_without": Base64.decode($("#hidden-tag_without").val()),
|
||||
@ -975,12 +987,14 @@ function save_update_filter() {
|
||||
"severity" : $("#severity").val(),
|
||||
"status" : $("#status").val(),
|
||||
"search" : $("#text-search").val(),
|
||||
"not_search" : $("#checkbox-not_search").val(),
|
||||
"text_agent" : $("#text_id_agent").val(),
|
||||
"id_agent" : $('input:hidden[name=id_agent]').val(),
|
||||
"id_agent_module" : $('input:hidden[name=module_search_hidden]').val(),
|
||||
"pagination" : $("#pagination").val(),
|
||||
"event_view_hr" : $("#text-event_view_hr").val(),
|
||||
"id_user_ack" : $("#id_user_ack").val(),
|
||||
"owner_user" : $("#owner_user").val(),
|
||||
"group_rep" : $("#group_rep").val(),
|
||||
"tag_with" : Base64.decode($("#hidden-tag_with").val()),
|
||||
"tag_without" : Base64.decode($("#hidden-tag_without").val()),
|
||||
@ -1500,6 +1514,12 @@ if ($change_status === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($get_Acknowledged === true) {
|
||||
$event_id = get_parameter('event_id');
|
||||
echo events_page_general_acknowledged($event_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($change_owner === true) {
|
||||
$new_owner = get_parameter('new_owner', '');
|
||||
$event_id = (int) get_parameter('event_id', 0);
|
||||
@ -2018,8 +2038,10 @@ if ($total_event_graph) {
|
||||
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
|
||||
$prueba = grafico_eventos_total('', 280, 150, false, true);
|
||||
echo $prueba;
|
||||
$out = '<div style="flex: 0 0 300px; width:99%; height:100%;">';
|
||||
$out .= grafico_eventos_total('', 0, 0, false, true);
|
||||
$out .= '<div>';
|
||||
echo $out;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2028,8 +2050,10 @@ if ($graphic_event_group) {
|
||||
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
|
||||
$prueba = grafico_eventos_grupo(280, 150, '', false, true);
|
||||
echo $prueba;
|
||||
$out = '<div style="flex: 0 0 300px; width:99%; height:100%;">';
|
||||
$out .= grafico_eventos_grupo(0, 0, '', false, true);
|
||||
$out .= '<div>';
|
||||
echo $out;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2270,7 +2294,7 @@ if ($drawConsoleSound === true) {
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => __('Time Sound'),
|
||||
'label' => __('Sound duration'),
|
||||
'arguments' => [
|
||||
'type' => 'select',
|
||||
'fields' => $times_sound,
|
||||
@ -2417,6 +2441,7 @@ if ($get_events_fired) {
|
||||
'severity' => -1,
|
||||
'status' => -1,
|
||||
'search' => '',
|
||||
'not_search' => 0,
|
||||
'text_agent' => '',
|
||||
'id_agent' => 0,
|
||||
'id_agent_module' => 0,
|
||||
|
@ -26,6 +26,8 @@
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||
|
||||
// Begin.
|
||||
if (check_login()) {
|
||||
global $config;
|
||||
@ -59,6 +61,11 @@ if (check_login()) {
|
||||
0
|
||||
);
|
||||
|
||||
$get_data_dataMatrix = (bool) get_parameter(
|
||||
'get_data_dataMatrix',
|
||||
0
|
||||
);
|
||||
|
||||
if ($get_agent_modules_json_by_name === true) {
|
||||
$agent_name = get_parameter('agent_name');
|
||||
|
||||
@ -499,7 +506,9 @@ if (check_login()) {
|
||||
$data[] = remove_right_zeros(
|
||||
number_format(
|
||||
$row[$attr[0]],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -507,7 +516,9 @@ if (check_login()) {
|
||||
$data[] = remove_right_zeros(
|
||||
number_format(
|
||||
$row[$attr[0]],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -524,7 +535,9 @@ if (check_login()) {
|
||||
$data[] = remove_right_zeros(
|
||||
number_format(
|
||||
$row[$attr[0]],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -1430,4 +1443,190 @@ if (check_login()) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($get_data_dataMatrix === true) {
|
||||
global $config;
|
||||
|
||||
$table_id = get_parameter('table_id', '');
|
||||
$modules = json_decode(
|
||||
io_safe_output(
|
||||
get_parameter('modules', '')
|
||||
),
|
||||
true
|
||||
);
|
||||
$period = get_parameter('period', 0);
|
||||
$slice = get_parameter('slice', 0);
|
||||
|
||||
// Datatables offset, limit.
|
||||
$start = get_parameter('start', 0);
|
||||
$formatData = (bool) get_parameter('formatData', 0);
|
||||
$length = get_parameter(
|
||||
'length',
|
||||
$config['block_size']
|
||||
);
|
||||
|
||||
$order = get_datatable_order(true);
|
||||
|
||||
// Total time per page.
|
||||
$time_all_box = ($length * $slice);
|
||||
|
||||
// Total number of boxes.
|
||||
$total_box = ceil($period / $slice);
|
||||
|
||||
if ($start > 0) {
|
||||
$start = ($start / $length);
|
||||
}
|
||||
|
||||
// Uncompress.
|
||||
try {
|
||||
ob_start();
|
||||
$dateNow = get_system_time();
|
||||
$final = ($dateNow - $period);
|
||||
$date = ($dateNow - ($time_all_box * $start));
|
||||
|
||||
if (($date - $time_all_box) > $final) {
|
||||
$datelimit = ($date - $time_all_box);
|
||||
} else {
|
||||
$datelimit = $final;
|
||||
}
|
||||
|
||||
foreach ($modules as $key => $value) {
|
||||
if (is_metaconsole() === true) {
|
||||
try {
|
||||
$node = new Node((int) $value['id_node']);
|
||||
$node->connect();
|
||||
} catch (\Exception $e) {
|
||||
// Unexistent agent.
|
||||
$node->disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
$value['thresholds'] = [
|
||||
'min_critical' => (empty($value['c_min']) === true) ? null : $value['c_min'],
|
||||
'max_critical' => (empty($value['c_max']) === true) ? null : $value['c_max'],
|
||||
'min_warning' => (empty($value['w_min']) === true) ? null : $value['w_min'],
|
||||
'max_warning' => (empty($value['w_max']) === true) ? null : $value['w_max'],
|
||||
];
|
||||
|
||||
$module_data = db_uncompress_module_data(
|
||||
$value['id'],
|
||||
$datelimit,
|
||||
$date,
|
||||
$slice,
|
||||
true
|
||||
);
|
||||
|
||||
$uncompressData[] = array_reduce(
|
||||
$module_data,
|
||||
function ($carry, $item) use ($value, $config, $formatData) {
|
||||
// Last value.
|
||||
$vdata = null;
|
||||
if (is_array($item['data']) === true) {
|
||||
foreach ($item['data'] as $v) {
|
||||
$vdata = $v['datos'];
|
||||
}
|
||||
}
|
||||
|
||||
$status = get_status_data_modules(
|
||||
$value['id'],
|
||||
$vdata,
|
||||
$value['thresholds']
|
||||
);
|
||||
|
||||
$resultData = '<span style="color:'.$status['color'].'">';
|
||||
if ($vdata !== null && $vdata !== '' && $vdata !== false) {
|
||||
if (isset($formatData) === true
|
||||
&& (bool) $formatData === true
|
||||
) {
|
||||
$resultData .= format_for_graph(
|
||||
$vdata,
|
||||
$config['graph_precision']
|
||||
);
|
||||
} else {
|
||||
$resultData .= sla_truncate(
|
||||
$vdata,
|
||||
$config['graph_precision']
|
||||
);
|
||||
}
|
||||
|
||||
$resultData .= ' '.$value['unit'];
|
||||
} else {
|
||||
$resultData .= '--';
|
||||
}
|
||||
|
||||
$resultData .= '</span>';
|
||||
$carry[] = [
|
||||
'utimestamp' => $item['utimestamp'],
|
||||
'Column-'.$value['id'] => $resultData,
|
||||
];
|
||||
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$node->disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($uncompressData) === false) {
|
||||
$data = array_reduce(
|
||||
$uncompressData,
|
||||
function ($carry, $item) {
|
||||
foreach ($item as $data_module) {
|
||||
foreach ($data_module as $key => $value) {
|
||||
if ($key === 'utimestamp') {
|
||||
$carry[$data_module['utimestamp']]['date'] = date('Y-m-d H:i', (int) $value);
|
||||
} else {
|
||||
$carry[$data_module['utimestamp']][$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (empty($data) === false) {
|
||||
$data = array_reverse(array_values($data));
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// RecordsTotal && recordsfiltered resultados totales.
|
||||
echo json_encode(
|
||||
[
|
||||
'data' => $data,
|
||||
'recordsTotal' => $total_box,
|
||||
'recordsFiltered' => $total_box,
|
||||
]
|
||||
);
|
||||
|
||||
$response = ob_get_clean();
|
||||
|
||||
// Clean output buffer.
|
||||
while (ob_get_level() !== 0) {
|
||||
ob_end_clean();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo json_encode(
|
||||
['error' => $e->getMessage()]
|
||||
);
|
||||
}
|
||||
|
||||
// If not valid it will throw an exception.
|
||||
json_decode($response);
|
||||
if (json_last_error() == JSON_ERROR_NONE) {
|
||||
// If valid dump.
|
||||
echo $response;
|
||||
} else {
|
||||
echo json_encode(
|
||||
['error' => $response]
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
29
pandora_console/include/ajax/profile.php
Normal file
29
pandora_console/include/ajax/profile.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
// Pandora FMS- http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
global $config;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_profile.php';
|
||||
|
||||
// Clean the possible blanks introduced by the included files.
|
||||
ob_clean();
|
||||
|
||||
$search_profile_name = (bool) get_parameter('search_profile_nanme');
|
||||
|
||||
if ($search_profile_name) {
|
||||
$profile_name = (string) get_parameter('profile_name');
|
||||
|
||||
echo json_encode(profile_exist($profile_name));
|
||||
|
||||
return;
|
||||
}
|
@ -148,75 +148,37 @@ function process_user_login_local($login, $pass, $api=false)
|
||||
{
|
||||
global $config, $mysql_cache;
|
||||
|
||||
// Connect to Database
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
if (!$api) {
|
||||
$sql = sprintf(
|
||||
"SELECT `id_user`, `password`
|
||||
FROM `tusuario`
|
||||
WHERE `id_user` = '%s' AND `not_login` = 0
|
||||
AND `disabled` = 0",
|
||||
$login
|
||||
);
|
||||
} else {
|
||||
$sql = sprintf(
|
||||
"SELECT `id_user`, `password`
|
||||
FROM `tusuario`
|
||||
WHERE `id_user` = '%s'
|
||||
AND `disabled` = 0",
|
||||
$login
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
if (!$api) {
|
||||
$sql = sprintf(
|
||||
'SELECT "id_user", "password"
|
||||
FROM "tusuario"
|
||||
WHERE "id_user" = \'%s\' AND "not_login" = 0
|
||||
AND "disabled" = 0',
|
||||
$login
|
||||
);
|
||||
} else {
|
||||
$sql = sprintf(
|
||||
'SELECT "id_user", "password"
|
||||
FROM "tusuario"
|
||||
WHERE "id_user" = \'%s\'
|
||||
AND "disabled" = 0',
|
||||
$login
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
if (!$api) {
|
||||
$sql = sprintf(
|
||||
'SELECT id_user, password
|
||||
FROM tusuario
|
||||
WHERE id_user = \'%s\' AND not_login = 0
|
||||
AND disabled = 0',
|
||||
$login
|
||||
);
|
||||
} else {
|
||||
$sql = sprintf(
|
||||
'SELECT id_user, password
|
||||
FROM tusuario
|
||||
WHERE id_user = \'%s\'
|
||||
AND disabled = 0',
|
||||
$login
|
||||
);
|
||||
}
|
||||
break;
|
||||
// Connect to Database.
|
||||
if (!$api) {
|
||||
$sql = sprintf(
|
||||
"SELECT `id_user`, `password`
|
||||
FROM `tusuario`
|
||||
WHERE `id_user` = '%s' AND `not_login` = 0
|
||||
AND `disabled` = 0",
|
||||
$login
|
||||
);
|
||||
} else {
|
||||
$sql = sprintf(
|
||||
"SELECT `id_user`, `password`
|
||||
FROM `tusuario`
|
||||
WHERE `id_user` = '%s'
|
||||
AND `disabled` = 0",
|
||||
$login
|
||||
);
|
||||
}
|
||||
|
||||
$row = db_get_row_sql($sql);
|
||||
|
||||
// Check that row exists, that password is not empty and that password is the same hash
|
||||
if ($row !== false && $row['password'] !== md5('')
|
||||
&& $row['password'] == md5($pass)
|
||||
) {
|
||||
// Perform password check whether it is MD5-hashed (old hashing) or Bcrypt-hashed.
|
||||
if (strlen($row['password']) === 32) {
|
||||
// MD5.
|
||||
$credentials_check = $row !== false && $row['password'] !== md5('') && $row['password'] == md5($pass);
|
||||
} else {
|
||||
// Bcrypt.
|
||||
$credentials_check = password_verify($pass, $row['password']);
|
||||
}
|
||||
|
||||
if ($credentials_check === true) {
|
||||
// Login OK
|
||||
// Nick could be uppercase or lowercase (select in MySQL
|
||||
// is not case sensitive)
|
||||
@ -231,6 +193,11 @@ function process_user_login_local($login, $pass, $api=false)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Override password to use Bcrypt encryption.
|
||||
if (strlen($row['password']) === 32) {
|
||||
update_user_password($login, $pass);
|
||||
}
|
||||
|
||||
return $row['id_user'];
|
||||
} else {
|
||||
if (!user_can_login($login)) {
|
||||
@ -655,8 +622,16 @@ function process_user_contact(string $id_user)
|
||||
function create_user($id_user, $password, $user_info)
|
||||
{
|
||||
$values = $user_info;
|
||||
|
||||
$column_type = db_get_column_type('tusuario', 'password');
|
||||
if (empty($column_type) === false && isset($column_type[0]['COLUMN_TYPE'])) {
|
||||
$column_type = ($column_type[0]['COLUMN_TYPE'] === 'varchar(60)');
|
||||
} else {
|
||||
$column_type = false;
|
||||
}
|
||||
|
||||
$values['id_user'] = $id_user;
|
||||
$values['password'] = md5($password);
|
||||
$values['password'] = ($column_type === false) ? md5($password) : password_hash($password, PASSWORD_BCRYPT);
|
||||
$values['last_connect'] = 0;
|
||||
$values['registered'] = get_system_time();
|
||||
|
||||
@ -747,7 +722,7 @@ function delete_user(string $id_user)
|
||||
|
||||
|
||||
/**
|
||||
* Update the password in MD5 for user pass as id_user with
|
||||
* Update the password using BCRYPT algorithm for specific id_user passing
|
||||
* password in plain text.
|
||||
*
|
||||
* @param string $user User ID.
|
||||
@ -764,9 +739,19 @@ function update_user_password(string $user, string $password_new)
|
||||
return false;
|
||||
}
|
||||
|
||||
$column_type = db_get_column_type('tusuario', 'password');
|
||||
if (empty($column_type) === false && isset($column_type[0]['COLUMN_TYPE'])) {
|
||||
$column_type = ($column_type[0]['COLUMN_TYPE'] === 'varchar(60)');
|
||||
} else {
|
||||
$column_type = false;
|
||||
}
|
||||
|
||||
if (isset($config['auth']) === true && $config['auth'] === 'pandora') {
|
||||
$sql = sprintf(
|
||||
"UPDATE tusuario SET password = '".md5($password_new)."', last_pass_change = '".date('Y-m-d H:i:s', get_system_time())."' WHERE id_user = '".$user."'"
|
||||
"UPDATE tusuario SET password = '%s', last_pass_change = '%s' WHERE id_user = '%s'",
|
||||
($column_type === false) ? md5($password_new) : password_hash($password_new, PASSWORD_BCRYPT),
|
||||
date('Y-m-d H:i:s', get_system_time()),
|
||||
$user
|
||||
);
|
||||
|
||||
$connection = mysql_connect_db(
|
||||
@ -786,7 +771,7 @@ function update_user_password(string $user, string $password_new)
|
||||
return db_process_sql_update(
|
||||
'tusuario',
|
||||
[
|
||||
'password' => md5($password_new),
|
||||
'password' => ($column_type === false) ? md5($password_new) : password_hash($password_new, PASSWORD_BCRYPT),
|
||||
'last_pass_change' => date('Y/m/d H:i:s', get_system_time()),
|
||||
],
|
||||
['id_user' => $user]
|
||||
@ -1050,7 +1035,14 @@ function create_user_and_permisions_ldap(
|
||||
$values['id_user'] = $id_user;
|
||||
|
||||
if ($config['ldap_save_password'] || $config['ad_save_password']) {
|
||||
$values['password'] = md5($password);
|
||||
$column_type = db_get_column_type('tusuario', 'password');
|
||||
if (empty($column_type) === false && isset($column_type[0]['COLUMN_TYPE'])) {
|
||||
$column_type = ($column_type[0]['COLUMN_TYPE'] === 'varchar(60)');
|
||||
} else {
|
||||
$column_type = false;
|
||||
}
|
||||
|
||||
$values['password'] = ($column_type === false) ? md5($password) : password_hash($password, PASSWORD_BCRYPT);
|
||||
}
|
||||
|
||||
$values['last_connect'] = 0;
|
||||
@ -1482,11 +1474,26 @@ function change_local_user_pass_ldap($id_user, $password)
|
||||
$local_user_pass = db_get_value_filter('password', 'tusuario', ['id_user' => $id_user]);
|
||||
|
||||
$return = false;
|
||||
if (md5($password) !== $local_user_pass) {
|
||||
$values_update = [];
|
||||
$values_update['password'] = md5($password);
|
||||
|
||||
$return = db_process_sql_update('tusuario', $values_update, ['id_user' => $id_user]);
|
||||
$column_type = db_get_column_type('tusuario', 'password');
|
||||
if (empty($column_type) === false && isset($column_type[0]['COLUMN_TYPE'])) {
|
||||
$column_type = ($column_type[0]['COLUMN_TYPE'] === 'varchar(60)');
|
||||
} else {
|
||||
$column_type = false;
|
||||
}
|
||||
|
||||
$values_update = [];
|
||||
|
||||
if ($column_type === false) {
|
||||
if (md5($password) !== $local_user_pass) {
|
||||
$values_update['password'] = md5($password);
|
||||
$return = db_process_sql_update('tusuario', $values_update, ['id_user' => $id_user]);
|
||||
}
|
||||
} else {
|
||||
if (password_hash($password, PASSWORD_BCRYPT) !== $local_user_pass) {
|
||||
$values_update['password'] = password_hash($password, PASSWORD_BCRYPT);
|
||||
$return = db_process_sql_update('tusuario', $values_update, ['id_user' => $id_user]);
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
|
@ -42,40 +42,23 @@ require_once $config['homedir'].'/include/functions_agents.php';
|
||||
require_once $config['homedir'].'/include/functions_tags.php';
|
||||
|
||||
$data_raw = get_parameter('data');
|
||||
$data_decoded = json_decode(base64_decode($data_raw), true);
|
||||
$data_decoded = json_decode(io_safe_output($data_raw), true);
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
$data = urldecode($data_decoded['data']);
|
||||
$session_id = urldecode($data_decoded['session_id']);
|
||||
$data_combined = urldecode($data_decoded['data_combined']);
|
||||
$data_module_list = urldecode($data_decoded['data_module_list']);
|
||||
$type_graph_pdf = urldecode($data_decoded['type_graph_pdf']);
|
||||
$viewport_width = urldecode($data_decoded['viewport_width']);
|
||||
$data = $data_decoded['data'];
|
||||
$session_id = $data_decoded['session_id'];
|
||||
$type_graph_pdf = $data_decoded['type_graph_pdf'];
|
||||
|
||||
$data_combined = [];
|
||||
if (isset($data_decoded['data_combined']) === true) {
|
||||
$data_combined = $data_decoded['data_combined'];
|
||||
}
|
||||
|
||||
$data_module_list = [];
|
||||
if (isset($data_decoded['data_module_list']) === true) {
|
||||
$data_module_list = $data_decoded['data_module_list'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Echo to stdout a PhantomJS callback call.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function echoPhantomCallback()
|
||||
{
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$('document').ready(function () {
|
||||
setTimeout(function () {
|
||||
try {
|
||||
var status = window.callPhantom({ status: "loaded" });
|
||||
} catch (error) {
|
||||
console.log("CALLBACK ERROR", error.message)
|
||||
}
|
||||
}, 100);
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
// Initialize session.
|
||||
global $config;
|
||||
|
||||
@ -99,7 +82,6 @@ if (check_login(false) === false) {
|
||||
</head>
|
||||
<body>
|
||||
<h1>Access is not granted</h1>
|
||||
<?php echoPhantomCallback(); ?>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -108,10 +90,16 @@ if (check_login(false) === false) {
|
||||
}
|
||||
|
||||
// Access granted.
|
||||
$params = json_decode($data, true);
|
||||
$params = $data;
|
||||
if (isset($params['backgroundColor']) === false) {
|
||||
$params['backgroundColor'] = 'inherit';
|
||||
}
|
||||
|
||||
// Metaconsole connection to the node.
|
||||
$server_id = $params['server_id'];
|
||||
$server_id = 0;
|
||||
if (isset($params['server_id']) === true) {
|
||||
$server_id = $params['server_id'];
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true && empty($server_id) === false) {
|
||||
$server = metaconsole_get_connection_by_id($server_id);
|
||||
@ -124,7 +112,6 @@ if (is_metaconsole() === true && empty($server_id) === false) {
|
||||
ui_print_error_message(
|
||||
__('There was a problem connecting with the node')
|
||||
);
|
||||
echoPhantomCallback();
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@ -133,7 +120,6 @@ if (is_metaconsole() === true && empty($server_id) === false) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$user_language = get_user_language($config['id_user']);
|
||||
if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
$cfr = new CachedFileReader('languages/'.$user_language.'.mo');
|
||||
@ -146,16 +132,16 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Pandora FMS Graph (<?php echo agents_get_alias($agent_id).' - '.$interface_name; ?>)</title>
|
||||
<title>Pandora FMS Graph</title>
|
||||
<link rel="stylesheet" href="styles/pandora.css" type="text/css" />
|
||||
<link rel="stylesheet" href="styles/pandora_minimal.css" type="text/css" />
|
||||
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
|
||||
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
|
||||
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
|
||||
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
|
||||
<script language="javascript" type='text/javascript' src='javascript/jquery.current.js'></script>
|
||||
<script language="javascript" type='text/javascript' src='javascript/jquery.pandora.js'></script>
|
||||
<script language="javascript" type='text/javascript' src='javascript/jquery-ui.min.js'></script>
|
||||
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.min.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.time.js"></script>
|
||||
@ -170,48 +156,46 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.exportdata.pandora.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/jquery.flot.axislabels.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/flot/pandora.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/chartjs/chart.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="graphs/chartjs/chartjs-plugin-datalabels.min.js"></script>
|
||||
</head>
|
||||
<body style='background-color: <?php echo $params['backgroundColor']; ?>;'>
|
||||
<body style='width:794px; margin: 0px; background-color: <?php echo $params['backgroundColor']; ?>;'>
|
||||
<?php
|
||||
$params['only_image'] = false;
|
||||
$params['menu'] = false;
|
||||
|
||||
$params['disable_black'] = true;
|
||||
$params_combined = json_decode($data_combined, true);
|
||||
$module_list = json_decode($data_module_list, true);
|
||||
$params_combined = $data_combined;
|
||||
$module_list = $data_module_list;
|
||||
|
||||
if (isset($params['vconsole']) === false || $params['vconsole'] === false) {
|
||||
if ((int) $viewport_width > 0) {
|
||||
$params['width'] = (int) $viewport_width;
|
||||
$viewport = [
|
||||
'width' => 0,
|
||||
'height' => 0,
|
||||
];
|
||||
|
||||
$style = 'width:100%;';
|
||||
if (isset($params['options']['viewport']) === true) {
|
||||
$viewport = $params['options']['viewport'];
|
||||
if (empty($viewport['width']) === false) {
|
||||
$style .= 'width:'.$viewport['width'].'px;';
|
||||
}
|
||||
|
||||
if ((isset($params['width']) === false
|
||||
|| ($params['width'] <= 0))
|
||||
) {
|
||||
if ((int) $params['width'] <= 0) {
|
||||
$params['width'] = 650;
|
||||
}
|
||||
|
||||
if ((int) $params['landscape'] === 1) {
|
||||
$params['width'] = 850;
|
||||
}
|
||||
|
||||
if ($type_graph_pdf === 'slicebar') {
|
||||
$params['width'] = 100;
|
||||
$params['height'] = 70;
|
||||
}
|
||||
if (empty($viewport['height']) === false) {
|
||||
$style .= 'height:'.$viewport['height'].'px;';
|
||||
}
|
||||
}
|
||||
|
||||
echo '<div>';
|
||||
echo '<div id="container-chart-generator-item" style="'.$style.' margin:0px;">';
|
||||
switch ($type_graph_pdf) {
|
||||
case 'combined':
|
||||
$params['pdf'] = true;
|
||||
echo graphic_combined_module(
|
||||
$result = graphic_combined_module(
|
||||
$module_list,
|
||||
$params,
|
||||
$params_combined
|
||||
);
|
||||
|
||||
echo $result;
|
||||
break;
|
||||
|
||||
case 'sparse':
|
||||
@ -219,67 +203,40 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
echo grafico_modulo_sparse($params);
|
||||
break;
|
||||
|
||||
case 'pie_chart':
|
||||
case 'pie_graph':
|
||||
$params['pdf'] = true;
|
||||
echo flot_pie_chart(
|
||||
$params['values'],
|
||||
$params['keys'],
|
||||
$params['width'],
|
||||
$params['height'],
|
||||
$params['water_mark_url'],
|
||||
$params['font'],
|
||||
$config['font_size'],
|
||||
$params['legend_position'],
|
||||
$params['colors'],
|
||||
$params['hide_labels']
|
||||
$chart = get_build_setup_charts(
|
||||
'PIE',
|
||||
$params['options'],
|
||||
$params['chart_data']
|
||||
);
|
||||
|
||||
echo $chart->render(true);
|
||||
break;
|
||||
|
||||
case 'vbar':
|
||||
case 'vbar_graph':
|
||||
$params['pdf'] = true;
|
||||
echo flot_vcolumn_chart($params);
|
||||
break;
|
||||
|
||||
case 'hbar':
|
||||
$params['pdf'] = true;
|
||||
echo flot_hcolumn_chart(
|
||||
$params['chart_data'],
|
||||
$params['width'],
|
||||
$params['height'],
|
||||
$params['water_mark_url'],
|
||||
$params['font'],
|
||||
$config['font_size'],
|
||||
$params['backgroundColor'],
|
||||
$params['tick_color'],
|
||||
$params['val_min'],
|
||||
$params['val_max'],
|
||||
$params['pdf']
|
||||
$chart = get_build_setup_charts(
|
||||
'BAR',
|
||||
$params['options'],
|
||||
$params['chart_data']
|
||||
);
|
||||
|
||||
echo $chart->render(true);
|
||||
break;
|
||||
|
||||
case 'ring_graph':
|
||||
$params['pdf'] = true;
|
||||
echo flot_custom_pie_chart(
|
||||
$params['chart_data'],
|
||||
$params['width'],
|
||||
$params['height'],
|
||||
$params['colors'],
|
||||
$params['module_name_list'],
|
||||
$params['long_index'],
|
||||
$params['no_data'],
|
||||
false,
|
||||
'',
|
||||
$params['water_mark'],
|
||||
$params['font'],
|
||||
$config['font_size'],
|
||||
$params['unit'],
|
||||
$params['ttl'],
|
||||
$params['homeurl'],
|
||||
$params['background_color'],
|
||||
$params['legend_position'],
|
||||
$params['background_color'],
|
||||
$params['pdf']
|
||||
$params['options']['width'] = 500;
|
||||
$params['options']['height'] = 500;
|
||||
|
||||
$chart = get_build_setup_charts(
|
||||
'DOUGHNUT',
|
||||
$params['options'],
|
||||
$params['chart_data']
|
||||
);
|
||||
|
||||
echo $chart->render(true);
|
||||
break;
|
||||
|
||||
case 'slicebar':
|
||||
@ -313,7 +270,6 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
echoPhantomCallback();
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -2636,6 +2636,8 @@ class AgentWizard extends HTML
|
||||
*/
|
||||
private function resultsInterfaceWizard()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$generalInterfaceModules = $this->getInterfacesModules();
|
||||
$generalInterfaceTables = [];
|
||||
$generalInterfaceModulesUpdated = [];
|
||||
@ -2849,7 +2851,12 @@ class AgentWizard extends HTML
|
||||
// Format current value with thousands and decimals.
|
||||
if (is_numeric($currentValue) === true) {
|
||||
$decimals = (is_float($currentValue) === true) ? 2 : 0;
|
||||
$currentValue = number_format($currentValue, $decimals);
|
||||
$currentValue = number_format(
|
||||
$currentValue,
|
||||
$decimals,
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
);
|
||||
}
|
||||
|
||||
// It unit of measure have data, attach to current value.
|
||||
|
@ -167,7 +167,7 @@ class ConsoleSupervisor
|
||||
* NOTIF.PHP.UPLOAD_MAX_FILESIZE
|
||||
* NOTIF.PHP.MEMORY_LIMIT
|
||||
* NOTIF.PHP.DISABLE_FUNCTIONS
|
||||
* NOTIF.PHP.PHANTOMJS
|
||||
* NOTIF.PHP.CHROMIUM
|
||||
* NOTIF.PHP.VERSION
|
||||
*/
|
||||
|
||||
@ -349,7 +349,7 @@ class ConsoleSupervisor
|
||||
* NOTIF.PHP.UPLOAD_MAX_FILESIZE
|
||||
* NOTIF.PHP.MEMORY_LIMIT
|
||||
* NOTIF.PHP.DISABLE_FUNCTIONS
|
||||
* NOTIF.PHP.PHANTOMJS
|
||||
* NOTIF.PHP.CHROMIUM
|
||||
* NOTIF.PHP.VERSION
|
||||
*/
|
||||
|
||||
@ -528,11 +528,7 @@ class ConsoleSupervisor
|
||||
*/
|
||||
public function maintenanceOperations()
|
||||
{
|
||||
/*
|
||||
* Process cache clean if needed.
|
||||
*/
|
||||
|
||||
$this->checkCleanPhantomCache();
|
||||
}
|
||||
|
||||
|
||||
@ -688,7 +684,7 @@ class ConsoleSupervisor
|
||||
case 'NOTIF.PHP.UPLOAD_MAX_FILESIZE':
|
||||
case 'NOTIF.PHP.MEMORY_LIMIT':
|
||||
case 'NOTIF.PHP.DISABLE_FUNCTIONS':
|
||||
case 'NOTIF.PHP.PHANTOMJS':
|
||||
case 'NOTIF.PHP.CHROMIUM':
|
||||
case 'NOTIF.PHP.VERSION':
|
||||
case 'NOTIF.HISTORYDB':
|
||||
case 'NOTIF.PANDORADB':
|
||||
@ -1431,9 +1427,9 @@ class ConsoleSupervisor
|
||||
$PHPmemory_limit_min = config_return_in_bytes('-1');
|
||||
}
|
||||
|
||||
// PhantomJS status.
|
||||
$phantomjs_dir = io_safe_output($config['phantomjs_bin']);
|
||||
$result_ejecution = exec($phantomjs_dir.'/phantomjs --version');
|
||||
// Chromium status.
|
||||
$chromium_dir = io_safe_output($config['chromium_path']);
|
||||
$result_ejecution = exec($chromium_dir.' --version');
|
||||
|
||||
// PHP version checks.
|
||||
$php_version = phpversion();
|
||||
@ -1577,21 +1573,20 @@ class ConsoleSupervisor
|
||||
}
|
||||
|
||||
if (!isset($result_ejecution) || $result_ejecution == '') {
|
||||
$url = 'https://pandorafms.com/manual/en/documentation/02_installation/04_configuration#Phantomjs';
|
||||
if ($config['language'] == 'es') {
|
||||
$url = 'https://pandorafms.com/manual/es/documentation/02_installation/04_configuration#Phantomjs';
|
||||
}
|
||||
|
||||
$url = 'https://www.chromium.org/getting-involved/download-chromium/';
|
||||
// if ($config['language'] == 'es') {
|
||||
// $url = 'https://pandorafms.com/manual/es/documentation/02_installation/04_configuration#Phantomjs';
|
||||
// }
|
||||
$this->notify(
|
||||
[
|
||||
'type' => 'NOTIF.PHP.PHANTOMJS',
|
||||
'title' => __('PhantomJS is not installed'),
|
||||
'message' => __('To be able to create images of the graphs for PDFs, please install the PhantomJS extension. For that, it is necessary to follow these steps:'),
|
||||
'type' => 'NOTIF.PHP.CHROMIUM',
|
||||
'title' => __('chromium is not installed'),
|
||||
'message' => __('To be able to create images of the graphs for PDFs, please install the chromium extension. For that, it is necessary to follow these steps:'),
|
||||
'url' => $url,
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$this->cleanNotifications('NOTIF.PHP.PHANTOMJS');
|
||||
$this->cleanNotifications('NOTIF.PHP.CHROMIUM');
|
||||
}
|
||||
|
||||
if ($php_version_array[0] < 8) {
|
||||
@ -2698,34 +2693,6 @@ class ConsoleSupervisor
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clean Phantom cache if needed.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function checkCleanPhantomCache()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (isset($config['clean_phantomjs_cache']) !== true
|
||||
|| (int) $config['clean_phantomjs_cache'] !== 1
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
$cache_dir = $config['homedir'].'/attachment/cache';
|
||||
if (is_dir($cache_dir) === true) {
|
||||
Files::rmrf($cache_dir);
|
||||
}
|
||||
|
||||
// Clean process has ended.
|
||||
config_update_value(
|
||||
'clean_phantomjs_cache',
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verifies the status of synchronization queue and warns if something is
|
||||
* not working as expected.
|
||||
|
@ -141,8 +141,9 @@ class Diagnostics extends Wizard
|
||||
'images/pdf.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Export to PDF'),
|
||||
'class' => 'invert_filter',
|
||||
'title' => __('Export to PDF'),
|
||||
'class' => 'invert_filter',
|
||||
'onclick' => 'blockResubmit($(this))',
|
||||
]
|
||||
);
|
||||
$header_buttons = [
|
||||
@ -986,7 +987,7 @@ class Diagnostics extends Wizard
|
||||
],
|
||||
'tablesFragmentationValue' => [
|
||||
'name' => __('Tables fragmentation (current value)'),
|
||||
'value' => number_format($tFragmentationValue, 2).'%',
|
||||
'value' => number_format($tFragmentationValue, 2, $config['decimal_separator'], $config['thousand_separator']).'%',
|
||||
],
|
||||
'tablesFragmentationStatus' => [
|
||||
'name' => __('Table fragmentation status'),
|
||||
@ -1121,7 +1122,9 @@ class Diagnostics extends Wizard
|
||||
if ($totalModuleIntervalTime !== false) {
|
||||
$averageTime = number_format(
|
||||
((int) $totalNetworkModules / (int) $totalModuleIntervalTime),
|
||||
3
|
||||
3,
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
);
|
||||
}
|
||||
|
||||
@ -1748,7 +1751,7 @@ class Diagnostics extends Wizard
|
||||
$sizeServerLog = number_format($fileSize);
|
||||
$sizeServerLog = (0 + str_replace(',', '', $sizeServerLog));
|
||||
|
||||
$value = number_format(($fileSize / $mega), 3);
|
||||
$value = number_format(($fileSize / $mega), 3, $config['decimal_separator'], $config['thousand_separator']);
|
||||
$message = __('You have more than 10 MB of logs');
|
||||
$status = 0;
|
||||
if ($sizeServerLog <= $tenMega) {
|
||||
|
@ -506,6 +506,7 @@ class ModuleTemplates extends HTML
|
||||
header('Content-Disposition: attachment; filename='.preg_replace('/\s/', '_', $fileName).'.csv');
|
||||
header('Pragma: no-cache');
|
||||
header('Expires: 0');
|
||||
setDownloadCookieToken();
|
||||
|
||||
// Clean up output buffering
|
||||
while (@ob_end_clean()) {
|
||||
@ -931,7 +932,7 @@ class ModuleTemplates extends HTML
|
||||
]
|
||||
);
|
||||
$data[3] = '<a href="'.$this->baseUrl.'&action=delete&id_np='.$row['id_np'].'" onclick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[3] .= '<a href="'.$this->baseUrl.'&action=export&id_np='.$row['id_np'].'">'.html_print_image('images/csv.png', true, ['title' => __('Export to CSV'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[3] .= '<a href="'.$this->baseUrl.'&action=export&id_np='.$row['id_np'].'" onclick="blockResubmit($(this))">'.html_print_image('images/csv.png', true, ['title' => __('Export to CSV'), 'class' => 'invert_filter']).'</a>';
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
|
1573
pandora_console/include/class/SnmpConsole.class.php
Normal file
1573
pandora_console/include/class/SnmpConsole.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,7 @@
|
||||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC221205';
|
||||
$build_version = 'PC230105';
|
||||
$pandora_version = 'v7.0NG.767';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
@ -113,13 +113,6 @@ define('SECONDS_1YEAR', 31536000);
|
||||
define('SECONDS_2YEARS', 63072000);
|
||||
define('SECONDS_3YEARS', 94608000);
|
||||
|
||||
// PhantomJS Cache cleanup intervals.
|
||||
define('PHANTOM_CACHE_CLEANUP_ONCE', 0);
|
||||
define('PHANTOM_CACHE_CLEANUP_WEEKLY', SECONDS_1WEEK);
|
||||
define('PHANTOM_CACHE_CLEANUP_DAILY', SECONDS_1DAY);
|
||||
|
||||
|
||||
|
||||
// Separator constats.
|
||||
define('SEPARATOR_COLUMN', ';');
|
||||
define('SEPARATOR_ROW', chr(10));
|
||||
|
@ -16,7 +16,11 @@
|
||||
* @subpackage Generic_Functions
|
||||
*/
|
||||
|
||||
/**
|
||||
use HeadlessChromium\BrowserFactory;
|
||||
use HeadlessChromium\Clip;
|
||||
use HeadlessChromium\Page;
|
||||
|
||||
/*
|
||||
* Include the html and ui functions.
|
||||
*/
|
||||
require_once 'functions_html.php';
|
||||
@ -219,6 +223,8 @@ function list_files($directory, $stringSearch, $searchHandler, $return=false)
|
||||
*/
|
||||
function format_numeric($number, $decimals=1)
|
||||
{
|
||||
global $config;
|
||||
|
||||
// Translate to float in case there are characters in the string so
|
||||
// fmod doesn't throw a notice
|
||||
$number = (float) $number;
|
||||
@ -227,17 +233,11 @@ function format_numeric($number, $decimals=1)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Translators: This is separator of decimal point
|
||||
$dec_point = __('.');
|
||||
// Translators: This is separator of decimal point
|
||||
$thousands_sep = __(',');
|
||||
|
||||
// If has decimals
|
||||
if (fmod($number, 1) > 0) {
|
||||
return number_format($number, $decimals, $dec_point, $thousands_sep);
|
||||
return number_format($number, $decimals, $config['decimal_separator'], $config['thousand_separator']);
|
||||
}
|
||||
|
||||
return number_format($number, 0, $dec_point, $thousands_sep);
|
||||
return number_format($number, 0, $config['decimal_separator'], $config['thousand_separator']);
|
||||
}
|
||||
|
||||
|
||||
@ -967,6 +967,10 @@ function get_parameter($name, $default='')
|
||||
return get_parameter_get($name, $default);
|
||||
}
|
||||
|
||||
if (isset($_FILES[$name])) {
|
||||
return get_parameter_file($name, $default);
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
@ -1007,6 +1011,24 @@ function get_parameter_post($name, $default='')
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a parameter from a post file request.
|
||||
*
|
||||
* @param string $name key of the parameter in the $_FILES array
|
||||
* @param mixed $default default value if the key wasn't found
|
||||
*
|
||||
* @return mixed Whatever was in that parameter, cleaned however
|
||||
*/
|
||||
function get_parameter_file($name, $default='')
|
||||
{
|
||||
if ((isset($_FILES[$name])) && !empty($_FILES[$name])) {
|
||||
return io_safe_input($_FILES[$name]);
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get header.
|
||||
*
|
||||
@ -2104,7 +2126,7 @@ function get_snmpwalk(
|
||||
}
|
||||
|
||||
if (enterprise_installed()) {
|
||||
if ($server_to_exec != 0) {
|
||||
if (empty($server_to_exec) === false) {
|
||||
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
|
||||
|
||||
if (empty($server_data['port'])) {
|
||||
@ -4084,14 +4106,18 @@ function series_type_graph_array($data, $show_elements_graph)
|
||||
$data_return['legend'][$key] .= remove_right_zeros(
|
||||
number_format(
|
||||
$value['min'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
$data_return['legend'][$key] .= ' '.__('Max:');
|
||||
$data_return['legend'][$key] .= remove_right_zeros(
|
||||
number_format(
|
||||
$value['max'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
$data_return['legend'][$key] .= ' '._('Avg:');
|
||||
@ -4099,7 +4125,8 @@ function series_type_graph_array($data, $show_elements_graph)
|
||||
number_format(
|
||||
$value['avg'],
|
||||
$config['graph_precision'],
|
||||
$config['csv_decimal_separator']
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
).' '.$str;
|
||||
}
|
||||
@ -4156,7 +4183,9 @@ function series_type_graph_array($data, $show_elements_graph)
|
||||
$data_return['legend'][$key] .= remove_right_zeros(
|
||||
number_format(
|
||||
$value['data'][0][1],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
).' '.$str;
|
||||
}
|
||||
@ -4209,8 +4238,7 @@ function generator_chart_to_pdf(
|
||||
$hack_metaconsole = '';
|
||||
}
|
||||
|
||||
$file_js = $config['homedir'].'/include/web2image.js';
|
||||
$url = ui_get_full_url(false).$hack_metaconsole.'/include/chart_generator.php';
|
||||
$url = ui_get_full_url(false).$hack_metaconsole.'/include/chart_generator.php';
|
||||
|
||||
if (!$params['return_img_base_64']) {
|
||||
$img_file = 'img_'.uniqid().'.png';
|
||||
@ -4218,64 +4246,88 @@ function generator_chart_to_pdf(
|
||||
$img_url = ui_get_full_url(false).$hack_metaconsole.'/attachment/'.$img_file;
|
||||
}
|
||||
|
||||
if ($type_graph_pdf === 'vbar') {
|
||||
$width_img = $params['generals']['pdf']['width'];
|
||||
$height_img = $params['generals']['pdf']['height'];
|
||||
} else if ($type_graph_pdf === 'combined'
|
||||
&& $params_combined['stacked'] == CUSTOM_GRAPH_VBARS
|
||||
) {
|
||||
$width_img = 650;
|
||||
$height_img = ($params['height'] + 50);
|
||||
} else if ($type_graph_pdf === 'hbar' || $type_graph_pdf === 'pie_chart') {
|
||||
$width_img = ($params['width'] ?? 550);
|
||||
$height_img = $params['height'];
|
||||
} else {
|
||||
$width_img = 550;
|
||||
$height_img = $params['height'];
|
||||
|
||||
if ((int) $params['landscape'] === 1) {
|
||||
$height_img = 150;
|
||||
$params['height'] = 150;
|
||||
}
|
||||
}
|
||||
|
||||
$params_encode_json = urlencode(json_encode($params));
|
||||
|
||||
if ($params_combined) {
|
||||
$params_combined = urlencode(json_encode($params_combined));
|
||||
}
|
||||
|
||||
if ($module_list) {
|
||||
$module_list = urlencode(json_encode($module_list));
|
||||
}
|
||||
|
||||
$session_id = session_id();
|
||||
$cache_dir = $config['homedir'].'/attachment/cache';
|
||||
|
||||
$cmd = '"'.io_safe_output($config['phantomjs_bin']);
|
||||
$cmd .= DIRECTORY_SEPARATOR.'phantomjs" ';
|
||||
$cmd .= ' --disk-cache=true --disk-cache-path="'.$cache_dir.'"';
|
||||
$cmd .= ' --max-disk-cache-size=10000 ';
|
||||
$cmd .= ' --ssl-protocol=any --ignore-ssl-errors=true ';
|
||||
$cmd .= '"'.$file_js.'" "'.$url.'" "'.$type_graph_pdf.'"';
|
||||
$cmd .= ' "'.$params_encode_json.'" "'.$params_combined.'"';
|
||||
$cmd .= ' "'.$module_list.'" "'.$img_path.'"';
|
||||
$cmd .= ' "'.$width_img.'" "'.$height_img.'"';
|
||||
$cmd .= ' "'.$session_id.'" "'.$params['return_img_base_64'].'"';
|
||||
|
||||
$result = null;
|
||||
$retcode = null;
|
||||
exec($cmd, $result, $retcode);
|
||||
|
||||
$img_content = join("\n", $result);
|
||||
|
||||
if ($params['return_img_base_64']) {
|
||||
// To be used in alerts.
|
||||
return $img_content;
|
||||
if ($type_graph_pdf === 'combined') {
|
||||
$data = [
|
||||
'data' => $params,
|
||||
'session_id' => $session_id,
|
||||
'type_graph_pdf' => $type_graph_pdf,
|
||||
'data_module_list' => $module_list,
|
||||
'data_combined' => $params_combined,
|
||||
];
|
||||
} else {
|
||||
// To be used in PDF files.
|
||||
$config['temp_images'][] = $img_path;
|
||||
return '<img src="'.$img_url.'" />';
|
||||
$data = [
|
||||
'data' => $params,
|
||||
'session_id' => $session_id,
|
||||
'type_graph_pdf' => $type_graph_pdf,
|
||||
];
|
||||
}
|
||||
|
||||
// If not install chromium avoid 500 convert tu images no data to show.
|
||||
$chromium_dir = io_safe_output($config['chromium_path']);
|
||||
$result_ejecution = exec($chromium_dir.' --version');
|
||||
if (empty($result_ejecution) === true) {
|
||||
if ($params['return_img_base_64']) {
|
||||
$params['base64'] = true;
|
||||
}
|
||||
|
||||
return graph_nodata_image($params);
|
||||
}
|
||||
|
||||
try {
|
||||
$browserFactory = new BrowserFactory($chromium_dir);
|
||||
|
||||
// Starts headless chrome.
|
||||
$browser = $browserFactory->createBrowser(['noSandbox' => true]);
|
||||
|
||||
// Creates a new page.
|
||||
$page = $browser->createPage();
|
||||
|
||||
// Navigate to an URL.
|
||||
$navigation = $page->navigate($url.'?data='.urlencode(json_encode($data)));
|
||||
$navigation->waitForNavigation(Page::DOM_CONTENT_LOADED);
|
||||
|
||||
// Dynamic.
|
||||
$dynamic_height = $page->evaluate('document.getElementById("container-chart-generator-item").clientHeight')->getReturnValue();
|
||||
if (empty($dynamic_height) === true) {
|
||||
$dynamic_height = 200;
|
||||
}
|
||||
|
||||
if (isset($params['options']['viewport']) === true
|
||||
&& isset($params['options']['viewport']['height']) === true
|
||||
&& empty($params['options']['viewport']['height']) === false
|
||||
) {
|
||||
$dynamic_height = $params['options']['viewport']['height'];
|
||||
}
|
||||
|
||||
$dynamic_width = $page->evaluate('document.getElementById("container-chart-generator-item").clientWidth')->getReturnValue();
|
||||
if (empty($dynamic_width) === true) {
|
||||
$dynamic_width = 794;
|
||||
}
|
||||
|
||||
if (isset($params['options']['viewport']) === true
|
||||
&& isset($params['options']['viewport']['width']) === true
|
||||
&& empty($params['options']['viewport']['width']) === false
|
||||
) {
|
||||
$dynamic_width = $params['options']['viewport']['width'];
|
||||
}
|
||||
|
||||
$clip = new Clip(0, 0, $dynamic_width, $dynamic_height);
|
||||
|
||||
if ($params['return_img_base_64']) {
|
||||
$b64 = $page->screenshot(['clip' => $clip])->getBase64();
|
||||
// To be used in alerts.
|
||||
return $b64;
|
||||
} else {
|
||||
// To be used in PDF files.
|
||||
$b64 = $page->screenshot(['clip' => $clip])->saveToFile($img_path);
|
||||
$config['temp_images'][] = $img_path;
|
||||
return '<img src="'.$img_url.'" />';
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
error_log($th);
|
||||
} finally {
|
||||
$browser->close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -6269,3 +6321,24 @@ function arrayOutputSorting($sort, $sortField)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get dowload started cookie from js and set ready cokkie for download ready comntrol.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
function setDownloadCookieToken()
|
||||
{
|
||||
$download_cookie = get_cookie('downloadToken', false);
|
||||
if ($download_cookie === false) {
|
||||
return;
|
||||
} else {
|
||||
setcookie(
|
||||
'downloadReady',
|
||||
$download_cookie,
|
||||
(time() + 15),
|
||||
'/'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -2101,7 +2101,8 @@ function get_group_alerts(
|
||||
$count=false,
|
||||
$strict_user=false,
|
||||
$tag=false,
|
||||
$action_filter=false
|
||||
$action_filter=false,
|
||||
$alert_action=true
|
||||
) {
|
||||
global $config;
|
||||
|
||||
@ -2162,7 +2163,9 @@ function get_group_alerts(
|
||||
// WHEN SELECT ALL TAGS TO FILTER ALERTS
|
||||
if ($action_filter) {
|
||||
$filter .= ' AND (talert_template_modules.id IN (SELECT id_alert_template_module FROM talert_template_module_actions where id_alert_action = '.$action_filter.'))';
|
||||
$filter .= ' OR talert_template_modules.id_alert_template IN (SELECT talert_templates.id FROM talert_templates where talert_templates.id_alert_action = '.$action_filter.')';
|
||||
if ($alert_action) {
|
||||
$filter .= ' OR talert_template_modules.id_alert_template IN (SELECT talert_templates.id FROM talert_templates where talert_templates.id_alert_action = '.$action_filter.')';
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($options)) {
|
||||
@ -2252,6 +2255,7 @@ function get_group_alerts(
|
||||
$filter,
|
||||
$orderbyText
|
||||
);
|
||||
|
||||
$alerts = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($alerts === false) {
|
||||
@ -2824,6 +2828,25 @@ function alerts_get_agent_modules(
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the id_agent of the alert
|
||||
*
|
||||
* @param integer $id_agent_module
|
||||
* @return integer id_agent
|
||||
*/
|
||||
function alerts_get_agent_by_alert($id_agent_module)
|
||||
{
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente FROM talert_template_modules atm INNER JOIN tagente_modulo am ON am.id_agente_modulo = atm.id_agent_module WHERE atm.id = %d
|
||||
',
|
||||
$id_agent_module
|
||||
);
|
||||
$id_agente = db_get_row_sql($sql)['id_agente'];
|
||||
|
||||
return $id_agente;
|
||||
}
|
||||
|
||||
|
||||
function alerts_get_actions_names($actions, $reduce=false)
|
||||
{
|
||||
$where = '';
|
||||
|
@ -62,7 +62,7 @@ enterprise_include_once('include/functions_cron.php');
|
||||
// Clases.
|
||||
use PandoraFMS\Agent;
|
||||
use PandoraFMS\Module;
|
||||
use PandoraFMS\Enterprise\Cluster;
|
||||
use PandoraFMS\Cluster;
|
||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||
use PandoraFMS\Event;
|
||||
use PandoraFMS\SpecialDay;
|
||||
@ -604,95 +604,6 @@ function api_get_module_last_value($idAgentModule, $trash1, $other=';', $returnT
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
DB column mapping table used by tree_agents (and get module_properties)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Agent related field mappings (output field => column designation for 'tagente').
|
||||
* agent_id is not in this list (because it is mandatory).
|
||||
* agent_id_group is not in this list.
|
||||
*/
|
||||
$agent_field_column_mapping = [
|
||||
'agent_name' => 'nombre as agent_name',
|
||||
'agent_direction' => 'direccion as agent_direction',
|
||||
'agent_comentary' => 'comentarios as agent_comentary',
|
||||
'agent_last_contant' => 'ultimo_contacto as agent_last_contant',
|
||||
'agent_mode' => 'modo as agent_mode',
|
||||
'agent_interval' => 'intervalo as agent_interval',
|
||||
'agent_id_os' => 'id_os as agent_id_os',
|
||||
'agent_os_version' => 'os_version as agent_os_version',
|
||||
'agent_version' => 'agent_version as agent_version',
|
||||
'agent_last_remote_contact' => 'ultimo_contacto_remoto as agent_last_remote_contact',
|
||||
'agent_disabled' => 'disabled as agent_disabled',
|
||||
'agent_id_parent' => 'id_parent as agent_id_parent',
|
||||
'agent_custom_id' => 'custom_id as agent_custom_id',
|
||||
'agent_server_name' => 'server_name as agent_server_name',
|
||||
'agent_cascade_protection' => 'cascade_protection as agent_cascade_protection',
|
||||
'agent_cascade_protection_module' => 'cascade_protection_module as agent_cascade_protection_module',
|
||||
];
|
||||
|
||||
// module related field mappings 1/2 (output field => column for 'tagente_modulo')
|
||||
// module_id_agent_modulo is not in this list
|
||||
$module_field_column_mampping = [
|
||||
'module_id_agent' => 'id_agente as module_id_agent',
|
||||
'module_id_module_type' => 'id_tipo_modulo as module_id_module_type',
|
||||
'module_description' => 'descripcion as module_description',
|
||||
'module_name' => 'nombre as module_name',
|
||||
'module_max' => 'max as module_max',
|
||||
'module_min' => 'min as module_min',
|
||||
'module_interval' => 'module_interval',
|
||||
'module_tcp_port' => 'tcp_port as module_tcp_port',
|
||||
'module_tcp_send' => 'tcp_send as module_tcp_send',
|
||||
'module_tcp_rcv' => 'tcp_rcv as module_tcp_rcv',
|
||||
'module_snmp_community' => 'snmp_community as module_snmp_community',
|
||||
'module_snmp_oid' => 'snmp_oid as module_snmp_oid',
|
||||
'module_ip_target' => 'ip_target as module_ip_target',
|
||||
'module_id_module_group' => 'id_module_group as module_id_module_group',
|
||||
'module_flag' => 'flag as module_flag',
|
||||
'module_id_module' => 'id_modulo as module_id_module',
|
||||
'module_disabled' => 'disabled as module_disabled',
|
||||
'module_id_export' => 'id_export as module_id_export',
|
||||
'module_plugin_user' => 'plugin_user as module_plugin_user',
|
||||
'module_plugin_pass' => 'plugin_pass as module_plugin_pass',
|
||||
'module_plugin_parameter' => 'plugin_parameter as module_plugin_parameter',
|
||||
'module_id_plugin' => 'id_plugin as module_id_plugin',
|
||||
'module_post_process' => 'post_process as module_post_process',
|
||||
'module_prediction_module' => 'prediction_module as module_prediction_module',
|
||||
'module_max_timeout' => 'max_timeout as module_max_timeout',
|
||||
'module_max_retries' => 'max_retries as module_max_retries',
|
||||
'module_custom_id' => 'custom_id as module_custom_id',
|
||||
'module_history_data' => 'history_data as module_history_data',
|
||||
'module_min_warning' => 'min_warning as module_min_warning',
|
||||
'module_max_warning' => 'max_warning as module_max_warning',
|
||||
'module_str_warning' => 'str_warning as module_str_warning',
|
||||
'module_min_critical' => 'min_critical as module_min_critical',
|
||||
'module_max_critical' => 'max_critical as module_max_critical',
|
||||
'module_str_critical' => 'str_critical as module_str_critical',
|
||||
'module_min_ff_event' => 'min_ff_event as module_min_ff_event',
|
||||
'module_delete_pending' => 'delete_pending as module_delete_pending',
|
||||
'module_plugin_macros' => 'macros as module_plugin_macros',
|
||||
'module_macros' => 'module_macros as module_macros',
|
||||
'module_critical_inverse' => 'critical_inverse as module_critical_inverse',
|
||||
'module_warning_inverse' => 'warning_inverse as module_warning_inverse',
|
||||
];
|
||||
|
||||
// module related field mappings 2/2 (output field => column for 'tagente_estado')
|
||||
// module_id_agent_modulo is not in this list
|
||||
$estado_fields_to_columns_mapping = [
|
||||
'module_id_agent_state' => 'id_agente_estado as module_id_agent_state',
|
||||
'module_data' => 'datos as module_data',
|
||||
'module_timestamp' => 'timestamp as module_timestamp',
|
||||
'module_state' => 'estado as module_state',
|
||||
'module_last_try' => 'last_try as module_last_try',
|
||||
'module_utimestamp' => 'utimestamp as module_utimestamp',
|
||||
'module_current_interval' => 'current_interval as module_current_interval',
|
||||
'module_running_by' => 'running_by as module_running_by',
|
||||
'module_last_execution_try' => 'last_execution_try as module_last_execution_try',
|
||||
'module_status_changes' => 'status_changes as module_status_changes',
|
||||
'module_last_status' => 'last_status as module_last_status',
|
||||
];
|
||||
|
||||
/***
|
||||
* end of DB column mapping table
|
||||
***/
|
||||
@ -806,9 +717,9 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
'module_id_module',
|
||||
'module_disabled',
|
||||
'module_id_export',
|
||||
'module_plugin_user',
|
||||
'module_plugin_pass',
|
||||
'module_plugin_parameter',
|
||||
'module_plugin_pass',
|
||||
'module_plugin_user',
|
||||
'module_id_plugin',
|
||||
'module_post_process',
|
||||
'module_prediction_module',
|
||||
@ -897,14 +808,88 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
'alert_actions_id_group',
|
||||
];
|
||||
|
||||
// agent related field mappings (output field => column designation for 'tagente')
|
||||
global $agent_field_column_mapping;
|
||||
/*
|
||||
* Agent related field mappings (output field => column designation for 'tagente').
|
||||
* agent_id is not in this list (because it is mandatory).
|
||||
* agent_id_group is not in this list.
|
||||
*/
|
||||
$agent_field_column_mapping = [
|
||||
'agent_name' => 'nombre as agent_name',
|
||||
'agent_direction' => 'direccion as agent_direction',
|
||||
'agent_comentary' => 'comentarios as agent_comentary',
|
||||
'agent_last_contant' => 'ultimo_contacto as agent_last_contant',
|
||||
'agent_mode' => 'modo as agent_mode',
|
||||
'agent_interval' => 'intervalo as agent_interval',
|
||||
'agent_id_os' => 'id_os as agent_id_os',
|
||||
'agent_os_version' => 'os_version as agent_os_version',
|
||||
'agent_version' => 'agent_version as agent_version',
|
||||
'agent_last_remote_contact' => 'ultimo_contacto_remoto as agent_last_remote_contact',
|
||||
'agent_disabled' => 'disabled as agent_disabled',
|
||||
'agent_id_parent' => 'id_parent as agent_id_parent',
|
||||
'agent_custom_id' => 'custom_id as agent_custom_id',
|
||||
'agent_server_name' => 'server_name as agent_server_name',
|
||||
'agent_cascade_protection' => 'cascade_protection as agent_cascade_protection',
|
||||
'agent_cascade_protection_module' => 'cascade_protection_module as agent_cascade_protection_module',
|
||||
];
|
||||
|
||||
// module related field mappings 1/2 (output field => column for 'tagente_modulo')
|
||||
global $module_field_column_mampping;
|
||||
// module_id_agent_modulo is not in this list
|
||||
// module_plugin_user, module_plugin_pass, module_plugin_macros are not in this list due to security purposes.
|
||||
$module_field_column_mapping = [
|
||||
'module_id_agent' => 'id_agente as module_id_agent',
|
||||
'module_id_module_type' => 'id_tipo_modulo as module_id_module_type',
|
||||
'module_description' => 'descripcion as module_description',
|
||||
'module_name' => 'nombre as module_name',
|
||||
'module_max' => 'max as module_max',
|
||||
'module_min' => 'min as module_min',
|
||||
'module_interval' => 'module_interval',
|
||||
'module_tcp_port' => 'tcp_port as module_tcp_port',
|
||||
'module_tcp_send' => 'tcp_send as module_tcp_send',
|
||||
'module_tcp_rcv' => 'tcp_rcv as module_tcp_rcv',
|
||||
'module_snmp_community' => 'snmp_community as module_snmp_community',
|
||||
'module_snmp_oid' => 'snmp_oid as module_snmp_oid',
|
||||
'module_ip_target' => 'ip_target as module_ip_target',
|
||||
'module_id_module_group' => 'id_module_group as module_id_module_group',
|
||||
'module_flag' => 'flag as module_flag',
|
||||
'module_id_module' => 'id_modulo as module_id_module',
|
||||
'module_disabled' => 'disabled as module_disabled',
|
||||
'module_id_export' => 'id_export as module_id_export',
|
||||
'module_plugin_parameter' => 'plugin_parameter as module_plugin_parameter',
|
||||
'module_id_plugin' => 'id_plugin as module_id_plugin',
|
||||
'module_post_process' => 'post_process as module_post_process',
|
||||
'module_prediction_module' => 'prediction_module as module_prediction_module',
|
||||
'module_max_timeout' => 'max_timeout as module_max_timeout',
|
||||
'module_max_retries' => 'max_retries as module_max_retries',
|
||||
'module_custom_id' => 'custom_id as module_custom_id',
|
||||
'module_history_data' => 'history_data as module_history_data',
|
||||
'module_min_warning' => 'min_warning as module_min_warning',
|
||||
'module_max_warning' => 'max_warning as module_max_warning',
|
||||
'module_str_warning' => 'str_warning as module_str_warning',
|
||||
'module_min_critical' => 'min_critical as module_min_critical',
|
||||
'module_max_critical' => 'max_critical as module_max_critical',
|
||||
'module_str_critical' => 'str_critical as module_str_critical',
|
||||
'module_min_ff_event' => 'min_ff_event as module_min_ff_event',
|
||||
'module_delete_pending' => 'delete_pending as module_delete_pending',
|
||||
'module_macros' => 'module_macros as module_macros',
|
||||
'module_critical_inverse' => 'critical_inverse as module_critical_inverse',
|
||||
'module_warning_inverse' => 'warning_inverse as module_warning_inverse',
|
||||
];
|
||||
|
||||
// module related field mappings 2/2 (output field => column for 'tagente_estado')
|
||||
global $estado_fields_to_columns_mapping;
|
||||
// module_id_agent_modulo is not in this list
|
||||
$estado_fields_to_columns_mapping = [
|
||||
'module_id_agent_state' => 'id_agente_estado as module_id_agent_state',
|
||||
'module_data' => 'datos as module_data',
|
||||
'module_timestamp' => 'timestamp as module_timestamp',
|
||||
'module_state' => 'estado as module_state',
|
||||
'module_last_try' => 'last_try as module_last_try',
|
||||
'module_utimestamp' => 'utimestamp as module_utimestamp',
|
||||
'module_current_interval' => 'current_interval as module_current_interval',
|
||||
'module_running_by' => 'running_by as module_running_by',
|
||||
'module_last_execution_try' => 'last_execution_try as module_last_execution_try',
|
||||
'module_status_changes' => 'status_changes as module_status_changes',
|
||||
'module_last_status' => 'last_status as module_last_status',
|
||||
];
|
||||
|
||||
// alert related field mappings (output field => column for 'talert_template_modules', ... )
|
||||
$alert_fields_to_columns_mapping = [
|
||||
@ -985,8 +970,8 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
$agent_additional_columns .= (', '.$agent_field_column_mapping[$fld] );
|
||||
}
|
||||
|
||||
if (array_key_exists($fld, $module_field_column_mampping)) {
|
||||
$module_additional_columns .= (', '.$module_field_column_mampping[$fld]);
|
||||
if (array_key_exists($fld, $module_field_column_mapping)) {
|
||||
$module_additional_columns .= (', '.$module_field_column_mapping[$fld]);
|
||||
}
|
||||
|
||||
if (array_key_exists($fld, $estado_fields_to_columns_mapping)) {
|
||||
@ -1016,9 +1001,13 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
$groups = [];
|
||||
}
|
||||
|
||||
$groups = str_replace('\n', $returnReplace, $groups);
|
||||
|
||||
foreach ($groups as &$group) {
|
||||
if (check_acl($config['id_user'], $group['group_id'], 'AR') === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$group = str_replace('\n', $returnReplace, $group);
|
||||
|
||||
$group['type_row'] = 'group';
|
||||
$returnVar[] = $group;
|
||||
|
||||
@ -1034,9 +1023,23 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
$agents = [];
|
||||
}
|
||||
|
||||
$agents = str_replace('\n', $returnReplace, $agents);
|
||||
if ((bool) check_acl($config['id_user'], $id_group, 'AW') === true) {
|
||||
if (array_search('module_plugin_user', $fields) !== false) {
|
||||
$module_additional_columns .= ' ,plugin_user as module_plugin_user';
|
||||
}
|
||||
|
||||
if (array_search('module_plugin_pass', $fields) !== false) {
|
||||
$module_additional_columns .= ' ,plugin_pass as module_plugin_pass';
|
||||
}
|
||||
|
||||
if (array_search('module_plugin_macros', $fields) !== false) {
|
||||
$module_additional_columns .= ' ,macros as module_plugin_macros';
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($agents as $index => &$agent) {
|
||||
$agent = str_replace('\n', $returnReplace, $agent);
|
||||
|
||||
$agent['type_row'] = 'agent';
|
||||
$returnVar[] = $agent;
|
||||
|
||||
@ -1048,24 +1051,26 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
// SKIP collecting MODULES and ALERTS
|
||||
}
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM (SELECT id_agente_modulo as module_id_agent_modulo '.$module_additional_columns.'
|
||||
FROM tagente_modulo t1
|
||||
WHERE id_agente = '.$agent['agent_id'].') t1
|
||||
INNER JOIN (SELECT id_agente_modulo as module_id_agent_modulo '.$estado_additional_columns.'
|
||||
FROM tagente_estado
|
||||
WHERE id_agente = '.$agent['agent_id'].') t2
|
||||
ON t1.module_id_agent_modulo = t2.module_id_agent_modulo';
|
||||
|
||||
$modules = db_get_all_rows_sql(
|
||||
'SELECT *
|
||||
FROM (SELECT id_agente_modulo as module_id_agent_modulo '.$module_additional_columns.'
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente = '.$agent['agent_id'].') t1
|
||||
INNER JOIN (SELECT id_agente_modulo as module_id_agent_modulo '.$estado_additional_columns.'
|
||||
FROM tagente_estado
|
||||
WHERE id_agente = '.$agent['agent_id'].') t2
|
||||
ON t1.module_id_agent_modulo = t2.module_id_agent_modulo'
|
||||
$sql
|
||||
);
|
||||
|
||||
if ($modules === false) {
|
||||
$modules = [];
|
||||
}
|
||||
|
||||
$modules = str_replace('\n', $returnReplace, $modules);
|
||||
|
||||
foreach ($modules as &$module) {
|
||||
$module = str_replace('\n', $returnReplace, $module);
|
||||
|
||||
$module['type_row'] = 'module';
|
||||
|
||||
if ($module['module_macros']) {
|
||||
@ -1097,9 +1102,8 @@ function api_get_tree_agents($trash1, $trahs2, $other, $returnType)
|
||||
$alerts = [];
|
||||
}
|
||||
|
||||
$alerts = str_replace('\n', $returnReplace, $alerts);
|
||||
|
||||
foreach ($alerts as &$alert) {
|
||||
$alert = str_replace('\n', $returnReplace, $alert);
|
||||
$alert['type_row'] = 'alert';
|
||||
$returnVar[] = $alert;
|
||||
}
|
||||
@ -1366,10 +1370,66 @@ function get_module_properties($id_module, $fields, $separator, $returnType, $re
|
||||
];
|
||||
|
||||
// module related field mappings 1/2 (output field => column for 'tagente_modulo')
|
||||
global $module_field_column_mampping;
|
||||
// module_id_agent_modulo is not in this list
|
||||
// module_plugin_user, module_plugin_pass, module_plugin_macros are not in this list due to security purposes.
|
||||
$module_field_column_mapping = [
|
||||
'module_id_agent' => 'id_agente as module_id_agent',
|
||||
'module_id_module_type' => 'id_tipo_modulo as module_id_module_type',
|
||||
'module_description' => 'descripcion as module_description',
|
||||
'module_name' => 'nombre as module_name',
|
||||
'module_max' => 'max as module_max',
|
||||
'module_min' => 'min as module_min',
|
||||
'module_interval' => 'module_interval',
|
||||
'module_tcp_port' => 'tcp_port as module_tcp_port',
|
||||
'module_tcp_send' => 'tcp_send as module_tcp_send',
|
||||
'module_tcp_rcv' => 'tcp_rcv as module_tcp_rcv',
|
||||
'module_snmp_community' => 'snmp_community as module_snmp_community',
|
||||
'module_snmp_oid' => 'snmp_oid as module_snmp_oid',
|
||||
'module_ip_target' => 'ip_target as module_ip_target',
|
||||
'module_id_module_group' => 'id_module_group as module_id_module_group',
|
||||
'module_flag' => 'flag as module_flag',
|
||||
'module_id_module' => 'id_modulo as module_id_module',
|
||||
'module_disabled' => 'disabled as module_disabled',
|
||||
'module_id_export' => 'id_export as module_id_export',
|
||||
'module_plugin_parameter' => 'plugin_parameter as module_plugin_parameter',
|
||||
'module_plugin_user' => 'plugin_user as module_plugin_user',
|
||||
'module_plugin_pass' => 'plugin_pass as module_plugin_pass',
|
||||
'module_plugin_macros' => 'macros as module_plugin_macros',
|
||||
'module_id_plugin' => 'id_plugin as module_id_plugin',
|
||||
'module_post_process' => 'post_process as module_post_process',
|
||||
'module_prediction_module' => 'prediction_module as module_prediction_module',
|
||||
'module_max_timeout' => 'max_timeout as module_max_timeout',
|
||||
'module_max_retries' => 'max_retries as module_max_retries',
|
||||
'module_custom_id' => 'custom_id as module_custom_id',
|
||||
'module_history_data' => 'history_data as module_history_data',
|
||||
'module_min_warning' => 'min_warning as module_min_warning',
|
||||
'module_max_warning' => 'max_warning as module_max_warning',
|
||||
'module_str_warning' => 'str_warning as module_str_warning',
|
||||
'module_min_critical' => 'min_critical as module_min_critical',
|
||||
'module_max_critical' => 'max_critical as module_max_critical',
|
||||
'module_str_critical' => 'str_critical as module_str_critical',
|
||||
'module_min_ff_event' => 'min_ff_event as module_min_ff_event',
|
||||
'module_delete_pending' => 'delete_pending as module_delete_pending',
|
||||
'module_macros' => 'module_macros as module_macros',
|
||||
'module_critical_inverse' => 'critical_inverse as module_critical_inverse',
|
||||
'module_warning_inverse' => 'warning_inverse as module_warning_inverse',
|
||||
];
|
||||
|
||||
// module related field mappings 2/2 (output field => column for 'tagente_estado')
|
||||
global $estado_fields_to_columns_mapping;
|
||||
// module_id_agent_modulo is not in this list
|
||||
$estado_fields_to_columns_mapping = [
|
||||
'module_id_agent_state' => 'id_agente_estado as module_id_agent_state',
|
||||
'module_data' => 'datos as module_data',
|
||||
'module_timestamp' => 'timestamp as module_timestamp',
|
||||
'module_state' => 'estado as module_state',
|
||||
'module_last_try' => 'last_try as module_last_try',
|
||||
'module_utimestamp' => 'utimestamp as module_utimestamp',
|
||||
'module_current_interval' => 'current_interval as module_current_interval',
|
||||
'module_running_by' => 'running_by as module_running_by',
|
||||
'module_last_execution_try' => 'last_execution_try as module_last_execution_try',
|
||||
'module_status_changes' => 'status_changes as module_status_changes',
|
||||
'module_last_status' => 'last_status as module_last_status',
|
||||
];
|
||||
|
||||
if ($fields == false) {
|
||||
$fields = $module_properties_master_fields;
|
||||
@ -1379,8 +1439,8 @@ function get_module_properties($id_module, $fields, $separator, $returnType, $re
|
||||
$module_additional_columns = '';
|
||||
$estado_additional_columns = '';
|
||||
foreach ($fields as $fld) {
|
||||
if (array_key_exists($fld, $module_field_column_mampping)) {
|
||||
$module_additional_columns .= (', '.$module_field_column_mampping[$fld]);
|
||||
if (array_key_exists($fld, $module_field_column_mapping)) {
|
||||
$module_additional_columns .= (', '.$module_field_column_mapping[$fld]);
|
||||
}
|
||||
|
||||
if (array_key_exists($fld, $estado_fields_to_columns_mapping)) {
|
||||
@ -1405,9 +1465,9 @@ function get_module_properties($id_module, $fields, $separator, $returnType, $re
|
||||
$modules = [];
|
||||
}
|
||||
|
||||
$modules = str_replace('\n', $returnReplace, $modules);
|
||||
|
||||
foreach ($modules as &$module) {
|
||||
$module = str_replace('\n', $returnReplace, $module);
|
||||
|
||||
$module['type_row'] = 'module';
|
||||
|
||||
if ($module['module_macros']) {
|
||||
@ -3588,6 +3648,19 @@ function api_set_create_network_module($id, $thrash1, $other, $thrash3)
|
||||
// Column 'module_macros' cannot be null.
|
||||
}
|
||||
|
||||
$type_exist = db_get_value_filter(
|
||||
'id_tipo',
|
||||
'ttipo_modulo',
|
||||
[
|
||||
'id_tipo' => $values['id_tipo_modulo'],
|
||||
]
|
||||
);
|
||||
|
||||
if ((bool) $type_exist === false) {
|
||||
returnError('Module type does not exist');
|
||||
return;
|
||||
}
|
||||
|
||||
if ($agent_by_alias) {
|
||||
$agents_affected = 0;
|
||||
$idModule = false;
|
||||
@ -7436,7 +7509,7 @@ function api_set_planned_downtimes_additem($id, $thrash1, $other, $thrash3)
|
||||
$bad_agents = [];
|
||||
$i = 0;
|
||||
foreach ($total_agents as $agent_id) {
|
||||
$result_agent = agents_check_access_agent($agent_id, 'AD');
|
||||
$result_agent = agents_check_access_agent($agent_id, 'AR');
|
||||
if (!$result_agent) {
|
||||
$bad_agents[] = $agent_id;
|
||||
unset($agents[$i]);
|
||||
@ -9528,6 +9601,7 @@ function api_set_new_user($id, $thrash2, $other, $thrash3)
|
||||
$values['default_event_filter'] = $other['data'][10];
|
||||
$values['section'] = $other['data'][11];
|
||||
$values['session_time'] = $other['data'][12];
|
||||
$values['metaconsole_access_node'] = $other['data'][13];
|
||||
|
||||
if (empty($password) === true) {
|
||||
returnError('Password cannot be empty.');
|
||||
@ -10084,6 +10158,8 @@ function api_set_delete_module($id, $id2, $other, $trash1)
|
||||
}
|
||||
|
||||
if (!$simulate) {
|
||||
// Before delete the main module, check and delete the childrens from the original module.
|
||||
module_check_childrens_and_delete($idAgentModule);
|
||||
$return = modules_delete_agent_module($idAgentModule);
|
||||
} else {
|
||||
$return = true;
|
||||
@ -10109,6 +10185,8 @@ function api_set_delete_module($id, $id2, $other, $trash1)
|
||||
}
|
||||
|
||||
if (!$simulate) {
|
||||
// Before delete the main module, check and delete the childrens from the original module.
|
||||
module_check_childrens_and_delete($idAgentModule);
|
||||
$return = modules_delete_agent_module($idAgentModule);
|
||||
} else {
|
||||
$return = true;
|
||||
@ -16917,6 +16995,32 @@ function api_set_add_permission_user_to_group($thrash1, $thrash2, $other, $retur
|
||||
|
||||
];
|
||||
|
||||
$group_exist = db_get_value_filter(
|
||||
'id_grupo',
|
||||
'tgrupo',
|
||||
[
|
||||
'id_grupo' => $values['id_grupo'],
|
||||
]
|
||||
);
|
||||
|
||||
if ((bool) $group_exist === false) {
|
||||
returnError('Selected group does not exist');
|
||||
return;
|
||||
}
|
||||
|
||||
$profile_exist = db_get_value_filter(
|
||||
'id_perfil',
|
||||
'tperfil',
|
||||
[
|
||||
'id_perfil' => $values['id_perfil'],
|
||||
]
|
||||
);
|
||||
|
||||
if ((bool) $profile_exist === false) {
|
||||
returnError('Selected profile does not exist');
|
||||
return;
|
||||
}
|
||||
|
||||
$where_id_up = ['id_up' => $other['data'][4]];
|
||||
if ($exist_profile === $other['data'][4] && $where_id_up !== null) {
|
||||
$sucessfull_insert = db_process_sql_update('tusuario_perfil', $values, $where_id_up);
|
||||
|
@ -184,8 +184,8 @@ function config_update_config()
|
||||
$error_update[] = __('Remote config directory');
|
||||
}
|
||||
|
||||
if (config_update_value('phantomjs_bin', (string) get_parameter('phantomjs_bin'), true) === false) {
|
||||
$error_update[] = __('phantomjs config directory');
|
||||
if (config_update_value('chromium_path', (string) get_parameter('chromium_path'), true) === false) {
|
||||
$error_update[] = __('Chromium config directory');
|
||||
}
|
||||
|
||||
if (config_update_value('loginhash_pwd', io_input_password((string) get_parameter('loginhash_pwd')), true) === false) {
|
||||
@ -523,6 +523,15 @@ function config_update_config()
|
||||
break;
|
||||
|
||||
case 'auth':
|
||||
$validatedCSRF = validate_csrf_code();
|
||||
|
||||
// CSRF Validation.
|
||||
if ($validatedCSRF === false) {
|
||||
include_once 'general/login_page.php';
|
||||
// Finish the execution.
|
||||
exit('</html>');
|
||||
}
|
||||
|
||||
// AUTHENTICATION SETUP.
|
||||
if (config_update_value('auth', get_parameter('auth'), true) === false) {
|
||||
$error_update[] = __('Authentication method');
|
||||
@ -926,25 +935,6 @@ function config_update_config()
|
||||
if (config_update_value('agent_wizard_defaults', json_encode($selectedAgentWizardOptions), true) === false) {
|
||||
$error_update[] = __('SNMP Interface Agent Wizard');
|
||||
}
|
||||
|
||||
$pjs = get_parameter('phantomjs_cache_interval');
|
||||
switch ($pjs) {
|
||||
case $config['phantomjs_cache_interval']:
|
||||
default;
|
||||
// No changes.
|
||||
break;
|
||||
|
||||
case PHANTOM_CACHE_CLEANUP_ONCE:
|
||||
case PHANTOM_CACHE_CLEANUP_DAILY:
|
||||
case PHANTOM_CACHE_CLEANUP_WEEKLY:
|
||||
enterprise_hook('phantomjs_cache_interval_schedule', [$pjs]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (config_update_value('phantomjs_cache_interval', get_parameter('phantomjs_cache_interval'), true) === false
|
||||
) {
|
||||
$error_update[] = __('PhantomJS cache interval');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'vis':
|
||||
@ -1475,6 +1465,15 @@ function config_update_config()
|
||||
if (config_update_value('use_data_multiplier', get_parameter('use_data_multiplier', '1'), true) === false) {
|
||||
$error_update[] = __('Use data multiplier');
|
||||
}
|
||||
|
||||
if (config_update_value('decimal_separator', (string) get_parameter('decimal_separator', '.'), true) === false) {
|
||||
$error_update[] = __('Decimal separator');
|
||||
} else {
|
||||
$thousand_separator = ((string) get_parameter('decimal_separator', '.') === '.') ? ',' : '.';
|
||||
if (config_update_value('thousand_separator', $thousand_separator, true) === false) {
|
||||
$error_update[] = __('Thousand separator');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'net':
|
||||
@ -1966,14 +1965,9 @@ function config_process_config()
|
||||
config_update_value('remote_config', $default);
|
||||
}
|
||||
|
||||
if (!isset($config['phantomjs_bin'])) {
|
||||
if ($is_windows) {
|
||||
$default = 'C:\PandoraFMS\Pandora_Server\bin';
|
||||
} else {
|
||||
$default = '/usr/bin';
|
||||
}
|
||||
|
||||
config_update_value('phantomjs_bin', $default);
|
||||
if (isset($config['chromium_path']) === false) {
|
||||
$default = '/usr/bin/chromium-browser';
|
||||
config_update_value('chromium_path', $default);
|
||||
}
|
||||
|
||||
if (!isset($config['date_format'])) {
|
||||
@ -3446,7 +3440,7 @@ function config_process_config()
|
||||
}
|
||||
|
||||
if (!isset($config['ehorus_port'])) {
|
||||
config_update_value('ehorus_port', 18080);
|
||||
config_update_value('ehorus_port', 443);
|
||||
}
|
||||
|
||||
if (!isset($config['ehorus_req_timeout'])) {
|
||||
@ -3479,6 +3473,10 @@ function config_process_config()
|
||||
config_update_value('module_library_password', '');
|
||||
}
|
||||
|
||||
if (!isset($config['decimal_separator'])) {
|
||||
config_update_value('decimal_separator', '.');
|
||||
}
|
||||
|
||||
// Finally, check if any value was overwritten in a form.
|
||||
config_update_config();
|
||||
}
|
||||
|
@ -757,7 +757,8 @@ function db_uncompress_module_data(
|
||||
$id_agente_modulo,
|
||||
$tstart=false,
|
||||
$tend=false,
|
||||
$slice_size=false
|
||||
$slice_size=false,
|
||||
$force_slice_not_data=false
|
||||
) {
|
||||
global $config;
|
||||
|
||||
@ -860,7 +861,10 @@ function db_uncompress_module_data(
|
||||
|
||||
$module_interval = modules_get_interval($id_agente_modulo);
|
||||
|
||||
if (($raw_data === false) && ( $first_utimestamp === false )) {
|
||||
if (($force_slice_not_data === false)
|
||||
&& ($raw_data === false)
|
||||
&& ( $first_utimestamp === false )
|
||||
) {
|
||||
// No data.
|
||||
return false;
|
||||
}
|
||||
@ -2313,7 +2317,13 @@ function db_get_lock(string $lockname, int $expiration_time=86400) :?int
|
||||
}
|
||||
|
||||
if ($lock_status === false) {
|
||||
return null;
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_SYSTEM,
|
||||
'Issue in Database Lock',
|
||||
'system'
|
||||
);
|
||||
|
||||
return (int) null;
|
||||
}
|
||||
|
||||
return (int) $lock_status;
|
||||
@ -2520,3 +2530,28 @@ function db_unlock_tables()
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get column type. Example: 'varchar(60)'.
|
||||
*
|
||||
* @param string $table Table name.
|
||||
* @param string $column Column name.
|
||||
*
|
||||
* @return array|boolean
|
||||
*/
|
||||
function db_get_column_type(string $table, string $column='')
|
||||
{
|
||||
$sql = sprintf(
|
||||
'SELECT column_type FROM information_schema.columns WHERE table_name = "%s"',
|
||||
$table
|
||||
);
|
||||
|
||||
if (empty($column) === false) {
|
||||
$sql .= sprintf(' AND column_name="%s"', $column);
|
||||
}
|
||||
|
||||
$result = db_process_sql($sql);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
@ -640,11 +640,13 @@ function events_update_status($id_evento, $status, $filter=null)
|
||||
* 'status'
|
||||
* 'agent_alias'
|
||||
* 'search'
|
||||
* 'not_search'
|
||||
* 'id_extra'
|
||||
* 'id_source_event'
|
||||
* 'user_comment'
|
||||
* 'source'
|
||||
* 'id_user_ack'
|
||||
* 'owner_user'
|
||||
* 'tag_with'
|
||||
* 'tag_without'
|
||||
* 'filter_only_alert'
|
||||
@ -1058,16 +1060,40 @@ function events_get_all(
|
||||
$custom_data_search = 'te.custom_data';
|
||||
}
|
||||
|
||||
$sql_filters[] = vsprintf(
|
||||
' AND (lower(ta.alias) like lower("%%%s%%")
|
||||
OR te.id_evento like "%%%s%%"
|
||||
OR lower(te.evento) like lower("%%%s%%")
|
||||
OR lower(te.user_comment) like lower("%%%s%%")
|
||||
OR lower(te.id_extra) like lower("%%%s%%")
|
||||
OR lower(te.source) like lower("%%%s%%")
|
||||
OR lower('.$custom_data_search.') like lower("%%%s%%") )',
|
||||
array_fill(0, 7, $filter['search'])
|
||||
);
|
||||
$not_search = '';
|
||||
$nexo = 'OR';
|
||||
$array_search = [
|
||||
'te.id_evento',
|
||||
'lower(te.evento)',
|
||||
'lower(te.user_comment)',
|
||||
'lower(te.id_extra)',
|
||||
'lower(te.source)',
|
||||
'lower('.$custom_data_search.')',
|
||||
];
|
||||
if (isset($filter['not_search']) === true
|
||||
&& empty($filter['not_search']) === false
|
||||
) {
|
||||
$not_search = 'NOT';
|
||||
$nexo = 'AND';
|
||||
} else {
|
||||
$array_search[] = 'lower(ta.alias)';
|
||||
}
|
||||
|
||||
$sql_search = ' AND (';
|
||||
foreach ($array_search as $key => $field) {
|
||||
$sql_search .= sprintf(
|
||||
'%s %s %s like lower("%%%s%%")',
|
||||
($key === 0) ? '' : $nexo,
|
||||
$field,
|
||||
$not_search,
|
||||
$filter['search']
|
||||
);
|
||||
$sql_search .= ' ';
|
||||
}
|
||||
|
||||
$sql_search .= ' )';
|
||||
|
||||
$sql_filters[] = $sql_search;
|
||||
}
|
||||
|
||||
// Free search exclude.
|
||||
@ -1152,11 +1178,19 @@ function events_get_all(
|
||||
// Validated or in process by.
|
||||
if (empty($filter['id_user_ack']) === false) {
|
||||
$sql_filters[] = sprintf(
|
||||
' AND te.owner_user like lower("%%%s%%") ',
|
||||
' AND te.id_usuario like lower("%%%s%%") ',
|
||||
$filter['id_user_ack']
|
||||
);
|
||||
}
|
||||
|
||||
// Owner by.
|
||||
if (empty($filter['owner_user']) === false) {
|
||||
$sql_filters[] = sprintf(
|
||||
' AND te.owner_user like lower("%%%s%%") ',
|
||||
$filter['owner_user']
|
||||
);
|
||||
}
|
||||
|
||||
$tag_names = [];
|
||||
// With following tags.
|
||||
if (empty($filter['tag_with']) === false) {
|
||||
@ -1840,11 +1874,14 @@ function events_get_all(
|
||||
);
|
||||
|
||||
if (isset($limit, $offset) === true
|
||||
&& $limit !== 0
|
||||
&& (int) $limit !== 0
|
||||
&& isset($filter['csv_all']) === false
|
||||
) {
|
||||
$count = count($data);
|
||||
$end = ((int) $offset !== 0) ? ($offset + $limit) : $limit;
|
||||
// -1 For pagination 'All'.
|
||||
((int) $limit === -1)
|
||||
? $end = count($data)
|
||||
: $end = ((int) $offset !== 0) ? ($offset + $limit) : $limit;
|
||||
$finally = array_slice($data, $offset, $end, true);
|
||||
$return = [
|
||||
'buffers' => $buffers,
|
||||
@ -2597,27 +2634,6 @@ function events_print_event_table(
|
||||
$events_table = html_print_table($table, true);
|
||||
$out = $events_table;
|
||||
|
||||
if (!$tactical_view) {
|
||||
$out .= '<table width="100%"><tr><td class="w90p align-top pdd_t_0px">';
|
||||
if ($agent_id != 0) {
|
||||
$out .= '</td><td class="w200px align-top">';
|
||||
$out .= '<table cellpadding=0 cellspacing=0 class="databox"><tr><td>';
|
||||
$out .= '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Events -by module-').'</legend>'.graph_event_module(180, 100, $event['id_agente']).'</fieldset>';
|
||||
$out .= '</td></tr></table>';
|
||||
} else {
|
||||
$out .= '</td><td class="w200px align-top">';
|
||||
$out .= '<table cellpadding=0 cellspacing=0 class="databox"><tr><td>';
|
||||
$out .= '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Event graph').'</legend>'.grafico_eventos_total('', 180, 60).'</fieldset>';
|
||||
$out .= '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Event graph by agent').'</legend>'.grafico_eventos_grupo(180, 60).'</fieldset>';
|
||||
$out .= '</td></tr></table>';
|
||||
}
|
||||
|
||||
$out .= '</td></tr></table>';
|
||||
}
|
||||
|
||||
unset($table);
|
||||
|
||||
if ($return) {
|
||||
@ -3713,6 +3729,15 @@ function events_get_response_target(
|
||||
);
|
||||
}
|
||||
|
||||
if (strpos($target, '_group_contact_') !== false) {
|
||||
$info_groups = groups_get_group_by_id($event['id_grupo']);
|
||||
$target = str_replace(
|
||||
'_group_contact_',
|
||||
(isset($info_groups['contact']) === true) ? $info_groups['contact'] : 'N/A',
|
||||
$target
|
||||
);
|
||||
}
|
||||
|
||||
if (strpos($target, '_event_utimestamp_') !== false) {
|
||||
$target = str_replace(
|
||||
'_event_utimestamp_',
|
||||
@ -4896,12 +4921,46 @@ function events_page_general($event)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return Acknowledged by value
|
||||
*
|
||||
* @param integer $event_id Event_id to return Acknowledged.
|
||||
*
|
||||
* @return string String with user and date.
|
||||
*/
|
||||
function events_page_general_acknowledged($event_id)
|
||||
{
|
||||
global $config;
|
||||
$Acknowledged = '';
|
||||
$event = db_get_all_rows_filter('tevento', 'id_evento', $event_id);
|
||||
|
||||
if ($event) {
|
||||
$user_ack = db_get_value(
|
||||
'fullname',
|
||||
'tusuario',
|
||||
'id_user',
|
||||
$config['id_user']
|
||||
);
|
||||
|
||||
if (empty($user_ack) === true) {
|
||||
$user_ack = $config['id_user'];
|
||||
}
|
||||
|
||||
$Acknowledged = $user_ack.' ( '.date($config['date_format'], $event['ack_utimestamp_raw']).' ) ';
|
||||
} else {
|
||||
$Acknowledged = 'N/A';
|
||||
}
|
||||
|
||||
return $Acknowledged;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate 'comments' page for event viewer.
|
||||
*
|
||||
* @param array $event Event.
|
||||
* @param boolean $ajax If the query come from AJAX.
|
||||
* @param boolean $grouped If the event must shown comments grouped.
|
||||
* @param array $event Event.
|
||||
* @param boolean $ajax If the query come from AJAX.
|
||||
* @param boolean $groupedComments If the event must shown comments grouped.
|
||||
*
|
||||
* @return string HTML.
|
||||
*/
|
||||
@ -5166,7 +5225,7 @@ function events_get_count_events_validated_by_user($data)
|
||||
) {
|
||||
foreach ($fullnames as $value) {
|
||||
if (isset($data_graph_by_user[$value['id_user']]) === true) {
|
||||
$data_graph_by_user[$value['fullname']] = $data_graph_by_user[$value['id_user']];
|
||||
$data_graph_by_user[io_safe_output($value['fullname'])] = $data_graph_by_user[$value['id_user']];
|
||||
unset($data_graph_by_user[$value['id_user']]);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1950,7 +1950,7 @@ function html_print_extended_select_for_post_process(
|
||||
$found = false;
|
||||
|
||||
if ($selected) {
|
||||
if (array_key_exists(number_format($selected, 14, '.', ','), $fields)) {
|
||||
if (array_key_exists(number_format($selected, 14, $config['decimal_separator'], $config['thousand_separator']), $fields)) {
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
|
@ -772,3 +772,292 @@ function menu_pepare_acl_select_data($pages, $sec)
|
||||
|
||||
return $pages;
|
||||
}
|
||||
|
||||
|
||||
if (is_ajax()) {
|
||||
$about = (bool) get_parameter('about');
|
||||
if ($about) {
|
||||
global $config;
|
||||
global $pandora_version;
|
||||
global $build_version;
|
||||
$product_name = io_safe_output(get_product_name());
|
||||
|
||||
include_once $config['homedir'].'/include/class/Diagnostics.class.php';
|
||||
$d = new Diagnostics;
|
||||
$db_health = json_decode($d->getDatabaseHealthStatus());
|
||||
$db_info = json_decode($d->getDatabaseStatusInfo());
|
||||
$db_fragmentation = json_decode($d->getTablesFragmentation());
|
||||
$sys_info = json_decode($d->getSystemInfo());
|
||||
$php_sys = json_decode($d->getPHPSetup());
|
||||
|
||||
$fragmentation_status = '';
|
||||
if ($db_fragmentation->data->tablesFragmentationStatus->status === 1) {
|
||||
$fragmentation_status = html_print_image(
|
||||
'images/exito.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Successfully'),
|
||||
'style' => 'width:15px;',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$fragmentation_status = html_print_image(
|
||||
'images/error_1.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Error'),
|
||||
'style' => 'width:15px;',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$dialog = '
|
||||
<div id="about-tabs" class="invisible overflow-hidden">
|
||||
<ul>
|
||||
<li><a href="#tab-general-view">'.__('Information').'</a></li>
|
||||
<li><a href="#tab-database">'.__('Database').'</a></li>
|
||||
<li><a href="#tab-system-info">'.__('System Info').'</a></li>
|
||||
<li><a href="#tab-php-system">'.__('PHP System').'</a></li>
|
||||
<li class="ui-tabs-close-button" style="float:right!important;">
|
||||
<img id="about-close" style="cursor: pointer;" src="'.ui_get_full_url('/include/styles/images/dialog-titlebar-close.png', false, false, false).'" alt="'.__('Close').'" title="'.__('Close').'" width="25px">
|
||||
</li>
|
||||
</ul>
|
||||
<div id="tab-general-view">
|
||||
<table class="table-about">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th style="width: 40%;">
|
||||
<img src="'.ui_get_full_url('/images/custom_logo/'.$config['custom_logo'], false, false, false).'" alt="logo" width="70%">
|
||||
</th>
|
||||
<th style="width: 60%; text-align: left;">
|
||||
<h1>'.$product_name.'</h1>
|
||||
<p><span>'.__('Version').' '.$pandora_version.' - '.(enterprise_installed() ? 'Enterprise' : 'Community').'</span></p>
|
||||
<p><span>'.__('MR version').'</span> MR'.$config['MR'].'</p>
|
||||
<p><span>'.__('Build').'</span> '.$build_version.'</p>
|
||||
<p style="margin-bottom: 20px!important;"><span>'.__('Support expires').'</span> 2023/04/26</p>';
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$dialog .= '
|
||||
<div style="display: inline;">
|
||||
<button class="sub" onclick="location.href=\''.ui_get_full_url('/index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=history', false, false, false).'\'">'.__('Update manager').'</button>
|
||||
<button class="sub" onclick="location.href=\''.ui_get_full_url('/index.php?sec=gextensions&sec2=tools/diagnostics', false, false, false).'\'">'.__('System report').'</button>
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
$dialog .= '</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="trademark-copyright">Trademark and copyright 2004 - '.date('Y').' Pandora FMS. All rights reserved</p>
|
||||
</div>
|
||||
<div id="tab-database" class="div-scroll">
|
||||
<table class="table-about">
|
||||
<tbody style="text-align: left;">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<h2><span> - </span>'.__('Database health status').'</h2>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_health->data->unknownAgents->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_health->data->unknownAgents->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_health->data->notInitAgents->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_health->data->notInitAgents->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="about-last-tr">
|
||||
<th style="width: 50%;">
|
||||
<p class="about-last-p"><span>'.$db_health->data->pandoraDbLastRun->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p class="about-last-p">'.$db_health->data->pandoraDbLastRun->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<h2><span> - </span>'.__('Database status info').'</h2>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_info->data->dbSchemeFirstVersion->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_info->data->dbSchemeFirstVersion->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_info->data->dbSchemeVersion->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_info->data->dbSchemeVersion->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_info->data->dbSchemeBuild->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_info->data->dbSchemeBuild->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="about-last-tr">
|
||||
<th style="width: 50%;">
|
||||
<p class="about-last-p"><span>'.$db_info->data->dbSize->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p class="about-last-p">'.$db_info->data->dbSize->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<h2><span> - </span>'.__('Tables fragmentation in the %s database', $product_name).'</h2>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_fragmentation->data->tablesFragmentationMax->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_fragmentation->data->tablesFragmentationMax->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_fragmentation->data->tablesFragmentationValue->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$db_fragmentation->data->tablesFragmentationValue->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50%;">
|
||||
<p><span>'.$db_fragmentation->data->tablesFragmentationStatus->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 50%;">
|
||||
<p>'.$fragmentation_status.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="tab-system-info">
|
||||
<table class="table-about">
|
||||
<tbody style="text-align: left;">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<h2><span> - </span>'.__('System Info').'</h2>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$sys_info->data->cpuInfo->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$sys_info->data->cpuInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$sys_info->data->ramInfo->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$sys_info->data->ramInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$sys_info->data->osInfo->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$sys_info->data->osInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$sys_info->data->hostnameInfo->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$sys_info->data->hostnameInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$sys_info->data->ipInfo->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$sys_info->data->ipInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="tab-php-system">
|
||||
<table class="table-about">
|
||||
<tbody style="text-align: left;">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<h2><span> - </span>'.__('PHP system').'</h2>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 35%;">
|
||||
<p><span>'.$php_sys->data->phpVersion->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 65%;">
|
||||
<p>'.$php_sys->data->phpVersion->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 35%;">
|
||||
<p><span>'.$php_sys->data->maxExecutionTime->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 65%;">
|
||||
<p>'.$php_sys->data->maxExecutionTime->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 35%;">
|
||||
<p><span>'.$php_sys->data->maxInputTime->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 65%;">
|
||||
<p>'.$php_sys->data->maxInputTime->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 35%;">
|
||||
<p><span>'.$php_sys->data->memoryLimit->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 65%;">
|
||||
<p>'.$php_sys->data->memoryLimit->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 35%;">
|
||||
<p><span>'.$php_sys->data->sessionLifetime->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 65%;">
|
||||
<p>'.$php_sys->data->sessionLifetime->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
';
|
||||
|
||||
echo $dialog;
|
||||
}
|
||||
}
|
||||
|
@ -2589,12 +2589,12 @@ function modules_get_agentmodule_data_for_humans($module)
|
||||
$salida = human_milliseconds_to_string($module['datos']);
|
||||
}
|
||||
} else {
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision']));
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision']));
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -2613,12 +2613,12 @@ function modules_get_agentmodule_data_for_humans($module)
|
||||
$salida = human_milliseconds_to_string($module['datos']);
|
||||
}
|
||||
} else {
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision']));
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision']));
|
||||
$salida = remove_right_zeros(number_format($module['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2900,7 +2900,7 @@ function modules_get_status($id_agent_module, $db_status, $data, &$status, &$tit
|
||||
}
|
||||
|
||||
if (is_numeric($data)) {
|
||||
$title .= ': '.remove_right_zeros(number_format($data, $config['graph_precision']));
|
||||
$title .= ': '.remove_right_zeros(number_format($data, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
} else {
|
||||
$text = io_safe_output($data);
|
||||
|
||||
@ -3982,6 +3982,81 @@ function recursive_get_dt_from_modules_tree(&$f_modules, $modules, $deep)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the module data from a children
|
||||
*
|
||||
* @param integer $id_module Id module
|
||||
* @return array Children module data
|
||||
*/
|
||||
function get_children_module($id_module)
|
||||
{
|
||||
$children_module_data = db_get_all_rows_sql(
|
||||
'SELECT *
|
||||
FROM tagente_modulo
|
||||
WHERE parent_module_id = '.$id_module
|
||||
);
|
||||
|
||||
return $children_module_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find and delete the childers modules from the $id_module
|
||||
*
|
||||
* @param mixed $id_module
|
||||
* @return void
|
||||
*/
|
||||
function module_check_childrens_and_delete($id_module)
|
||||
{
|
||||
$children_data = get_children_module($id_module);
|
||||
// Check if exist have a childer
|
||||
if ($children_data) {
|
||||
// If have more than 1 children
|
||||
if (is_array($children_data)) {
|
||||
foreach ($children_data as $children_module_data) {
|
||||
if ($children_module_data['parent_module_id']) {
|
||||
// Search children and delete this module
|
||||
// Before delete, lets check if exist (Just for cases it's already deleted)
|
||||
if (modules_check_agentmodule_exists($children_module_data['parent_module_id'])) {
|
||||
modules_delete_agent_module($children_module_data['parent_module_id']);
|
||||
}
|
||||
|
||||
module_check_childrens_and_delete($children_module_data['id_agente_modulo']);
|
||||
} else {
|
||||
// If haven't children just delete
|
||||
// Before delete, lets check if exist (Just for cases it's already deleted)
|
||||
if (modules_check_agentmodule_exists($children_module_data['id_agente_modulo'])) {
|
||||
modules_delete_agent_module($children_module_data['id_agente_modulo']);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If just have 1 children
|
||||
if ($children_data['parent_module_id']) {
|
||||
// Before delete, lets check if exist (Just for cases it's already deleted)
|
||||
if (modules_check_agentmodule_exists($children_data['parent_module_id'])) {
|
||||
modules_delete_agent_module($children_data['parent_module_id']);
|
||||
}
|
||||
|
||||
module_check_childrens_and_delete($children_data['id_agente_modulo']);
|
||||
} else {
|
||||
// If haven't children just delete
|
||||
// Before delete, lets check if exist (Just for cases it's already deleted)
|
||||
if (modules_check_agentmodule_exists($children_data['id_agente_modulo'])) {
|
||||
modules_delete_agent_module($children_data['id_agente_modulo']);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Haven't childrens, so delete
|
||||
// Before delete, lets check if exist (Just for cases it's already deleted)
|
||||
if (modules_check_agentmodule_exists($id_module)) {
|
||||
modules_delete_agent_module($id_module);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get the button with the link to open realtime stats into a new window
|
||||
* Only to native (not satellite discovered) snmp modules.
|
||||
@ -4336,3 +4411,129 @@ function modules_get_regex(
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Status for data thresholds modules.
|
||||
*
|
||||
* @param integer $id_module Module ID.
|
||||
* @param mixed $data Data int, bool, null, etc.
|
||||
* @param array $thresholds Array thresholds.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_status_data_modules(int $id_module, $data, $thresholds)
|
||||
{
|
||||
// Check not init.
|
||||
if ($data === false) {
|
||||
return ['color' => COL_NOTINIT];
|
||||
}
|
||||
|
||||
// Check boolean.
|
||||
$is_bolean = modules_is_boolean($id_module);
|
||||
if ($is_bolean === true) {
|
||||
if ($data > 0) {
|
||||
return ['color' => COL_CRITICAL];
|
||||
} else {
|
||||
return ['color' => COL_NORMAL];
|
||||
}
|
||||
}
|
||||
|
||||
$thresholds = calculateThreshold($thresholds);
|
||||
|
||||
foreach (getStatuses() as $status) {
|
||||
if ($thresholds[$status]['min'] === null
|
||||
&& $thresholds[$status]['max'] === null
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (($thresholds[$status]['min'] === null
|
||||
&& $thresholds[$status]['max'] >= $data)
|
||||
|| ($thresholds[$status]['max'] === null
|
||||
&& $thresholds[$status]['min'] <= $data)
|
||||
|| ($thresholds[$status]['min'] <= $data
|
||||
&& $thresholds[$status]['max'] >= $data)
|
||||
) {
|
||||
if ($status === 'critical') {
|
||||
return ['color' => COL_CRITICAL];
|
||||
} else if ($status === 'warning') {
|
||||
return ['color' => COL_WARNING];
|
||||
} else {
|
||||
return ['color' => COL_NORMAL];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ['color' => COL_NORMAL];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculate thresholds.
|
||||
*
|
||||
* @param array $thresholds_array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function calculateThreshold(array $thresholds_array)
|
||||
{
|
||||
$nMax = null;
|
||||
if ($thresholds_array['min_warning'] !== null) {
|
||||
$nMax = $thresholds_array['min_warning'];
|
||||
} else if ($thresholds_array['min_critical'] !== null) {
|
||||
$nMax = $thresholds_array['min_critical'];
|
||||
}
|
||||
|
||||
$wMin = null;
|
||||
if ($thresholds_array['min_warning'] !== null) {
|
||||
$wMin = $thresholds_array['min_warning'];
|
||||
}
|
||||
|
||||
$wMax = null;
|
||||
if ($thresholds_array['max_warning'] !== null) {
|
||||
$wMax = $thresholds_array['max_warning'];
|
||||
}
|
||||
|
||||
$cMin = null;
|
||||
if ($thresholds_array['min_critical'] !== null) {
|
||||
$cMin = $thresholds_array['min_critical'];
|
||||
}
|
||||
|
||||
$cMax = null;
|
||||
if ($thresholds_array['max_critical'] !== null) {
|
||||
$cMax = $thresholds_array['max_critical'];
|
||||
}
|
||||
|
||||
$thresholds = [
|
||||
'normal' => [
|
||||
'min' => null,
|
||||
'max' => $nMax,
|
||||
],
|
||||
'warning' => [
|
||||
'min' => $wMin,
|
||||
'max' => $wMax,
|
||||
],
|
||||
'critical' => [
|
||||
'min' => $cMin,
|
||||
'max' => $cMax,
|
||||
],
|
||||
];
|
||||
|
||||
return $thresholds;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get status.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function getStatuses()
|
||||
{
|
||||
return [
|
||||
'critical',
|
||||
'warning',
|
||||
'normal',
|
||||
];
|
||||
}
|
||||
|
@ -1479,7 +1479,7 @@ function netflow_draw_item(
|
||||
}
|
||||
|
||||
if ($output === 'HTML' || $output === 'PDF') {
|
||||
return graph_nodata_image(300, 110, 'data');
|
||||
return graph_nodata_image(['height' => 110]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3399,7 +3399,10 @@ function get_status_color_networkmap_fictional_point($id_networkmap, $parent='')
|
||||
|
||||
if ($agent['source_data'] == -2) {
|
||||
if (empty($parent) === true) {
|
||||
$option = json_decode($agent, true);
|
||||
if (is_array($agent) === false) {
|
||||
$option = json_decode($agent, true);
|
||||
}
|
||||
|
||||
if ($option['networkmap'] == 0) {
|
||||
$status = 0;
|
||||
} else {
|
||||
|
@ -134,7 +134,7 @@ function notifications_get_subtypes(?string $source=null)
|
||||
'NOTIF.PHP.UPLOAD_MAX_FILESIZE',
|
||||
'NOTIF.PHP.MEMORY_LIMIT',
|
||||
'NOTIF.PHP.DISABLE_FUNCTIONS',
|
||||
'NOTIF.PHP.PHANTOMJS',
|
||||
'NOTIF.PHP.CHROMIUM',
|
||||
'NOTIF.PHP.VERSION',
|
||||
'NOTIF.HISTORYDB',
|
||||
'NOTIF.PANDORADB',
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -652,18 +652,18 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
|
||||
$row[] = round($sla['sla_limit'], 2).'%';
|
||||
|
||||
if (reporting_sla_is_not_init_from_array($sla)) {
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NOTINIT.';">'.__('N/A').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NOTINIT.';">'.__('Not init').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_NOTINIT.';">'.__('N/A').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_NOTINIT.';">'.__('Not init').'</span>';
|
||||
} else if (reporting_sla_is_ignored_from_array($sla)) {
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_IGNORED.';">'.__('N/A').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_IGNORED.';">'.__('No data').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_IGNORED.';">'.__('N/A').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_IGNORED.';">'.__('No data').'</span>';
|
||||
// Normal calculation.
|
||||
} else if ($sla['sla_status']) {
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">'.__('OK').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_NORMAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_NORMAL.';">'.__('OK').'</span>';
|
||||
} else {
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">'.__('Fail').'</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_CRITICAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
|
||||
$row[] = '<span style="font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_CRITICAL.';">'.__('Fail').'</span>';
|
||||
}
|
||||
|
||||
// Second table for time globals.
|
||||
@ -961,7 +961,7 @@ function reporting_html_top_n($table, $item, $pdf=0)
|
||||
$table->data['top_n']['cell'] = html_print_table($table1, true);
|
||||
}
|
||||
|
||||
if (!empty($item['charts']['pie'])) {
|
||||
if (empty($item['charts']['pie']) === false) {
|
||||
if ($pdf !== 0) {
|
||||
$return_pdf .= $item['charts']['pie'];
|
||||
} else {
|
||||
@ -970,16 +970,15 @@ function reporting_html_top_n($table, $item, $pdf=0)
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($item['charts']['bars'])) {
|
||||
if (empty($item['charts']['bars']) === false) {
|
||||
if ($pdf !== 0) {
|
||||
$return_pdf .= $item['charts']['bars'];
|
||||
} else {
|
||||
// $table->colspan['char_bars']['cell'] = 3;
|
||||
$table->data['char_pie'][1] = $item['charts']['bars'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($item['resume'])) {
|
||||
if (empty($item['resume']) === false) {
|
||||
$table1 = new stdClass();
|
||||
$table1->width = '99%';
|
||||
|
||||
@ -2292,7 +2291,9 @@ function reporting_html_agent_module_status($table, $item, $pdf=0)
|
||||
$row['data_module'] = remove_right_zeros(
|
||||
number_format(
|
||||
$data['data_module'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@ -2785,7 +2786,7 @@ function reporting_html_historical_data($table, $item, $pdf=0)
|
||||
} else {
|
||||
$row = [
|
||||
$data[__('Date')],
|
||||
remove_right_zeros(number_format($data[__('Data')], $config['graph_precision'])),
|
||||
remove_right_zeros(number_format($data[__('Data')], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])),
|
||||
];
|
||||
}
|
||||
|
||||
@ -2925,7 +2926,9 @@ function reporting_html_last_value($table, $item, $pdf=0)
|
||||
$dataDatos = remove_right_zeros(
|
||||
number_format(
|
||||
$item['data']['datos'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@ -3460,28 +3463,32 @@ function reporting_html_monitor_report($table, $item, $mini, $pdf=0)
|
||||
$table1->head = [];
|
||||
$table1->data = [];
|
||||
if ($item['data']['unknown'] == 1) {
|
||||
$table1->data['data']['unknown'] = '<p class="bolder" style="font-size: '.$font_size.' !important; color: '.COL_UNKNOWN.';">';
|
||||
$table1->data['data']['unknown'] = '<p class="bolder" style="font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_UNKNOWN.';">';
|
||||
$table1->data['data']['unknown'] .= __('Unknown').'</p>';
|
||||
} else {
|
||||
$table1->data['data']['ok'] = '<p class="bolder" style="font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">';
|
||||
$table1->data['data']['ok'] = '<p class="bolder" style="font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_NORMAL.';">';
|
||||
$table1->data['data']['ok'] .= html_print_image(
|
||||
'images/module_ok.png',
|
||||
true
|
||||
).' '.__('OK').': '.remove_right_zeros(
|
||||
number_format(
|
||||
$item['data']['ok']['value'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
).' %</p>';
|
||||
|
||||
$table1->data['data']['fail'] = '<p class="bolder" style="font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">';
|
||||
$table1->data['data']['fail'] = '<p class="bolder" style="font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.COL_CRITICAL.';">';
|
||||
$table1->data['data']['fail'] .= html_print_image(
|
||||
'images/module_critical.png',
|
||||
true
|
||||
).' '.__('Not OK').': '.remove_right_zeros(
|
||||
number_format(
|
||||
$item['data']['fail']['value'],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
).' % '.'</p>';
|
||||
}
|
||||
@ -3835,7 +3842,9 @@ function reporting_html_value(
|
||||
remove_right_zeros(
|
||||
number_format(
|
||||
$data[__('Maximun')],
|
||||
$config['graph_precision']
|
||||
$config['graph_precision'],
|
||||
$config['decimal_separator'],
|
||||
$config['thousand_separator']
|
||||
)
|
||||
),
|
||||
];
|
||||
@ -4674,7 +4683,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
|
||||
$checks_resume_text = '<span style = "font-size: '.$font_mini.';">';
|
||||
$checks_resume_text .= $checks_resume;
|
||||
$checks_resume_text .= '</span>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.' !important; color: '.$color."'>".$sla_value.'</span>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.$color."'>".$sla_value.'</span>';
|
||||
switch ($item['data'][$k_chart]['failover']) {
|
||||
case 'primary_compare':
|
||||
$title = '<b>'.__('Primary').' (24x7)</b>';
|
||||
@ -4702,7 +4711,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
|
||||
|
||||
case 'result_compare':
|
||||
$title = '<b>'.__('Result').' (24x7)</b>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.' !important; color: '.$color."'>".$sla_value.'</span>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.$color."'>".$sla_value.'</span>';
|
||||
$checks_resume_text = '<span style = "font-size: '.$font_mini.';">';
|
||||
$checks_resume_text .= $checks_resume;
|
||||
$checks_resume_text .= '</span>';
|
||||
@ -4713,7 +4722,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
|
||||
$total_values += $sla_value;
|
||||
$count_total_charts++;
|
||||
$title = '<b>'.__('Result').'</b>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.' !important; color: '.$color."'>".$sla_value.'</span>';
|
||||
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.(($pdf === 0) ? ' !important' : '').'; color: '.$color."'>".$sla_value.'</span>';
|
||||
$checks_resume_text = '<span style = "font-size: '.$font_mini.';">';
|
||||
$checks_resume_text .= $checks_resume;
|
||||
$checks_resume_text .= '</span>';
|
||||
@ -4747,7 +4756,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
|
||||
|
||||
$table_summary->data = [];
|
||||
$table_summary->data[0][0] = '<b>'.__('Summary').'</b>';
|
||||
$table_summary->data[0][1] = '<span style = "font-weight: bold; font-size: '.$font_size.' !important;">';
|
||||
$table_summary->data[0][1] = '<span style = "font-weight: bold; font-size: '.$font_size.(($pdf === 0) ? ' !important' : '').';">';
|
||||
$table_summary->data[0][1] .= sla_truncate($total_values / $count_total_charts);
|
||||
$table_summary->data[0][1] .= ' %';
|
||||
$table_summary->data[0][1] .= '</span>';
|
||||
@ -5131,7 +5140,17 @@ function reporting_get_stats_summary($data, $graph_width, $graph_height)
|
||||
// Fixed width non interactive charts.
|
||||
$status_chart_width = $graph_width;
|
||||
|
||||
$tdata[0] = '<div style="margin: auto; width: '.$graph_width.'px;"><div id="status_pie" style="margin: auto; width: '.$graph_width.'">'.graph_agent_status(false, $graph_width, $graph_height, true, true).'</div></div>';
|
||||
$tdata[0] = '<div style="margin: auto; width: '.$graph_width.'px;">';
|
||||
$tdata[0] .= '<div id="status_pie" style="margin: auto; width: '.$graph_width.'">';
|
||||
$tdata[0] .= graph_agent_status(
|
||||
false,
|
||||
$graph_width,
|
||||
$graph_height,
|
||||
true,
|
||||
true
|
||||
);
|
||||
$tdata[0] .= '</div>';
|
||||
$tdata[0] .= '</div>';
|
||||
} else {
|
||||
$tdata[2] = html_print_image(
|
||||
'images/image_problem_area_small.png',
|
||||
@ -5141,7 +5160,16 @@ function reporting_get_stats_summary($data, $graph_width, $graph_height)
|
||||
}
|
||||
|
||||
if ($data['monitor_alerts'] > 0) {
|
||||
$tdata[2] = '<div style="margin: auto; width: '.$graph_width.'px;">'.graph_alert_status($data['monitor_alerts'], $data['monitor_alerts_fired'], $graph_width, $graph_height, true, true).'</div>';
|
||||
$tdata[2] = '<div style="margin: auto; width: '.$graph_width.'px;">';
|
||||
$tdata[2] .= graph_alert_status(
|
||||
$data['monitor_alerts'],
|
||||
$data['monitor_alerts_fired'],
|
||||
$graph_width,
|
||||
$graph_height,
|
||||
true,
|
||||
true
|
||||
);
|
||||
$tdata[2] .= '</div>';
|
||||
} else {
|
||||
$tdata[2] = html_print_image(
|
||||
'images/image_problem_area_small.png',
|
||||
@ -5150,8 +5178,8 @@ function reporting_get_stats_summary($data, $graph_width, $graph_height)
|
||||
);
|
||||
}
|
||||
|
||||
$table_sum->rowclass[] = '';
|
||||
$table_sum->data[] = $tdata;
|
||||
$table_sum->rowclass[] = '';
|
||||
$table_sum->data[] = $tdata;
|
||||
|
||||
$output = '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Summary').'</legend>'.html_print_table($table_sum, true).'</fieldset>';
|
||||
|
@ -46,6 +46,8 @@ function reporting_xml_get_report($report, $filename, $return=false)
|
||||
|
||||
// Download if marked to download.
|
||||
if ($filename !== false) {
|
||||
// Cookie for download control.
|
||||
setDownloadCookieToken();
|
||||
header('Content-Type: application/xml; charset=UTF-8');
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'.xml"');
|
||||
}
|
||||
|
@ -1349,9 +1349,6 @@ function servers_get_server_string_name(int $server)
|
||||
case SERVER_TYPE_ENTERPRISE_SATELLITE:
|
||||
return __('Satellite server');
|
||||
|
||||
case SERVER_TYPE_ENTERPRISE_TRANSACTIONAL:
|
||||
return __('Transactional server');
|
||||
|
||||
case SERVER_TYPE_ALERT:
|
||||
return __('Alert server');
|
||||
|
||||
|
@ -460,7 +460,7 @@ function snmp_browser_get_oid(
|
||||
$snmptranslate_bin = $config['snmptranslate'];
|
||||
}
|
||||
|
||||
if ($server_to_exec != 0 && enterprise_installed()) {
|
||||
if (empty($server_to_exec) === false && enterprise_installed()) {
|
||||
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
|
||||
$command_output = $snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid);
|
||||
|
||||
|
@ -193,7 +193,7 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
||||
if ($value == '.1.3.6.1.2.1.1.3.0' || $value == '.1.3.6.1.2.1.25.1.1.0') {
|
||||
$data = "<span title='".$last_data['datos']."' class='nowrap'>".human_milliseconds_to_string($last_data['datos']).'</span>';
|
||||
} else if (is_numeric($last_data['datos'])) {
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'])).'</span>';
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])).'</span>';
|
||||
} else {
|
||||
$data = ui_print_truncate_text(
|
||||
io_safe_output($last_data['datos']),
|
||||
@ -209,7 +209,7 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
||||
|
||||
default:
|
||||
if (is_numeric($last_data['datos'])) {
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'])).'</span>';
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])).'</span>';
|
||||
} else {
|
||||
$data = ui_print_truncate_text(
|
||||
io_safe_output($last_data['datos']),
|
||||
@ -232,7 +232,7 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
||||
if ($value == '.1.3.6.1.2.1.1.3.0' || $value == '.1.3.6.1.2.1.25.1.1.0') {
|
||||
$data = "<span title='".human_milliseconds_to_string($last_data['datos'])."' class='nowrap'>".human_milliseconds_to_string($last_data['datos']).'</span>';
|
||||
} else if (is_numeric($last_data['datos'])) {
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'])).'</span>';
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])).'</span>';
|
||||
} else {
|
||||
$data = ui_print_truncate_text(
|
||||
io_safe_output($last_data['datos']),
|
||||
@ -248,7 +248,7 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
||||
|
||||
default:
|
||||
if (is_numeric($last_data['datos'])) {
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'])).'</span>';
|
||||
$data = "<span class='span_treeview'>".remove_right_zeros(number_format($last_data['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])).'</span>';
|
||||
} else {
|
||||
$data = ui_print_truncate_text(
|
||||
io_safe_output($last_data['datos']),
|
||||
@ -271,7 +271,7 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
||||
$data_macro = modules_get_unit_macro($last_data['datos'], $module['unit']);
|
||||
if ($data_macro) {
|
||||
if (is_numeric($data_macro)) {
|
||||
$last_data_str = "<span class='span_treeview'>".remove_right_zeros(number_format($data_macro, $config['graph_precision'])).'</span>';
|
||||
$last_data_str = "<span class='span_treeview'>".remove_right_zeros(number_format($data_macro, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])).'</span>';
|
||||
} else {
|
||||
$last_data_str = ui_print_truncate_text(
|
||||
io_safe_output($data_macro),
|
||||
@ -594,10 +594,10 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
||||
$hashdata = $user.$pwd_deserialiced['auth_token'];
|
||||
|
||||
$hashdata = md5($hashdata);
|
||||
$url = $server_data['server_url'].'/index.php?'.'sec=estado&'.'sec2=operation/agentes/ver_agente&'.'id_agente='.$agent['id_agente'].'&'.'loginhash=auto&'."loginhash_data=$hashdata&".'loginhash_user='.str_rot13($user);
|
||||
$url = $server_data['server_url'].'/index.php?'.'sec=estado&'.'sec2=operation/agentes/ver_agente&'.'id_agente='.$agent['id_agente'];
|
||||
|
||||
if ($grants_on_node && (bool) $user_access_node !== false) {
|
||||
$cellName .= '<a href="'.$url.'">'.'<b><span class="bolder pandora_upper" title="'.$agent['nombre'].'">'.$agent['alias'].'</span></b></a>';
|
||||
$cellName .= '<a onclick="sendHash(\''.$url.'\')" href="#"><b><span class="bolder pandora_upper" title="'.$agent['nombre'].'">'.$agent['alias'].'</span></b></a>';
|
||||
} else {
|
||||
$cellName .= '<b><span class="bolder pandora_upper" title="'.$agent['nombre'].'">'.$agent['alias'].'</span></b>';
|
||||
}
|
||||
@ -690,20 +690,13 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
||||
$go_to_agent = '<div style="text-align: right">';
|
||||
|
||||
if ($agent['id_os'] == CLUSTER_OS_ID) {
|
||||
if (enterprise_installed()) {
|
||||
$cluster = PandoraFMS\Enterprise\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$url = 'index.php?sec=reporting&sec2='.ENTERPRISE_DIR;
|
||||
$url .= '/operation/cluster/cluster';
|
||||
$url = ui_get_full_url(
|
||||
$url.'&op=update&id='.$cluster->id()
|
||||
);
|
||||
$go_to_agent .= '<a target="_blank" href="'.$url.'">';
|
||||
$go_to_agent .= html_print_submit_button(__('Edit cluster'), 'upd_button', false, 'class="sub config"', true);
|
||||
}
|
||||
$cluster = PandoraFMS\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$go_to_agent .= '<a target=_blank href="'.$console_url.'index.php?sec=reporting&sec2=operation/cluster/cluster&op=update&id='.$cluster->id().'">';
|
||||
$go_to_agent .= html_print_submit_button(__('Go to cluster edition'), 'upd_button', false, 'class="sub config"', true);
|
||||
} else {
|
||||
$go_to_agent .= '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.$url_hash.'">';
|
||||
$go_to_agent .= '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.$ent.'">';
|
||||
$go_to_agent .= html_print_submit_button(__('Go to agent edition'), 'upd_button', false, 'class="sub config"', true);
|
||||
}
|
||||
|
||||
@ -905,5 +898,12 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
return;
|
||||
echo "
|
||||
<script>
|
||||
function sendHash(url) {
|
||||
window.location = url+'&loginhash=auto&loginhash_data=".$hashdata.'&loginhash_user='.str_rot13($user)."';
|
||||
|
||||
}
|
||||
|
||||
</script>";
|
||||
}
|
||||
|
@ -3540,6 +3540,11 @@ function ui_print_datatable(array $parameters)
|
||||
titleAttr: "'.__('Export current page to CSV').'",
|
||||
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
|
||||
fieldSeparator: "'.$config['csv_divider'].'",
|
||||
action: function ( e, dt, node, config ) {
|
||||
blockResubmit(node);
|
||||
// Call the default csvHtml5 action method to create the CSV file
|
||||
$.fn.dataTable.ext.buttons.csvHtml5.action.call(this, e, dt, node, config);
|
||||
},
|
||||
exportOptions : {
|
||||
modifier : {
|
||||
// DataTables core
|
||||
@ -3547,7 +3552,7 @@ function ui_print_datatable(array $parameters)
|
||||
page : "All",
|
||||
search : "applied"
|
||||
}'.$export_columns.'
|
||||
}
|
||||
},
|
||||
}
|
||||
] : [],
|
||||
lengthMenu: '.json_encode($pagination_options).',
|
||||
@ -3671,6 +3676,16 @@ function ui_print_datatable(array $parameters)
|
||||
$js .= '$(".datatables_thead_tr").css("height", 0);';
|
||||
}
|
||||
|
||||
if (isset($parameters['csv']) === true) {
|
||||
$js."'$('#".$table_id."').on( 'buttons-processing', function ( e, indicator ) {
|
||||
if ( indicator ) {
|
||||
console.log('a');
|
||||
}
|
||||
else {
|
||||
console.log('b');
|
||||
}";
|
||||
}
|
||||
|
||||
$js .= '});';
|
||||
|
||||
$js .= '</script>';
|
||||
@ -6577,10 +6592,11 @@ function ui_print_comments($comments)
|
||||
} else {
|
||||
$rest_time = (time() - $last_comment['utimestamp']);
|
||||
$time_last = (($rest_time / 60) / 60);
|
||||
$comentario = '<i>'.number_format($time_last, 0).' Hours ('.$last_comment['id_user'].'): '.$last_comment['comment'].'';
|
||||
|
||||
$comentario = '<i>'.number_format($time_last, 0, $config['decimal_separator'], $config['thousand_separator']).' Hours ('.$last_comment['id_user'].'): '.$last_comment['comment'].'';
|
||||
|
||||
if (strlen($comentario) > '200px') {
|
||||
$comentario = '<i>'.number_format($time_last, 0).' Hours ('.$last_comment['id_user'].'): '.$short_comment.'...';
|
||||
$comentario = '<i>'.number_format($time_last, 0, $config['decimal_separator'], $config['thousand_separator']).' Hours ('.$last_comment['id_user'].'): '.$short_comment.'...';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -924,7 +924,7 @@ function visual_map_print_item(
|
||||
|
||||
$value_text = format_for_graph($module_value, 2);
|
||||
if ($value_text <= 0) {
|
||||
$value_text = remove_right_zeros(number_format($module_value, $config['graph_precision']));
|
||||
$value_text = remove_right_zeros(number_format($module_value, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
}
|
||||
|
||||
if (!empty($unit_text)) {
|
||||
@ -1227,7 +1227,7 @@ function visual_map_print_item(
|
||||
|
||||
$module_data = get_bars_module_data(
|
||||
$id_module,
|
||||
($layoutData['type_graph'] !== 'horizontal')
|
||||
$layoutData['type_graph']
|
||||
);
|
||||
$options = [];
|
||||
$options['generals']['rotate'] = true;
|
||||
@ -1743,7 +1743,7 @@ function visual_map_print_item(
|
||||
|| (modules_is_boolean($layoutData['id_agente_modulo']) && $layoutData['show_last_value'] != 0)
|
||||
) {
|
||||
if (is_numeric($value)) {
|
||||
$img_style_title .= ' <br>'.__('Last value: ').remove_right_zeros(number_format($value, $config['graph_precision']));
|
||||
$img_style_title .= ' <br>'.__('Last value: ').remove_right_zeros(number_format($value, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
} else {
|
||||
$img_style_title .= ' <br>'.__('Last value: ').$value;
|
||||
}
|
||||
@ -1881,13 +1881,13 @@ function visual_map_print_item(
|
||||
echo '</tr>';
|
||||
echo "<tr class='bg_whitesmoke height_90p'>";
|
||||
echo '<td>';
|
||||
echo "<div class='critical_zeros'>".remove_right_zeros(number_format($stat_agent_cr, 2)).'%</div>';
|
||||
echo "<div class='critical_zeros'>".remove_right_zeros(number_format($stat_agent_cr, 2, $config['decimal_separator'], $config['thousand_separator'])).'%</div>';
|
||||
echo "<div class='critical_vm'>Critical</div>";
|
||||
echo "<div class='warning_zeros'>".remove_right_zeros(number_format($stat_agent_wa, 2)).'%</div>';
|
||||
echo "<div class='warning_zeros'>".remove_right_zeros(number_format($stat_agent_wa, 2, $config['decimal_separator'], $config['thousand_separator'])).'%</div>';
|
||||
echo "<div class='warning_vm'>Warning</div>";
|
||||
echo "<div class='normal_zeros'>".remove_right_zeros(number_format($stat_agent_ok, 2)).'%</div>';
|
||||
echo "<div class='normal_zeros'>".remove_right_zeros(number_format($stat_agent_ok, 2, $config['decimal_separator'], $config['thousand_separator'])).'%</div>';
|
||||
echo "<div class='normal_vm'>Normal</div>";
|
||||
echo "<div class='unknown_zeros'>".remove_right_zeros(number_format($stat_agent_un, 2)).'%</div>';
|
||||
echo "<div class='unknown_zeros'>".remove_right_zeros(number_format($stat_agent_un, 2, $config['decimal_separator'], $config['thousand_separator'])).'%</div>';
|
||||
echo "<div class='unknown_vm'>Unknown</div>";
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
@ -2344,7 +2344,7 @@ function get_if_module_is_image($id_module)
|
||||
}
|
||||
|
||||
|
||||
function get_bars_module_data($id_module, $vBars=false)
|
||||
function get_bars_module_data($id_module, $typeGraph='horizontal')
|
||||
{
|
||||
// This charts is only serialize graphs.
|
||||
// In other string show image no data to show.
|
||||
@ -2355,7 +2355,7 @@ function get_bars_module_data($id_module, $vBars=false)
|
||||
);
|
||||
|
||||
$values = false;
|
||||
// avoid showing the image type modules. WUX
|
||||
// Avoid showing the image type modules. WUX.
|
||||
if (strpos($mod_values, 'data:image/png;base64') !== 0) {
|
||||
if (preg_match("/\r\n/", $mod_values)) {
|
||||
$values = explode("\r\n", $mod_values);
|
||||
@ -2364,26 +2364,28 @@ function get_bars_module_data($id_module, $vBars=false)
|
||||
}
|
||||
}
|
||||
|
||||
$values_to_return = [];
|
||||
$index = 0;
|
||||
$color_index = 0;
|
||||
$total = 0;
|
||||
|
||||
if (!$values) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($vBars === false) {
|
||||
foreach ($values as $val) {
|
||||
$data = explode(',', $val);
|
||||
$values_to_return[$data[0]] = ['g' => $data[1]];
|
||||
$values_to_return = [];
|
||||
foreach ($values as $val) {
|
||||
$data = explode(',', $val);
|
||||
|
||||
if ($data[0] === $val) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
foreach ($values as $val) {
|
||||
$data = explode(',', $val);
|
||||
$values_to_return[] = [
|
||||
'tick' => $data[0],
|
||||
'data' => $data[1],
|
||||
|
||||
$values_to_return['labels'][] = io_safe_output($data[0]);
|
||||
if ($typeGraph === 'horizontal') {
|
||||
$values_to_return['data'][] = [
|
||||
'y' => io_safe_output($data[0]),
|
||||
'x' => $data[1],
|
||||
];
|
||||
} else {
|
||||
$values_to_return['data'][] = [
|
||||
'x' => io_safe_output($data[0]),
|
||||
'y' => $data[1],
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -2462,7 +2464,7 @@ function visual_map_get_simple_value($type, $id_module, $period=SECONDS_1DAY)
|
||||
} else {
|
||||
if (is_numeric($value)) {
|
||||
if ($config['simple_module_value']) {
|
||||
$value = remove_right_zeros(number_format($value, $config['graph_precision']));
|
||||
$value = remove_right_zeros(number_format($value, $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator']));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2842,74 +2844,23 @@ function get_donut_module_data($id_module)
|
||||
$no_data_to_show = true;
|
||||
}
|
||||
|
||||
$colors = [];
|
||||
$colors[] = '#aa3333';
|
||||
$colors[] = '#045FB4';
|
||||
$colors[] = '#8181F7';
|
||||
$colors[] = '#F78181';
|
||||
$colors[] = '#D0A9F5';
|
||||
$colors[] = '#BDBDBD';
|
||||
$colors[] = '#6AB277';
|
||||
|
||||
$max_elements = 6;
|
||||
$values_to_return = [];
|
||||
$index = 0;
|
||||
$total = 0;
|
||||
foreach ($values as $val) {
|
||||
if ($index < $max_elements) {
|
||||
$data = explode(',', $val);
|
||||
$data = explode(',', $val);
|
||||
|
||||
if ($no_data_to_show) {
|
||||
$values_to_return[$index]['tag_name'] = $data[0];
|
||||
} else {
|
||||
$values_to_return[$index]['tag_name'] = $data[0].': '.$data[1];
|
||||
}
|
||||
if ($data[0] === $val) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$values_to_return[$index]['color'] = $colors[$index];
|
||||
$values_to_return[$index]['value'] = (int) $data[1];
|
||||
$total += (int) $data[1];
|
||||
$index++;
|
||||
if ($no_data_to_show) {
|
||||
$values_to_return['labels'][] = $data[0];
|
||||
} else {
|
||||
$data = explode(',', $val);
|
||||
$values_to_return[$index]['tag_name'] = __('Others').': '.$data[1];
|
||||
$values_to_return[$index]['color'] = $colors[$index];
|
||||
$values_to_return[$index]['value'] += (int) $data[1];
|
||||
$total += (int) $data[1];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($values_to_return as $ind => $donut_data) {
|
||||
$values_to_return[$ind]['percent'] = (($donut_data['value'] * 100) / $total);
|
||||
}
|
||||
|
||||
// sort array
|
||||
$new_values_to_return = [];
|
||||
while (!empty($values_to_return)) {
|
||||
$first = true;
|
||||
$max_elem = 0;
|
||||
$max_elem_array = [];
|
||||
$index_to_del = 0;
|
||||
foreach ($values_to_return as $i => $val) {
|
||||
if ($first) {
|
||||
$max_elem = $val['value'];
|
||||
$max_elem_array = $val;
|
||||
$index_to_del = $i;
|
||||
$first = false;
|
||||
} else {
|
||||
if ($val['value'] > $max_elem) {
|
||||
$max_elem = $val['value'];
|
||||
$max_elem_array = $val;
|
||||
$index_to_del = $i;
|
||||
}
|
||||
}
|
||||
$values_to_return['labels'][] = $data[0].': '.$data[1];
|
||||
}
|
||||
|
||||
$new_values_to_return[] = $max_elem_array;
|
||||
unset($values_to_return[$index_to_del]);
|
||||
$values_to_return['data'][] = (int) $data[1];
|
||||
}
|
||||
|
||||
$values_to_return = $new_values_to_return;
|
||||
|
||||
return $values_to_return;
|
||||
}
|
||||
|
||||
|
11526
pandora_console/include/graphs/chartjs/chart.js
Normal file
11526
pandora_console/include/graphs/chartjs/chart.js
Normal file
File diff suppressed because it is too large
Load Diff
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