mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 00:34:46 +02:00
Merge remote-tracking branch 'origin/develop' into ent-8731-umc-en-vendor
Conflicts: pandora_console/extras/mr/53.sql
This commit is contained in:
commit
686ba0a5a5
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, AIX version
|
# Version 7.0NG.761, AIX version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, FreeBSD Version
|
# Version 7.0NG.761, FreeBSD Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, HP-UX Version
|
# Version 7.0NG.761, HP-UX Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, GNU/Linux
|
# Version 7.0NG.761, GNU/Linux
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, GNU/Linux
|
# Version 7.0NG.761, GNU/Linux
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, Solaris Version
|
# Version 7.0NG.761, Solaris Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Base config file for Pandora FMS Windows Agent
|
# Base config file for Pandora FMS Windows Agent
|
||||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# This program is Free Software, you can redistribute it and/or modify it
|
# This program is Free Software, you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||||
# Foundation; either version 2 of the Licence or any later version
|
# Foundation; either version 2 of the Licence or any later version
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Fichero de configuracion base de agentes de Pandora
|
# Fichero de configuracion base de agentes de Pandora
|
||||||
# Base config file for Pandora agents
|
# Base config file for Pandora agents
|
||||||
# Version 7.0NG.760, AIX version
|
# Version 7.0NG.761, AIX version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Fichero de configuracion base de agentes de Pandora
|
# Fichero de configuracion base de agentes de Pandora
|
||||||
# Base config file for Pandora agents
|
# Base config file for Pandora agents
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# FreeBSD/IPSO version
|
# FreeBSD/IPSO version
|
||||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Fichero de configuracion base de agentes de Pandora
|
# Fichero de configuracion base de agentes de Pandora
|
||||||
# Base config file for Pandora agents
|
# Base config file for Pandora agents
|
||||||
# Version 7.0NG.760, HPUX Version
|
# Version 7.0NG.761, HPUX Version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# please visit http://pandora.sourceforge.net
|
# please visit http://pandora.sourceforge.net
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# please visit http://pandora.sourceforge.net
|
# please visit http://pandora.sourceforge.net
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# please visit http://pandora.sourceforge.net
|
# please visit http://pandora.sourceforge.net
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Fichero de configuracion base de agentes de Pandora
|
# Fichero de configuracion base de agentes de Pandora
|
||||||
# Base config file for Pandora agents
|
# Base config file for Pandora agents
|
||||||
# Version 7.0NG.760, Solaris version
|
# Version 7.0NG.761, Solaris version
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, AIX version
|
# Version 7.0NG.761, AIX version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-agent-unix
|
package: pandorafms-agent-unix
|
||||||
Version: 7.0NG.760-220330
|
Version: 7.0NG.761-220407
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.760-220330"
|
pandora_version="7.0NG.761-220407"
|
||||||
|
|
||||||
echo "Test if you has the tools for to make the packages."
|
echo "Test if you has the tools for to make the packages."
|
||||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||||
|
@ -31,7 +31,7 @@ fi
|
|||||||
if [ "$#" -ge 2 ]; then
|
if [ "$#" -ge 2 ]; then
|
||||||
VERSION="$2"
|
VERSION="$2"
|
||||||
else
|
else
|
||||||
VERSION="7.0NG.760"
|
VERSION="7.0NG.761"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Path for the generated DMG file
|
# Path for the generated DMG file
|
||||||
|
@ -19,11 +19,11 @@
|
|||||||
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
||||||
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
||||||
</choice>
|
</choice>
|
||||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.760" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.761" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||||
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
|
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
|
||||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
|
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
|
||||||
</choice>
|
</choice>
|
||||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.760" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.761" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||||
<!-- <installation-check script="check()" />
|
<!-- <installation-check script="check()" />
|
||||||
<script>
|
<script>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
||||||
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
||||||
|
|
||||||
<key>CFBundleVersion</key> <string>7.0NG.760</string>
|
<key>CFBundleVersion</key> <string>7.0NG.761</string>
|
||||||
<key>CFBundleGetInfoString</key> <string>7.0NG.760 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
|
<key>CFBundleGetInfoString</key> <string>7.0NG.761 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
|
||||||
<key>CFBundleShortVersionString</key> <string>7.0NG.760</string>
|
<key>CFBundleShortVersionString</key> <string>7.0NG.761</string>
|
||||||
|
|
||||||
<key>NSPrincipalClass</key><string>NSApplication</string>
|
<key>NSPrincipalClass</key><string>NSApplication</string>
|
||||||
<key>NSMainNibFile</key><string>MainMenu</string>
|
<key>NSMainNibFile</key><string>MainMenu</string>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, GNU/Linux
|
# Version 7.0NG.761, GNU/Linux
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, FreeBSD Version
|
# Version 7.0NG.761, FreeBSD Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, HP-UX Version
|
# Version 7.0NG.761, HP-UX Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, GNU/Linux
|
# Version 7.0NG.761, GNU/Linux
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, GNU/Linux
|
# Version 7.0NG.761, GNU/Linux
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, NetBSD Version
|
# Version 7.0NG.761, NetBSD Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 7.0NG.760, Solaris Version
|
# Version 7.0NG.761, Solaris Version
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -1014,8 +1014,8 @@ my $Sem = undef;
|
|||||||
# Semaphore used to control the number of threads
|
# Semaphore used to control the number of threads
|
||||||
my $ThreadSem = undef;
|
my $ThreadSem = undef;
|
||||||
|
|
||||||
use constant AGENT_VERSION => '7.0NG.760';
|
use constant AGENT_VERSION => '7.0NG.761';
|
||||||
use constant AGENT_BUILD => '220330';
|
use constant AGENT_BUILD => '220407';
|
||||||
|
|
||||||
# Agent log default file size maximum and instances
|
# Agent log default file size maximum and instances
|
||||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#Pandora FMS Linux Agent
|
#Pandora FMS Linux Agent
|
||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#Pandora FMS Linux Agent
|
#Pandora FMS Linux Agent
|
||||||
#
|
#
|
||||||
%define name pandorafms_agent_unix
|
%define name pandorafms_agent_unix
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
Summary: Pandora FMS Linux agent, PERL version
|
Summary: Pandora FMS Linux agent, PERL version
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.760"
|
PI_VERSION="7.0NG.761"
|
||||||
PI_BUILD="220330"
|
PI_BUILD="220407"
|
||||||
OS_NAME=`uname -s`
|
OS_NAME=`uname -s`
|
||||||
|
|
||||||
FORCE=0
|
FORCE=0
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Base config file for Pandora FMS Windows Agent
|
# Base config file for Pandora FMS Windows Agent
|
||||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# This program is Free Software, you can redistribute it and/or modify it
|
# This program is Free Software, you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||||
# Foundation; either version 2 of the Licence or any later version
|
# Foundation; either version 2 of the Licence or any later version
|
||||||
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
|||||||
{Yes}
|
{Yes}
|
||||||
|
|
||||||
AppName
|
AppName
|
||||||
{Pandora FMS Windows Agent v7.0NG.760}
|
{Pandora FMS Windows Agent v7.0NG.761}
|
||||||
|
|
||||||
ApplicationID
|
ApplicationID
|
||||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||||
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Version
|
Version
|
||||||
{220330}
|
{220407}
|
||||||
|
|
||||||
ViewReadme
|
ViewReadme
|
||||||
{Yes}
|
{Yes}
|
||||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||||||
using namespace Pandora_Strutils;
|
using namespace Pandora_Strutils;
|
||||||
|
|
||||||
#define PATH_SIZE _MAX_PATH+1
|
#define PATH_SIZE _MAX_PATH+1
|
||||||
#define PANDORA_VERSION ("7.0NG.760 Build 220330")
|
#define PANDORA_VERSION ("7.0NG.761 Build 220407")
|
||||||
|
|
||||||
string pandora_path;
|
string pandora_path;
|
||||||
string pandora_dir;
|
string pandora_dir;
|
||||||
|
@ -11,7 +11,7 @@ BEGIN
|
|||||||
VALUE "LegalCopyright", "Artica ST"
|
VALUE "LegalCopyright", "Artica ST"
|
||||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||||
VALUE "ProductVersion", "(7.0NG.760(Build 220330))"
|
VALUE "ProductVersion", "(7.0NG.761(Build 220407))"
|
||||||
VALUE "FileVersion", "1.0.0.0"
|
VALUE "FileVersion", "1.0.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-console
|
package: pandorafms-console
|
||||||
Version: 7.0NG.760-220330
|
Version: 7.0NG.761-220407
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.760-220330"
|
pandora_version="7.0NG.761-220407"
|
||||||
|
|
||||||
package_pear=0
|
package_pear=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -344,6 +344,7 @@ function mainAgentsModules()
|
|||||||
$save_serialize = (int) get_parameter('save_serialize', 0);
|
$save_serialize = (int) get_parameter('save_serialize', 0);
|
||||||
$full_modules_selected = explode(';', get_parameter('full_modules_selected', 0));
|
$full_modules_selected = explode(';', get_parameter('full_modules_selected', 0));
|
||||||
$full_agents_id = explode(';', get_parameter('full_agents_id', 0));
|
$full_agents_id = explode(';', get_parameter('full_agents_id', 0));
|
||||||
|
$show_type = (int) get_parameter('show_type', 0);
|
||||||
|
|
||||||
// In full screen there is no pagination neither filters.
|
// In full screen there is no pagination neither filters.
|
||||||
if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) {
|
if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) {
|
||||||
@ -361,11 +362,11 @@ function mainAgentsModules()
|
|||||||
unserialize_in_temp($config['id_user'].'_agents', true, 1);
|
unserialize_in_temp($config['id_user'].'_agents', true, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($modules_selected[0]) {
|
if (isset($modules_selected[0]) === true && $modules_selected[0]) {
|
||||||
serialize_in_temp($modules_selected, $config['id_user'].'_agent_module', 1);
|
serialize_in_temp($modules_selected, $config['id_user'].'_agent_module', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($agents_id[0] != -1) {
|
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
|
||||||
serialize_in_temp($agents_id, $config['id_user'].'_agents', 1);
|
serialize_in_temp($agents_id, $config['id_user'].'_agents', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,21 +376,30 @@ function mainAgentsModules()
|
|||||||
$full_agents = urlencode(implode(';', $agents_id));
|
$full_agents = urlencode(implode(';', $agents_id));
|
||||||
|
|
||||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'
|
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
|
||||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||||
} else if ($full_modules_selected[0] && $full_agents_id[0]) {
|
} else if ($full_modules_selected[0] && $full_agents_id[0]) {
|
||||||
$full_modules = urlencode(implode(';', $full_modules_selected));
|
$full_modules = urlencode(implode(';', $full_modules_selected));
|
||||||
$full_agents = urlencode(implode(';', $full_agents_id));
|
$full_agents = urlencode(implode(';', $full_agents_id));
|
||||||
|
|
||||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'
|
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
|
||||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||||
} else {
|
} else {
|
||||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&show_type='.$show_type.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Type show.
|
||||||
|
$show_select = [
|
||||||
|
0 => __('Show module status'),
|
||||||
|
1 => __('Show module data'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$filter_type_label = '<b>'.__('Information to be shown').'</b>';
|
||||||
|
$filter_type = html_print_select($show_select, 'show_type', $show_type, '', '', 0, true, false, false, '', false, 'min-width: 180px;');
|
||||||
|
|
||||||
// Groups.
|
// Groups.
|
||||||
$filter_groups_label = '<b>'.__('Group').'</b>';
|
$filter_groups_label = '<b>'.__('Group').'</b>';
|
||||||
$filter_groups = html_print_select_groups(false, 'AR', true, 'group_id', $group_id, '', '', '', true, false, true, '', false, 'width: auto;');
|
$filter_groups = html_print_select_groups(false, 'AR', true, 'group_id', $group_id, '', '', '', true, false, true, '', false, 'width: auto;');
|
||||||
@ -480,11 +490,29 @@ function mainAgentsModules()
|
|||||||
$full_modules = urlencode(implode(';', $full_modules_selected));
|
$full_modules = urlencode(implode(';', $full_modules_selected));
|
||||||
$full_agents = urlencode(implode(';', $full_agents_id));
|
$full_agents = urlencode(implode(';', $full_agents_id));
|
||||||
|
|
||||||
$url = 'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=$offset
|
$url = sprintf(
|
||||||
&group_id=$group_id&modulegroup=$modulegroup&refresh=$refr&full_modules_selected=$full_modules
|
'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=%s
|
||||||
&full_agents_id=$full_agents&selection_agent_module=$selection_a_m';
|
&group_id=%s&modulegroup=%s&refresh=%s&full_modules_selected=%s
|
||||||
|
&full_agents_id=%s&selection_agent_module=%s&show_type=%s',
|
||||||
|
$offset,
|
||||||
|
$group_id,
|
||||||
|
$modulegroup,
|
||||||
|
$refr,
|
||||||
|
$full_modules,
|
||||||
|
$full_agents,
|
||||||
|
$selection_a_m,
|
||||||
|
$show_type
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
$url = 'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=$offset&group_id=$group_id&modulegroup=$modulegroup&refresh=$refr';
|
$url = sprintf(
|
||||||
|
'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=%s&group_id=%s
|
||||||
|
&modulegroup=%s&refresh=%s&show_type=%s',
|
||||||
|
$offset,
|
||||||
|
$group_id,
|
||||||
|
$modulegroup,
|
||||||
|
$refr,
|
||||||
|
$show_type
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Floating menu - Start.
|
// Floating menu - Start.
|
||||||
@ -546,7 +574,11 @@ function mainAgentsModules()
|
|||||||
|
|
||||||
if ($config['pure'] != 1) {
|
if ($config['pure'] != 1) {
|
||||||
$show_filters = '<form method="post" action="'.ui_get_url_refresh(['offset' => $offset, 'hor_offset' => $offset, 'group_id' => $group_id, 'modulegroup' => $modulegroup]).'" class="w100p">';
|
$show_filters = '<form method="post" action="'.ui_get_url_refresh(['offset' => $offset, 'hor_offset' => $offset, 'group_id' => $group_id, 'modulegroup' => $modulegroup]).'" class="w100p">';
|
||||||
$show_filters .= '<table class="w100p no-border" cellpadding="0" cellspacing="0" border="0">';
|
$show_filters .= '<table class="w100p no-border" cellpadding="15" cellspacing="0" border="0">';
|
||||||
|
$show_filters .= '<tr>';
|
||||||
|
$show_filters .= '<td>'.$filter_type_label.'</td>';
|
||||||
|
$show_filters .= '<td>'.$filter_type.'</td>';
|
||||||
|
$show_filters .= '</tr>';
|
||||||
$show_filters .= '<tr>';
|
$show_filters .= '<tr>';
|
||||||
$show_filters .= '<td>'.$filter_groups_label.'</td>';
|
$show_filters .= '<td>'.$filter_groups_label.'</td>';
|
||||||
$show_filters .= '<td>'.$filter_groups.' '.$filter_recursion_label.$filter_recursion.'</td>';
|
$show_filters .= '<td>'.$filter_groups.' '.$filter_recursion_label.$filter_recursion.'</td>';
|
||||||
@ -574,10 +606,10 @@ function mainAgentsModules()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($agents_id[0] != -1) {
|
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
|
||||||
$agents = $agents_id;
|
$agents = $agents_id;
|
||||||
} else {
|
} else {
|
||||||
if ($full_agents_id[0]) {
|
if (isset($full_agents_id[0]) === true && $full_agents_id[0]) {
|
||||||
$agents = $full_agents_id;
|
$agents = $full_agents_id;
|
||||||
} else {
|
} else {
|
||||||
$agents = '';
|
$agents = '';
|
||||||
@ -610,24 +642,34 @@ function mainAgentsModules()
|
|||||||
}
|
}
|
||||||
|
|
||||||
$total_pagination = count($agents);
|
$total_pagination = count($agents);
|
||||||
if ($agents_id[0] != -1) {
|
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
|
||||||
$all_modules = [];
|
if (isset($modules_selected[0]) === true && $modules_selected[0]) {
|
||||||
foreach ($modules_selected as $key => $value) {
|
$all_modules = [];
|
||||||
$name = modules_get_agentmodule_name($value);
|
foreach ($modules_selected as $key => $value) {
|
||||||
$sql = "SELECT id_agente_modulo
|
$name = modules_get_agentmodule_name($value);
|
||||||
FROM tagente_modulo
|
$sql = "SELECT id_agente_modulo
|
||||||
WHERE nombre = '".$name."';";
|
FROM tagente_modulo
|
||||||
|
WHERE nombre = '".$name."';";
|
||||||
|
|
||||||
$result_sql = db_get_all_rows_sql($sql);
|
$result_sql = db_get_all_rows_sql($sql);
|
||||||
|
|
||||||
if (is_array($result_sql)) {
|
if (is_array($result_sql)) {
|
||||||
foreach ($result_sql as $key => $value) {
|
foreach ($result_sql as $key => $value) {
|
||||||
$all_modules[$value['id_agente_modulo']] = io_safe_output($name);
|
$all_modules[$value['id_agente_modulo']] = io_safe_output($name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$all_modules = agents_get_modules(
|
||||||
|
$agents,
|
||||||
|
false,
|
||||||
|
$filter_module_group,
|
||||||
|
true,
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($full_modules_selected[0]) {
|
if (isset($full_modules_selected[0]) === true && $full_modules_selected[0]) {
|
||||||
foreach ($full_modules_selected as $key => $value) {
|
foreach ($full_modules_selected as $key => $value) {
|
||||||
$name = modules_get_agentmodule_name($value);
|
$name = modules_get_agentmodule_name($value);
|
||||||
$sql = "SELECT id_agente_modulo
|
$sql = "SELECT id_agente_modulo
|
||||||
@ -717,7 +759,7 @@ function mainAgentsModules()
|
|||||||
|
|
||||||
if ($hor_offset > 0) {
|
if ($hor_offset > 0) {
|
||||||
$new_hor_offset = ($hor_offset - $block);
|
$new_hor_offset = ($hor_offset - $block);
|
||||||
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&refr=0&save_serialize=1&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
|
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&refr=0&save_serialize=1&show_type='.$show_type.'&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
|
||||||
'images/arrow_left_green.png',
|
'images/arrow_left_green.png',
|
||||||
true,
|
true,
|
||||||
['title' => __('Previous modules')]
|
['title' => __('Previous modules')]
|
||||||
@ -743,7 +785,7 @@ function mainAgentsModules()
|
|||||||
|
|
||||||
if (($hor_offset + $block) < $nmodules) {
|
if (($hor_offset + $block) < $nmodules) {
|
||||||
$new_hor_offset = ($hor_offset + $block);
|
$new_hor_offset = ($hor_offset + $block);
|
||||||
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&save_serialize=1&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
|
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&save_serialize=1&show_type='.$show_type.'&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
|
||||||
'images/arrow_right_green.png',
|
'images/arrow_right_green.png',
|
||||||
true,
|
true,
|
||||||
['title' => __('More modules')]
|
['title' => __('More modules')]
|
||||||
@ -820,7 +862,6 @@ function mainAgentsModules()
|
|||||||
|
|
||||||
foreach ($module['id'] as $module_id) {
|
foreach ($module['id'] as $module_id) {
|
||||||
if (!$match && array_key_exists($module_id, $agent_modules)) {
|
if (!$match && array_key_exists($module_id, $agent_modules)) {
|
||||||
$status = modules_get_agentmodule_status($module_id);
|
|
||||||
echo "<td class='center'>";
|
echo "<td class='center'>";
|
||||||
$win_handle = dechex(crc32($module_id.$module['name']));
|
$win_handle = dechex(crc32($module_id.$module['name']));
|
||||||
$graph_type = return_graphtype(modules_get_agentmodule_type($module_id));
|
$graph_type = return_graphtype(modules_get_agentmodule_type($module_id));
|
||||||
@ -833,32 +874,42 @@ function mainAgentsModules()
|
|||||||
$module_last_value = htmlspecialchars($module_last_value);
|
$module_last_value = htmlspecialchars($module_last_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($status) {
|
if ($show_type === 0) {
|
||||||
case AGENT_MODULE_STATUS_NORMAL:
|
$status = modules_get_agentmodule_status($module_id);
|
||||||
ui_print_status_image('module_ok.png', $module_last_value, false);
|
switch ($status) {
|
||||||
break;
|
case AGENT_MODULE_STATUS_NORMAL:
|
||||||
|
ui_print_status_image('module_ok.png', $module_last_value, false);
|
||||||
|
break;
|
||||||
|
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
||||||
ui_print_status_image('module_critical.png', $module_last_value, false);
|
ui_print_status_image('module_critical.png', $module_last_value, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AGENT_MODULE_STATUS_WARNING:
|
case AGENT_MODULE_STATUS_WARNING:
|
||||||
ui_print_status_image('module_warning.png', $module_last_value, false);
|
ui_print_status_image('module_warning.png', $module_last_value, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AGENT_MODULE_STATUS_UNKNOWN:
|
case AGENT_MODULE_STATUS_UNKNOWN:
|
||||||
ui_print_status_image('module_unknown.png', $module_last_value, false);
|
ui_print_status_image('module_unknown.png', $module_last_value, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
||||||
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||||
ui_print_status_image('module_alertsfired.png', $module_last_value, false);
|
ui_print_status_image('module_alertsfired.png', $module_last_value, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
ui_print_status_image('module_no_data.png', $module_last_value, false);
|
ui_print_status_image('module_no_data.png', $module_last_value, false);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$module = modules_get_agentmodule($module_id);
|
||||||
|
$module['datos'] = $module_last_value;
|
||||||
|
|
||||||
|
$module_last_value = modules_get_agentmodule_data_for_humans($module);
|
||||||
|
|
||||||
|
echo $module_last_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '</a>';
|
echo '</a>';
|
||||||
@ -877,22 +928,24 @@ function mainAgentsModules()
|
|||||||
|
|
||||||
echo '</table>';
|
echo '</table>';
|
||||||
|
|
||||||
$show_legend = "<div class='legend_white'>";
|
if ($show_type === 0) {
|
||||||
$show_legend .= "<div class='center flex'>
|
$show_legend = "<div class='legend_white'>";
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></div>".__('Orange cell when the module has fired alerts').'</div>';
|
$show_legend .= "<div class='center flex'>
|
||||||
$show_legend .= "<div class='center flex'>
|
<div class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></div>".__('Orange cell when the module has fired alerts').'</div>';
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></div>".__('Red cell when the module has a critical status').'
|
$show_legend .= "<div class='center flex'>
|
||||||
</div>';
|
<div class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></div>".__('Red cell when the module has a critical status').'
|
||||||
$show_legend .= "<div class='center flex'>
|
</div>';
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></div>".__('Yellow cell when the module has a warning status').'</div>';
|
$show_legend .= "<div class='center flex'>
|
||||||
$show_legend .= "<div class='center flex'>
|
<div class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></div>".__('Yellow cell when the module has a warning status').'</div>';
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></div>".__('Green cell when the module has a normal status').'</div>';
|
$show_legend .= "<div class='center flex'>
|
||||||
$show_legend .= "<div class='center flex'>
|
<div class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></div>".__('Green cell when the module has a normal status').'</div>';
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></div>".__('Grey cell when the module has an unknown status').'</div>';
|
$show_legend .= "<div class='center flex'>
|
||||||
$show_legend .= "<div class='center flex'>
|
<div class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></div>".__('Grey cell when the module has an unknown status').'</div>';
|
||||||
<div class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></div>".__("Cell turns blue when the module is in 'not initialize' status").'</div>';
|
$show_legend .= "<div class='center flex'>
|
||||||
$show_legend .= '</div>';
|
<div class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></div>".__("Cell turns blue when the module is in 'not initialize' status").'</div>';
|
||||||
ui_toggle($show_legend, __('Legend'));
|
$show_legend .= '</div>';
|
||||||
|
ui_toggle($show_legend, __('Legend'));
|
||||||
|
}
|
||||||
|
|
||||||
$pure_var = $config['pure'];
|
$pure_var = $config['pure'];
|
||||||
if ($pure_var) {
|
if ($pure_var) {
|
||||||
|
@ -114,6 +114,7 @@ function pandora_realtime_graphs()
|
|||||||
$canvas .= '</div>';
|
$canvas .= '</div>';
|
||||||
echo $canvas;
|
echo $canvas;
|
||||||
|
|
||||||
|
$table = new stdClass();
|
||||||
$table->width = '100%';
|
$table->width = '100%';
|
||||||
$table->id = 'table-form';
|
$table->id = 'table-form';
|
||||||
$table->class = 'databox filters';
|
$table->class = 'databox filters';
|
||||||
|
@ -3,6 +3,9 @@ START TRANSACTION;
|
|||||||
ALTER TABLE `tipam_vlan` ADD COLUMN `custom_id` bigint(20) unsigned DEFAULT NULL;
|
ALTER TABLE `tipam_vlan` ADD COLUMN `custom_id` bigint(20) unsigned DEFAULT NULL;
|
||||||
ALTER TABLE `tuser_task_scheduled`ADD COLUMN `enabled` TINYINT UNSIGNED NOT NULL DEFAULT 1;
|
ALTER TABLE `tuser_task_scheduled`ADD COLUMN `enabled` TINYINT UNSIGNED NOT NULL DEFAULT 1;
|
||||||
|
|
||||||
|
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
|
||||||
|
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
|
||||||
|
|
||||||
ALTER TABLE tagente MODIFY alias varchar(600) NOT NULL DEFAULT '';
|
ALTER TABLE tagente MODIFY alias varchar(600) NOT NULL DEFAULT '';
|
||||||
ALTER TABLE tagente MODIFY nombre varchar(600) NOT NULL DEFAULT '';
|
ALTER TABLE tagente MODIFY nombre varchar(600) NOT NULL DEFAULT '';
|
||||||
|
|
||||||
@ -19,6 +22,11 @@ CREATE TABLE IF NOT EXISTS `tbackup` (
|
|||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
ALTER TABLE `treport_content` ADD COLUMN `macros_definition` TEXT;
|
||||||
|
ALTER TABLE `treport_content` ADD COLUMN `render_definition` TEXT;
|
||||||
|
ALTER TABLE `treport_content_template` ADD COLUMN `macros_definition` TEXT;
|
||||||
|
ALTER TABLE `treport_content_template` ADD COLUMN `render_definition` TEXT;
|
||||||
|
|
||||||
DROP TABLE `tupdate`;
|
DROP TABLE `tupdate`;
|
||||||
DROP TABLE `tupdate_package`;
|
DROP TABLE `tupdate_package`;
|
||||||
DROP TABLE `tupdate_journal`;
|
DROP TABLE `tupdate_journal`;
|
||||||
|
@ -1467,13 +1467,13 @@ ALTER TABLE `ttag` MODIFY COLUMN `name` text NOT NULL default '';
|
|||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 52);
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 53);
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
|
||||||
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
|
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
|
||||||
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
|
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 760);
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 761);
|
||||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
|
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
|
||||||
UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields';
|
UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields';
|
||||||
DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password';
|
DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password';
|
||||||
@ -1543,6 +1543,8 @@ ALTER TABLE `tevent_filter` MODIFY COLUMN `severity` text NOT NULL;
|
|||||||
ALTER TABLE tevent_filter ADD COLUMN `server_id` int(10) NOT NULL default 0;
|
ALTER TABLE tevent_filter ADD COLUMN `server_id` int(10) NOT NULL default 0;
|
||||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL;
|
ALTER TABLE `tevent_filter` ADD COLUMN `time_from` TIME NULL;
|
||||||
ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL;
|
ALTER TABLE `tevent_filter` ADD COLUMN `time_to` TIME NULL;
|
||||||
|
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data` VARCHAR(500) DEFAULT '';
|
||||||
|
ALTER TABLE `tevent_filter` ADD COLUMN `custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0;
|
||||||
|
|
||||||
-- ---------------------------------------------------------------------
|
-- ---------------------------------------------------------------------
|
||||||
-- Table `tusuario`
|
-- Table `tusuario`
|
||||||
|
@ -116,6 +116,7 @@ $fields_available['data'] = __('Data');
|
|||||||
$fields_available['module_status'] = __('Module Status');
|
$fields_available['module_status'] = __('Module Status');
|
||||||
$fields_available['mini_severity'] = __('Severity mini');
|
$fields_available['mini_severity'] = __('Severity mini');
|
||||||
$fields_available['module_custom_id'] = __('Module custom ID');
|
$fields_available['module_custom_id'] = __('Module custom ID');
|
||||||
|
$fields_available['custom_data'] = __('Custom data');
|
||||||
|
|
||||||
|
|
||||||
// Remove fields already selected.
|
// Remove fields already selected.
|
||||||
|
@ -89,6 +89,8 @@ if ($id) {
|
|||||||
$tag_without_base64 = base64_encode($tag_without_json_clean);
|
$tag_without_base64 = base64_encode($tag_without_json_clean);
|
||||||
|
|
||||||
$filter_only_alert = $filter['filter_only_alert'];
|
$filter_only_alert = $filter['filter_only_alert'];
|
||||||
|
$custom_data = $filter['custom_data'];
|
||||||
|
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
||||||
|
|
||||||
if ($id_agent_module != 0) {
|
if ($id_agent_module != 0) {
|
||||||
$text_module = modules_get_agentmodule_name($id_agent_module);
|
$text_module = modules_get_agentmodule_name($id_agent_module);
|
||||||
@ -165,30 +167,34 @@ if ($update || $create) {
|
|||||||
$tag_without_json = io_safe_input(base64_decode($tag_without_base64));
|
$tag_without_json = io_safe_input(base64_decode($tag_without_base64));
|
||||||
|
|
||||||
$filter_only_alert = get_parameter('filter_only_alert', '');
|
$filter_only_alert = get_parameter('filter_only_alert', '');
|
||||||
|
$custom_data = get_parameter('custom_data', '');
|
||||||
|
$custom_data_filter_type = get_parameter('custom_data_filter_type', '');
|
||||||
|
|
||||||
$values = [
|
$values = [
|
||||||
'id_name' => $id_name,
|
'id_name' => $id_name,
|
||||||
'id_group_filter' => $id_group_filter,
|
'id_group_filter' => $id_group_filter,
|
||||||
'id_group' => $id_group,
|
'id_group' => $id_group,
|
||||||
'event_type' => $event_type,
|
'event_type' => $event_type,
|
||||||
'severity' => $severity,
|
'severity' => $severity,
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
'search' => $search,
|
'search' => $search,
|
||||||
'text_agent' => $text_agent,
|
'text_agent' => $text_agent,
|
||||||
'id_agent_module' => $id_agent_module,
|
'id_agent_module' => $id_agent_module,
|
||||||
'id_agent' => $id_agent,
|
'id_agent' => $id_agent,
|
||||||
'pagination' => $pagination,
|
'pagination' => $pagination,
|
||||||
'event_view_hr' => $event_view_hr,
|
'event_view_hr' => $event_view_hr,
|
||||||
'id_user_ack' => $id_user_ack,
|
'id_user_ack' => $id_user_ack,
|
||||||
'group_rep' => $group_rep,
|
'group_rep' => $group_rep,
|
||||||
'tag_with' => $tag_with_json,
|
'tag_with' => $tag_with_json,
|
||||||
'tag_without' => $tag_without_json,
|
'tag_without' => $tag_without_json,
|
||||||
'date_from' => $date_from,
|
'date_from' => $date_from,
|
||||||
'date_to' => $date_to,
|
'date_to' => $date_to,
|
||||||
'source' => $source,
|
'source' => $source,
|
||||||
'id_extra' => $id_extra,
|
'id_extra' => $id_extra,
|
||||||
'user_comment' => $user_comment,
|
'user_comment' => $user_comment,
|
||||||
'filter_only_alert' => $filter_only_alert,
|
'filter_only_alert' => $filter_only_alert,
|
||||||
|
'custom_data' => $custom_data,
|
||||||
|
'custom_data_filter_type' => $custom_data_filter_type,
|
||||||
];
|
];
|
||||||
|
|
||||||
$severity = explode(',', $severity);
|
$severity = explode(',', $severity);
|
||||||
@ -627,9 +633,26 @@ $table->data[23][1] = html_print_input_text('id_extra', $id_extra, '', 11, 255,
|
|||||||
$table->data[24][0] = '<b>'.__('Comment').'</b>';
|
$table->data[24][0] = '<b>'.__('Comment').'</b>';
|
||||||
$table->data[24][1] = html_print_input_text('user_comment', $user_comment, '', 35, 255, true);
|
$table->data[24][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(
|
||||||
|
[
|
||||||
|
'0' => __('Filter custom data by name field'),
|
||||||
|
'1' => __('Filter custom data by value field'),
|
||||||
|
],
|
||||||
|
'custom_data_filter_type',
|
||||||
|
$custom_data_filter_type,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data[26][0] = '<b>'.__('Custom data').'</b>';
|
||||||
|
$table->data[26][1] = html_print_input_text('custom_data', $custom_data, '', 35, 255, true);
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
$table->data[25][0] = '<b>'.__('Id souce event').'</b>';
|
$table->data[27][0] = '<b>'.__('Id souce event').'</b>';
|
||||||
$table->data[25][1] = html_print_input_text(
|
$table->data[27][1] = html_print_input_text(
|
||||||
'id_source_event',
|
'id_source_event',
|
||||||
$id_source_event,
|
$id_source_event,
|
||||||
'',
|
'',
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -176,6 +176,8 @@ $unknown_checks = true;
|
|||||||
$agent_max_value = true;
|
$agent_max_value = true;
|
||||||
$agent_min_value = true;
|
$agent_min_value = true;
|
||||||
$uncompressed_module = true;
|
$uncompressed_module = true;
|
||||||
|
$macros_definition = '';
|
||||||
|
$render_definition = '';
|
||||||
|
|
||||||
$only_data = false;
|
$only_data = false;
|
||||||
|
|
||||||
@ -724,6 +726,12 @@ switch ($action) {
|
|||||||
$graph_render = $item['graph_render'];
|
$graph_render = $item['graph_render'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
$description = $item['description'];
|
||||||
|
$macros_definition = $item['macros_definition'];
|
||||||
|
$render_definition = $item['render_definition'];
|
||||||
|
break;
|
||||||
|
|
||||||
case 'top_n':
|
case 'top_n':
|
||||||
$description = $item['description'];
|
$description = $item['description'];
|
||||||
$period = $item['period'];
|
$period = $item['period'];
|
||||||
@ -760,6 +768,11 @@ switch ($action) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$selection_a_m = get_parameter('selection');
|
$selection_a_m = get_parameter('selection');
|
||||||
|
|
||||||
|
if (isset($es['show_type']) === true) {
|
||||||
|
$show_type = $es['show_type'];
|
||||||
|
}
|
||||||
|
|
||||||
$recursion = $item['recursion'];
|
$recursion = $item['recursion'];
|
||||||
|
|
||||||
$group = $item['id_group'];
|
$group = $item['id_group'];
|
||||||
@ -1833,6 +1846,37 @@ $class = 'databox filters';
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr id="row_type_show" class="datos">
|
||||||
|
<td class="bolder"><?php echo __('Information to be shown'); ?></td>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
$show_select = [
|
||||||
|
0 => __('Show module status'),
|
||||||
|
1 => __('Show module data'),
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($action === 'new' && empty($show_type) === true) {
|
||||||
|
$show_type = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
html_print_select(
|
||||||
|
$show_select,
|
||||||
|
'show_type',
|
||||||
|
$show_type,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'min-width: 180px'
|
||||||
|
);
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr id="row_alert_templates" class="datos">
|
<tr id="row_alert_templates" class="datos">
|
||||||
<td class="bolder"><?php echo __('Templates'); ?></td>
|
<td class="bolder"><?php echo __('Templates'); ?></td>
|
||||||
<td>
|
<td>
|
||||||
@ -2405,6 +2449,38 @@ $class = 'databox filters';
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr id="row_macros_definition" class="datos">
|
||||||
|
<td class="bolder">
|
||||||
|
<?php
|
||||||
|
echo __('Macros definition');
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php echo get_table_custom_macros_report($macros_definition); ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr id="row_render_definition" class="datos">
|
||||||
|
<td class="bolder">
|
||||||
|
<?php
|
||||||
|
echo __('Render definition').ui_print_help_tip(
|
||||||
|
__('Be aware because not all CSS inline styles are supported in the pdf library'),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
echo html_print_textarea(
|
||||||
|
'render_definition',
|
||||||
|
3,
|
||||||
|
25,
|
||||||
|
$render_definition
|
||||||
|
);
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr id="row_fullscale" class="datos">
|
<tr id="row_fullscale" class="datos">
|
||||||
<td class="bolder">
|
<td class="bolder">
|
||||||
<?php
|
<?php
|
||||||
@ -4557,6 +4633,9 @@ ui_require_javascript_file(
|
|||||||
'pandora_inventory',
|
'pandora_inventory',
|
||||||
ENTERPRISE_DIR.'/include/javascript/'
|
ENTERPRISE_DIR.'/include/javascript/'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
|
||||||
|
ui_require_javascript_file('pandora');
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
@ -4794,6 +4873,14 @@ $(document).ready (function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var added_config = {
|
||||||
|
"elements": "textarea_render_definition",
|
||||||
|
"plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
|
||||||
|
"theme_advanced_buttons1": "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
|
||||||
|
"theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor"
|
||||||
|
}
|
||||||
|
defineTinyMCE(added_config);
|
||||||
|
|
||||||
$("#checkbox-select_by_group").change(function () {
|
$("#checkbox-select_by_group").change(function () {
|
||||||
var select_by_group = $('#checkbox-select_by_group').prop('checked');
|
var select_by_group = $('#checkbox-select_by_group').prop('checked');
|
||||||
|
|
||||||
@ -5417,7 +5504,7 @@ function addSLARow() {
|
|||||||
var slaMax = $("input[name=sla_max]").val();
|
var slaMax = $("input[name=sla_max]").val();
|
||||||
var slaLimit = $("input[name=sla_limit]").val();
|
var slaLimit = $("input[name=sla_limit]").val();
|
||||||
var serviceId = $("select#id_service>option:selected").val();
|
var serviceId = $("select#id_service>option:selected").val();
|
||||||
if(serviceId != '' && serviceId.split('|').length > 1 ) {
|
if(serviceId != undefined && serviceId != '' && serviceId.split('|').length > 1 ) {
|
||||||
var ids = serviceId.split('|');
|
var ids = serviceId.split('|');
|
||||||
serverId = ids[0];
|
serverId = ids[0];
|
||||||
serviceId = ids[1];
|
serviceId = ids[1];
|
||||||
@ -5859,6 +5946,8 @@ function chooseType() {
|
|||||||
$("#row_max_min_avg").hide();
|
$("#row_max_min_avg").hide();
|
||||||
$("#row_fullscale").hide();
|
$("#row_fullscale").hide();
|
||||||
$("#row_graph_render").hide();
|
$("#row_graph_render").hide();
|
||||||
|
$("#row_macros_definition").hide();
|
||||||
|
$("#row_render_definition").hide();
|
||||||
$("#row_time_compare_overlapped").hide();
|
$("#row_time_compare_overlapped").hide();
|
||||||
$("#row_quantity").hide();
|
$("#row_quantity").hide();
|
||||||
$("#row_exception_condition_value").hide();
|
$("#row_exception_condition_value").hide();
|
||||||
@ -5925,6 +6014,7 @@ function chooseType() {
|
|||||||
$("#row_agent_not_assigned_to_ip").hide();
|
$("#row_agent_not_assigned_to_ip").hide();
|
||||||
$("#row_show_summary").hide();
|
$("#row_show_summary").hide();
|
||||||
$("#row_group_by").hide();
|
$("#row_group_by").hide();
|
||||||
|
$("#row_type_show").hide();
|
||||||
|
|
||||||
// SLA list default state.
|
// SLA list default state.
|
||||||
$("#sla_list").hide();
|
$("#sla_list").hide();
|
||||||
@ -6404,6 +6494,11 @@ function chooseType() {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
$("#row_macros_definition").show();
|
||||||
|
$("#row_render_definition").show();
|
||||||
|
break;
|
||||||
|
|
||||||
case 'top_n':
|
case 'top_n':
|
||||||
$("#row_description").show();
|
$("#row_description").show();
|
||||||
$("#row_period").show();
|
$("#row_period").show();
|
||||||
@ -6438,6 +6533,7 @@ function chooseType() {
|
|||||||
|
|
||||||
case 'agent_module':
|
case 'agent_module':
|
||||||
$("#row_module_group").show();
|
$("#row_module_group").show();
|
||||||
|
$("#row_type_show").show();
|
||||||
case 'agent_module_status':
|
case 'agent_module_status':
|
||||||
$("#row_description").show();
|
$("#row_description").show();
|
||||||
$("#row_group").show();
|
$("#row_group").show();
|
||||||
@ -6729,6 +6825,98 @@ function chooseType() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addCustomFieldRow() {
|
||||||
|
var array_tr = $("tr.tr-macros-definition");
|
||||||
|
var last_tr = array_tr[array_tr.length - 1];
|
||||||
|
var array_id = /(\d)+$/.exec($(last_tr).attr('id'));
|
||||||
|
var max = (parseInt(array_id[0]) + 1);
|
||||||
|
|
||||||
|
var clone = $("#table-macros-definition #table-macros-definition-0")
|
||||||
|
.clone()
|
||||||
|
.prop("id", "table-macros-definition-" + max);
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find("#macro_custom_name")
|
||||||
|
.prop("id", "macro_custom_name_" + max)
|
||||||
|
.val("");
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find("#macro_custom_key")
|
||||||
|
.prop("id", "macro_custom_key_" + max)
|
||||||
|
.val(max);
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find("#macro_custom_type")
|
||||||
|
.prop("id", "macro_custom_type" + max)
|
||||||
|
.attr("onchange", "change_custom_fields_macros_report(" + max + ")");
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find("#table-macros-definition-0-value")
|
||||||
|
.prop("id", "table-macros-definition-"+max+"-value");
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find("#macro_custom_value")
|
||||||
|
.prop("id", "macro_custom_value_" + max)
|
||||||
|
.val('');
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find(".icon-clean-custom-macro")
|
||||||
|
.attr("onclick", "cleanCustomFieldRow(" + max + ")");
|
||||||
|
|
||||||
|
clone
|
||||||
|
.find(".icon-delete-custom-macro")
|
||||||
|
.attr("onclick", "removeCustomFieldRow(" + max + ")")
|
||||||
|
.css("display", "inline-block");
|
||||||
|
|
||||||
|
clone
|
||||||
|
.appendTo("#table-macros-definition");
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanCustomFieldRow(row) {
|
||||||
|
if(row === 0) {
|
||||||
|
// Default value.
|
||||||
|
$("#macro_custom_name").val('');
|
||||||
|
$("#macro_custom_value").val('');
|
||||||
|
$("#macro_custom_width").val('');
|
||||||
|
} else {
|
||||||
|
$("#macro_custom_name_"+row).val('');
|
||||||
|
$("#macro_custom_value_"+row).val('');
|
||||||
|
$("#macro_custom_width_"+row).val('');
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#macro_custom_height_"+row).val('');
|
||||||
|
$("#macro_custom_period_"+row).val('');
|
||||||
|
$("#text-macro_custom_value_agent_name_"+row).val('');
|
||||||
|
$("#macro_custom_value"+row+"id_agent_module")
|
||||||
|
.val('')
|
||||||
|
.trigger('change');
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeCustomFieldRow(row) {
|
||||||
|
if(row !== 0) {
|
||||||
|
$("tr#table-macros-definition-"+row).remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function change_custom_fields_macros_report(id) {
|
||||||
|
var new_type = this.event.target.value;
|
||||||
|
jQuery.post (
|
||||||
|
"ajax.php",
|
||||||
|
{
|
||||||
|
"page" : "include/ajax/reporting.ajax",
|
||||||
|
"change_custom_fields_macros_report" : 1,
|
||||||
|
"macro_type": new_type,
|
||||||
|
"macro_id": id
|
||||||
|
},
|
||||||
|
function (data, status) {
|
||||||
|
console.log(id);
|
||||||
|
$("td#table-macros-definition-"+id+"-value").empty();
|
||||||
|
$("td#table-macros-definition-"+id+"-value").append(data);
|
||||||
|
},
|
||||||
|
"html"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function event_change_id_agent_inventory() {
|
function event_change_id_agent_inventory() {
|
||||||
agent_changed_by_multiple_agents_inventory(
|
agent_changed_by_multiple_agents_inventory(
|
||||||
{"data" : {
|
{"data" : {
|
||||||
|
@ -1677,6 +1677,7 @@ switch ($action) {
|
|||||||
// Encode json modules and agents.
|
// Encode json modules and agents.
|
||||||
$es['module'] = base64_encode(json_encode($es['module']));
|
$es['module'] = base64_encode(json_encode($es['module']));
|
||||||
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
||||||
|
$es['show_type'] = get_parameter('show_type', 0);
|
||||||
|
|
||||||
$values['external_source'] = json_encode($es);
|
$values['external_source'] = json_encode($es);
|
||||||
$good_format = true;
|
$good_format = true;
|
||||||
@ -1851,6 +1852,33 @@ switch ($action) {
|
|||||||
$good_format = true;
|
$good_format = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
$macro_custom_name = get_parameter('macro_custom_name', []);
|
||||||
|
$macro_custom_type = get_parameter('macro_custom_type', []);
|
||||||
|
$macro_custom_value = get_parameter('macro_custom_value', []);
|
||||||
|
$macro_custom_key = get_parameter('macro_custom_key', []);
|
||||||
|
$macros_definition = [];
|
||||||
|
|
||||||
|
foreach ($macro_custom_name as $key_macro => $value_macro) {
|
||||||
|
$kl = (empty($macro_custom_key[$key_macro]) === true) ? 0 : $macro_custom_key[$key_macro];
|
||||||
|
$macros_definition[$key_macro]['name'] = $value_macro;
|
||||||
|
$macros_definition[$key_macro]['type'] = $macro_custom_type[$key_macro];
|
||||||
|
|
||||||
|
|
||||||
|
if (is_array($macro_custom_value[$kl]) === true) {
|
||||||
|
foreach ($macro_custom_value[$kl] as $k => $v) {
|
||||||
|
$macros_definition[$key_macro][$k] = $v;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$macros_definition[$key_macro]['value'] = $macro_custom_value[$key_macro];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$values['macros_definition'] = json_encode($macros_definition);
|
||||||
|
$values['render_definition'] = get_parameter('render_definition', '');
|
||||||
|
$good_format = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'max_value':
|
case 'max_value':
|
||||||
case 'avg_value':
|
case 'avg_value':
|
||||||
@ -2480,6 +2508,7 @@ switch ($action) {
|
|||||||
// Encode json modules and agents.
|
// Encode json modules and agents.
|
||||||
$es['module'] = base64_encode(json_encode($es['module']));
|
$es['module'] = base64_encode(json_encode($es['module']));
|
||||||
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
$es['id_agents'] = base64_encode(json_encode($agents_to_report));
|
||||||
|
$es['show_type'] = get_parameter('show_type', 0);
|
||||||
|
|
||||||
$values['external_source'] = json_encode($es);
|
$values['external_source'] = json_encode($es);
|
||||||
$good_format = true;
|
$good_format = true;
|
||||||
@ -2600,6 +2629,33 @@ switch ($action) {
|
|||||||
$good_format = true;
|
$good_format = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
$macro_custom_name = get_parameter('macro_custom_name', []);
|
||||||
|
$macro_custom_type = get_parameter('macro_custom_type', []);
|
||||||
|
$macro_custom_value = get_parameter('macro_custom_value', []);
|
||||||
|
$macro_custom_key = get_parameter('macro_custom_key', []);
|
||||||
|
$macros_definition = [];
|
||||||
|
|
||||||
|
foreach ($macro_custom_name as $key_macro => $value_macro) {
|
||||||
|
$kl = (empty($macro_custom_key[$key_macro]) === true) ? 0 : $macro_custom_key[$key_macro];
|
||||||
|
$macros_definition[$key_macro]['name'] = $value_macro;
|
||||||
|
$macros_definition[$key_macro]['type'] = $macro_custom_type[$key_macro];
|
||||||
|
|
||||||
|
|
||||||
|
if (is_array($macro_custom_value[$kl]) === true) {
|
||||||
|
foreach ($macro_custom_value[$kl] as $k => $v) {
|
||||||
|
$macros_definition[$key_macro][$k] = $v;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$macros_definition[$key_macro]['value'] = $macro_custom_value[$key_macro];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$values['macros_definition'] = json_encode($macros_definition);
|
||||||
|
$values['render_definition'] = get_parameter('render_definition', '');
|
||||||
|
$good_format = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'min_value':
|
case 'min_value':
|
||||||
case 'max_value':
|
case 'max_value':
|
||||||
case 'avg_value':
|
case 'avg_value':
|
||||||
|
@ -74,6 +74,12 @@ if ($update_settings) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update the license file.
|
||||||
|
$result = file_put_contents($config['remote_config'].'/'.LICENSE_FILE, $_POST['keys']['customer_key']);
|
||||||
|
if ($result === false) {
|
||||||
|
ui_print_error_message(__('Failed to Update license file'));
|
||||||
|
}
|
||||||
|
|
||||||
ui_print_success_message(__('License updated'));
|
ui_print_success_message(__('License updated'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1192,7 +1192,7 @@ class DiscoveryTaskList extends HTML
|
|||||||
*/
|
*/
|
||||||
private function progressTaskGraph($task)
|
private function progressTaskGraph($task)
|
||||||
{
|
{
|
||||||
$result .= '<div class="flex">';
|
$result = '<div class="flex">';
|
||||||
$result .= '<div class="subtitle">';
|
$result .= '<div class="subtitle">';
|
||||||
$result .= '<span>'._('Overall Progress').'</span>';
|
$result .= '<span>'._('Overall Progress').'</span>';
|
||||||
|
|
||||||
@ -1317,6 +1317,9 @@ class DiscoveryTaskList extends HTML
|
|||||||
|
|
||||||
if (is_array($task['stats']) === false) {
|
if (is_array($task['stats']) === false) {
|
||||||
$task['stats'] = json_decode($task['summary'], true);
|
$task['stats'] = json_decode($task['summary'], true);
|
||||||
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||||
|
return $task['summary'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($task['stats'])) {
|
if (is_array($task['stats'])) {
|
||||||
@ -1379,31 +1382,35 @@ class DiscoveryTaskList extends HTML
|
|||||||
$table->data[$i++][1] .= '</span>';
|
$table->data[$i++][1] .= '</span>';
|
||||||
} else {
|
} else {
|
||||||
// Content.
|
// Content.
|
||||||
$table->data[$i][0] = '<b>'.__('Hosts discovered').'</b>';
|
if (is_array($task['stats']['summary']) === true) {
|
||||||
$table->data[$i][1] = '<span id="discovered">';
|
$table->data[$i][0] = '<b>'.__('Hosts discovered').'</b>';
|
||||||
$table->data[$i][1] .= $task['stats']['summary']['discovered'];
|
$table->data[$i][1] = '<span id="discovered">';
|
||||||
$table->data[$i++][1] .= '</span>';
|
$table->data[$i][1] .= $task['stats']['summary']['discovered'];
|
||||||
|
|
||||||
$table->data[$i][0] = '<b>'.__('Alive').'</b>';
|
|
||||||
$table->data[$i][1] = '<span id="alive">';
|
|
||||||
$table->data[$i][1] .= $task['stats']['summary']['alive'];
|
|
||||||
$table->data[$i++][1] .= '</span>';
|
|
||||||
|
|
||||||
$table->data[$i][0] = '<b>'.__('Not alive').'</b>';
|
|
||||||
$table->data[$i][1] = '<span id="not_alive">';
|
|
||||||
$table->data[$i][1] .= $task['stats']['summary']['not_alive'];
|
|
||||||
$table->data[$i++][1] .= '</span>';
|
|
||||||
|
|
||||||
if ($task['type'] == DISCOVERY_HOSTDEVICES) {
|
|
||||||
$table->data[$i][0] = '<b>'.__('Responding SNMP').'</b>';
|
|
||||||
$table->data[$i][1] = '<span id="SNMP">';
|
|
||||||
$table->data[$i][1] .= $task['stats']['summary']['SNMP'];
|
|
||||||
$table->data[$i++][1] .= '</span>';
|
$table->data[$i++][1] .= '</span>';
|
||||||
|
|
||||||
$table->data[$i][0] = '<b>'.__('Responding WMI').'</b>';
|
$table->data[$i][0] = '<b>'.__('Alive').'</b>';
|
||||||
$table->data[$i][1] = '<span id="WMI">';
|
$table->data[$i][1] = '<span id="alive">';
|
||||||
$table->data[$i][1] .= $task['stats']['summary']['WMI'];
|
$table->data[$i][1] .= $task['stats']['summary']['alive'];
|
||||||
$table->data[$i++][1] .= '</span>';
|
$table->data[$i++][1] .= '</span>';
|
||||||
|
|
||||||
|
$table->data[$i][0] = '<b>'.__('Not alive').'</b>';
|
||||||
|
$table->data[$i][1] = '<span id="not_alive">';
|
||||||
|
$table->data[$i][1] .= $task['stats']['summary']['not_alive'];
|
||||||
|
$table->data[$i++][1] .= '</span>';
|
||||||
|
|
||||||
|
if ($task['type'] == DISCOVERY_HOSTDEVICES) {
|
||||||
|
$table->data[$i][0] = '<b>'.__('Responding SNMP').'</b>';
|
||||||
|
$table->data[$i][1] = '<span id="SNMP">';
|
||||||
|
$table->data[$i][1] .= $task['stats']['summary']['SNMP'];
|
||||||
|
$table->data[$i++][1] .= '</span>';
|
||||||
|
|
||||||
|
$table->data[$i][0] = '<b>'.__('Responding WMI').'</b>';
|
||||||
|
$table->data[$i][1] = '<span id="WMI">';
|
||||||
|
$table->data[$i][1] .= $task['stats']['summary']['WMI'];
|
||||||
|
$table->data[$i++][1] .= '</span>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$table->data[$i][0] = $task['stats']['summary'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 775 B |
@ -309,6 +309,8 @@ if ($save_event_filter) {
|
|||||||
$values['id_extra'] = get_parameter('id_extra');
|
$values['id_extra'] = get_parameter('id_extra');
|
||||||
$values['user_comment'] = get_parameter('user_comment');
|
$values['user_comment'] = get_parameter('user_comment');
|
||||||
$values['id_source_event'] = get_parameter('id_source_event');
|
$values['id_source_event'] = get_parameter('id_source_event');
|
||||||
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
$values['server_id'] = get_parameter('server_id');
|
$values['server_id'] = get_parameter('server_id');
|
||||||
@ -363,6 +365,8 @@ if ($update_event_filter) {
|
|||||||
$values['id_extra'] = get_parameter('id_extra');
|
$values['id_extra'] = get_parameter('id_extra');
|
||||||
$values['user_comment'] = get_parameter('user_comment');
|
$values['user_comment'] = get_parameter('user_comment');
|
||||||
$values['id_source_event'] = get_parameter('id_source_event');
|
$values['id_source_event'] = get_parameter('id_source_event');
|
||||||
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
$values['server_id'] = get_parameter('server_id');
|
$values['server_id'] = get_parameter('server_id');
|
||||||
@ -834,7 +838,9 @@ function save_new_filter() {
|
|||||||
"id_extra": $("#text-id_extra").val(),
|
"id_extra": $("#text-id_extra").val(),
|
||||||
"user_comment": $("#text-user_comment").val(),
|
"user_comment": $("#text-user_comment").val(),
|
||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id": $("#server_id").val()
|
"server_id": $("#server_id").val(),
|
||||||
|
"custom_data": $("#text-custom_data").val(),
|
||||||
|
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
$("#info_box").hide();
|
$("#info_box").hide();
|
||||||
@ -907,7 +913,9 @@ function save_update_filter() {
|
|||||||
"id_extra": $("#text-id_extra").val(),
|
"id_extra": $("#text-id_extra").val(),
|
||||||
"user_comment": $("#text-user_comment").val(),
|
"user_comment": $("#text-user_comment").val(),
|
||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id": $("#server_id").val()
|
"server_id": $("#server_id").val(),
|
||||||
|
"custom_data": $("#text-custom_data").val(),
|
||||||
|
"custom_data_filter_type": $("#custom_data_filter_type").val()
|
||||||
|
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
|
368
pandora_console/include/ajax/heatmap.ajax.php
Normal file
368
pandora_console/include/ajax/heatmap.ajax.php
Normal file
@ -0,0 +1,368 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Heatmap.
|
||||||
|
*
|
||||||
|
* @category Heatmap
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage Community
|
||||||
|
* @version 1.0.0
|
||||||
|
* @license See below
|
||||||
|
*
|
||||||
|
* ______ ___ _______ _______ ________
|
||||||
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation for version 2.
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (is_ajax() === true) {
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
// Login check.
|
||||||
|
check_login();
|
||||||
|
|
||||||
|
$getFilters = (bool) get_parameter('getFilters', 0);
|
||||||
|
$getFilterType = (bool) get_parameter('getFilterType', 0);
|
||||||
|
$getInfo = (bool) get_parameter('getInfo', 0);
|
||||||
|
$type = get_parameter('type', 0);
|
||||||
|
|
||||||
|
if ($getFilters === true) {
|
||||||
|
$refresh = get_parameter('refresh', SECONDS_5MINUTES);
|
||||||
|
$search = get_parameter('search', '');
|
||||||
|
$group = get_parameter('group', true);
|
||||||
|
|
||||||
|
echo '<form id="form_dialog" method="post">';
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="label-dialog">'.__('Refresh').'</p>';
|
||||||
|
echo html_print_select(
|
||||||
|
[
|
||||||
|
'30' => __('30 seconds'),
|
||||||
|
(string) SECONDS_1MINUTE => __('1 minute'),
|
||||||
|
'180' => __('3 minutes'),
|
||||||
|
(string) SECONDS_5MINUTES => __('5 minutes'),
|
||||||
|
],
|
||||||
|
'refresh',
|
||||||
|
$refresh,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'margin-top: 3px;'
|
||||||
|
);
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="label-dialog">'.__('Search').'</p>';
|
||||||
|
echo html_print_input_text('search', $search, '', 30, 255, true);
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="label-dialog">'.__('Type').'</p>';
|
||||||
|
echo html_print_select(
|
||||||
|
[
|
||||||
|
0 => __('Group agents'),
|
||||||
|
1 => __('Group modules by tag'),
|
||||||
|
2 => __('Group modules by module group'),
|
||||||
|
],
|
||||||
|
'type',
|
||||||
|
$type,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'margin-top: 3px;width:70%'
|
||||||
|
);
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="label-dialog">'.__('Show groups').'</p>';
|
||||||
|
echo html_print_checkbox('group', 1, $group, true);
|
||||||
|
echo '</div>';
|
||||||
|
echo '</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($getFilterType === true) {
|
||||||
|
$filter = get_parameter('filter', 0);
|
||||||
|
echo '<div id="filter_type" class="div-dialog">';
|
||||||
|
switch ($type) {
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
echo '<p style="width:42%;font-weight: bold;">'.__('Group').'</p>';
|
||||||
|
echo html_print_input(
|
||||||
|
[
|
||||||
|
'type' => 'select_groups',
|
||||||
|
'returnAllGroup' => true,
|
||||||
|
'name' => 'filter[]',
|
||||||
|
'selected' => $filter,
|
||||||
|
'return' => true,
|
||||||
|
'required' => true,
|
||||||
|
'privilege' => 'AR',
|
||||||
|
'multiple' => true,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
echo '<p class="label-dialog">'.__('Tag').'</p>';
|
||||||
|
if (tags_has_user_acl_tags($config['id_user']) === false) {
|
||||||
|
echo html_print_select_from_sql(
|
||||||
|
'SELECT id_tag, name
|
||||||
|
FROM ttag
|
||||||
|
WHERE id_tag
|
||||||
|
ORDER BY name',
|
||||||
|
'filter[]',
|
||||||
|
$filter,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'width: 200px',
|
||||||
|
'5'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$user_tags = tags_get_user_tags($config['id_user'], 'AR');
|
||||||
|
if (!empty($user_tags)) {
|
||||||
|
$id_user_tags = array_keys($user_tags);
|
||||||
|
|
||||||
|
echo html_print_select_from_sql(
|
||||||
|
'SELECT id_tag, name
|
||||||
|
FROM ttag
|
||||||
|
WHERE id_tag IN ('.implode(',', $id_user_tags).')
|
||||||
|
ORDER BY name',
|
||||||
|
'filter[]',
|
||||||
|
$filter,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'width: 200px',
|
||||||
|
'5'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
echo html_print_select_from_sql(
|
||||||
|
'SELECT id_tag, name
|
||||||
|
FROM ttag
|
||||||
|
WHERE id_tag
|
||||||
|
ORDER BY name',
|
||||||
|
'filter[]',
|
||||||
|
$filter,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'width: 200px',
|
||||||
|
'5'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
echo '<p class="label-dialog">'.__('Module group').'</p>';
|
||||||
|
echo html_print_select_from_sql(
|
||||||
|
'SELECT id_mg, name FROM tmodule_group ORDER BY name',
|
||||||
|
'filter[]',
|
||||||
|
$filter,
|
||||||
|
'',
|
||||||
|
__('Not assigned'),
|
||||||
|
'0',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
'width: 200px',
|
||||||
|
'5'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($getInfo === true) {
|
||||||
|
enterprise_include_once('include/functions_agents.php');
|
||||||
|
$id = get_parameter('id', 0);
|
||||||
|
switch ($type) {
|
||||||
|
case 2:
|
||||||
|
$data = db_get_row('tagente_modulo', 'id_agente_modulo', $id);
|
||||||
|
|
||||||
|
// Nombre.
|
||||||
|
$link = sprintf(
|
||||||
|
'index.php?sec=view&sec2=operation/agentes/status_monitor%s&ag_modulename=%s',
|
||||||
|
'&refr=0&ag_group=0&module_option=1&status=-1',
|
||||||
|
$data['nombre']
|
||||||
|
);
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Module name').'</p>';
|
||||||
|
echo '<a href="'.$link.'" class="info-dialog">'.$data['nombre'].'</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Descripcion.
|
||||||
|
$description = (empty($data['descripcion']) === true) ? '-' : $data['descripcion'];
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Description').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$description.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Agent.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Agent').'</p>';
|
||||||
|
echo '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$data['id_agente'].'"
|
||||||
|
class="info-dialog" target="_blank">'.agents_get_alias($data['id_agente']).'</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Group.
|
||||||
|
$group = (empty($data['id_module_group']) === true)
|
||||||
|
? '-'
|
||||||
|
: modules_get_modulegroup_name($data['id_module_group']);
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Module group').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$group.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$data = db_get_row('tagente_modulo', 'id_agente_modulo', $id);
|
||||||
|
|
||||||
|
// Nombre.
|
||||||
|
$link = sprintf(
|
||||||
|
'index.php?sec=view&sec2=operation/agentes/status_monitor%s&ag_modulename=%s',
|
||||||
|
'&refr=0&ag_group=0&module_option=1&status=-1',
|
||||||
|
$data['nombre']
|
||||||
|
);
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Module name').'</p>';
|
||||||
|
echo '<a href="'.$link.'" class="info-dialog" target="_blank">'.$data['nombre'].'</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Descripcion.
|
||||||
|
$description = (empty($data['descripcion']) === true) ? '-' : $data['descripcion'];
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Description').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$description.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Agent.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Agent').'</p>';
|
||||||
|
echo '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$data['id_agente'].'"
|
||||||
|
class="info-dialog" target="_blank">'.agents_get_alias($data['id_agente']).'</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Group.
|
||||||
|
$group = (empty($data['id_module_group']) === true)
|
||||||
|
? '-'
|
||||||
|
: modules_get_modulegroup_name($data['id_module_group']);
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Module group').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$group.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Tag.
|
||||||
|
$tags = db_get_all_rows_sql('SELECT id_tag FROM ttag_module WHERE id_agente_modulo ='.$id);
|
||||||
|
$tags_name = '';
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Tag').'</p>';
|
||||||
|
foreach ($tags as $key => $tag) {
|
||||||
|
$tags_name .= tags_get_name($tag['id_tag']).', ';
|
||||||
|
}
|
||||||
|
|
||||||
|
$tags_name = trim($tags_name, ', ');
|
||||||
|
echo '<p class="info-dialog">'.$tags_name.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
$data = agents_get_agent($id);
|
||||||
|
|
||||||
|
// Alias.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Agent').'</p>';
|
||||||
|
echo '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$data['id_agente'].'"
|
||||||
|
class="info-dialog" target="_blank">'.$data['alias'].'</a>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Ip.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('IP').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$data['direccion'].'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// OS.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('OS').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.ui_print_os_icon($data['id_os'], true, true).'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Description.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Description').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.$data['comentarios'].'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
// Group.
|
||||||
|
$secondary_groups = '';
|
||||||
|
$secondary = agents_get_secondary_groups($data['id_agente']);
|
||||||
|
if (isset($secondary['for_select']) === true && empty($secondary['for_select']) === false) {
|
||||||
|
$secondary_groups = implode(', ', $secondary['for_select']);
|
||||||
|
$secondary_groups = ', '.$secondary_groups;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo '<p class="title-dialog">'.__('Group').'</p>';
|
||||||
|
echo '<p class="info-dialog">'.groups_get_name($data['id_grupo']).$secondary_groups.'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
// Events.
|
||||||
|
echo '<div class="div-dialog">';
|
||||||
|
echo graph_graphic_agentevents(
|
||||||
|
$id,
|
||||||
|
100,
|
||||||
|
40,
|
||||||
|
SECONDS_1DAY,
|
||||||
|
'',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
echo '</div>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
@ -34,6 +34,10 @@ $id = get_parameter('id', 0);
|
|||||||
$truncate_text = get_parameter('truncate_text', 0);
|
$truncate_text = get_parameter('truncate_text', 0);
|
||||||
$get_metaconsole_hash_data = get_parameter('get_metaconsole_hash_data', 0);
|
$get_metaconsole_hash_data = get_parameter('get_metaconsole_hash_data', 0);
|
||||||
$get_metaconsole_server_url = get_parameter('get_metaconsole_server_url', 0);
|
$get_metaconsole_server_url = get_parameter('get_metaconsole_server_url', 0);
|
||||||
|
$change_custom_fields_macros_report = (bool) get_parameter(
|
||||||
|
'change_custom_fields_macros_report',
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
if ($delete_sla_item) {
|
if ($delete_sla_item) {
|
||||||
$result = db_process_sql_delete('treport_content_sla_combined', ['id' => (int) $id]);
|
$result = db_process_sql_delete('treport_content_sla_combined', ['id' => (int) $id]);
|
||||||
@ -218,3 +222,25 @@ if ($get_metaconsole_server_url) {
|
|||||||
echo $server['server_url'];
|
echo $server['server_url'];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($change_custom_fields_macros_report === true) {
|
||||||
|
include_once $config['homedir'].'/include/functions_reports.php';
|
||||||
|
$macro_type = get_parameter('macro_type', '');
|
||||||
|
$macro_id = get_parameter('macro_id', 0);
|
||||||
|
|
||||||
|
$macro = [
|
||||||
|
'name' => '',
|
||||||
|
'type' => $macro_type,
|
||||||
|
'value' => '',
|
||||||
|
];
|
||||||
|
$custom_fields = custom_fields_macros_report($macro, $macro_id);
|
||||||
|
$custom_field_draw = '';
|
||||||
|
if (empty($custom_fields) === false) {
|
||||||
|
foreach ($custom_fields as $key => $value) {
|
||||||
|
$custom_field_draw .= $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $custom_field_draw;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@ -2532,10 +2532,19 @@ class ConsoleSupervisor
|
|||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$message = 'If AllowOverride is disabled, .htaccess will not works.';
|
$message = 'If AllowOverride is disabled, .htaccess will not works.';
|
||||||
$message .= '<pre>Please check /etc/httpd/conf/httpd.conf to resolve this problem.';
|
if (PHP_OS == 'FreeBSD') {
|
||||||
|
$message .= '<pre>Please check /usr/local/etc/apache24/httpd.conf to resolve this problem.';
|
||||||
|
} else {
|
||||||
|
$message .= '<pre>Please check /etc/httpd/conf/httpd.conf to resolve this problem.';
|
||||||
|
}
|
||||||
|
|
||||||
// Get content file.
|
// Get content file.
|
||||||
$file = file_get_contents('/etc/httpd/conf/httpd.conf');
|
if (PHP_OS == 'FreeBSD') {
|
||||||
|
$file = file_get_contents('/usr/local/etc/apache24/httpd.conf');
|
||||||
|
} else {
|
||||||
|
$file = file_get_contents('/etc/httpd/conf/httpd.conf');
|
||||||
|
}
|
||||||
|
|
||||||
$file_lines = preg_split("#\r?\n#", $file, -1, PREG_SPLIT_NO_EMPTY);
|
$file_lines = preg_split("#\r?\n#", $file, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
$is_none = false;
|
$is_none = false;
|
||||||
|
|
||||||
|
@ -638,9 +638,9 @@ class HTML
|
|||||||
if ($input['arguments']['inline'] != 'true') {
|
if ($input['arguments']['inline'] != 'true') {
|
||||||
$output .= '<div class="edit_discovery_input">';
|
$output .= '<div class="edit_discovery_input">';
|
||||||
} else {
|
} else {
|
||||||
$output .= '<div class="flex mrgn_btn_25px wrap">';
|
$output .= '<div class="flex-row-center flex-nowrap mrgn_btn_15px">';
|
||||||
if (!isset($input['extra'])) {
|
if (!isset($input['extra'])) {
|
||||||
$output .= '<div class="w50p">';
|
$output .= '<div class="w100p">';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($input['extra'])) {
|
if (isset($input['extra'])) {
|
||||||
@ -652,7 +652,7 @@ class HTML
|
|||||||
$output .= '<div class="mrgn_right_10px">';
|
$output .= '<div class="mrgn_right_10px">';
|
||||||
}
|
}
|
||||||
|
|
||||||
$output .= '<div class="label_select">';
|
$output .= '<div class="">';
|
||||||
$output .= $input['label'];
|
$output .= $input['label'];
|
||||||
$output .= '</div>';
|
$output .= '</div>';
|
||||||
|
|
||||||
|
964
pandora_console/include/class/Heatmap.class.php
Normal file
964
pandora_console/include/class/Heatmap.class.php
Normal file
@ -0,0 +1,964 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Heatmap class.
|
||||||
|
*
|
||||||
|
* @category Heatmap
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage Community
|
||||||
|
* @version 1.0.0
|
||||||
|
* @license See below
|
||||||
|
*
|
||||||
|
* ______ ___ _______ _______ ________
|
||||||
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation for version 2.
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
class Heatmap
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap type.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
protected $type = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap filter.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $filter = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allowed methods to be called using AJAX request.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $AJAXMethods = [
|
||||||
|
'showHeatmap',
|
||||||
|
'updateHeatmap',
|
||||||
|
'getDataJson',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap random id.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $randomId = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap refresh.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
protected $refresh = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap width.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
protected $width = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap height.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
protected $height = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap search.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $search = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Heatmap group.
|
||||||
|
*
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
protected $group = null;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor function
|
||||||
|
*
|
||||||
|
* @param integer $type Heatmap type.
|
||||||
|
* @param array $filter Heatmap filter.
|
||||||
|
* @param string $randomId Heatmap random id.
|
||||||
|
* @param integer $refresh Heatmap refresh.
|
||||||
|
* @param integer $width Width.
|
||||||
|
* @param integer $height Height.
|
||||||
|
* @param string $search Heatmap search.
|
||||||
|
* @param integer $group Heatmap group.
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
int $type=0,
|
||||||
|
array $filter=[],
|
||||||
|
string $randomId=null,
|
||||||
|
int $refresh=300,
|
||||||
|
int $width=0,
|
||||||
|
int $height=0,
|
||||||
|
string $search=null,
|
||||||
|
int $group=1
|
||||||
|
) {
|
||||||
|
$this->type = $type;
|
||||||
|
$this->filter = $filter;
|
||||||
|
(empty($randomId) === true) ? $this->randomId = uniqid() : $this->randomId = $randomId;
|
||||||
|
$this->refresh = $refresh;
|
||||||
|
$this->width = $width;
|
||||||
|
$this->height = $height;
|
||||||
|
$this->search = $search;
|
||||||
|
$this->group = $group;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
ui_require_css_file('heatmap');
|
||||||
|
|
||||||
|
$settings = [
|
||||||
|
'type' => 'POST',
|
||||||
|
'dataType' => 'html',
|
||||||
|
'url' => ui_get_full_url(
|
||||||
|
'ajax.php',
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
'data' => [
|
||||||
|
'page' => 'operation/heatmap',
|
||||||
|
'method' => 'showHeatmap',
|
||||||
|
'randomId' => $this->randomId,
|
||||||
|
'type' => $this->type,
|
||||||
|
'filter' => $this->filter,
|
||||||
|
'refresh' => $this->refresh,
|
||||||
|
'search' => $this->search,
|
||||||
|
'group' => $this->group,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
echo '<div id="div_'.$this->randomId.'" class="mainDiv">';
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
const randomId = '<?php echo $this->randomId; ?>';
|
||||||
|
const refresh = '<?php echo $this->refresh; ?>';
|
||||||
|
let setting = <?php echo json_encode($settings); ?>;
|
||||||
|
setting['data']['height'] = $(`#div_${randomId}`).height() + 10;
|
||||||
|
setting['data']['width'] = $(`#div_${randomId}`).width();
|
||||||
|
|
||||||
|
// Initial charge.
|
||||||
|
ajaxRequest(
|
||||||
|
`div_${randomId}`,
|
||||||
|
setting
|
||||||
|
);
|
||||||
|
|
||||||
|
// Refresh.
|
||||||
|
setInterval(
|
||||||
|
function() {
|
||||||
|
refreshMap();
|
||||||
|
},
|
||||||
|
(refresh * 1000)
|
||||||
|
);
|
||||||
|
|
||||||
|
function refreshMap() {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||||
|
data: {
|
||||||
|
page: "operation/heatmap",
|
||||||
|
method: 'getDataJson',
|
||||||
|
randomId: randomId,
|
||||||
|
type: setting['data']['type'],
|
||||||
|
refresh: setting['data']['refresh'],
|
||||||
|
filter: setting['data']['filter'],
|
||||||
|
search: setting['data']['search'],
|
||||||
|
group: setting['data']['group']
|
||||||
|
},
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(data) {
|
||||||
|
const total = Object.keys(data).length;
|
||||||
|
if (total === $(`#svg_${randomId} rect`).length) {
|
||||||
|
// Object to array.
|
||||||
|
let lista = Object.values(data);
|
||||||
|
// randomly sort.
|
||||||
|
lista = lista.sort(function() {return Math.random() - 0.5});
|
||||||
|
|
||||||
|
const countPerSecond = total / refresh;
|
||||||
|
|
||||||
|
let cont = 0;
|
||||||
|
let limit = countPerSecond - 1;
|
||||||
|
|
||||||
|
const timer = setInterval(
|
||||||
|
function() {
|
||||||
|
while (cont <= limit) {
|
||||||
|
$(`#${randomId}_${lista[cont]['id']}`).removeClass();
|
||||||
|
$(`#${randomId}_${lista[cont]['id']}`).addClass(`${lista[cont]['status']} hover`);
|
||||||
|
|
||||||
|
cont++;
|
||||||
|
}
|
||||||
|
limit = limit + countPerSecond;
|
||||||
|
},
|
||||||
|
1000
|
||||||
|
);
|
||||||
|
|
||||||
|
setTimeout(
|
||||||
|
function(){
|
||||||
|
clearInterval(timer);
|
||||||
|
},
|
||||||
|
(refresh * 1000)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<?php
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setter for filter
|
||||||
|
*
|
||||||
|
* @param array $filter Filter.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setFilter(array $filter)
|
||||||
|
{
|
||||||
|
$this->filter = $filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setter for type
|
||||||
|
*
|
||||||
|
* @param integer $type Type.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setType(int $type)
|
||||||
|
{
|
||||||
|
$this->type = $type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setter for refresh
|
||||||
|
*
|
||||||
|
* @param integer $refresh Refresh.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setRefresh(int $refresh)
|
||||||
|
{
|
||||||
|
$this->refresh = $refresh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter for randomId
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRandomId()
|
||||||
|
{
|
||||||
|
return $this->randomId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all agents
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getAllAgents()
|
||||||
|
{
|
||||||
|
$filter['disabled'] = 0;
|
||||||
|
|
||||||
|
$alias = '';
|
||||||
|
if (empty($this->search) === false) {
|
||||||
|
$alias = ' AND alias LIKE "%'.$this->search.'%"';
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_grupo = '';
|
||||||
|
if (empty($this->filter) === false && current($this->filter) != 0) {
|
||||||
|
$id_grupo = ' AND id_grupo IN ('.implode(',', $this->filter).')';
|
||||||
|
}
|
||||||
|
|
||||||
|
// All agents.
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT DISTINCT id_agente as id,alias,id_grupo,normal_count,warning_count,critical_count, unknown_count,notinit_count,total_count,fired_count,
|
||||||
|
(SELECT last_status_change FROM tagente_estado WHERE id_agente = tagente.id_agente ORDER BY last_status_change DESC LIMIT 1) AS last_status_change
|
||||||
|
FROM tagente WHERE `disabled` = 0 %s %s ORDER BY id_grupo,id_agente ASC',
|
||||||
|
$alias,
|
||||||
|
$id_grupo
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = db_get_all_rows_sql($sql);
|
||||||
|
|
||||||
|
$agents = [];
|
||||||
|
// Agent status.
|
||||||
|
foreach ($result as $key => $agent) {
|
||||||
|
if ($agent['total_count'] === 0 || $agent['total_count'] === $agent['notinit_count']) {
|
||||||
|
$status = 'notinit';
|
||||||
|
} else if ($agent['critical_count'] > 0) {
|
||||||
|
$status = 'critical';
|
||||||
|
} else if ($agent['warning_count'] > 0) {
|
||||||
|
$status = 'warning';
|
||||||
|
} else if ($agent['unknown_count'] > 0) {
|
||||||
|
$status = 'unknown';
|
||||||
|
} else {
|
||||||
|
$status = 'normal';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($agent['last_status_change'] != 0) {
|
||||||
|
$seconds = (time() - $agent['last_status_change']);
|
||||||
|
|
||||||
|
if ($seconds >= SECONDS_1DAY) {
|
||||||
|
$status .= '_10';
|
||||||
|
} else if ($seconds >= 77760) {
|
||||||
|
$status .= '_9';
|
||||||
|
} else if ($seconds >= 69120) {
|
||||||
|
$status .= '_8';
|
||||||
|
} else if ($seconds >= 60480) {
|
||||||
|
$status .= '_7';
|
||||||
|
} else if ($seconds >= 51840) {
|
||||||
|
$status .= '_6';
|
||||||
|
} else if ($seconds >= 43200) {
|
||||||
|
$status .= '_5';
|
||||||
|
} else if ($seconds >= 34560) {
|
||||||
|
$status .= '_4';
|
||||||
|
} else if ($seconds >= 25920) {
|
||||||
|
$status .= '_3';
|
||||||
|
} else if ($seconds >= 17280) {
|
||||||
|
$status .= '_2';
|
||||||
|
} else if ($seconds >= 8640) {
|
||||||
|
$status .= '_1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$agents[$key] = $agent;
|
||||||
|
$agents[$key]['status'] = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $agents;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all modules
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getAllModulesByGroup()
|
||||||
|
{
|
||||||
|
$filter_group = '';
|
||||||
|
if (empty($this->filter) === false && current($this->filter) != -1) {
|
||||||
|
$filter_group = 'AND am.id_module_group IN ('.implode(',', $this->filter).')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter_name = '';
|
||||||
|
if (empty($this->search) === false) {
|
||||||
|
$filter_name = 'AND nombre LIKE "%'.$this->search.'%"';
|
||||||
|
}
|
||||||
|
|
||||||
|
// All modules.
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT am.id_agente_modulo AS id, ae.known_status AS `status`, am.id_module_group AS id_grupo, ae.last_status_change FROM tagente_modulo am
|
||||||
|
INNER JOIN tagente_estado ae ON am.id_agente_modulo = ae.id_agente_modulo
|
||||||
|
WHERE am.disabled = 0 %s %s GROUP BY am.id_module_group, am.id_agente_modulo',
|
||||||
|
$filter_group,
|
||||||
|
$filter_name
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = db_get_all_rows_sql($sql);
|
||||||
|
|
||||||
|
// Module status.
|
||||||
|
foreach ($result as $key => $module) {
|
||||||
|
$status = '';
|
||||||
|
switch ($module['status']) {
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||||
|
case 1:
|
||||||
|
case 100:
|
||||||
|
$status = 'critical';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL:
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
||||||
|
case 0:
|
||||||
|
case 300:
|
||||||
|
$status = 'normal';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_WARNING:
|
||||||
|
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||||
|
case 2:
|
||||||
|
case 200:
|
||||||
|
$status = 'warning';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case AGENT_MODULE_STATUS_UNKNOWN:
|
||||||
|
case 3:
|
||||||
|
$status = 'unknown';
|
||||||
|
break;
|
||||||
|
case AGENT_MODULE_STATUS_NOT_INIT:
|
||||||
|
case 5:
|
||||||
|
$status = 'notinit';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($module['last_status_change'] != 0) {
|
||||||
|
$seconds = (time() - $module['last_status_change']);
|
||||||
|
|
||||||
|
if ($seconds >= SECONDS_1DAY) {
|
||||||
|
$status .= '_10';
|
||||||
|
} else if ($seconds >= 77760) {
|
||||||
|
$status .= '_9';
|
||||||
|
} else if ($seconds >= 69120) {
|
||||||
|
$status .= '_8';
|
||||||
|
} else if ($seconds >= 60480) {
|
||||||
|
$status .= '_7';
|
||||||
|
} else if ($seconds >= 51840) {
|
||||||
|
$status .= '_6';
|
||||||
|
} else if ($seconds >= 43200) {
|
||||||
|
$status .= '_5';
|
||||||
|
} else if ($seconds >= 34560) {
|
||||||
|
$status .= '_4';
|
||||||
|
} else if ($seconds >= 25920) {
|
||||||
|
$status .= '_3';
|
||||||
|
} else if ($seconds >= 17280) {
|
||||||
|
$status .= '_2';
|
||||||
|
} else if ($seconds >= 8640) {
|
||||||
|
$status .= '_1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[$key]['status'] = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all modules
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getAllModulesByTag()
|
||||||
|
{
|
||||||
|
$filter_tag = '';
|
||||||
|
if (empty($this->filter) === false && $this->filter[0] !== '0') {
|
||||||
|
$tags = implode(',', $this->filter);
|
||||||
|
$filter_tag .= ' AND tm.id_tag IN ('.$tags.')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$filter_name = '';
|
||||||
|
if (empty($this->search) === false) {
|
||||||
|
$filter_name = 'AND nombre LIKE "%'.$this->search.'%"';
|
||||||
|
}
|
||||||
|
|
||||||
|
// All modules.
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT ae.id_agente_modulo AS id, ae.known_status AS `status`, tm.id_tag AS id_grupo, ae.last_status_change FROM tagente_estado ae
|
||||||
|
INNER JOIN ttag_module tm ON tm.id_agente_modulo = ae.id_agente_modulo
|
||||||
|
WHERE 1=1 %s %s GROUP BY tm.id_tag, ae.id_agente_modulo',
|
||||||
|
$filter_tag,
|
||||||
|
$filter_name
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = db_get_all_rows_sql($sql);
|
||||||
|
|
||||||
|
// Module status.
|
||||||
|
foreach ($result as $key => $module) {
|
||||||
|
$status = '';
|
||||||
|
switch ($module['status']) {
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
||||||
|
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||||
|
case 1:
|
||||||
|
case 100:
|
||||||
|
$status = 'critical';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL:
|
||||||
|
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
||||||
|
case 0:
|
||||||
|
case 300:
|
||||||
|
$status = 'normal';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_MODULE_STATUS_WARNING:
|
||||||
|
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||||
|
case 2:
|
||||||
|
case 200:
|
||||||
|
$status = 'warning';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case AGENT_MODULE_STATUS_UNKNOWN:
|
||||||
|
case 3:
|
||||||
|
$status = 'unknown';
|
||||||
|
break;
|
||||||
|
case AGENT_MODULE_STATUS_NOT_INIT:
|
||||||
|
case 5:
|
||||||
|
$status = 'notinit';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($module['last_status_change'] != 0) {
|
||||||
|
$seconds = (time() - $module['last_status_change']);
|
||||||
|
|
||||||
|
if ($seconds >= SECONDS_1DAY) {
|
||||||
|
$status .= '_10';
|
||||||
|
} else if ($seconds >= 77760) {
|
||||||
|
$status .= '_9';
|
||||||
|
} else if ($seconds >= 69120) {
|
||||||
|
$status .= '_8';
|
||||||
|
} else if ($seconds >= 60480) {
|
||||||
|
$status .= '_7';
|
||||||
|
} else if ($seconds >= 51840) {
|
||||||
|
$status .= '_6';
|
||||||
|
} else if ($seconds >= 43200) {
|
||||||
|
$status .= '_5';
|
||||||
|
} else if ($seconds >= 34560) {
|
||||||
|
$status .= '_4';
|
||||||
|
} else if ($seconds >= 25920) {
|
||||||
|
$status .= '_3';
|
||||||
|
} else if ($seconds >= 17280) {
|
||||||
|
$status .= '_2';
|
||||||
|
} else if ($seconds >= 8640) {
|
||||||
|
$status .= '_1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$result[$key]['status'] = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetData
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getData()
|
||||||
|
{
|
||||||
|
switch ($this->type) {
|
||||||
|
case 2:
|
||||||
|
$data = $this->getAllModulesByGroup();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$data = $this->getAllModulesByTag();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
$data = $this->getAllAgents();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetDataJson
|
||||||
|
*
|
||||||
|
* @return json
|
||||||
|
*/
|
||||||
|
public function getDataJson()
|
||||||
|
{
|
||||||
|
$return = $this->getData();
|
||||||
|
echo json_encode($return);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get class by status
|
||||||
|
*
|
||||||
|
* @param integer $status Status.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function statusColour(int $status)
|
||||||
|
{
|
||||||
|
switch ($status) {
|
||||||
|
case AGENT_STATUS_CRITICAL:
|
||||||
|
$return = 'critical';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_WARNING:
|
||||||
|
$return = 'warning';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_UNKNOWN:
|
||||||
|
$return = 'unknown';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_NOT_INIT:
|
||||||
|
$return = 'notinit';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_NORMAL:
|
||||||
|
default:
|
||||||
|
$return = 'normal';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get max. number of y-axis
|
||||||
|
*
|
||||||
|
* @param integer $total Total.
|
||||||
|
* @param float $relation Aspect relation.
|
||||||
|
*
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
protected function getYAxis(int $total, float $relation)
|
||||||
|
{
|
||||||
|
$yAxis = sqrt(($total / $relation));
|
||||||
|
return $yAxis;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if target method is available to be called using AJAX.
|
||||||
|
*
|
||||||
|
* @param string $method Target method.
|
||||||
|
*
|
||||||
|
* @return boolean True allowed, false not.
|
||||||
|
*/
|
||||||
|
public function ajaxMethod(string $method):bool
|
||||||
|
{
|
||||||
|
return in_array($method, $this->AJAXMethods);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ShowHeatmap
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function showHeatmap()
|
||||||
|
{
|
||||||
|
$result = $this->getData();
|
||||||
|
|
||||||
|
if (empty($result) === true) {
|
||||||
|
echo '<div style="position: absolute; top:70px; left:20px">'.__('No data found').'</div>';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$count_result = count($result);
|
||||||
|
|
||||||
|
$scale = ($this->width / $this->height);
|
||||||
|
$Yaxis = $this->getYAxis($count_result, $scale);
|
||||||
|
if ($count_result <= 3) {
|
||||||
|
$Xaxis = $count_result;
|
||||||
|
$Yaxis = 1;
|
||||||
|
} else {
|
||||||
|
$Xaxis = (int) ceil($Yaxis * $scale);
|
||||||
|
$Yaxis = ceil($Yaxis);
|
||||||
|
}
|
||||||
|
|
||||||
|
$viewBox = sprintf(
|
||||||
|
'0 0 %d %d',
|
||||||
|
$Xaxis,
|
||||||
|
$Yaxis
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<svg id="svg_'.$this->randomId.'" width="'.$this->width.'"
|
||||||
|
height="'.$this->height.'" viewBox="'.$viewBox.'">';
|
||||||
|
|
||||||
|
$groups = [];
|
||||||
|
$contX = 0;
|
||||||
|
$contY = 0;
|
||||||
|
foreach ($result as $value) {
|
||||||
|
echo '<rect id="'.$this->randomId.'_'.$value['id'].'" class="'.$value['status'].' hover"
|
||||||
|
width="1" height="1" x ="'.$contX.' "y="'.$contY.'" />';
|
||||||
|
|
||||||
|
$contX++;
|
||||||
|
if ($contX >= $Xaxis) {
|
||||||
|
$contY++;
|
||||||
|
$contX = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($groups[$value['id_grupo']]) === true) {
|
||||||
|
$groups[$value['id_grupo']] = 1;
|
||||||
|
} else {
|
||||||
|
$groups[$value['id_grupo']] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('rect').click(function() {
|
||||||
|
const type = <?php echo $this->type; ?>;
|
||||||
|
const hash = '<?php echo $this->randomId; ?>';
|
||||||
|
const id = this.id.replace(`${hash}_`, '');
|
||||||
|
|
||||||
|
$("#info_dialog").dialog({
|
||||||
|
resizable: true,
|
||||||
|
draggable: true,
|
||||||
|
modal: true,
|
||||||
|
closeOnEscape: true,
|
||||||
|
height: 400,
|
||||||
|
width: 530,
|
||||||
|
title: '<?php echo __('Info'); ?>',
|
||||||
|
open: function() {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||||
|
data: {
|
||||||
|
page: "include/ajax/heatmap.ajax",
|
||||||
|
getInfo: 1,
|
||||||
|
type: type,
|
||||||
|
id: id,
|
||||||
|
},
|
||||||
|
dataType: 'html',
|
||||||
|
success: function(data) {
|
||||||
|
$('#info_dialog').empty();
|
||||||
|
$('#info_dialog').append(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<?php
|
||||||
|
if (count($groups) > 1 && $this->group === 1) {
|
||||||
|
$x_back = 0;
|
||||||
|
$y_back = 0;
|
||||||
|
|
||||||
|
if ($count_result <= 100) {
|
||||||
|
$fontSize = 'small-size';
|
||||||
|
$stroke = 'small-stroke';
|
||||||
|
} else {
|
||||||
|
$fontSize = 'big-size';
|
||||||
|
$stroke = 'big-stroke';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<polyline points="0,0 '.$Xaxis.',0" class="polyline '.$stroke.'" />';
|
||||||
|
foreach ($groups as $key => $group) {
|
||||||
|
$name = '';
|
||||||
|
switch ($this->type) {
|
||||||
|
case 2:
|
||||||
|
$name = modules_get_modulegroup_name($key);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$name = tags_get_name($key);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
$name = groups_get_name($key);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($x_back + $group) <= $Xaxis) {
|
||||||
|
$x_position = ($x_back + $group);
|
||||||
|
$y_position = $y_back;
|
||||||
|
|
||||||
|
if ($y_back === 0 && $x_back === 0) {
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_back,
|
||||||
|
$y_back,
|
||||||
|
$x_back,
|
||||||
|
($y_back + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d %d,%d',
|
||||||
|
$x_back,
|
||||||
|
($y_position + 1),
|
||||||
|
$x_position,
|
||||||
|
($y_position + 1),
|
||||||
|
$x_position,
|
||||||
|
$y_back
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
// Name.
|
||||||
|
echo '<text x="'.((($x_position - $x_back) / 2) + $x_back).'" y="'.($y_position + 1).'"
|
||||||
|
class="'.$fontSize.'">'.$name.'</text>';
|
||||||
|
|
||||||
|
$x_back = $x_position;
|
||||||
|
if ($x_position === $Xaxis) {
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_position,
|
||||||
|
$y_back,
|
||||||
|
$x_position,
|
||||||
|
($y_back + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
$y_back++;
|
||||||
|
$x_back = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$round = (int) floor(($x_back + $group) / $Xaxis);
|
||||||
|
$y_position = ($round + $y_back);
|
||||||
|
|
||||||
|
if ($round === 1) {
|
||||||
|
// One line.
|
||||||
|
$x_position = (($x_back + $group) - $Xaxis);
|
||||||
|
|
||||||
|
if ($x_position <= $x_back) {
|
||||||
|
// Bottom line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_back,
|
||||||
|
$y_position,
|
||||||
|
$Xaxis,
|
||||||
|
($y_position)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bottom of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
0,
|
||||||
|
($y_position + 1),
|
||||||
|
$x_position,
|
||||||
|
($y_position + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
// Name.
|
||||||
|
echo '<text x="'.(($x_position) / 2).'" y="'.($y_position + 1).'"
|
||||||
|
class="'.$fontSize.'">'.$name.'</text>';
|
||||||
|
|
||||||
|
// Bottom-right of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_position,
|
||||||
|
($y_position),
|
||||||
|
$x_position,
|
||||||
|
($y_position + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
if ($x_position > $x_back) {
|
||||||
|
// Bottom-top of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_position,
|
||||||
|
($y_position),
|
||||||
|
$Xaxis,
|
||||||
|
($y_position)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Two or more lines.
|
||||||
|
$x_position = (($x_back + $group) - ($Xaxis * $round));
|
||||||
|
|
||||||
|
if ($x_position === 0) {
|
||||||
|
$x_position = $Xaxis;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bottom of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
0,
|
||||||
|
($y_position + 1),
|
||||||
|
$x_position,
|
||||||
|
($y_position + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
// Bottom-right of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_position,
|
||||||
|
($y_position),
|
||||||
|
$x_position,
|
||||||
|
($y_position + 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
|
||||||
|
// Name.
|
||||||
|
echo '<text x="'.(($x_position) / 2).'" y="'.($y_position + 1).'"
|
||||||
|
class="'.$fontSize.'">'.$name.'</text>';
|
||||||
|
|
||||||
|
// Bottom-top of last line.
|
||||||
|
$points = sprintf(
|
||||||
|
'%d,%d %d,%d',
|
||||||
|
$x_position,
|
||||||
|
($y_position),
|
||||||
|
$Xaxis,
|
||||||
|
($y_position)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<polyline points="'.$points.'" class="polyline '.$stroke.'" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($x_position === $Xaxis) {
|
||||||
|
$x_position = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$x_back = $x_position;
|
||||||
|
$y_back = $y_position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</svg>';
|
||||||
|
|
||||||
|
// Dialog.
|
||||||
|
echo '<div id="info_dialog" style="padding:15px" class="invisible"></div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -20,8 +20,8 @@
|
|||||||
/**
|
/**
|
||||||
* Pandora build version and version
|
* Pandora build version and version
|
||||||
*/
|
*/
|
||||||
$build_version = 'PC220330';
|
$build_version = 'PC220407';
|
||||||
$pandora_version = 'v7.0NG.760';
|
$pandora_version = 'v7.0NG.761';
|
||||||
|
|
||||||
// Do not overwrite default timezone set if defined.
|
// Do not overwrite default timezone set if defined.
|
||||||
$script_tz = @date_default_timezone_get();
|
$script_tz = @date_default_timezone_get();
|
||||||
|
@ -858,3 +858,6 @@ define(
|
|||||||
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Pandora FMS Enterprise license.
|
||||||
|
define('LICENSE_FILE', 'customer_key');
|
||||||
|
@ -4194,7 +4194,7 @@ function generator_chart_to_pdf(
|
|||||||
) {
|
) {
|
||||||
$width_img = 650;
|
$width_img = 650;
|
||||||
$height_img = ($params['height'] + 50);
|
$height_img = ($params['height'] + 50);
|
||||||
} else if ($type_graph_pdf === 'hbar') {
|
} else if ($type_graph_pdf === 'hbar' || $type_graph_pdf === 'pie_chart') {
|
||||||
$width_img = ($params['width'] ?? 550);
|
$width_img = ($params['width'] ?? 550);
|
||||||
$height_img = $params['height'];
|
$height_img = $params['height'];
|
||||||
} else {
|
} else {
|
||||||
|
@ -14530,7 +14530,7 @@ function api_set_add_element_service($thrash1, $thrash2, $other, $thrash3)
|
|||||||
$id_service_child = 0;
|
$id_service_child = 0;
|
||||||
$agent_id = $element['id'];
|
$agent_id = $element['id'];
|
||||||
if (!agents_check_access_agent($agent_id, 'AR')) {
|
if (!agents_check_access_agent($agent_id, 'AR')) {
|
||||||
continue;
|
continue 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -14539,7 +14539,7 @@ function api_set_add_element_service($thrash1, $thrash2, $other, $thrash3)
|
|||||||
$id_service_child = 0;
|
$id_service_child = 0;
|
||||||
$id_agente_modulo = $element['id'];
|
$id_agente_modulo = $element['id'];
|
||||||
if (!agents_check_access_agent(modules_get_agentmodule_agent($id_agente_modulo), 'AR')) {
|
if (!agents_check_access_agent(modules_get_agentmodule_agent($id_agente_modulo), 'AR')) {
|
||||||
continue;
|
continue 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -14554,7 +14554,7 @@ function api_set_add_element_service($thrash1, $thrash2, $other, $thrash3)
|
|||||||
$id_service_child
|
$id_service_child
|
||||||
);
|
);
|
||||||
if ($service_group === false || !check_acl($config['id_user'], $service_group, 'AD')) {
|
if ($service_group === false || !check_acl($config['id_user'], $service_group, 'AD')) {
|
||||||
continue;
|
continue 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -14904,6 +14904,31 @@ function api_set_metaconsole_synch($keys)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function api_set_metaconsole_license_file($key)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
if (defined('METACONSOLE')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($key) === true) {
|
||||||
|
returnError('Key cannot be empty.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the license file.
|
||||||
|
$result = file_put_contents($config['remote_config'].'/'.LICENSE_FILE, $key);
|
||||||
|
if ($result === false) {
|
||||||
|
returnError('update-license', 'Failed to Update license file.');
|
||||||
|
} else {
|
||||||
|
returnData('string', ['type' => 'string', 'data' => true]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3)
|
function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -210,6 +210,7 @@ function events_get_all_fields()
|
|||||||
$columns['data'] = __('Data');
|
$columns['data'] = __('Data');
|
||||||
$columns['module_status'] = __('Module status');
|
$columns['module_status'] = __('Module status');
|
||||||
$columns['module_custom_id'] = __('Module custom id');
|
$columns['module_custom_id'] = __('Module custom id');
|
||||||
|
$columns['custom_data'] = __('Custom data');
|
||||||
|
|
||||||
return $columns;
|
return $columns;
|
||||||
}
|
}
|
||||||
@ -310,6 +311,9 @@ function events_get_column_name($field, $table_alias=false)
|
|||||||
case 'direccion':
|
case 'direccion':
|
||||||
return __('Agent IP');
|
return __('Agent IP');
|
||||||
|
|
||||||
|
case 'custom_data':
|
||||||
|
return __('Custom data');
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return __($field);
|
return __($field);
|
||||||
}
|
}
|
||||||
@ -1122,6 +1126,23 @@ function events_get_all(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Custom data.
|
||||||
|
if (empty($filter['custom_data']) === false) {
|
||||||
|
if ($filter['custom_data_filter_type'] === '1') {
|
||||||
|
$sql_filters[] = sprintf(
|
||||||
|
' AND JSON_VALID(custom_data) = 1
|
||||||
|
AND (JSON_EXTRACT(custom_data, "$.*") LIKE lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) ',
|
||||||
|
io_safe_output($filter['custom_data'])
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$sql_filters[] = sprintf(
|
||||||
|
' AND JSON_VALID(custom_data) = 1
|
||||||
|
AND (JSON_SEARCH(JSON_KEYS(custom_data), "all", lower("%%%s%%") COLLATE utf8mb4_0900_ai_ci) IS NOT NULL) ',
|
||||||
|
io_safe_output($filter['custom_data'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Validated or in process by.
|
// Validated or in process by.
|
||||||
if (empty($filter['id_user_ack']) === false) {
|
if (empty($filter['id_user_ack']) === false) {
|
||||||
$sql_filters[] = sprintf(
|
$sql_filters[] = sprintf(
|
||||||
|
@ -808,7 +808,7 @@ function html_print_select(
|
|||||||
$output .= '<div class="flex-row-center">';
|
$output .= '<div class="flex-row-center">';
|
||||||
}
|
}
|
||||||
|
|
||||||
$output .= '<select '.$required.' onclick="'.$script.'" id="'.$id.'" name="'.$name.'"'.$attributes.' '.$styleText.'>';
|
$output .= '<select '.$required.' id="'.$id.'" name="'.$name.'"'.$attributes.' '.$styleText.'>';
|
||||||
|
|
||||||
if ($nothing !== false) {
|
if ($nothing !== false) {
|
||||||
if ($nothing != '' || empty($fields)) {
|
if ($nothing != '' || empty($fields)) {
|
||||||
@ -1697,13 +1697,19 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||||||
$all_modules = [];
|
$all_modules = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_array($data['mModules']) === false) {
|
||||||
|
$result = explode(((is_metaconsole() === true) ? SEPARATOR_META_MODULE : ','), $data['mModules']);
|
||||||
|
} else {
|
||||||
|
$result = $data['mModules'];
|
||||||
|
}
|
||||||
|
|
||||||
$output .= html_print_input(
|
$output .= html_print_input(
|
||||||
[
|
[
|
||||||
'label' => __('Modules'),
|
'label' => __('Modules'),
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'fields' => $all_modules,
|
'fields' => $all_modules,
|
||||||
'name' => 'filtered-module-modules-'.$uniqId,
|
'name' => 'filtered-module-modules-'.$uniqId,
|
||||||
'selected' => explode((is_metaconsole() === true) ? SEPARATOR_META_MODULE : ',', $data['mModules']),
|
'selected' => $result,
|
||||||
'return' => true,
|
'return' => true,
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'style' => 'min-width: 200px;max-width:200px;',
|
'style' => 'min-width: 200px;max-width:200px;',
|
||||||
@ -4765,6 +4771,10 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
|||||||
$style = 'style="color: white"';
|
$style = 'style="color: white"';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($data['label_class']) === false) {
|
||||||
|
$data['label_class'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$output = '';
|
$output = '';
|
||||||
|
|
||||||
if (($data['label'] ?? false) && $input_only === false) {
|
if (($data['label'] ?? false) && $input_only === false) {
|
||||||
|
@ -228,13 +228,26 @@ function messages_process_read(
|
|||||||
$utimestamp = time();
|
$utimestamp = time();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$already_read = db_get_value_filter(
|
||||||
|
'utimestamp_read',
|
||||||
|
'tnotification_user',
|
||||||
|
[
|
||||||
|
'id_mensaje' => $message_id,
|
||||||
|
'id_user' => $config['id_user'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (empty($already_read) === false) {
|
||||||
|
// Already read.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
$ret = db_process_sql_update(
|
$ret = db_process_sql_update(
|
||||||
'tnotification_user',
|
'tnotification_user',
|
||||||
['utimestamp_read' => $utimestamp],
|
['utimestamp_read' => $utimestamp],
|
||||||
[
|
[
|
||||||
'id_mensaje' => $message_id,
|
'id_mensaje' => $message_id,
|
||||||
'id_user' => $config['id_user'],
|
'id_user' => $config['id_user'],
|
||||||
'utimestamp_read' => null,
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -585,13 +598,6 @@ function messages_get_overview_sent(
|
|||||||
'tmensajes',
|
'tmensajes',
|
||||||
$filter
|
$filter
|
||||||
);
|
);
|
||||||
|
|
||||||
return db_get_all_rows_field_filter(
|
|
||||||
'tmensajes',
|
|
||||||
'id_usuario_origen',
|
|
||||||
$config['id_user'],
|
|
||||||
$order
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -688,6 +688,15 @@ function reporting_make_reporting_data(
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
$report['contents'][] = reporting_custom_render(
|
||||||
|
$report,
|
||||||
|
$content,
|
||||||
|
$type,
|
||||||
|
$pdf
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'group_configuration':
|
case 'group_configuration':
|
||||||
$report['contents'][] = reporting_group_configuration(
|
$report['contents'][] = reporting_group_configuration(
|
||||||
$report,
|
$report,
|
||||||
@ -2802,6 +2811,12 @@ function reporting_agent_module($report, $content)
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (isset($external_source['show_type']) === true) {
|
||||||
|
$show_type = $external_source['show_type'];
|
||||||
|
} else {
|
||||||
|
$show_type = 0;
|
||||||
|
}
|
||||||
|
|
||||||
$return['type'] = 'agent_module';
|
$return['type'] = 'agent_module';
|
||||||
|
|
||||||
if (empty($content['name'])) {
|
if (empty($content['name'])) {
|
||||||
@ -2838,6 +2853,10 @@ function reporting_agent_module($report, $content)
|
|||||||
modules_get_agentmodule_name($modul_id)
|
modules_get_agentmodule_name($modul_id)
|
||||||
);
|
);
|
||||||
$modules_by_name[$cont]['id'] = $modul_id;
|
$modules_by_name[$cont]['id'] = $modul_id;
|
||||||
|
if ($show_type === '1') {
|
||||||
|
$modules_by_name[$cont]['unit'] = modules_get_unit($modul_id);
|
||||||
|
}
|
||||||
|
|
||||||
$cont++;
|
$cont++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2853,7 +2872,18 @@ function reporting_agent_module($report, $content)
|
|||||||
$row['modules'] = [];
|
$row['modules'] = [];
|
||||||
foreach ($modules_by_name as $module) {
|
foreach ($modules_by_name as $module) {
|
||||||
if (array_key_exists($module['id'], $agent_modules)) {
|
if (array_key_exists($module['id'], $agent_modules)) {
|
||||||
$row['modules'][$module['name']] = modules_get_agentmodule_status($module['id']);
|
if ($show_type === '1') {
|
||||||
|
$module_last_value = modules_get_last_value($module['id']);
|
||||||
|
if (!is_numeric($module_last_value)) {
|
||||||
|
$module_last_value = htmlspecialchars($module_last_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
$module['datos'] = $module_last_value;
|
||||||
|
$row['modules'][$module['name']] = modules_get_agentmodule_data_for_humans($module);
|
||||||
|
$row['show_type'] = $show_type;
|
||||||
|
} else {
|
||||||
|
$row['modules'][$module['name']] = modules_get_agentmodule_status($module['id']);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!array_key_exists($module['name'], $row['modules'])) {
|
if (!array_key_exists($module['name'], $row['modules'])) {
|
||||||
$row['modules'][$module['name']] = null;
|
$row['modules'][$module['name']] = null;
|
||||||
@ -4654,6 +4684,294 @@ function reporting_network_interfaces_report($report, $content, $type='dinamic',
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function reporting_custom_render($report, $content, $type='dinamic', $pdf=0)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$return['type'] = 'custom_render';
|
||||||
|
|
||||||
|
if (empty($content['name'])) {
|
||||||
|
$content['name'] = __('Custom render report');
|
||||||
|
}
|
||||||
|
|
||||||
|
$return['title'] = $content['name'];
|
||||||
|
$return['landscape'] = $content['landscape'];
|
||||||
|
$return['pagebreak'] = $content['pagebreak'];
|
||||||
|
$return['subtitle'] = '';
|
||||||
|
$return['description'] = $content['description'];
|
||||||
|
$return['date'] = reporting_get_date_text($report, $content);
|
||||||
|
$return['failed'] = null;
|
||||||
|
|
||||||
|
$macros = [];
|
||||||
|
$patterns = [];
|
||||||
|
$substitutions = [];
|
||||||
|
if (isset($content['macros_definition']) === true
|
||||||
|
&& empty($content['macros_definition']) === false
|
||||||
|
) {
|
||||||
|
$macros = json_decode(
|
||||||
|
io_safe_output($content['macros_definition']),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
if (empty($macros) === false && is_array($macros) === true) {
|
||||||
|
foreach ($macros as $key_macro => $data_macro) {
|
||||||
|
switch ($data_macro['type']) {
|
||||||
|
case 0:
|
||||||
|
// Type: String.
|
||||||
|
$patterns[] = addslashes(
|
||||||
|
'/_'.$data_macro['name'].'_/'
|
||||||
|
);
|
||||||
|
$substitutions[] = $data_macro['value'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
// Type Sql value.
|
||||||
|
$patterns[] = addslashes(
|
||||||
|
'/_'.$data_macro['name'].'_/'
|
||||||
|
);
|
||||||
|
|
||||||
|
$regex = '/(UPDATE|INSERT INTO|DELETE FROM|TRUNCATE|DROP|ALTER|CREATE|GRANT|REVOKE)\s+(.*?)\s+/i';
|
||||||
|
if (preg_match($regex, $data_macro['value']) > 0) {
|
||||||
|
$value_query = __('This query is insecure, it could apply unwanted modiffications on the schema');
|
||||||
|
} else {
|
||||||
|
$error_reporting = error_reporting();
|
||||||
|
error_reporting(0);
|
||||||
|
$value_query = db_get_value_sql(
|
||||||
|
trim($data_macro['value'], ';')
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($value_query === false) {
|
||||||
|
$value_query = __('Error: %s', $config['dbconnection']->error);
|
||||||
|
}
|
||||||
|
|
||||||
|
error_reporting($error_reporting);
|
||||||
|
}
|
||||||
|
|
||||||
|
$substitutions[] = $value_query;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
// Type: SQL graph.
|
||||||
|
$patterns[] = addslashes(
|
||||||
|
'/_'.$data_macro['name'].'_/'
|
||||||
|
);
|
||||||
|
|
||||||
|
$regex = '/(UPDATE|INSERT INTO|DELETE FROM|TRUNCATE|DROP|ALTER|CREATE|GRANT|REVOKE)\s+(.*?)\s+/i';
|
||||||
|
if (preg_match($regex, $data_macro['value']) > 0) {
|
||||||
|
$value_query = __('This query is insecure, it could apply unwanted modiffications on the schema');
|
||||||
|
} else {
|
||||||
|
$error_reporting = error_reporting();
|
||||||
|
error_reporting(0);
|
||||||
|
$data_query = db_get_all_rows_sql(
|
||||||
|
trim($data_macro['value'], ';')
|
||||||
|
);
|
||||||
|
|
||||||
|
error_reporting($error_reporting);
|
||||||
|
|
||||||
|
if ($data_query === false) {
|
||||||
|
$value_query = __('Error: %s', $config['dbconnection']->error);
|
||||||
|
} else {
|
||||||
|
$width = 210;
|
||||||
|
if (isset($data_macro['width']) === true
|
||||||
|
&& empty($data_macro['width']) === false
|
||||||
|
) {
|
||||||
|
$width = $data_macro['width'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$height = 210;
|
||||||
|
if (isset($data_macro['height']) === true
|
||||||
|
&& empty($data_macro['height']) === false
|
||||||
|
) {
|
||||||
|
$height = $data_macro['height'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Allow to paint horizontal and vertical bar graphs for the moment only pie graphs.
|
||||||
|
$type = 'sql_graph_pie';
|
||||||
|
|
||||||
|
$SQL_GRAPH_MAX_LABEL_SIZE = 5;
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
|
$flagOther = false;
|
||||||
|
foreach ($data_query as $data_item) {
|
||||||
|
$count++;
|
||||||
|
$value = 0;
|
||||||
|
if (empty($data_item['value']) === false) {
|
||||||
|
$value = $data_item['value'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($count <= 5) {
|
||||||
|
$label = __('Data');
|
||||||
|
if (empty($data_item['label']) === false) {
|
||||||
|
$label = io_safe_output($data_item['label']);
|
||||||
|
if (strlen($label) > $SQL_GRAPH_MAX_LABEL_SIZE) {
|
||||||
|
$first_label = $label;
|
||||||
|
$label = substr(
|
||||||
|
$first_label,
|
||||||
|
0,
|
||||||
|
floor($SQL_GRAPH_MAX_LABEL_SIZE / 2)
|
||||||
|
);
|
||||||
|
$label .= '...<br>';
|
||||||
|
$label .= substr(
|
||||||
|
$first_label,
|
||||||
|
floor(-$SQL_GRAPH_MAX_LABEL_SIZE / 2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($type) {
|
||||||
|
case 'sql_graph_vbar':
|
||||||
|
default:
|
||||||
|
// Vertical bar.
|
||||||
|
$data[] = [
|
||||||
|
'tick' => $label.'_'.$count,
|
||||||
|
'data' => $value,
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sql_graph_hbar':
|
||||||
|
// Horizontal bar.
|
||||||
|
$data[$label.'_'.$count]['g'] = $value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sql_graph_pie':
|
||||||
|
// Pie.
|
||||||
|
$data[$label.'_'.$count] = $value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch ($type) {
|
||||||
|
case 'sql_graph_vbar':
|
||||||
|
default:
|
||||||
|
// Vertical bar.
|
||||||
|
if ($flagOther === false) {
|
||||||
|
$data[] = [
|
||||||
|
'tick' => __('Other'),
|
||||||
|
'data' => $value,
|
||||||
|
];
|
||||||
|
|
||||||
|
$flagOther = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data[(count($data) - 1)]['data'] += $value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sql_graph_hbar':
|
||||||
|
// Horizontal bar.
|
||||||
|
if (isset($data[__('Other')]['g']) === false) {
|
||||||
|
$data[__('Other')]['g'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data[__('Other')]['g'] += $value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sql_graph_pie':
|
||||||
|
// Pie.
|
||||||
|
if (isset($data[__('Other')]) === false) {
|
||||||
|
$data[__('Other')] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data[__('Other')] += $value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$value_query = pie_graph(
|
||||||
|
$data,
|
||||||
|
$width,
|
||||||
|
$height,
|
||||||
|
__('other'),
|
||||||
|
ui_get_full_url(false, false, false, false),
|
||||||
|
'',
|
||||||
|
$config['fontpath'],
|
||||||
|
$config['font_size'],
|
||||||
|
($pdf === true) ? 2 : 1,
|
||||||
|
'hidden',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$substitutions[] = $value_query;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
// Type: Simple graph.
|
||||||
|
$patterns[] = addslashes(
|
||||||
|
'/_'.$data_macro['name'].'_/'
|
||||||
|
);
|
||||||
|
|
||||||
|
$height = $config['graph_image_height'];
|
||||||
|
if (isset($data_macro['height']) === true
|
||||||
|
&& empty($data_macro['height']) === false
|
||||||
|
) {
|
||||||
|
$height = $data_macro['height'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$period = SECONDS_1DAY;
|
||||||
|
if (isset($data_macro['period']) === true
|
||||||
|
&& empty($data_macro['period']) === false
|
||||||
|
) {
|
||||||
|
$period = $data_macro['period'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
$server = db_get_row(
|
||||||
|
'tmetaconsole_setup',
|
||||||
|
'id',
|
||||||
|
$data_macro['server_id']
|
||||||
|
);
|
||||||
|
if (metaconsole_connect($server) != NOERR) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$params = [
|
||||||
|
'agent_module_id' => $data_macro['id_agent_module'],
|
||||||
|
'period' => $period,
|
||||||
|
'title' => '',
|
||||||
|
'label' => '',
|
||||||
|
'pure' => false,
|
||||||
|
'only_image' => true,
|
||||||
|
'homeurl' => ui_get_full_url(
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
'ttl' => ($pdf === true) ? 2 : 1,
|
||||||
|
'show_unknown' => true,
|
||||||
|
'height' => $height,
|
||||||
|
'backgroundColor' => 'transparent',
|
||||||
|
'return_img_base_64' => true,
|
||||||
|
'server_id' => (is_metaconsole() === true) ? $data_macro['server_id'] : 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
$substitutions[] = '<img style="max-width:100%;" src="data:image/png;base64,'.grafico_modulo_sparse($params).'" />';
|
||||||
|
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
metaconsole_restore_db();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Not possible.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$return['data'] = preg_replace(
|
||||||
|
$patterns,
|
||||||
|
$substitutions,
|
||||||
|
$content['render_definition']
|
||||||
|
);
|
||||||
|
|
||||||
|
return reporting_check_structure_content($return);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function agents_get_network_interfaces_array(
|
function agents_get_network_interfaces_array(
|
||||||
$network_interfaces_by_agents,
|
$network_interfaces_by_agents,
|
||||||
$return,
|
$return,
|
||||||
@ -9940,10 +10258,12 @@ function reporting_get_date_text($report=null, $content=null)
|
|||||||
if (!empty($report) && !empty($content)) {
|
if (!empty($report) && !empty($content)) {
|
||||||
if ($content['period'] == 0) {
|
if ($content['period'] == 0) {
|
||||||
$es = json_decode($content['external_source'], true);
|
$es = json_decode($content['external_source'], true);
|
||||||
if ($es['date'] == 0) {
|
if (empty($es) === false) {
|
||||||
$return['period'] = 0;
|
if ($es['date'] == 0) {
|
||||||
} else {
|
$return['period'] = 0;
|
||||||
$return['date'] = $es['date'];
|
} else {
|
||||||
|
$return['date'] = $es['date'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$return['period'] = $content['period'];
|
$return['period'] = $content['period'];
|
||||||
|
@ -350,6 +350,10 @@ function reporting_html_print_report($report, $mini=false, $report_info=1)
|
|||||||
reporting_html_network_interfaces_report($table, $item);
|
reporting_html_network_interfaces_report($table, $item);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'custom_render':
|
||||||
|
reporting_html_custom_render($table, $item);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'group_configuration':
|
case 'group_configuration':
|
||||||
reporting_html_group_configuration($table, $item);
|
reporting_html_group_configuration($table, $item);
|
||||||
break;
|
break;
|
||||||
@ -1807,9 +1811,9 @@ function reporting_html_agent_module($table, $item)
|
|||||||
if (!empty($item['failed'])) {
|
if (!empty($item['failed'])) {
|
||||||
$table->data['agent_module']['cell'] = $item['failed'];
|
$table->data['agent_module']['cell'] = $item['failed'];
|
||||||
} else {
|
} else {
|
||||||
$table_data = '<table cellpadding="1" cellspacing="4" cellspacing="0" border="0" class="bg_eee">';
|
$table_data = '<table class="border_table" cellpadding="0" cellspacing="0" cellspacing="0">';
|
||||||
|
$table_data .= '<tr class="border_th">';
|
||||||
$table_data .= '<th>'.__('Agents').' / '.__('Modules').'</th>';
|
$table_data .= '<th class="bg_th">'.__('Agents').' / '.__('Modules').'</th>';
|
||||||
|
|
||||||
$first = reset($item['data']);
|
$first = reset($item['data']);
|
||||||
$list_modules = $first['modules'];
|
$list_modules = $first['modules'];
|
||||||
@ -1823,11 +1827,14 @@ function reporting_html_agent_module($table, $item)
|
|||||||
false,
|
false,
|
||||||
'...'
|
'...'
|
||||||
);
|
);
|
||||||
$table_data .= '<th class="pdd_10px">'.$file_name.'</th>';
|
|
||||||
|
$table_data .= '<th class="pdd_10px bg_th">'.$file_name.'</th>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$table_data .= '</tr>';
|
||||||
|
|
||||||
foreach ($item['data'] as $row) {
|
foreach ($item['data'] as $row) {
|
||||||
$table_data .= "<tr class='height_35px;'>";
|
$table_data .= "<tr class='height_35px border_tr'>";
|
||||||
switch ($row['agent_status']) {
|
switch ($row['agent_status']) {
|
||||||
case AGENT_STATUS_ALERT_FIRED:
|
case AGENT_STATUS_ALERT_FIRED:
|
||||||
$rowcolor = COL_ALERTFIRED;
|
$rowcolor = COL_ALERTFIRED;
|
||||||
@ -1865,118 +1872,122 @@ function reporting_html_agent_module($table, $item)
|
|||||||
false,
|
false,
|
||||||
'...'
|
'...'
|
||||||
);
|
);
|
||||||
$table_data .= "<td style='background-color: ".$rowcolor.";'>".$file_name.'</td>';
|
$table_data .= '<td class="pdd_6px left">'.$file_name.'</td>';
|
||||||
|
|
||||||
foreach ($row['modules'] as $module_name => $module) {
|
foreach ($row['modules'] as $module_name => $module) {
|
||||||
if ($module === null) {
|
if ($module === null) {
|
||||||
$table_data .= "<td class='bg_dd;'></td>";
|
$table_data .= '<td></td>';
|
||||||
} else {
|
} else {
|
||||||
$table_data .= "<td class='center bg_ddd'>";
|
$table_data .= "<td class='center'>";
|
||||||
switch ($module) {
|
if (isset($row['show_type']) === true && $row['show_type'] === '1') {
|
||||||
default:
|
$table_data .= $module;
|
||||||
case AGENT_STATUS_NORMAL:
|
} else {
|
||||||
$table_data .= ui_print_status_image(
|
switch ($module) {
|
||||||
'module_ok.png',
|
case AGENT_STATUS_CRITICAL:
|
||||||
__(
|
$table_data .= ui_print_status_image(
|
||||||
'%s in %s : NORMAL',
|
'module_critical.png',
|
||||||
$module_name,
|
__(
|
||||||
$row['agent_name']
|
'%s in %s : CRITICAL',
|
||||||
),
|
$module_name,
|
||||||
true,
|
$row['agent_name']
|
||||||
[
|
),
|
||||||
'width' => '20px',
|
true,
|
||||||
'height' => '20px',
|
[
|
||||||
],
|
'width' => '20px',
|
||||||
'images/status_sets/default/'
|
'height' => '20px',
|
||||||
);
|
],
|
||||||
break;
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case AGENT_STATUS_CRITICAL:
|
case AGENT_STATUS_WARNING:
|
||||||
$table_data .= ui_print_status_image(
|
$table_data .= ui_print_status_image(
|
||||||
'module_critical.png',
|
'module_warning.png',
|
||||||
__(
|
__(
|
||||||
'%s in %s : CRITICAL',
|
'%s in %s : WARNING',
|
||||||
$module_name,
|
$module_name,
|
||||||
$row['agent_name']
|
$row['agent_name']
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
[
|
[
|
||||||
'width' => '20px',
|
'width' => '20px',
|
||||||
'height' => '20px',
|
'height' => '20px',
|
||||||
],
|
],
|
||||||
'images/status_sets/default/'
|
'images/status_sets/default/'
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AGENT_STATUS_WARNING:
|
case AGENT_STATUS_UNKNOWN:
|
||||||
$table_data .= ui_print_status_image(
|
$table_data .= ui_print_status_image(
|
||||||
'module_warning.png',
|
'module_unknown.png',
|
||||||
__(
|
__(
|
||||||
'%s in %s : WARNING',
|
'%s in %s : UNKNOWN',
|
||||||
$module_name,
|
$module_name,
|
||||||
$row['agent_name']
|
$row['agent_name']
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
[
|
[
|
||||||
'width' => '20px',
|
'width' => '20px',
|
||||||
'height' => '20px',
|
'height' => '20px',
|
||||||
],
|
],
|
||||||
'images/status_sets/default/'
|
'images/status_sets/default/'
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AGENT_STATUS_UNKNOWN:
|
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
||||||
$table_data .= ui_print_status_image(
|
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||||
'module_unknown.png',
|
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||||
__(
|
$table_data .= ui_print_status_image(
|
||||||
'%s in %s : UNKNOWN',
|
'module_alertsfired.png',
|
||||||
$module_name,
|
__(
|
||||||
$row['agent_name']
|
'%s in %s : ALERTS FIRED',
|
||||||
),
|
$module_name,
|
||||||
true,
|
$row['agent_name']
|
||||||
[
|
),
|
||||||
'width' => '20px',
|
true,
|
||||||
'height' => '20px',
|
[
|
||||||
],
|
'width' => '20px',
|
||||||
'images/status_sets/default/'
|
'height' => '20px',
|
||||||
);
|
],
|
||||||
break;
|
'images/status_sets/default/'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
case 4:
|
||||||
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
$table_data .= ui_print_status_image(
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
'module_no_data.png',
|
||||||
$table_data .= ui_print_status_image(
|
__(
|
||||||
'module_alertsfired.png',
|
'%s in %s : Not initialize',
|
||||||
__(
|
$module_name,
|
||||||
'%s in %s : ALERTS FIRED',
|
$row['agent_name']
|
||||||
$module_name,
|
),
|
||||||
$row['agent_name']
|
true,
|
||||||
),
|
[
|
||||||
true,
|
'width' => '20px',
|
||||||
[
|
'height' => '20px',
|
||||||
'width' => '20px',
|
],
|
||||||
'height' => '20px',
|
'images/status_sets/default/'
|
||||||
],
|
);
|
||||||
'images/status_sets/default/'
|
break;
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
default:
|
||||||
$table_data .= ui_print_status_image(
|
case AGENT_STATUS_NORMAL:
|
||||||
'module_no_data.png',
|
$table_data .= ui_print_status_image(
|
||||||
__(
|
'module_ok.png',
|
||||||
'%s in %s : Not initialize',
|
__(
|
||||||
$module_name,
|
'%s in %s : NORMAL',
|
||||||
$row['agent_name']
|
$module_name,
|
||||||
),
|
$row['agent_name']
|
||||||
true,
|
),
|
||||||
[
|
true,
|
||||||
'width' => '20px',
|
[
|
||||||
'height' => '20px',
|
'width' => '20px',
|
||||||
],
|
'height' => '20px',
|
||||||
'images/status_sets/default/'
|
],
|
||||||
);
|
'images/status_sets/default/'
|
||||||
break;
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$table_data .= '</td>';
|
$table_data .= '</td>';
|
||||||
@ -1986,18 +1997,19 @@ function reporting_html_agent_module($table, $item)
|
|||||||
|
|
||||||
$table_data .= '</table>';
|
$table_data .= '</table>';
|
||||||
|
|
||||||
$table_data .= "<div class='legend_basic w96p'>";
|
if (isset($row['show_type']) === false) {
|
||||||
|
$table_data .= "<div class='legend_basic w96p'>";
|
||||||
$table_data .= '<table>';
|
$table_data .= '<table>';
|
||||||
$table_data .= "<tr><td colspan='2' class='pdd_b_10px'><b>".__('Legend').'</b></td></tr>';
|
$table_data .= "<tr><td colspan='2' class='pdd_b_10px'><b>".__('Legend').'</b></td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></td><td>".__('Orange cell when the module has fired alerts').'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></td><td>".__('Orange cell when the module has fired alerts').'</td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></td><td>".__('Red cell when the module has a critical status').'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></td><td>".__('Red cell when the module has a critical status').'</td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></td><td>".__('Yellow cell when the module has a warning status').'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></td><td>".__('Yellow cell when the module has a warning status').'</td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></td><td>".__('Green cell when the module has a normal status').'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></td><td>".__('Green cell when the module has a normal status').'</td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></td><td>".__('Grey cell when the module has an unknown status').'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></td><td>".__('Grey cell when the module has an unknown status').'</td></tr>';
|
||||||
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></td><td>".__("Cell turns grey when the module is in 'not initialize' status").'</td></tr>';
|
$table_data .= "<tr><td class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></td><td>".__("Cell turns grey when the module is in 'not initialize' status").'</td></tr>';
|
||||||
$table_data .= '</table>';
|
$table_data .= '</table>';
|
||||||
$table_data .= '</div>';
|
$table_data .= '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
$table->data['agent_module']['cell'] = $table_data;
|
$table->data['agent_module']['cell'] = $table_data;
|
||||||
}
|
}
|
||||||
@ -3052,6 +3064,47 @@ function reporting_html_network_interfaces_report($table, $item, $pdf=0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This type of report element will generate the interface graphs
|
||||||
|
* of all those devices that belong to the selected group.
|
||||||
|
*
|
||||||
|
* @param object $table Head table or false if it comes from pdf.
|
||||||
|
* @param array $item Items data.
|
||||||
|
* @param boolean $pdf If it comes from pdf.
|
||||||
|
*
|
||||||
|
* @return string HTML code.
|
||||||
|
*/
|
||||||
|
function reporting_html_custom_render($table, $item, $pdf=0)
|
||||||
|
{
|
||||||
|
$return_pdf = '';
|
||||||
|
if (empty($item['failed']) === false) {
|
||||||
|
if ($pdf === 0) {
|
||||||
|
$table->colspan['interfaces']['cell'] = 3;
|
||||||
|
$table->cellstyle['interfaces']['cell'] = 'text-align: left;';
|
||||||
|
$table->data['interfaces']['cell'] = $item['failed'];
|
||||||
|
} else {
|
||||||
|
$return_pdf .= $item['failed'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$output = '<div id="reset-styles">';
|
||||||
|
$output .= $item['data'];
|
||||||
|
$output .= '</div>';
|
||||||
|
|
||||||
|
if ($pdf === 1) {
|
||||||
|
$return_pdf .= $output;
|
||||||
|
} else {
|
||||||
|
$id = uniqid();
|
||||||
|
$table->colspan[$id][0] = 3;
|
||||||
|
$table->data[$id] = $output;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($pdf !== 0) {
|
||||||
|
return $return_pdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unified alert report HTML
|
* Unified alert report HTML
|
||||||
*/
|
*/
|
||||||
|
@ -818,6 +818,13 @@ function reports_get_report_types($template=false, $not_editor=false)
|
|||||||
'optgroup' => __('Grouped'),
|
'optgroup' => __('Grouped'),
|
||||||
'name' => __('Network interfaces'),
|
'name' => __('Network interfaces'),
|
||||||
];
|
];
|
||||||
|
if (!$template) {
|
||||||
|
$types['custom_render'] = [
|
||||||
|
'optgroup' => __('Grouped'),
|
||||||
|
'name' => __('Custom Render'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$types['availability'] = [
|
$types['availability'] = [
|
||||||
'optgroup' => __('Grouped'),
|
'optgroup' => __('Grouped'),
|
||||||
'name' => __('Availability'),
|
'name' => __('Availability'),
|
||||||
@ -1031,3 +1038,366 @@ function reports_copy_report($id_report)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Table custom macros.
|
||||||
|
*
|
||||||
|
* @param string $data JSON.
|
||||||
|
*
|
||||||
|
* @return string Html output.
|
||||||
|
*/
|
||||||
|
function get_table_custom_macros_report($data)
|
||||||
|
{
|
||||||
|
$table = new StdClass();
|
||||||
|
$table->data = [];
|
||||||
|
$table->width = '100%';
|
||||||
|
$table->class = 'databox data fullwidth';
|
||||||
|
$table->id = 'table-macros-definition';
|
||||||
|
$table->rowclass = [];
|
||||||
|
|
||||||
|
$table->size = [];
|
||||||
|
$table->size['name'] = '20%';
|
||||||
|
$table->size['type'] = '20%';
|
||||||
|
$table->size['value'] = '50%';
|
||||||
|
$table->size['op'] = '10%';
|
||||||
|
|
||||||
|
$table->head = [];
|
||||||
|
$table->head['name'] = __('Macro');
|
||||||
|
$table->head['type'] = __('Type');
|
||||||
|
$table->head['value'] = __('Value');
|
||||||
|
$table->head['op'] = html_print_image(
|
||||||
|
'images/add.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'class' => 'invert_filter btn_debugModule',
|
||||||
|
'style' => 'cursor: pointer; filter: invert(100%);',
|
||||||
|
'onclick' => 'addCustomFieldRow();',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$list_macro_custom_type = [
|
||||||
|
0 => __('String'),
|
||||||
|
1 => __('Sql'),
|
||||||
|
2 => __('Graph Sql'),
|
||||||
|
3 => __('Simple graph'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = json_decode($data, true);
|
||||||
|
if (is_array($data) === false || empty($data) === true) {
|
||||||
|
$data = [];
|
||||||
|
$data[0] = [
|
||||||
|
'name' => '',
|
||||||
|
'type' => 0,
|
||||||
|
'value' => '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data = [];
|
||||||
|
foreach ($data as $key_macro => $value_data_macro) {
|
||||||
|
$table->rowclass[$key_macro] = 'tr-macros-definition';
|
||||||
|
$table->data[$key_macro]['name'] = html_print_input_text_extended(
|
||||||
|
'macro_custom_name[]',
|
||||||
|
$value_data_macro['name'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_name' : 'macro_custom_name_'.$key_macro,
|
||||||
|
'',
|
||||||
|
15,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'class="fullwidth"',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data[$key_macro]['name'] .= html_print_input_hidden(
|
||||||
|
'macro_custom_key[]',
|
||||||
|
$key_macro,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
($key_macro === 0) ? 'macro_custom_key' : 'macro_custom_key_'.$key_macro
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data[$key_macro]['type'] = html_print_select(
|
||||||
|
$list_macro_custom_type,
|
||||||
|
'macro_custom_type[]',
|
||||||
|
$value_data_macro['type'],
|
||||||
|
'change_custom_fields_macros_report('.$key_macro.')',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'fullwidth',
|
||||||
|
false,
|
||||||
|
'height: 32px;',
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
$custom_fields = custom_fields_macros_report(
|
||||||
|
$value_data_macro,
|
||||||
|
$key_macro
|
||||||
|
);
|
||||||
|
|
||||||
|
$custom_field_draw = '';
|
||||||
|
if (empty($custom_fields) === false) {
|
||||||
|
foreach ($custom_fields as $key => $value) {
|
||||||
|
$custom_field_draw .= $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data[$key_macro]['value'] = $custom_field_draw;
|
||||||
|
|
||||||
|
$table->data[$key_macro]['op'] = html_print_image(
|
||||||
|
'images/clean.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'class' => 'invert_filter icon-clean-custom-macro',
|
||||||
|
'style' => 'cursor: pointer;',
|
||||||
|
'onclick' => 'cleanCustomFieldRow('.$key_macro.')',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$styles_remove = 'cursor: pointer; margin-right:10px;';
|
||||||
|
if ($key_macro === 0) {
|
||||||
|
$styles_remove .= 'display:none';
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data[$key_macro]['op'] .= html_print_image(
|
||||||
|
'images/delete.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'class' => 'invert_filter icon-delete-custom-macro',
|
||||||
|
'style' => $styles_remove,
|
||||||
|
'onclick' => 'removeCustomFieldRow('.$key_macro.')',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return html_print_table(
|
||||||
|
$table,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom field macros report
|
||||||
|
*
|
||||||
|
* @param array $macro Info macro.
|
||||||
|
* @param string $key_macro Key.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function custom_fields_macros_report($macro, $key_macro)
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
switch ($macro['type']) {
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
$result['value'] = '<div class="custom-field-macro-report">';
|
||||||
|
$result['value'] .= '<label>';
|
||||||
|
$result['value'] .= ($macro['type'] == 0) ? __('String') : __('Sql');
|
||||||
|
$result['value'] .= '</label>';
|
||||||
|
$result['value'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value[]',
|
||||||
|
$macro['value'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_value' : 'macro_custom_value_'.$key_macro,
|
||||||
|
'',
|
||||||
|
15,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$result['value'] .= '</div>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
$result['value'] = '<div class="custom-field-macro-report mb10">';
|
||||||
|
$result['value'] .= '<label>';
|
||||||
|
$result['value'] .= __('Sql');
|
||||||
|
$result['value'] .= '</label>';
|
||||||
|
$result['value'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value['.$key_macro.'][value]',
|
||||||
|
$macro['value'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_value' : 'macro_custom_value_'.$key_macro,
|
||||||
|
'',
|
||||||
|
15,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'class="fullwidth"',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$result['value'] .= '</div>';
|
||||||
|
|
||||||
|
$result['size'] = '<div class="custom-field-macro-report">';
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Width');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value['.$key_macro.'][width]',
|
||||||
|
$macro['width'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_width' : 'macro_custom_width_'.$key_macro,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Height');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value['.$key_macro.'][height]',
|
||||||
|
$macro['height'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_height' : 'macro_custom_height_'.$key_macro,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$result['size'] .= '</div>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
$params = [];
|
||||||
|
$params['show_helptip'] = true;
|
||||||
|
$params['input_name'] = 'macro_custom_value_agent_name_'.$key_macro;
|
||||||
|
$params['print_hidden_input_idagent'] = true;
|
||||||
|
$params['hidden_input_idagent_id'] = 'macro_custom_value_agent_id_'.$key_macro;
|
||||||
|
$params['hidden_input_idagent_name'] = 'macro_custom_value['.$key_macro.'][agent_id]';
|
||||||
|
$params['hidden_input_idagent_value'] = $macro['agent_id'];
|
||||||
|
$params['javascript_is_function_select'] = true;
|
||||||
|
$params['selectbox_id'] = 'macro_custom_value'.$key_macro.'id_agent_module';
|
||||||
|
$params['add_none_module'] = false;
|
||||||
|
$params['return'] = true;
|
||||||
|
$params['disabled_javascript_on_blur_function'] = true;
|
||||||
|
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
$params['print_input_id_server'] = true;
|
||||||
|
$params['metaconsole_enabled'] = true;
|
||||||
|
$params['input_id_server_id'] = 'macro_custom_value_id_server_'.$key_macro;
|
||||||
|
$params['input_id_server_name'] = 'macro_custom_value['.$key_macro.'][server_id]';
|
||||||
|
$params['input_id_server_value'] = $macro['server_id'];
|
||||||
|
$params['value'] = agents_meta_get_alias(
|
||||||
|
$macro['agent_id'],
|
||||||
|
'none',
|
||||||
|
$macro['server_id'],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$params['value'] = agents_get_alias($macro['agent_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result['size'] = '<div class="custom-field-macro-report mb10">';
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Agent');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= ui_print_agent_autocomplete_input($params);
|
||||||
|
|
||||||
|
$modules = [];
|
||||||
|
if (isset($macro['agent_id']) === true
|
||||||
|
&& empty($macro['agent_id']) === false
|
||||||
|
) {
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
$server = db_get_row(
|
||||||
|
'tmetaconsole_setup',
|
||||||
|
'id',
|
||||||
|
$macro['server_id']
|
||||||
|
);
|
||||||
|
if (metaconsole_connect($server) != NOERR) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$modules = agents_get_modules(
|
||||||
|
$macro['agent_id'],
|
||||||
|
false,
|
||||||
|
['delete_pending' => 0]
|
||||||
|
);
|
||||||
|
|
||||||
|
if (is_metaconsole() === true) {
|
||||||
|
metaconsole_restore_db();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Module');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= html_print_select(
|
||||||
|
$modules,
|
||||||
|
'macro_custom_value['.$key_macro.'][id_agent_module]',
|
||||||
|
$macro['id_agent_module'],
|
||||||
|
true,
|
||||||
|
__('Select'),
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
(empty($macro['agent_id']) === true),
|
||||||
|
'min-width: 250px;margin-right: 0.5em;'
|
||||||
|
);
|
||||||
|
$result['size'] .= '</div>';
|
||||||
|
|
||||||
|
$result['size'] .= '<div class="custom-field-macro-report">';
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Height');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value['.$key_macro.'][height]',
|
||||||
|
$macro['height'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_height' : 'macro_custom_height_'.$key_macro,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$result['size'] .= '<label>';
|
||||||
|
$result['size'] .= __('Period ');
|
||||||
|
$result['size'] .= '</label>';
|
||||||
|
$result['size'] .= html_print_input_text_extended(
|
||||||
|
'macro_custom_value['.$key_macro.'][period]',
|
||||||
|
$macro['period'],
|
||||||
|
($key_macro === 0) ? 'macro_custom_period' : 'macro_custom_period_'.$key_macro,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
255,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
$result['size'] .= '</div>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Not possible.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
@ -862,7 +862,7 @@ function visual_map_print_item(
|
|||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
// ui_print_error_message ("Error connecting to ".$server_name);
|
// ui_print_error_message ("Error connecting to ".$server_name);
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -967,7 +967,7 @@ function visual_map_print_item(
|
|||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
// ui_print_error_message ("Error connecting to ".$server_name);
|
// ui_print_error_message ("Error connecting to ".$server_name);
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1113,7 +1113,7 @@ function visual_map_print_item(
|
|||||||
['id' => $layoutData['id_metaconsole']]
|
['id' => $layoutData['id_metaconsole']]
|
||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1411,7 +1411,7 @@ function visual_map_print_item(
|
|||||||
if (!empty($id_metaconsole)) {
|
if (!empty($id_metaconsole)) {
|
||||||
$connection = db_get_row_filter('tmetaconsole_setup', $id_metaconsole);
|
$connection = db_get_row_filter('tmetaconsole_setup', $id_metaconsole);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1719,7 +1719,7 @@ function visual_map_print_item(
|
|||||||
['id' => $layoutData['id_metaconsole']]
|
['id' => $layoutData['id_metaconsole']]
|
||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2173,7 +2173,7 @@ function visual_map_print_item(
|
|||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
// ui_print_error_message ("Error connecting to ".$server_name);
|
// ui_print_error_message ("Error connecting to ".$server_name);
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3299,7 +3299,7 @@ function visual_map_get_status_element($layoutData)
|
|||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
// ui_print_error_message ("Error connecting to ".$server_name);
|
// ui_print_error_message ("Error connecting to ".$server_name);
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3385,7 +3385,7 @@ function visual_map_get_status_element($layoutData)
|
|||||||
);
|
);
|
||||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||||
// ui_print_error_message ("Error connecting to ".$server_name);
|
// ui_print_error_message ("Error connecting to ".$server_name);
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ function pandoraFlotPie(
|
|||||||
'<div style="font-size:' +
|
'<div style="font-size:' +
|
||||||
font_size +
|
font_size +
|
||||||
"pt;" +
|
"pt;" +
|
||||||
'text-align:center;padding:2px;color:white;">' +
|
'text-align:center;padding:2px;color:#4a4a4a;">' +
|
||||||
label +
|
label +
|
||||||
"<br/>" +
|
"<br/>" +
|
||||||
series.percent.toFixed(2) +
|
series.percent.toFixed(2) +
|
||||||
|
@ -102,7 +102,7 @@ function fullCalendarPandora(calendarEl, options, settings, initialEvents) {
|
|||||||
function select_alert_template(info, calendar) {
|
function select_alert_template(info, calendar) {
|
||||||
var nextDay = info.start.getDay() === 6 ? 0 : info.start.getDay() + 1;
|
var nextDay = info.start.getDay() === 6 ? 0 : info.start.getDay() + 1;
|
||||||
if (
|
if (
|
||||||
info.start.getDay() == info.end.getDay() ||
|
(info.start.getDay() == info.end.getDay() && info.start < info.end) ||
|
||||||
(nextDay == info.end.getDay() && time_format(info.end) == "00:00:00")
|
(nextDay == info.end.getDay() && time_format(info.end) == "00:00:00")
|
||||||
) {
|
) {
|
||||||
recalculate_events(calendar, {}, info.start, info.end, true);
|
recalculate_events(calendar, {}, info.start, info.end, true);
|
||||||
@ -282,7 +282,6 @@ function eventClick_alert_template(info, calendar, settings) {
|
|||||||
onAccept: function() {
|
onAccept: function() {
|
||||||
var replace_day_from = $("#hidden-day_from").val();
|
var replace_day_from = $("#hidden-day_from").val();
|
||||||
var replace_time_from = $("#text-time_from_event").val();
|
var replace_time_from = $("#text-time_from_event").val();
|
||||||
|
|
||||||
var array_time_from = replace_time_from.split(":");
|
var array_time_from = replace_time_from.split(":");
|
||||||
var new_date_from = new Date(calendar_days[replace_day_from]);
|
var new_date_from = new Date(calendar_days[replace_day_from]);
|
||||||
new_date_from.setHours(
|
new_date_from.setHours(
|
||||||
@ -294,8 +293,13 @@ function eventClick_alert_template(info, calendar, settings) {
|
|||||||
var replace_day_to = $("#hidden-day_to").val();
|
var replace_day_to = $("#hidden-day_to").val();
|
||||||
var replace_time_to = $("#text-time_to_event").val();
|
var replace_time_to = $("#text-time_to_event").val();
|
||||||
if (replace_time_to === "23:59:59") {
|
if (replace_time_to === "23:59:59") {
|
||||||
replace_day_to++;
|
if (replace_day_to == 6) {
|
||||||
replace_time_to = "00:00:00";
|
replace_day_to = 0;
|
||||||
|
replace_time_to = "00:00:00";
|
||||||
|
} else if (replace_day_to != 0) {
|
||||||
|
replace_day_to++;
|
||||||
|
replace_time_to = "00:00:00";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var array_time_to = replace_time_to.split(":");
|
var array_time_to = replace_time_to.split(":");
|
||||||
|
@ -518,8 +518,8 @@ function confirmDialog(settings) {
|
|||||||
hideOkButton +
|
hideOkButton +
|
||||||
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
|
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
|
||||||
click: function() {
|
click: function() {
|
||||||
$(this).dialog("close");
|
|
||||||
if (typeof settings.onAccept == "function") settings.onAccept();
|
if (typeof settings.onAccept == "function") settings.onAccept();
|
||||||
|
$(this).dialog("close");
|
||||||
$(this).remove();
|
$(this).remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -547,7 +547,13 @@ function confirmDialog(settings) {
|
|||||||
.dialog({
|
.dialog({
|
||||||
open: settings.open,
|
open: settings.open,
|
||||||
title: settings.title,
|
title: settings.title,
|
||||||
close: false,
|
close: function() {
|
||||||
|
if (typeof settings.notCloseOnDeny == "undefined") {
|
||||||
|
$(this).dialog("close");
|
||||||
|
$(this).remove();
|
||||||
|
}
|
||||||
|
if (typeof settings.onDeny == "function") settings.onDeny();
|
||||||
|
},
|
||||||
width: settings.size,
|
width: settings.size,
|
||||||
maxHeight: settings.maxHeight,
|
maxHeight: settings.maxHeight,
|
||||||
modal: true,
|
modal: true,
|
||||||
|
@ -200,6 +200,10 @@ class AgentModuleWidget extends Widget
|
|||||||
// Retrieve global - common inputs.
|
// Retrieve global - common inputs.
|
||||||
$values = parent::decoders($decoder);
|
$values = parent::decoders($decoder);
|
||||||
|
|
||||||
|
if (isset($decoder['mTypeShow']) === true) {
|
||||||
|
$values['mTypeShow'] = $decoder['mTypeShow'];
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($decoder['mGroup']) === true) {
|
if (isset($decoder['mGroup']) === true) {
|
||||||
$values['mGroup'] = $decoder['mGroup'];
|
$values['mGroup'] = $decoder['mGroup'];
|
||||||
}
|
}
|
||||||
@ -246,6 +250,29 @@ class AgentModuleWidget extends Widget
|
|||||||
'label' => __('Filter modules'),
|
'label' => __('Filter modules'),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Type show.
|
||||||
|
$show_select = [
|
||||||
|
0 => __('Show module status'),
|
||||||
|
1 => __('Show module data'),
|
||||||
|
];
|
||||||
|
|
||||||
|
if (empty($this->values['mModules']) === true && empty($this->values['mTypeShow'])) {
|
||||||
|
$this->values['mTypeShow'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$inputs[] = [
|
||||||
|
'class' => 'flex flex-row',
|
||||||
|
'label' => __('Information to be shown'),
|
||||||
|
'arguments' => [
|
||||||
|
'type' => 'select',
|
||||||
|
'fields' => $show_select,
|
||||||
|
'name' => 'filtered-type-show-'.$this->cellId,
|
||||||
|
'return' => true,
|
||||||
|
'id' => 'filtered-type-show-'.$this->cellId,
|
||||||
|
'selected' => ($this->values['mTypeShow'] === null) ? 0 : $this->values['mTypeShow'],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
$return_all_group = false;
|
$return_all_group = false;
|
||||||
|
|
||||||
if (users_can_manage_group_all('RM') || $this->values['mGroup'] == 0) {
|
if (users_can_manage_group_all('RM') || $this->values['mGroup'] == 0) {
|
||||||
@ -285,6 +312,10 @@ class AgentModuleWidget extends Widget
|
|||||||
// Retrieve global - common inputs.
|
// Retrieve global - common inputs.
|
||||||
$values = parent::getPost();
|
$values = parent::getPost();
|
||||||
|
|
||||||
|
$values['mTypeShow'] = \get_parameter(
|
||||||
|
'filtered-type-show-'.$this->cellId
|
||||||
|
);
|
||||||
|
|
||||||
$values['mGroup'] = \get_parameter(
|
$values['mGroup'] = \get_parameter(
|
||||||
'filtered-module-group-'.$this->cellId
|
'filtered-module-group-'.$this->cellId
|
||||||
);
|
);
|
||||||
@ -409,7 +440,7 @@ class AgentModuleWidget extends Widget
|
|||||||
array $visualData,
|
array $visualData,
|
||||||
array $allModules
|
array $allModules
|
||||||
):string {
|
):string {
|
||||||
$style = 'display:flex; width:100%; margin: 10px;';
|
$style = 'display:flex; width:96%; margin-top: 10px;';
|
||||||
$table_data = '<div style="'.$style.'">';
|
$table_data = '<div style="'.$style.'">';
|
||||||
$table_data .= '<table class="widget_agent_module transparent mrgn_0px" cellpadding="1" cellspacing="0" border="0">';
|
$table_data .= '<table class="widget_agent_module transparent mrgn_0px" cellpadding="1" cellspacing="0" border="0">';
|
||||||
|
|
||||||
@ -478,118 +509,126 @@ class AgentModuleWidget extends Widget
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach ($row['modules'] as $module_name => $module) {
|
foreach ($row['modules'] as $module_name => $module) {
|
||||||
if ($module === null) {
|
if ($this->values['mTypeShow'] === '1') {
|
||||||
if (in_array($module_name, $allModules) === true) {
|
|
||||||
$style = 'background-color: transparent;';
|
|
||||||
$table_data .= "<td style='".$style."'>";
|
|
||||||
$table_data .= '</td>';
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$style = 'text-align: center;';
|
$style = 'text-align: center;';
|
||||||
$style .= ' background-color: transparent;';
|
$style .= ' background-color: transparent;';
|
||||||
$table_data .= "<td style='".$style."'>";
|
$table_data .= "<td style='".$style."'>";
|
||||||
switch ($module) {
|
$table_data .= $module;
|
||||||
case AGENT_STATUS_NORMAL:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_ok.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : NORMAL',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AGENT_STATUS_CRITICAL:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_critical.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : CRITICAL',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AGENT_STATUS_WARNING:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_warning.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : WARNING',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AGENT_STATUS_UNKNOWN:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_unknown.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : UNKNOWN',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_no_data.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : Not initialize',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AGENT_STATUS_ALERT_FIRED:
|
|
||||||
default:
|
|
||||||
$table_data .= \ui_print_status_image(
|
|
||||||
'module_alertsfired.png',
|
|
||||||
__(
|
|
||||||
'%s in %s : ALERTS FIRED',
|
|
||||||
$module_name,
|
|
||||||
$row['agent_alias']
|
|
||||||
),
|
|
||||||
true,
|
|
||||||
[
|
|
||||||
'width' => '20px',
|
|
||||||
'height' => '20px',
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$table_data .= '</td>';
|
$table_data .= '</td>';
|
||||||
|
} else {
|
||||||
|
if ($module === null) {
|
||||||
|
if (in_array($module_name, $allModules) === true) {
|
||||||
|
$style = 'background-color: transparent;';
|
||||||
|
$table_data .= "<td style='".$style."'>";
|
||||||
|
$table_data .= '</td>';
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$style = 'text-align: center;';
|
||||||
|
$style .= ' background-color: transparent;';
|
||||||
|
$table_data .= "<td style='".$style."'>";
|
||||||
|
switch ($module) {
|
||||||
|
case AGENT_STATUS_NORMAL:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_ok.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : NORMAL',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_CRITICAL:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_critical.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : CRITICAL',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_WARNING:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_warning.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : WARNING',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_UNKNOWN:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_unknown.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : UNKNOWN',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_no_data.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : Not initialize',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AGENT_STATUS_ALERT_FIRED:
|
||||||
|
default:
|
||||||
|
$table_data .= \ui_print_status_image(
|
||||||
|
'module_alertsfired.png',
|
||||||
|
__(
|
||||||
|
'%s in %s : ALERTS FIRED',
|
||||||
|
$module_name,
|
||||||
|
$row['agent_alias']
|
||||||
|
),
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'width' => '20px',
|
||||||
|
'height' => '20px',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$table_data .= '</td>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -743,9 +782,11 @@ class AgentModuleWidget extends Widget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$modules = $agent->searchModules(
|
if (empty($reduceAllModules) === false) {
|
||||||
['nombre' => array_keys($reduceAllModules)]
|
$modules = $agent->searchModules(
|
||||||
);
|
['nombre' => array_keys($reduceAllModules)]
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$visualData[$agent_id]['modules'] = $reduceAllModules;
|
$visualData[$agent_id]['modules'] = $reduceAllModules;
|
||||||
@ -754,7 +795,14 @@ class AgentModuleWidget extends Widget
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$visualData[$agent_id]['modules'][$module->name()] = $module->getStatus()->estado();
|
if ($this->values['mTypeShow'] === '1') {
|
||||||
|
$mod = $module->toArray();
|
||||||
|
$mod['datos'] = $module->lastValue();
|
||||||
|
$module_last_value = modules_get_agentmodule_data_for_humans($mod);
|
||||||
|
$visualData[$agent_id]['modules'][$module->name()] = $module_last_value;
|
||||||
|
} else {
|
||||||
|
$visualData[$agent_id]['modules'][$module->name()] = $module->getStatus()->estado();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bool) is_metaconsole() === true) {
|
if ((bool) is_metaconsole() === true) {
|
||||||
@ -765,7 +813,10 @@ class AgentModuleWidget extends Widget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$allModules = array_keys($reduceAllModules);
|
if (empty($reduceAllModules) === false) {
|
||||||
|
$allModules = array_keys($reduceAllModules);
|
||||||
|
}
|
||||||
|
|
||||||
if ($allModules === null) {
|
if ($allModules === null) {
|
||||||
$allModules = [];
|
$allModules = [];
|
||||||
}
|
}
|
||||||
|
271
pandora_console/include/styles/heatmap.css
Normal file
271
pandora_console/include/styles/heatmap.css
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
.mainDiv {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 750px;
|
||||||
|
height: 100%;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_10 {
|
||||||
|
fill: #82b92e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_9 {
|
||||||
|
fill: #89be38;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_8 {
|
||||||
|
fill: #8dc13d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_7 {
|
||||||
|
fill: #90c342;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_6 {
|
||||||
|
fill: #97c84c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_5 {
|
||||||
|
fill: #9dcc55;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_4 {
|
||||||
|
fill: #a4d15f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_3 {
|
||||||
|
fill: #aad569;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_2 {
|
||||||
|
fill: #b1da73;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal_1 {
|
||||||
|
fill: #b7de7c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal {
|
||||||
|
fill: #c0e28d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_10 {
|
||||||
|
fill: #e63c52;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_9 {
|
||||||
|
fill: #e8475c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_8 {
|
||||||
|
fill: #e95266;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_7 {
|
||||||
|
fill: #ea586b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_6 {
|
||||||
|
fill: #eb5d70;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_5 {
|
||||||
|
fill: #ec6879;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_4 {
|
||||||
|
fill: #ee7383;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_3 {
|
||||||
|
fill: #ef7e8c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_2 {
|
||||||
|
fill: #f08996;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical_1 {
|
||||||
|
fill: #f1939f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical {
|
||||||
|
fill: #f3a5af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_10 {
|
||||||
|
fill: #f3b200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_9 {
|
||||||
|
fill: #f5b70e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_8 {
|
||||||
|
fill: #f6ba15;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_7 {
|
||||||
|
fill: #f6bc1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_6 {
|
||||||
|
fill: #f8c12a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_5 {
|
||||||
|
fill: #f9c638;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_4 {
|
||||||
|
fill: #fbcb46;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_3 {
|
||||||
|
fill: #fcd054;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_2 {
|
||||||
|
fill: #fed562;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning_1 {
|
||||||
|
fill: #ffd970;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
fill: #ffde85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unknown_10,
|
||||||
|
.unknown_9,
|
||||||
|
.unknown_8,
|
||||||
|
.unknown_7 {
|
||||||
|
fill: #b2b2b2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unknown_6,
|
||||||
|
.unknown_5,
|
||||||
|
.unknown_4,
|
||||||
|
.unknown_3 {
|
||||||
|
fill: #c2c2c2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unknown_2,
|
||||||
|
.unknown_1,
|
||||||
|
.unknown {
|
||||||
|
fill: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notinit {
|
||||||
|
fill: #4a83f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hover:hover {
|
||||||
|
filter: brightness(1.5);
|
||||||
|
stroke-width: 0.009;
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group {
|
||||||
|
fill: none;
|
||||||
|
stroke-width: 0.03;
|
||||||
|
stroke: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.pure {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#main_pure {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#heatmap-controls {
|
||||||
|
position: fixed;
|
||||||
|
top: 30px;
|
||||||
|
right: 20px;
|
||||||
|
width: 350px;
|
||||||
|
background-color: #ececec;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#heatmap-controls div#menu_tab {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#heatmap-controls ul.white-box-content {
|
||||||
|
background-color: #ececec;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#heatmap-controls div.heatmap-title,
|
||||||
|
div#heatmap-controls div.heatmap-refr {
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-left: 3px;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
div#heatmap-controls div.heatmap-refr > div {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.refr-form {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-dialog {
|
||||||
|
width: 30%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.div-dialog {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: left;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-dialog {
|
||||||
|
width: 40%;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-dialog {
|
||||||
|
width: 60%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.polyline {
|
||||||
|
fill: none;
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-stroke {
|
||||||
|
stroke-width: 0.03;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big-stroke {
|
||||||
|
stroke-width: 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-size {
|
||||||
|
font-size: 0.2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big-size {
|
||||||
|
font-size: 0.4px;
|
||||||
|
}
|
@ -1265,6 +1265,25 @@ input.datos {
|
|||||||
.bg_caca {
|
.bg_caca {
|
||||||
background-color: #cacaca;
|
background-color: #cacaca;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bg_th {
|
||||||
|
background-color: #efeff0 !important;
|
||||||
|
color: #000;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_table {
|
||||||
|
border-collapse: collapse !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_th {
|
||||||
|
border-bottom: 2px solid #bfbfbf !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_tr {
|
||||||
|
border: 1px solid #dbdbdb !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* margins */
|
/* margins */
|
||||||
.mgn-lf-50 {
|
.mgn-lf-50 {
|
||||||
margin-left: 50px;
|
margin-left: 50px;
|
||||||
@ -8553,3 +8572,446 @@ div#err_msg_centralised {
|
|||||||
width: 90%;
|
width: 90%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.custom-field-macro-report {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-field-macro-report label {
|
||||||
|
flex: 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-field-macro-report input {
|
||||||
|
flex: 2;
|
||||||
|
}
|
||||||
|
.mb10 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#reset-styles {
|
||||||
|
font-size: 9pt;
|
||||||
|
line-height: 16pt;
|
||||||
|
padding: 0px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
/*page-break-after: always;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#reset-styles a:link {
|
||||||
|
text-decoration: underline;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
#reset-styles a:visited {
|
||||||
|
text-decoration: underline;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
#reset-styles address {
|
||||||
|
display: block;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#reset-styles area {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles article {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles aside {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles b {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#reset-styles bdo {
|
||||||
|
unicode-bidi: bidi-override;
|
||||||
|
}
|
||||||
|
#reset-styles blockquote {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 40px;
|
||||||
|
margin-right: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles body {
|
||||||
|
display: block;
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
#reset-styles body:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#reset-styles caption {
|
||||||
|
display: table-caption;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#reset-styles cite {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#reset-styles code {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
#reset-styles col {
|
||||||
|
display: table-column;
|
||||||
|
}
|
||||||
|
#reset-styles colgroup {
|
||||||
|
display: table-column-group;
|
||||||
|
}
|
||||||
|
#reset-styles datalist {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles dd {
|
||||||
|
display: block;
|
||||||
|
margin-left: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles del {
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
#reset-styles details {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#reset-styles div {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles dl {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
#reset-styles dt {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#reset-styles embed:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#reset-styles fieldset {
|
||||||
|
display: block;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 2px;
|
||||||
|
padding-top: 0.35em;
|
||||||
|
padding-bottom: 0.625em;
|
||||||
|
padding-left: 0.75em;
|
||||||
|
padding-right: 0.75em;
|
||||||
|
border: 2px groove;
|
||||||
|
}
|
||||||
|
#reset-styles figcaption {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles figure {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 40px;
|
||||||
|
margin-right: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles footer {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles form {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0em;
|
||||||
|
}
|
||||||
|
#reset-styles h1 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 2em;
|
||||||
|
margin-top: 0.67em;
|
||||||
|
margin-bottom: 0.67em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-block-start: 0.67em;
|
||||||
|
margin-block-end: 0.67em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles h2 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1.5em;
|
||||||
|
margin-top: 0.83em;
|
||||||
|
margin-bottom: 0.83em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-block-start: 0.83em;
|
||||||
|
margin-block-end: 0.83em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles h3 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1.17em;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-block-start: 1em;
|
||||||
|
margin-block-end: 1em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles h4 {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 1.33em;
|
||||||
|
margin-bottom: 1.33em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-block-start: 1.33em;
|
||||||
|
margin-block-end: 1.33em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles h5 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.83em;
|
||||||
|
margin-top: 1.67em;
|
||||||
|
margin-bottom: 1.67em;
|
||||||
|
margin-block-start: 1.67em;
|
||||||
|
margin-block-end: 1.67em;
|
||||||
|
margin-inline-start: 0px;
|
||||||
|
margin-inline-end: 0px;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles h6 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.67em;
|
||||||
|
margin-top: 2.33em;
|
||||||
|
margin-bottom: 2.33em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#reset-styles head {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles header {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles hr {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
border-style: inset;
|
||||||
|
border-width: 1px;
|
||||||
|
}
|
||||||
|
#reset-styles html {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles html:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#reset-styles i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
#reset-styles iframe:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#reset-styles iframe[seamless] {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles img {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#reset-styles ins {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
#reset-styles kbd {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
#reset-styles label {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
#reset-styles legend {
|
||||||
|
display: block;
|
||||||
|
padding-left: 2px;
|
||||||
|
padding-right: 2px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#reset-styles li {
|
||||||
|
display: list-item;
|
||||||
|
}
|
||||||
|
#reset-styles link {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles map {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#reset-styles mark {
|
||||||
|
background-color: yellow;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
#reset-styles menu {
|
||||||
|
display: block;
|
||||||
|
list-style-type: disc;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles nav {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles object:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#reset-styles ol {
|
||||||
|
display: block;
|
||||||
|
list-style-type: decimal;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles output {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#reset-styles p {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
#reset-styles param {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles pre {
|
||||||
|
display: block;
|
||||||
|
font-family: monospace;
|
||||||
|
white-space: pre;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
#reset-styles q {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#reset-styles q::before {
|
||||||
|
content: open-quote;
|
||||||
|
}
|
||||||
|
#reset-styles q::after {
|
||||||
|
content: close-quote;
|
||||||
|
}
|
||||||
|
#reset-styles rt {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
#reset-styles s {
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
#reset-styles samp {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
#reset-styles script {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles small {
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
#reset-styles strike {
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
#reset-styles strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#reset-styles style {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles sub {
|
||||||
|
vertical-align: sub;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
#reset-styles summary {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#reset-styles sup {
|
||||||
|
vertical-align: super;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
#reset-styles table {
|
||||||
|
display: table;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 2px;
|
||||||
|
border-color: gray;
|
||||||
|
}
|
||||||
|
#reset-styles tbody {
|
||||||
|
display: table-row-group;
|
||||||
|
vertical-align: middle;
|
||||||
|
border-color: inherit;
|
||||||
|
}
|
||||||
|
#reset-styles td {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: inherit;
|
||||||
|
text-align: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#reset-styles tfoot {
|
||||||
|
display: table-footer-group;
|
||||||
|
vertical-align: middle;
|
||||||
|
border-color: inherit;
|
||||||
|
}
|
||||||
|
#reset-styles thead tr th {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: inherit;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
background-color: initial;
|
||||||
|
color: initial;
|
||||||
|
}
|
||||||
|
#reset-styles thead {
|
||||||
|
display: table-header-group;
|
||||||
|
vertical-align: middle;
|
||||||
|
border-color: inherit;
|
||||||
|
}
|
||||||
|
#reset-styles title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#reset-styles tr {
|
||||||
|
display: table-row;
|
||||||
|
vertical-align: inherit;
|
||||||
|
border-color: inherit;
|
||||||
|
}
|
||||||
|
#reset-styles u {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
#reset-styles ul {
|
||||||
|
display: block;
|
||||||
|
list-style-type: disc;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
#reset-styles var {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@ -128,8 +128,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style='height: 10px'>
|
<div style='height: 10px'>
|
||||||
<?php
|
<?php
|
||||||
$version = '7.0NG.760';
|
$version = '7.0NG.761';
|
||||||
$build = '220330';
|
$build = '220407';
|
||||||
$banner = "v$version Build $build";
|
$banner = "v$version Build $build";
|
||||||
|
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
@ -134,7 +134,7 @@ if ($group_rep == 2) {
|
|||||||
echo '<div class="nf">'.__('No events').'</div>';
|
echo '<div class="nf">'.__('No events').'</div>';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// fields that the user has selected to show
|
// Fields that the user has selected to show.
|
||||||
if ($meta) {
|
if ($meta) {
|
||||||
$show_fields = events_meta_get_custom_fields_user();
|
$show_fields = events_meta_get_custom_fields_user();
|
||||||
} else {
|
} else {
|
||||||
@ -345,6 +345,13 @@ if ($group_rep == 2) {
|
|||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($fields === 'custom_data') {
|
||||||
|
$table->head[$i] = __('Custom data');
|
||||||
|
$table->align[$i] = 'left';
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('estado', $show_fields)) {
|
if (in_array('estado', $show_fields)) {
|
||||||
|
@ -226,6 +226,16 @@ $server_id = get_parameter(
|
|||||||
$filter['id_server_meta']
|
$filter['id_server_meta']
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$custom_data_filter_type = get_parameter(
|
||||||
|
'filter[custom_data_filter_type]',
|
||||||
|
$filter['custom_data_filter_type']
|
||||||
|
);
|
||||||
|
|
||||||
|
$custom_data = get_parameter(
|
||||||
|
'filter[custom_data]',
|
||||||
|
$filter['custom_data']
|
||||||
|
);
|
||||||
|
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
// Connect to node database.
|
// Connect to node database.
|
||||||
$id_node = $server_id;
|
$id_node = $server_id;
|
||||||
@ -530,6 +540,8 @@ if ($loaded_filter !== false && $from_event_graph != 1 && !isset($fb64)) {
|
|||||||
$user_comment = $filter['user_comment'];
|
$user_comment = $filter['user_comment'];
|
||||||
$id_source_event = ($filter['id_source_event'] ?? '');
|
$id_source_event = ($filter['id_source_event'] ?? '');
|
||||||
$server_id = $filter['server_id'];
|
$server_id = $filter['server_id'];
|
||||||
|
$custom_data = $filter['custom_data'];
|
||||||
|
$custom_data_filter_type = $filter['custom_data_filter_type'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1451,6 +1463,54 @@ $adv_inputs[] = html_print_div(
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Custom data filter type.
|
||||||
|
$custom_data_filter_type_input = html_print_select(
|
||||||
|
[
|
||||||
|
'0' => __('Filter custom data by field name'),
|
||||||
|
'1' => __('Filter custom data by field value'),
|
||||||
|
],
|
||||||
|
'custom_data_filter_type',
|
||||||
|
$custom_data_filter_type,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
-1,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$adv_inputs[] = html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'filter_input',
|
||||||
|
'content' => sprintf(
|
||||||
|
'<label>%s</label>%s',
|
||||||
|
__('Custom data filter'),
|
||||||
|
$custom_data_filter_type_input
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
// Custom data.
|
||||||
|
$custom_data_input = html_print_input_text(
|
||||||
|
'custom_data',
|
||||||
|
$custom_data,
|
||||||
|
'',
|
||||||
|
5,
|
||||||
|
255,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$adv_inputs[] = html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'filter_input',
|
||||||
|
'content' => sprintf(
|
||||||
|
'<label>%s</label>%s',
|
||||||
|
__('Custom data search'),
|
||||||
|
$custom_data_input
|
||||||
|
),
|
||||||
|
],
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
// Tags.
|
// Tags.
|
||||||
if (is_metaconsole() === true) {
|
if (is_metaconsole() === true) {
|
||||||
$data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>';
|
$data = '<fieldset><legend class="pdd_0px">'.__('Events with following tags').'</legend>'.html_print_table($tabletags_with, true).'</fieldset>';
|
||||||
@ -2259,6 +2319,27 @@ function process_datatables_item(item) {
|
|||||||
|
|
||||||
/* Module name */
|
/* Module name */
|
||||||
item.id_agentmodule = item.module_name;
|
item.id_agentmodule = item.module_name;
|
||||||
|
|
||||||
|
if (item.custom_data !== '') {
|
||||||
|
var custom_data_str = '';
|
||||||
|
|
||||||
|
var item_custom_data_obj = (function(json_str) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(json_str);
|
||||||
|
} catch (err) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})(item.custom_data);
|
||||||
|
|
||||||
|
if (item_custom_data_obj !== false) {
|
||||||
|
for (const [attr_name, val] of Object.entries(item_custom_data_obj)) {
|
||||||
|
custom_data_str += attr_name + ' = ' + val + '<br>';
|
||||||
|
}
|
||||||
|
item.custom_data = custom_data_str;
|
||||||
|
} else {
|
||||||
|
item.custom_data = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Datatables auxiliary functions ends */
|
/* Datatables auxiliary functions ends */
|
||||||
|
@ -127,6 +127,8 @@ if (is_ajax()) {
|
|||||||
$values['source'] = get_parameter('source');
|
$values['source'] = get_parameter('source');
|
||||||
$values['id_extra'] = get_parameter('id_extra');
|
$values['id_extra'] = get_parameter('id_extra');
|
||||||
$values['user_comment'] = get_parameter('user_comment');
|
$values['user_comment'] = get_parameter('user_comment');
|
||||||
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
$values['id_source_event'] = get_parameter('id_source_event');
|
$values['id_source_event'] = get_parameter('id_source_event');
|
||||||
@ -182,6 +184,8 @@ if (is_ajax()) {
|
|||||||
$values['source'] = get_parameter('source');
|
$values['source'] = get_parameter('source');
|
||||||
$values['id_extra'] = get_parameter('id_extra');
|
$values['id_extra'] = get_parameter('id_extra');
|
||||||
$values['user_comment'] = get_parameter('user_comment');
|
$values['user_comment'] = get_parameter('user_comment');
|
||||||
|
$values['custom_data'] = get_parameter('custom_data');
|
||||||
|
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
$values['id_source_event'] = get_parameter('id_source_event');
|
$values['id_source_event'] = get_parameter('id_source_event');
|
||||||
@ -1567,8 +1571,9 @@ $(document).ready( function() {
|
|||||||
"id_extra": $("#text-id_extra").val(),
|
"id_extra": $("#text-id_extra").val(),
|
||||||
"user_comment": $("#text-user_comment").val(),
|
"user_comment": $("#text-user_comment").val(),
|
||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id" : $("#server_id").val()
|
"server_id" : $("#server_id").val(),
|
||||||
|
"custom_data" : $("#text-custom_data").val(),
|
||||||
|
"custom_data_filter_type" : $("#custom_data_filter_type").val()
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
$(".info_box").hide();
|
$(".info_box").hide();
|
||||||
@ -1670,7 +1675,9 @@ $(document).ready( function() {
|
|||||||
"id_extra": $("#text-id_extra").val(),
|
"id_extra": $("#text-id_extra").val(),
|
||||||
"user_comment": $("#text-user_comment").val(),
|
"user_comment": $("#text-user_comment").val(),
|
||||||
"id_source_event": $("#text-id_source_event").val(),
|
"id_source_event": $("#text-id_source_event").val(),
|
||||||
"server_id" : $("#server_id").val()
|
"server_id" : $("#server_id").val(),
|
||||||
|
"custom_data" : $("#text-custom_data").val()
|
||||||
|
"custom_data_filter_type" : $("#custom_data_filter_type").val()
|
||||||
},
|
},
|
||||||
function (data) {
|
function (data) {
|
||||||
$(".info_box").hide();
|
$(".info_box").hide();
|
||||||
|
@ -226,7 +226,7 @@ try {
|
|||||||
if ($custom_data_array !== null) {
|
if ($custom_data_array !== null) {
|
||||||
array_walk(
|
array_walk(
|
||||||
$custom_data_array,
|
$custom_data_array,
|
||||||
function (&$value, $field) {
|
function (&$value, $field) use ($separator) {
|
||||||
if (is_array($value) === true) {
|
if (is_array($value) === true) {
|
||||||
$value = '['.implode($separator, $value).']';
|
$value = '['.implode($separator, $value).']';
|
||||||
}
|
}
|
||||||
|
346
pandora_console/operation/heatmap.php
Normal file
346
pandora_console/operation/heatmap.php
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Tree view.
|
||||||
|
*
|
||||||
|
* @category Operation
|
||||||
|
* @package Pandora FMS
|
||||||
|
* @subpackage Community
|
||||||
|
* @version 1.0.0
|
||||||
|
* @license See below
|
||||||
|
*
|
||||||
|
* ______ ___ _______ _______ ________
|
||||||
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation for version 2.
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
global $config;
|
||||||
|
// Login check.
|
||||||
|
check_login();
|
||||||
|
|
||||||
|
$agent_a = (bool) check_acl($config['id_user'], 0, 'AR');
|
||||||
|
$agent_w = (bool) check_acl($config['id_user'], 0, 'AW');
|
||||||
|
|
||||||
|
if ($agent_a === false && $agent_w === false) {
|
||||||
|
db_pandora_audit('ACL Violation', 'Trying to access agent main list view');
|
||||||
|
include 'general/noaccess.php';
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once $config['homedir'].'/include/class/Heatmap.class.php';
|
||||||
|
|
||||||
|
$pure = (bool) get_parameter('pure', false);
|
||||||
|
$type = get_parameter('type', 0);
|
||||||
|
$randomId = get_parameter('randomId', null);
|
||||||
|
$refresh = get_parameter('refresh', SECONDS_5MINUTES);
|
||||||
|
$height = get_parameter('height', 0);
|
||||||
|
$width = get_parameter('width', 0);
|
||||||
|
$search = get_parameter('search', '');
|
||||||
|
$filter = get_parameter('filter', []);
|
||||||
|
if (is_array($filter) === false) {
|
||||||
|
$filter = explode(',', $filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
$group_sent = (bool) get_parameter('group_sent');
|
||||||
|
if ($group_sent === true) {
|
||||||
|
$group = (int) get_parameter('group');
|
||||||
|
} else {
|
||||||
|
$group = (int) get_parameter('group', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_ajax = is_ajax();
|
||||||
|
if ($is_ajax === false && $pure === false) {
|
||||||
|
$viewtab['config'] = '<a id="config" href="">'.html_print_image(
|
||||||
|
'images/setup.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Config'),
|
||||||
|
'class' => 'invert_filter',
|
||||||
|
]
|
||||||
|
).'</a>';
|
||||||
|
|
||||||
|
$url = sprintf(
|
||||||
|
'index.php?sec=view&sec2=operation/heatmap&pure=1&type=%s&refresh=%s&search=%s&filter=%s',
|
||||||
|
$type,
|
||||||
|
$refresh,
|
||||||
|
$search,
|
||||||
|
implode(',', $filter)
|
||||||
|
);
|
||||||
|
|
||||||
|
$viewtab['full_screen'] = '<a id="full_screen" href="'.$url.'">'.html_print_image(
|
||||||
|
'images/full_screen.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Full screen'),
|
||||||
|
'class' => 'invert_filter',
|
||||||
|
]
|
||||||
|
).'</a>';
|
||||||
|
|
||||||
|
$header_name = __('Heatmap view');
|
||||||
|
switch ($type) {
|
||||||
|
case 2:
|
||||||
|
if (current($filter) == 0) {
|
||||||
|
$header_name .= ' - '.__('Module group').': '.__('Not assigned');
|
||||||
|
} else {
|
||||||
|
$header_name .= ' - '.__('Module group').': '.modules_get_modulegroup_name(current($filter));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$tags_name = '';
|
||||||
|
foreach ($filter as $key => $tag) {
|
||||||
|
$tags_name .= tags_get_name($tag).', ';
|
||||||
|
}
|
||||||
|
|
||||||
|
$tags_name = trim($tags_name, ', ');
|
||||||
|
$header_name .= ' - '.__('Tag').': '.$tags_name;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
if (current($filter) == 0) {
|
||||||
|
$header_name .= ' - '.__('Group').': '.__('All');
|
||||||
|
} else {
|
||||||
|
$header_name .= ' - '.__('Group').': '.groups_get_name(current($filter));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Header.
|
||||||
|
ui_print_standard_header(
|
||||||
|
$header_name,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
$viewtab,
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'link' => '',
|
||||||
|
'label' => __('Monitoring'),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'link' => '',
|
||||||
|
'label' => __('Views'),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_ajax === false && $pure === true) {
|
||||||
|
// Floating menu - Start.
|
||||||
|
echo '<div id="heatmap-controls" class="zindex999">';
|
||||||
|
|
||||||
|
echo '<div id="menu_tab" method="post">';
|
||||||
|
echo '<ul class="mn white-box-content box-shadow flex-row">';
|
||||||
|
|
||||||
|
// Name.
|
||||||
|
echo '<li class="nomn">';
|
||||||
|
|
||||||
|
html_print_div(
|
||||||
|
[
|
||||||
|
'class' => 'heatmap-title',
|
||||||
|
'content' => 'Heatmap',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '</li>';
|
||||||
|
|
||||||
|
// Countdown.
|
||||||
|
echo '<li class="nomn">';
|
||||||
|
echo '<div class="heatmap-refr">';
|
||||||
|
|
||||||
|
echo '<div id="heatmap-refr-form">';
|
||||||
|
echo '<form id="refr-form" class="refr-form" method="post">';
|
||||||
|
echo __('Refresh').':';
|
||||||
|
echo html_print_select(
|
||||||
|
[
|
||||||
|
'30' => __('30 seconds'),
|
||||||
|
(string) SECONDS_1MINUTE => __('1 minute'),
|
||||||
|
'180' => __('3 minutes'),
|
||||||
|
(string) SECONDS_5MINUTES => __('5 minutes'),
|
||||||
|
],
|
||||||
|
'refresh-control',
|
||||||
|
$refresh,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
// Hidden.
|
||||||
|
html_print_input_hidden('refresh', $refresh);
|
||||||
|
html_print_input_hidden('type', $type);
|
||||||
|
html_print_input_hidden('search', $search);
|
||||||
|
html_print_input_hidden('filter', implode(',', $filter));
|
||||||
|
echo '</form>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</li>';
|
||||||
|
|
||||||
|
// Quit fullscreen.
|
||||||
|
echo '<li class="nomn">';
|
||||||
|
$urlNoFull = sprintf(
|
||||||
|
'index.php?sec=view&sec2=operation/heatmap&pure=0&type=%s&refresh=%s&search=%s&filter=%s',
|
||||||
|
$type,
|
||||||
|
$refresh,
|
||||||
|
$search,
|
||||||
|
implode(',', $filter)
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<a href="'.$urlNoFull.'">';
|
||||||
|
echo html_print_image(
|
||||||
|
'images/normal_screen.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Back to normal mode'),
|
||||||
|
'class' => 'invert_filter',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
echo '</a>';
|
||||||
|
echo '</li>';
|
||||||
|
|
||||||
|
echo '</ul>';
|
||||||
|
|
||||||
|
// Hidden.
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Control call flow.
|
||||||
|
try {
|
||||||
|
// Heatmap construct.
|
||||||
|
$heatmap = new Heatmap($type, $filter, $randomId, $refresh, $width, $height, $search, $group);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
if (is_ajax() === true) {
|
||||||
|
echo json_encode(['error' => '[Heatmap]'.$e->getMessage() ]);
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
echo '[Heatmap]'.$e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop this execution, but continue 'globally'.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AJAX controller.
|
||||||
|
if ($is_ajax === true) {
|
||||||
|
$method = get_parameter('method');
|
||||||
|
|
||||||
|
if (method_exists($heatmap, $method) === true) {
|
||||||
|
if ($heatmap->ajaxMethod($method) === true) {
|
||||||
|
$heatmap->{$method}();
|
||||||
|
} else {
|
||||||
|
echo 'Unavailable method';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo 'Method not found';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop any execution.
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
// Run.
|
||||||
|
$heatmap->run();
|
||||||
|
|
||||||
|
// Dialog.
|
||||||
|
echo '<div id="config_dialog" style="padding:15px" class="invisible"></div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#config').click(function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
$('#config_dialog').empty();
|
||||||
|
$("#config_dialog").dialog({
|
||||||
|
resizable: false,
|
||||||
|
draggable: false,
|
||||||
|
modal: true,
|
||||||
|
closeOnEscape: true,
|
||||||
|
height: 410,
|
||||||
|
width: 330,
|
||||||
|
title: '<?php echo __('Config'); ?>',
|
||||||
|
position: {
|
||||||
|
my: "right top",
|
||||||
|
at: "right bottom",
|
||||||
|
of: $('#config')
|
||||||
|
},
|
||||||
|
overlay: {
|
||||||
|
opacity: 0.5,
|
||||||
|
background: "black"
|
||||||
|
},
|
||||||
|
buttons:[{
|
||||||
|
class: 'ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-next',
|
||||||
|
text: "<?php echo __('Show'); ?>",
|
||||||
|
click: function() {
|
||||||
|
// Dialog close.
|
||||||
|
$(this).dialog("close");
|
||||||
|
$("#form_dialog").submit();
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
open: function() {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||||
|
data: {
|
||||||
|
page: "include/ajax/heatmap.ajax",
|
||||||
|
getFilters: 1,
|
||||||
|
type: '<?php echo $type; ?>',
|
||||||
|
refresh: '<?php echo $refresh; ?>',
|
||||||
|
search: '<?php echo $search; ?>',
|
||||||
|
group: '<?php echo $group; ?>',
|
||||||
|
},
|
||||||
|
dataType: 'html',
|
||||||
|
success: function(data) {
|
||||||
|
$('#config_dialog').append(data);
|
||||||
|
$('#type').on('change', function() {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||||
|
data: {
|
||||||
|
page: "include/ajax/heatmap.ajax",
|
||||||
|
getFilterType: 1,
|
||||||
|
type: this.value,
|
||||||
|
filter: <?php echo json_encode($filter); ?>
|
||||||
|
},
|
||||||
|
dataType: 'html',
|
||||||
|
success: function(data) {
|
||||||
|
$('#filter_type').remove();
|
||||||
|
$('#form_dialog').append(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#type').trigger('change');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const controls = document.getElementById('heatmap-controls');
|
||||||
|
autoHideElement(controls, 1000);
|
||||||
|
|
||||||
|
$('#refresh-control').change(function(e) {
|
||||||
|
$('#hidden-refresh').val(this.value);
|
||||||
|
$('#refr-form').submit();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
@ -66,6 +66,9 @@ if (check_acl($config['id_user'], 0, 'AR')) {
|
|||||||
$sub2['operation/agentes/alerts_status']['text'] = __('Alert detail');
|
$sub2['operation/agentes/alerts_status']['text'] = __('Alert detail');
|
||||||
$sub2['operation/agentes/alerts_status']['refr'] = 0;
|
$sub2['operation/agentes/alerts_status']['refr'] = 0;
|
||||||
|
|
||||||
|
$sub2['operation/heatmap']['text'] = __('Heatmap view');
|
||||||
|
$sub2['operation/heatmap']['refr'] = 0;
|
||||||
|
|
||||||
$sub['view']['sub2'] = $sub2;
|
$sub['view']['sub2'] = $sub2;
|
||||||
|
|
||||||
enterprise_hook('inventory_menu');
|
enterprise_hook('inventory_menu');
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Pandora FMS Console
|
# Pandora FMS Console
|
||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Pandora FMS Console
|
# Pandora FMS Console
|
||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Pandora FMS Console
|
# Pandora FMS Console
|
||||||
#
|
#
|
||||||
%define name pandorafms_console
|
%define name pandorafms_console
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
%define httpd_name httpd
|
%define httpd_name httpd
|
||||||
# User and Group under which Apache is running
|
# User and Group under which Apache is running
|
||||||
%define httpd_name apache2
|
%define httpd_name apache2
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# This code is licensed under GPL 2.0 license.
|
# This code is licensed under GPL 2.0 license.
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.760"
|
PI_VERSION="7.0NG.761"
|
||||||
FORCE=0
|
FORCE=0
|
||||||
DESTDIR=""
|
DESTDIR=""
|
||||||
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||||
|
@ -1251,6 +1251,8 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
|
|||||||
`server_id` INT NOT NULL DEFAULT 0,
|
`server_id` INT NOT NULL DEFAULT 0,
|
||||||
`time_from` TIME NULL,
|
`time_from` TIME NULL,
|
||||||
`time_to` TIME NULL,
|
`time_to` TIME NULL,
|
||||||
|
`custom_data` VARCHAR(500) DEFAULT '',
|
||||||
|
`custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0,
|
||||||
PRIMARY KEY (`id_filter`)
|
PRIMARY KEY (`id_filter`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
@ -1608,6 +1610,8 @@ CREATE TABLE IF NOT EXISTS `treport_content` (
|
|||||||
`ipam_network_filter` INT UNSIGNED DEFAULT 0,
|
`ipam_network_filter` INT UNSIGNED DEFAULT 0,
|
||||||
`ipam_alive_ips` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
`ipam_alive_ips` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
`ipam_ip_not_assigned_to_agent` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
`ipam_ip_not_assigned_to_agent` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
`macros_definition` TEXT,
|
||||||
|
`render_definition` TEXT,
|
||||||
PRIMARY KEY(`id_rc`),
|
PRIMARY KEY(`id_rc`),
|
||||||
FOREIGN KEY (`id_report`) REFERENCES treport(`id_report`)
|
FOREIGN KEY (`id_report`) REFERENCES treport(`id_report`)
|
||||||
ON UPDATE CASCADE ON DELETE CASCADE
|
ON UPDATE CASCADE ON DELETE CASCADE
|
||||||
@ -3216,6 +3220,8 @@ CREATE TABLE IF NOT EXISTS `treport_content_template` (
|
|||||||
`ipam_network_filter` INT UNSIGNED DEFAULT 0,
|
`ipam_network_filter` INT UNSIGNED DEFAULT 0,
|
||||||
`ipam_alive_ips` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
`ipam_alive_ips` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
`ipam_ip_not_assigned_to_agent` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
`ipam_ip_not_assigned_to_agent` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
`macros_definition` TEXT,
|
||||||
|
`render_definition` TEXT,
|
||||||
PRIMARY KEY(`id_rc`)
|
PRIMARY KEY(`id_rc`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
|
||||||
|
@ -109,10 +109,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||||||
('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
|
('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
|
||||||
('custom_report_front_header', ''),
|
('custom_report_front_header', ''),
|
||||||
('custom_report_front_footer', ''),
|
('custom_report_front_footer', ''),
|
||||||
('MR', 52),
|
('MR', 53),
|
||||||
('identification_reminder', 1),
|
('identification_reminder', 1),
|
||||||
('identification_reminder_timestamp', 0),
|
('identification_reminder_timestamp', 0),
|
||||||
('current_package', 760),
|
('current_package', 761),
|
||||||
('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'),
|
('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'),
|
||||||
('custom_docs_logo', 'default_docs.png'),
|
('custom_docs_logo', 'default_docs.png'),
|
||||||
('custom_support_logo', 'default_support.png'),
|
('custom_support_logo', 'default_support.png'),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package: pandorafms-server
|
package: pandorafms-server
|
||||||
Version: 7.0NG.760-220330
|
Version: 7.0NG.761-220407
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Section: admin
|
Section: admin
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
pandora_version="7.0NG.760-220330"
|
pandora_version="7.0NG.761-220407"
|
||||||
|
|
||||||
package_cpan=0
|
package_cpan=0
|
||||||
package_pandora=1
|
package_pandora=1
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#############################################################################
|
#############################################################################
|
||||||
# Pandora FMS Server Parameters
|
# Pandora FMS Server Parameters
|
||||||
# Pandora FMS, the Flexible Monitoring System.
|
# Pandora FMS, the Flexible Monitoring System.
|
||||||
# Version 7.0NG.760
|
# Version 7.0NG.761
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||||
# http://www.pandorafms.com
|
# http://www.pandorafms.com
|
||||||
|
@ -45,8 +45,8 @@ our @EXPORT = qw(
|
|||||||
);
|
);
|
||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.760";
|
my $pandora_version = "7.0NG.761";
|
||||||
my $pandora_build = "220330";
|
my $pandora_build = "220407";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
# Setup hash
|
# Setup hash
|
||||||
|
@ -1848,18 +1848,7 @@ sub pandora_execute_action ($$$$$$$$$;$$) {
|
|||||||
my @user_list = map {clean_blank($_)} split /,/, $field1;
|
my @user_list = map {clean_blank($_)} split /,/, $field1;
|
||||||
my @group_list = map {clean_blank($_)} split /,/, $field2;
|
my @group_list = map {clean_blank($_)} split /,/, $field2;
|
||||||
|
|
||||||
my $notification = {};
|
send_console_notification($pa_config, $dbh, $field3, $field4, \@user_list, \@group_list);
|
||||||
$notification->{'subject'} = safe_input($field3);
|
|
||||||
$notification->{'mensaje'} = safe_input($field4);
|
|
||||||
$notification->{'id_source'} = get_db_value($dbh, 'SELECT id FROM tnotification_source WHERE description = ?', safe_input('System status'));
|
|
||||||
|
|
||||||
# Create message
|
|
||||||
my $notification_id = db_process_insert($dbh,'id_mensaje','tmensajes',$notification);
|
|
||||||
if (!$notification_id) {
|
|
||||||
logger($pa_config, "Failed action '" . $action->{'name'} . "' for alert '". $alert->{'name'} . "' agent '" . (defined($agent) ? $agent->{'alias'} : 'N/A') . "'.", 3);
|
|
||||||
} else {
|
|
||||||
notification_set_targets($pa_config, $dbh, $notification_id, \@user_list, \@group_list);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
logger($pa_config, "Failed action '" . $action->{'name'} . "' for alert '". $alert->{'name'} . "' agent '" . (defined($agent) ? $agent->{'alias'} : 'N/A') . "' Empty targets. Ignored.", 3);
|
logger($pa_config, "Failed action '" . $action->{'name'} . "' for alert '". $alert->{'name'} . "' agent '" . (defined($agent) ? $agent->{'alias'} : 'N/A') . "' Empty targets. Ignored.", 3);
|
||||||
}
|
}
|
||||||
@ -1876,6 +1865,40 @@ sub pandora_execute_action ($$$$$$$$$;$$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
=head2 C<< send_console_notification (I<$pa_config>, I<$dbh>, I<$subject>, I<$message>, I<$user_list>, I<$group_list>) >>
|
||||||
|
|
||||||
|
Send message (with subject) to given userlist and/ or group list.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
##########################################################################
|
||||||
|
sub send_console_notification {
|
||||||
|
my ($pa_config, $dbh, $subject, $message, $user_list, $group_list) = @_;
|
||||||
|
|
||||||
|
my $notification = {};
|
||||||
|
|
||||||
|
$notification->{'subject'} = safe_input($subject);
|
||||||
|
$notification->{'mensaje'} = safe_input($message);
|
||||||
|
$notification->{'id_source'} = get_db_value($dbh,
|
||||||
|
'SELECT id FROM tnotification_source WHERE description = ?',
|
||||||
|
safe_input('System status')
|
||||||
|
);
|
||||||
|
|
||||||
|
# Create message
|
||||||
|
my $notification_id = db_process_insert($dbh, 'id_mensaje', 'tmensajes', $notification);
|
||||||
|
if (!$notification_id) {
|
||||||
|
logger($pa_config, "Cannot send notification '" . $subject . "'", 3);
|
||||||
|
} else {
|
||||||
|
notification_set_targets(
|
||||||
|
$pa_config,
|
||||||
|
$dbh,
|
||||||
|
$notification_id,
|
||||||
|
$user_list,
|
||||||
|
$group_list
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
=head2 C<< pandora_access_update (I<$pa_config>, I<$agent_id>, I<$dbh>) >>
|
=head2 C<< pandora_access_update (I<$pa_config>, I<$agent_id>, I<$dbh>) >>
|
||||||
|
|
||||||
|
@ -251,6 +251,7 @@ sub data_consumer ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $recon = new PandoraFMS::Recon::Base(
|
my $recon = new PandoraFMS::Recon::Base(
|
||||||
|
parent => $self,
|
||||||
communities => \@communities,
|
communities => \@communities,
|
||||||
dbh => $dbh,
|
dbh => $dbh,
|
||||||
group_id => $task->{'id_group'},
|
group_id => $task->{'id_group'},
|
||||||
@ -1727,6 +1728,23 @@ sub PandoraFMS::Recon::Base::delete_connections($) {
|
|||||||
sub PandoraFMS::Recon::Base::message($$$) {
|
sub PandoraFMS::Recon::Base::message($$$) {
|
||||||
my ($self, $message, $verbosity) = @_;
|
my ($self, $message, $verbosity) = @_;
|
||||||
|
|
||||||
|
if ($verbosity <= 1) {
|
||||||
|
my $label = "[Discovery task " . $self->{'task_id'} . "]";
|
||||||
|
if (ref($self->{'task_data'}) eq 'HASH' && defined($self->{'task_data'}{'name'})) {
|
||||||
|
$label = "[Discovery task " . $self->{'task_data'}{'name'} . "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
PandoraFMS::Core::send_console_notification(
|
||||||
|
$self->{'pa_config'},
|
||||||
|
$self->{'parent'}->getDBH(),
|
||||||
|
$label,
|
||||||
|
$message,
|
||||||
|
['admin']
|
||||||
|
);
|
||||||
|
|
||||||
|
$self->{'summary'} = $message;
|
||||||
|
}
|
||||||
|
|
||||||
logger($self->{'pa_config'}, "[Recon task " . $self->{'task_id'} . "] $message", $verbosity);
|
logger($self->{'pa_config'}, "[Recon task " . $self->{'task_id'} . "] $message", $verbosity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ use base 'Exporter';
|
|||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
|
|
||||||
# version: Defines actual version of Pandora Server for this module only
|
# version: Defines actual version of Pandora Server for this module only
|
||||||
my $pandora_version = "7.0NG.760";
|
my $pandora_version = "7.0NG.761";
|
||||||
my $pandora_build = "220330";
|
my $pandora_build = "220407";
|
||||||
our $VERSION = $pandora_version." ".$pandora_build;
|
our $VERSION = $pandora_version." ".$pandora_build;
|
||||||
|
|
||||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||||
|
@ -1037,6 +1037,7 @@ sub limpia_cadena {
|
|||||||
################################################################################
|
################################################################################
|
||||||
sub clean_blank {
|
sub clean_blank {
|
||||||
my $input = $_[0];
|
my $input = $_[0];
|
||||||
|
return $input unless defined($input);
|
||||||
$input =~ s/^\s+//g;
|
$input =~ s/^\s+//g;
|
||||||
$input =~ s/\s+$//g;
|
$input =~ s/\s+$//g;
|
||||||
return $input;
|
return $input;
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Pandora FMS Server
|
# Pandora FMS Server
|
||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Pandora FMS Server
|
# Pandora FMS Server
|
||||||
#
|
#
|
||||||
%define name pandorafms_server
|
%define name pandorafms_server
|
||||||
%define version 7.0NG.760
|
%define version 7.0NG.761
|
||||||
%define release 220330
|
%define release 220407
|
||||||
|
|
||||||
Summary: Pandora FMS Server
|
Summary: Pandora FMS Server
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
# This code is licensed under GPL 2.0 license.
|
# This code is licensed under GPL 2.0 license.
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
PI_VERSION="7.0NG.760"
|
PI_VERSION="7.0NG.761"
|
||||||
PI_BUILD="220330"
|
PI_BUILD="220407"
|
||||||
|
|
||||||
MODE=$1
|
MODE=$1
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
|||||||
use PandoraFMS::DB;
|
use PandoraFMS::DB;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.760 Build 220330";
|
my $version = "7.0NG.761 Build 220407";
|
||||||
|
|
||||||
# Pandora server configuration
|
# Pandora server configuration
|
||||||
my %conf;
|
my %conf;
|
||||||
|
@ -82,24 +82,26 @@ sub ha_daemonize($) {
|
|||||||
|
|
||||||
# Fork!
|
# Fork!
|
||||||
defined(my $pid = fork) or die "Can't fork: $!";
|
defined(my $pid = fork) or die "Can't fork: $!";
|
||||||
if ($pid) {
|
exit if ($pid);
|
||||||
# Store PID of this process in file presented by config token
|
|
||||||
if ($PID_FILE ne "") {
|
# Child inherits execution.
|
||||||
if ( -e $PID_FILE && open (FILE, $PID_FILE)) {
|
|
||||||
$pid = <FILE> + 0;
|
|
||||||
close FILE;
|
|
||||||
|
|
||||||
# Check if pandora_ha is running.
|
|
||||||
die "[ERROR] pandora_ha is already running with pid: $pid." if (kill (0, $pid));
|
|
||||||
}
|
|
||||||
umask 0022;
|
|
||||||
open (FILE, '>', $PID_FILE) or die "[FATAL] $!";
|
|
||||||
print FILE $pid;
|
|
||||||
close (FILE);
|
|
||||||
}
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
setsid or die "Can't start a new session: $!";
|
setsid or die "Can't start a new session: $!";
|
||||||
|
|
||||||
|
# Store PID of this process in file presented by config token
|
||||||
|
if ($PID_FILE ne "") {
|
||||||
|
if ( -e $PID_FILE && open (FILE, $PID_FILE)) {
|
||||||
|
$pid = <FILE> + 0;
|
||||||
|
close FILE;
|
||||||
|
|
||||||
|
# Check if pandora_ha is running.
|
||||||
|
die "[ERROR] pandora_ha is already running with pid: $pid.\n" if (kill (0, $pid));
|
||||||
|
}
|
||||||
|
|
||||||
|
umask 0022;
|
||||||
|
open (FILE, '>', $PID_FILE) or die "[FATAL] $!";
|
||||||
|
print FILE $$;
|
||||||
|
close (FILE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
@ -315,10 +317,10 @@ sub ha_main($) {
|
|||||||
# Log to a separate file if needed.
|
# Log to a separate file if needed.
|
||||||
$conf->{'log_file'} = $conf->{'ha_log_file'} if defined ($conf->{'ha_log_file'});
|
$conf->{'log_file'} = $conf->{'ha_log_file'} if defined ($conf->{'ha_log_file'});
|
||||||
|
|
||||||
ha_daemonize($conf) if ($DAEMON == 1);
|
|
||||||
|
|
||||||
$Running = 1;
|
$Running = 1;
|
||||||
|
|
||||||
|
ha_daemonize($conf) if ($DAEMON == 1);
|
||||||
|
|
||||||
while ($Running) {
|
while ($Running) {
|
||||||
eval {
|
eval {
|
||||||
eval {
|
eval {
|
||||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||||||
Encode::Locale::decode_argv;
|
Encode::Locale::decode_argv;
|
||||||
|
|
||||||
# version: define current version
|
# version: define current version
|
||||||
my $version = "7.0NG.760 Build 220330";
|
my $version = "7.0NG.761 Build 220407";
|
||||||
|
|
||||||
# save program name for logging
|
# save program name for logging
|
||||||
my $progname = basename($0);
|
my $progname = basename($0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user