Merge remote-tracking branch 'origin/develop' into ent-8827-cambios-visuales-en-widget-agents-modules
Conflicts: pandora_console/include/lib/Dashboard/Widgets/service_map.php
This commit is contained in:
commit
22717d169d
|
@ -4,7 +4,7 @@
|
|||
|
||||
# define variables
|
||||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
S_VERSION='2021100601'
|
||||
S_VERSION='2022052301'
|
||||
LOGFILE="/tmp/pandora-agent-deploy-$(date +%F).log"
|
||||
|
||||
# Ansi color code variables
|
||||
|
@ -49,7 +49,6 @@ check_cmd_status () {
|
|||
}
|
||||
|
||||
check_repo_connection () {
|
||||
execute_cmd "ping -c 2 8.8.8.8" "Checking internet connection"
|
||||
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
|
||||
}
|
||||
|
||||
|
@ -79,10 +78,15 @@ echo "Starting PandoraFMS Agent deployment ver. $S_VERSION"
|
|||
|
||||
execute_cmd "[ $PANDORA_SERVER_IP ]" 'Check Server IP Address' 'Please define env variable PANDORA_SERVER_IP'
|
||||
|
||||
#Detect OS
|
||||
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
|
||||
execute_cmd "echo $os_name" "OS detected: ${os_name}"
|
||||
|
||||
# Check OS.
|
||||
OS=$([[ $(grep '^ID_LIKE=' /etc/os-release) ]] && grep ^ID_LIKE= /etc/os-release | cut -d '=' -f2 | tr -d '"' || grep ^ID= /etc/os-release | cut -d '=' -f2 | tr -d '"')
|
||||
|
||||
[[ $OS =~ 'rhel' ]] && OS_RELEASE=$OS
|
||||
[[ $OS =~ 'fedora' ]] && OS_RELEASE=$OS
|
||||
[[ $OS =~ 'debian' ]] && OS_RELEASE=$OS
|
||||
#[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
|
||||
#[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS
|
||||
|
@ -113,17 +117,40 @@ execute_cmd "cd $HOME/pandora_deploy_tmp" "Moving to workspace: $HOME/pandora_d
|
|||
|
||||
# Downloading and installing packages
|
||||
|
||||
if [[ $OS_RELEASE =~ 'rhel' ]]; then
|
||||
yum install -y perl wget curl perl-Sys-Syslog unzip &>> $LOGFILE
|
||||
echo -e "${cyan}Instaling agent dependencies...${reset}" ${green}OK${reset}
|
||||
if [[ $OS_RELEASE =~ 'rhel' ]] || [[ $OS_RELEASE =~ 'fedora' ]]; then
|
||||
## Extra steps on redhat
|
||||
if [ "$(grep -Ei 'Red Hat Enterprise' /etc/redhat-release)" ]; then
|
||||
## In case REDHAT
|
||||
# Check susbscription manager status:
|
||||
echo -en "${cyan}Checking Red Hat Enterprise subscription... ${reset}"
|
||||
subscription-manager list &>> "$LOGFILE"
|
||||
subscription-manager status &>> "$LOGFILE"
|
||||
check_cmd_status 'Error checking subscription status, make sure your server is activated and suscribed to Red Hat Enterprise repositories'
|
||||
|
||||
fi
|
||||
|
||||
# Check rh version
|
||||
if [ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ] ; then
|
||||
package_manager_cmd=dnf
|
||||
elif [ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '7' ] ; then
|
||||
package_manager_cmd=yum
|
||||
|
||||
fi
|
||||
|
||||
# Install dependencies
|
||||
$package_manager_cmd install -y perl wget curl perl-Sys-Syslog unzip &>> $LOGFILE
|
||||
echo -e "${cyan}Installing agent dependencies...${reset}" ${green}OK${reset}
|
||||
|
||||
yum install -y http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm &>> $LOGFILE
|
||||
echo -e "${cyan}Instaling Pandora FMS agent...${reset}" ${green}OK${reset}
|
||||
# Insatall pandora agent
|
||||
$package_manager_cmd install -y http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm &>> $LOGFILE
|
||||
echo -en "${cyan}Installing Pandora FMS agent...${reset}"
|
||||
check_cmd_status 'Error installing Pandora FMS agent'
|
||||
|
||||
fi
|
||||
|
||||
if [[ $OS_RELEASE == 'debian' ]]; then
|
||||
execute_cmd "apt update" 'Updating repos'
|
||||
execute_cmd "apt install -y perl wget curl unzip procps python3 python3-pip" 'Instaling agent dependencies'
|
||||
execute_cmd "apt install -y perl wget curl unzip procps python3 python3-pip" 'Installing agent dependencies'
|
||||
execute_cmd 'wget http://firefly.artica.es/pandorafms/latest/Debian_Ubuntu/pandorafms.agent_unix_7.0NG.deb' 'Downloading Pandora FMS agent dependencies'
|
||||
execute_cmd 'apt install -y ./pandorafms.agent_unix_7.0NG.deb' 'Installing Pandora FMS agent'
|
||||
fi
|
||||
|
|
|
@ -11,7 +11,7 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
|
|||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
|
||||
|
||||
S_VERSION='2022020801'
|
||||
S_VERSION='2022050901'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
|
||||
# define default variables
|
||||
|
@ -82,7 +82,6 @@ check_pre_pandora () {
|
|||
}
|
||||
|
||||
check_repo_connection () {
|
||||
execute_cmd "ping -c 2 8.8.8.8" "Checking internet connection"
|
||||
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
|
||||
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
|
||||
}
|
||||
|
@ -257,6 +256,8 @@ console_dependencies=" \
|
|||
poppler-data \
|
||||
php-yaml \
|
||||
mod_ssl \
|
||||
libzstd \
|
||||
openldap-clients \
|
||||
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
|
||||
execute_cmd "yum install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
|
||||
|
||||
|
@ -422,7 +423,7 @@ execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA
|
|||
execute_cmd "yum install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
|
||||
|
||||
# Copy gotty utility
|
||||
execute_cmd "wget https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
execute_cmd "wget https://pandorafms.com/library/wp-content/uploads/2019/11/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
|
||||
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'
|
||||
|
||||
|
|
|
@ -14,11 +14,13 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
|
|||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
|
||||
|
||||
S_VERSION='2022020801'
|
||||
S_VERSION='2022052501'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
|
||||
# define default variables
|
||||
[ "$TZ" ] || TZ="Europe/Madrid"
|
||||
[ "$MYVER" ] || MYVER=57
|
||||
[ "$PHPVER" ] || PHPVER=7
|
||||
[ "$DBHOST" ] || DBHOST=127.0.0.1
|
||||
[ "$DBNAME" ] || DBNAME=pandora
|
||||
[ "$DBUSER" ] || DBUSER=pandora
|
||||
|
@ -84,7 +86,6 @@ check_pre_pandora () {
|
|||
}
|
||||
|
||||
check_repo_connection () {
|
||||
execute_cmd "ping -c 2 8.8.8.8" "Checking internet connection"
|
||||
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
|
||||
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
|
||||
}
|
||||
|
@ -203,15 +204,28 @@ fi
|
|||
#Installing wget
|
||||
execute_cmd "dnf install -y wget" "Installing wget"
|
||||
|
||||
#Installing extra repositiries
|
||||
|
||||
#Installing php
|
||||
execute_cmd "dnf module reset -y php " "Disabling standard PHP module"
|
||||
execute_cmd "dnf module install -y php:remi-7.4" "Configuring PHP"
|
||||
if [ "$PHPVER" -ne '8' ] ; then
|
||||
execute_cmd "dnf module install -y php:remi-7.4" "Configuring PHP 7"
|
||||
fi
|
||||
|
||||
if [ "$PHPVER" -eq '8' ] ; then
|
||||
execute_cmd "dnf module install -y php:remi-8.0" "Configuring PHP 8"
|
||||
fi
|
||||
|
||||
# Install percona Database
|
||||
execute_cmd "dnf module disable -y mysql" "Disabiling mysql module"
|
||||
#rm -rf /etc/my.cnf
|
||||
execute_cmd "dnf install -y Percona-Server-server-57" "Installing Percona Server"
|
||||
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
execute_cmd "percona-release setup ps80 -y" "Enabling mysql80 module"
|
||||
execute_cmd "dnf install -y percona-server-server percona-xtrabackup-24" "Installing Percona Server 80"
|
||||
fi
|
||||
|
||||
if [ "$MYVER" -ne '80' ] ; then
|
||||
execute_cmd "dnf install -y Percona-Server-server-57 percona-xtrabackup-24" "Installing Percona Server 57"
|
||||
fi
|
||||
|
||||
|
||||
# Console dependencies
|
||||
console_dependencies=" \
|
||||
|
@ -293,6 +307,8 @@ console_dependencies=" \
|
|||
poppler-data \
|
||||
php-yaml \
|
||||
mod_ssl \
|
||||
libzstd \
|
||||
openldap-clients \
|
||||
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
|
||||
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
|
||||
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
|
||||
|
@ -381,20 +397,33 @@ EO_CONFIG_TMP
|
|||
|
||||
#Configuring Database
|
||||
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
|
||||
execute_cmd "systemctl start mysqld" "Starting database engine"
|
||||
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
|
||||
echo """
|
||||
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
|
||||
UNINSTALL PLUGIN validate_password;
|
||||
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
|
||||
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
|
||||
execute_cmd "systemctl start mysqld" "Starting database engine"
|
||||
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
echo """
|
||||
SET PASSWORD FOR 'root'@'localhost' = 'Pandor4!';
|
||||
UNINSTALL COMPONENT 'file://component_validate_password';
|
||||
SET PASSWORD FOR 'root'@'localhost' = '$DBROOTPASS';
|
||||
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
|
||||
fi
|
||||
|
||||
if [ "$MYVER" -ne '80' ] ; then
|
||||
echo """
|
||||
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
|
||||
UNINSTALL PLUGIN validate_password;
|
||||
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
|
||||
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"fi
|
||||
fi
|
||||
fi
|
||||
export MYSQL_PWD=$DBROOTPASS
|
||||
echo -en "${cyan}Creating Pandora FMS database...${reset}"
|
||||
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
check_cmd_status "Error creating database $DBNAME, is this an empty node? if you have a previus installation please contact with support."
|
||||
|
||||
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%' identified by \"$DBPASS\"" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
echo "CREATE USER \"$DBUSER\"@'%' IDENTIFIED BY \"$DBPASS\";" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
echo "ALTER USER \"$DBUSER\"@'%' IDENTIFIED WITH mysql_native_password BY \"$DBPASS\"" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%'" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
|
||||
export MYSQL_PWD=$DBPASS
|
||||
|
||||
#Generating my.cnf
|
||||
|
@ -442,6 +471,10 @@ pid-file=/var/run/mysqld/mysqld.pid
|
|||
|
||||
EO_CONFIG_F
|
||||
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
sed -i -e "/query_cache.*/ s/^#*/#/g" /etc/my.cnf
|
||||
fi
|
||||
|
||||
execute_cmd "systemctl restart mysqld" "Configuring database engine"
|
||||
|
||||
|
||||
|
@ -465,7 +498,7 @@ execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA
|
|||
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "Installing Pandora FMS packages"
|
||||
|
||||
# Copy gotty utility
|
||||
execute_cmd "wget https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
execute_cmd "wget https://pandorafms.com/library/wp-content/uploads/2019/11/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
|
||||
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, AIX version
|
||||
# Version 7.0NG.762, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, FreeBSD Version
|
||||
# Version 7.0NG.762, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, HP-UX Version
|
||||
# Version 7.0NG.762, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, GNU/Linux
|
||||
# Version 7.0NG.762, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, GNU/Linux
|
||||
# Version 7.0NG.762, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, Solaris Version
|
||||
# Version 7.0NG.762, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.761, AIX version
|
||||
# Version 7.0NG.762, AIX version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# FreeBSD/IPSO version
|
||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.761, HPUX Version
|
||||
# Version 7.0NG.762, HPUX Version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# Licensed under GPL license v2,
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.761, Solaris version
|
||||
# Version 7.0NG.762, Solaris version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, AIX version
|
||||
# Version 7.0NG.762, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.761-220518
|
||||
Version: 7.0NG.762-220621
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.761-220518"
|
||||
pandora_version="7.0NG.762-220621"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -31,7 +31,7 @@ fi
|
|||
if [ "$#" -ge 2 ]; then
|
||||
VERSION="$2"
|
||||
else
|
||||
VERSION="7.0NG.761"
|
||||
VERSION="7.0NG.762"
|
||||
fi
|
||||
|
||||
# Path for the generated DMG file
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.761" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.762" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.761" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.762" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<!-- <installation-check script="check()" />
|
||||
<script>
|
||||
<![CDATA[
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
||||
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
||||
|
||||
<key>CFBundleVersion</key> <string>7.0NG.761</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.761</string>
|
||||
<key>CFBundleVersion</key> <string>7.0NG.762</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.762 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.762</string>
|
||||
|
||||
<key>NSPrincipalClass</key><string>NSApplication</string>
|
||||
<key>NSMainNibFile</key><string>MainMenu</string>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, GNU/Linux
|
||||
# Version 7.0NG.762, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, FreeBSD Version
|
||||
# Version 7.0NG.762, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, HP-UX Version
|
||||
# Version 7.0NG.762, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, GNU/Linux
|
||||
# Version 7.0NG.762, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, GNU/Linux
|
||||
# Version 7.0NG.762, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, NetBSD Version
|
||||
# Version 7.0NG.762, NetBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.761, Solaris Version
|
||||
# Version 7.0NG.762, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1014,8 +1014,8 @@ my $Sem = undef;
|
|||
# Semaphore used to control the number of threads
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.761';
|
||||
use constant AGENT_BUILD => '220518';
|
||||
use constant AGENT_VERSION => '7.0NG.762';
|
||||
use constant AGENT_BUILD => '220621';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.761
|
||||
%define release 220518
|
||||
%define version 7.0NG.762
|
||||
%define release 220621
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 7.0NG.761
|
||||
%define release 220518
|
||||
%define version 7.0NG.762
|
||||
%define release 220621
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.761"
|
||||
PI_BUILD="220518"
|
||||
PI_VERSION="7.0NG.762"
|
||||
PI_BUILD="220621"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||
# Version 7.0NG.761
|
||||
# Version 7.0NG.762
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
|
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
|||
{Yes}
|
||||
|
||||
AppName
|
||||
{Pandora FMS Windows Agent v7.0NG.761}
|
||||
{Pandora FMS Windows Agent v7.0NG.762}
|
||||
|
||||
ApplicationID
|
||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{220518}
|
||||
{220621}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.761 Build 220518")
|
||||
#define PANDORA_VERSION ("7.0NG.762 Build 220621")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.761(Build 220518))"
|
||||
VALUE "ProductVersion", "(7.0NG.762(Build 220621))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.761-220518
|
||||
Version: 7.0NG.762-220621
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.761-220518"
|
||||
pandora_version="7.0NG.762-220621"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -1665,3 +1665,4 @@ godmode/um_client/vendor/sebastian/object-enumerator/tests
|
|||
godmode/um_client/vendor/sebastian/object-enumerator
|
||||
godmode/um_client/vendor/sebastian
|
||||
godmode/um_client/vendor
|
||||
/update_manager_client/resources/styles/pandora.css
|
|
@ -0,0 +1,5 @@
|
|||
START TRANSACTION;
|
||||
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('lts_name', 'Akira');
|
||||
|
||||
COMMIT;
|
|
@ -1,5 +1,54 @@
|
|||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `tuser_double_auth` DROP FOREIGN KEY `tuser_double_auth_ibfk_1`, MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tnotification_user` DROP FOREIGN KEY `tnotification_user_ibfk_2`, MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tnotification_source_user` DROP FOREIGN KEY `tnotification_source_user_ibfk_2`, MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tnotification_source_group_user` DROP FOREIGN KEY `tnotification_source_group_user_ibfk_2`, MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tvisual_console_elements_cache` DROP FOREIGN KEY `tvisual_console_elements_cache_ibfk_3`, MODIFY COLUMN `user_id` VARCHAR(255) DEFAULT NULL;
|
||||
ALTER TABLE `tusuario` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tuser_double_auth` ADD CONSTRAINT `tuser_double_auth_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `tusuario` (`id_user`) ON DELETE CASCADE;
|
||||
ALTER TABLE `tnotification_user` ADD CONSTRAINT `tnotification_user_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `tusuario` (`id_user`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE `tnotification_source_user` ADD CONSTRAINT `tnotification_source_user_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `tusuario` (`id_user`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE `tnotification_source_group_user` ADD CONSTRAINT `tnotification_source_group_user_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `tusuario` (`id_user`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE `tvisual_console_elements_cache` ADD CONSTRAINT `tvisual_console_elements_cache_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `tusuario` (`id_user`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE `tattachment` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tevento` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tincidencia` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tnota` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tsesion` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `ttrap` MODIFY COLUMN `id_usuario` VARCHAR(255) DEFAULT '';
|
||||
ALTER TABLE `tusuario_perfil` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `treset_pass_history` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tmensajes` MODIFY COLUMN `id_usuario_origen` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tgraph` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `treport` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tplanned_downtime` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tnetwork_map` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tpassword_history` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE `tupdate_journal` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tmap` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tdashboard` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `treport_template` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tmetaconsole_event` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tmetaconsole_event_history` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `treset_pass` MODIFY COLUMN `id_user` VARCHAR(255) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `tuser_task_scheduled` MODIFY COLUMN `id_usuario` VARCHAR(255) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `tbackup` MODIFY COLUMN `id_user` VARCHAR(255) DEFAULT '';
|
||||
|
||||
ALTER TABLE `tservice` ADD COLUMN `enable_sunburst` tinyint(1) NOT NULL default 0;
|
||||
ALTER TABLE `tdashboard` MODIFY `name` TEXT NOT NULL DEFAULT '';
|
||||
|
||||
COMMIT;
|
||||
ALTER TABLE `tagente` ADD COLUMN `satellite_server` INT NOT NULL default 0;
|
||||
ALTER TABLE `tmetaconsole_agent` ADD COLUMN `satellite_server` INT NOT NULL default 0;
|
||||
SET @st_oum763 = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tautoconfig' AND table_schema = DATABASE() AND column_name = 'disabled') > 0,
|
||||
"SELECT 1",
|
||||
"ALTER TABLE `tautoconfig` ADD COLUMN `disabled` TINYINT DEFAULT 0"
|
||||
));
|
||||
|
||||
PREPARE pr_oum763 FROM @st_oum763;
|
||||
EXECUTE pr_oum763;
|
||||
DEALLOCATE PREPARE pr_oum763;
|
||||
|
||||
COMMIT;
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ ui_require_css_file('first_task');
|
|||
ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clusters defined yet.') ]);
|
||||
?>
|
||||
|
||||
<div class="new_task_cluster">
|
||||
<div class="new_task">
|
||||
<div class="image_task_cluster">
|
||||
<?php echo html_print_image('images/first_task/slave-mode.png', true, ['title' => __('Clusters')]); ?>
|
||||
</div>
|
||||
|
|
|
@ -31,6 +31,10 @@ if (!$config['MR']) {
|
|||
$config['MR'] = 0;
|
||||
}
|
||||
|
||||
if (isset($config['lts_name']) === false) {
|
||||
$config['lts_name'] = '';
|
||||
}
|
||||
|
||||
echo '<a class="footer"target="_blank" href="'.$config['homeurl'].$license_file.'">';
|
||||
|
||||
require_once $config['homedir'].'/include/functions_update_manager.php';
|
||||
|
@ -46,7 +50,7 @@ if ($current_package === null) {
|
|||
echo __(
|
||||
'%s %s - %s - MR %s',
|
||||
get_product_name(),
|
||||
$pandora_version,
|
||||
$pandora_version.' '.$config['lts_name'],
|
||||
$build_package_version,
|
||||
$config['MR']
|
||||
).'</a><br><span>'.__('Page generated on %s', date('Y-m-d H:i:s')).'</span><br>';
|
||||
|
|
|
@ -954,7 +954,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
|
||||
$("a.autorefresh").click (function () {
|
||||
$("a.autorefresh_txt").toggle ();
|
||||
$("#combo_refr").toggle ();
|
||||
$("#combo_refr").toggle();
|
||||
$("select#ref").change (function () {
|
||||
href = $("a.autorefresh").attr ("href");
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
use function PHPSTORM_META\map;
|
||||
|
||||
// Begin.
|
||||
if (isset($config['id_user']) === false) {
|
||||
include 'general/login_page.php';
|
||||
|
@ -57,52 +59,22 @@ if (isset($config['autohidden_menu']) === true && (bool) $config['autohidden_men
|
|||
// Start of full lateral menu.
|
||||
echo sprintf('<div id="menu_full" class="menu_full_%s">', $menuTypeClass);
|
||||
|
||||
$custom_logo = 'images/custom_logo/'.$config['custom_logo'];
|
||||
$custom_logo_collapsed = 'images/custom_logo/'.$config['custom_logo_collapsed'];
|
||||
|
||||
if (defined('PANDORA_ENTERPRISE') === false) {
|
||||
$logo_title = get_product_name().' Opensource';
|
||||
$custom_logo = 'images/custom_logo/pandora_logo_head_3.png';
|
||||
$custom_logo_collapsed = 'images/custom_logo/pandora_logo_green_collapsed.png';
|
||||
} else {
|
||||
if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo) === true) {
|
||||
$custom_logo = ENTERPRISE_DIR.'/'.$custom_logo;
|
||||
}
|
||||
|
||||
$logo_title = get_product_name().' Enterprise';
|
||||
}
|
||||
|
||||
echo '<div class="logo_green"><a href="index.php?sec=main">';
|
||||
|
||||
if (isset($config['custom_logo']) === true) {
|
||||
echo html_print_image(
|
||||
$custom_logo,
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'width' => '215',
|
||||
'alt' => $logo_title,
|
||||
'class' => 'logo_full',
|
||||
'style' => ($menuCollapsed === true) ? 'display:none' : 'display:block',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($config['custom_logo_collapsed']) === true) {
|
||||
echo html_print_image(
|
||||
$custom_logo_collapsed,
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'width' => '60',
|
||||
'alt' => $logo_title,
|
||||
'class' => 'logo_icon',
|
||||
'style' => ($menuCollapsed === true) ? 'display:block' : 'display:none',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
echo '</a></div>';
|
||||
// Header logo.
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'logo_green',
|
||||
'content' => html_print_anchor(
|
||||
[
|
||||
'href' => ui_get_full_url('index.php'),
|
||||
'content' => html_print_header_logo_image(
|
||||
$menuCollapsed,
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
|
||||
require 'operation/menu.php';
|
||||
require 'godmode/menu.php';
|
||||
|
|
|
@ -245,8 +245,11 @@ if (!$new_agent && $alias != '') {
|
|||
}
|
||||
|
||||
// Remote configuration available.
|
||||
$remote_agent = false;
|
||||
if (isset($filename)) {
|
||||
if (file_exists($filename['md5'])) {
|
||||
$remote_agent = true;
|
||||
|
||||
$agent_name = agents_get_name($id_agente);
|
||||
$agent_name = io_safe_output($agent_name);
|
||||
$agent_md5 = md5($agent_name, false);
|
||||
|
@ -427,6 +430,42 @@ $table_server .= html_print_select(
|
|||
true
|
||||
).'<div class="label_select_child_icons"></div></div></div>';
|
||||
|
||||
|
||||
$table_satellite = '';
|
||||
if ($remote_agent === true) {
|
||||
// Satellite server selector.
|
||||
$satellite_servers = db_get_all_rows_filter(
|
||||
'tserver',
|
||||
['server_type' => SERVER_TYPE_ENTERPRISE_SATELLITE],
|
||||
[
|
||||
'id_server',
|
||||
'name',
|
||||
]
|
||||
);
|
||||
|
||||
$satellite_names = [];
|
||||
if (empty($satellite_servers) === false) {
|
||||
foreach ($satellite_servers as $s_server) {
|
||||
$satellite_names[$s_server['id_server']] = $s_server['name'];
|
||||
}
|
||||
|
||||
$table_satellite = '<div class="label_select"><p class="input_label">'.__('Satellite').'</p>';
|
||||
$table_satellite .= '<div class="label_select_parent">';
|
||||
|
||||
$table_satellite .= html_print_input(
|
||||
[
|
||||
'type' => 'select',
|
||||
'fields' => $satellite_names,
|
||||
'name' => 'satellite_server',
|
||||
'selected' => $satellite_server,
|
||||
'nothing' => __('None'),
|
||||
'nothinf_value' => 0,
|
||||
'return' => true,
|
||||
]
|
||||
).'<div class="label_select_child_icons"></div></div></div>';
|
||||
}
|
||||
}
|
||||
|
||||
// Description.
|
||||
$table_description = '<div class="label_select"><p class="input_label">'.__('Description').'</p>';
|
||||
$table_description .= html_print_textarea(
|
||||
|
@ -443,7 +482,7 @@ $table_description .= html_print_textarea(
|
|||
echo '<div class="first_row">
|
||||
<div class="box-shadow agent_options '.$agent_options_update.' white_box">
|
||||
<div class="agent_options_column_left">'.$table_agent_name.$table_alias.$table_ip.$table_primary_group.'</div>
|
||||
<div class="agent_options_column_right">'.$table_interval.$table_os.$table_server.$table_description.'</div>
|
||||
<div class="agent_options_column_right">'.$table_interval.$table_os.$table_server.$table_satellite.$table_description.'</div>
|
||||
</div>';
|
||||
if (!$new_agent && $alias != '') {
|
||||
echo $table_qr_code;
|
||||
|
@ -523,7 +562,6 @@ if (enterprise_installed()) {
|
|||
$table_adv_cascade .= $cps_html;
|
||||
}
|
||||
|
||||
|
||||
$table_adv_parent = '<div class="label_select"><label class="input_label">'.__('Parent').'</label>';
|
||||
$params = [];
|
||||
$params['return'] = true;
|
||||
|
@ -536,6 +574,11 @@ $params['value'] = db_get_value('alias', 'tagente', 'id_agente', $id_parent);
|
|||
$params['selectbox_id'] = 'cascade_protection_module';
|
||||
$params['javascript_is_function_select'] = true;
|
||||
$params['cascade_protection'] = true;
|
||||
if ($id_agente !== 0) {
|
||||
// Deletes the agent's offspring.
|
||||
$params['delete_offspring_agents'] = $id_agente;
|
||||
}
|
||||
|
||||
$table_adv_parent .= '<div class="label_simple_items">';
|
||||
$table_adv_parent .= ui_print_agent_autocomplete_input($params);
|
||||
if (enterprise_installed()) {
|
||||
|
|
|
@ -155,6 +155,7 @@ $alert_d7 = 1;
|
|||
$alert_recovery = 0;
|
||||
$alert_priority = 0;
|
||||
$server_name = '';
|
||||
$satellite_server = 0;
|
||||
$grupo = 0;
|
||||
$id_os = 9;
|
||||
// Windows.
|
||||
|
@ -985,6 +986,7 @@ if ($update_agent) {
|
|||
$old_values = db_get_row('tagente', 'id_agente', $id_agente);
|
||||
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
||||
$secondary_groups = (string) get_parameter('secondary_hidden', '');
|
||||
$satellite_server = (int) get_parameter('satellite_server', 0);
|
||||
|
||||
if ($fields === false) {
|
||||
$fields = [];
|
||||
|
@ -1092,6 +1094,7 @@ if ($update_agent) {
|
|||
'quiet' => $quiet,
|
||||
'cps' => $cps,
|
||||
'safe_mode_module' => $safe_mode_module,
|
||||
'satellite_server' => $satellite_server,
|
||||
];
|
||||
|
||||
if ($config['metaconsole_agent_cache'] == 1) {
|
||||
|
@ -1230,6 +1233,7 @@ if ($id_agente) {
|
|||
$cps = $agent['cps'];
|
||||
$safe_mode_module = $agent['safe_mode_module'];
|
||||
$safe_mode = ($safe_mode_module) ? 1 : 0;
|
||||
$satellite_server = (int) $agent['satellite_server'];
|
||||
}
|
||||
|
||||
$update_module = (bool) get_parameter('update_module');
|
||||
|
|
|
@ -315,7 +315,20 @@ html_print_select_groups(
|
|||
'',
|
||||
false
|
||||
);
|
||||
echo '</div>';
|
||||
echo '</div></td>';
|
||||
|
||||
// Recursion checkbox.
|
||||
echo '<td>';
|
||||
echo __('Recursion').' ';
|
||||
html_print_checkbox(
|
||||
'recursion',
|
||||
1,
|
||||
$recursion,
|
||||
false,
|
||||
false,
|
||||
'this.form.submit()'
|
||||
);
|
||||
echo '</td>';
|
||||
echo '<td>';
|
||||
echo __('Show Agents').' ';
|
||||
$fields = [
|
||||
|
@ -346,19 +359,6 @@ foreach ($pre_fields as $key => $value) {
|
|||
|
||||
html_print_select($fields, 'os', $os, 'this.form.submit()', 'All', 0);
|
||||
|
||||
echo '</td>';
|
||||
|
||||
echo '<td>';
|
||||
echo __('Recursion').' ';
|
||||
html_print_checkbox(
|
||||
'recursion',
|
||||
1,
|
||||
$recursion,
|
||||
false,
|
||||
false,
|
||||
'this.form.submit()'
|
||||
);
|
||||
|
||||
echo '</td><td>';
|
||||
echo __('Search').' ';
|
||||
html_print_input_text('search', $search, '', 12);
|
||||
|
|
|
@ -539,6 +539,12 @@ if ($id_downtime > 0) {
|
|||
// only action to postpone on once type is enabled and the other are disabled.
|
||||
$disabled_in_execution = (int) $running;
|
||||
|
||||
$return_all_group = false;
|
||||
|
||||
if (users_can_manage_group_all('AW') === true || $disabled) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table = new StdClass();
|
||||
$table->class = 'databox filters';
|
||||
$table->width = '100%';
|
||||
|
@ -557,7 +563,7 @@ $table->data[1][0] = __('Group');
|
|||
$table->data[1][1] = '<div class="w250px">'.html_print_select_groups(
|
||||
false,
|
||||
$access,
|
||||
true,
|
||||
$return_all_group,
|
||||
'id_group',
|
||||
$id_group,
|
||||
'',
|
||||
|
@ -793,7 +799,7 @@ $table->width = '100%';
|
|||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = __('Group filter');
|
||||
$table->data[0][1] = html_print_select_groups(false, $access, true, 'filter_group', $filter_group, '', '', '', true, false, true, '', false, 'min-width:180px;margin-right:15px;');
|
||||
$table->data[0][1] = html_print_select_groups(false, $access, $return_all_group, 'filter_group', $filter_group, '', '', '', true, false, true, '', false, 'min-width:180px;margin-right:15px;');
|
||||
$table->data[0][2] = __('Recursion').'  '.html_print_checkbox('recursion', 1, $recursion, true, false, '');
|
||||
|
||||
$table->data[1][0] = __('Available agents');
|
||||
|
|
|
@ -238,6 +238,9 @@ if ($searchFlag) {
|
|||
}
|
||||
|
||||
$id_agents = array_keys($agents);
|
||||
if (empty($id_agents) === true) {
|
||||
$id_agents[0] = 0;
|
||||
}
|
||||
|
||||
$total = agents_get_alerts_simple(
|
||||
(empty($agent_id) === false) ? ['0' => $agent_id] : $id_agents,
|
||||
|
|
|
@ -261,7 +261,7 @@ $table->data[2][1] = html_print_select_from_sql(
|
|||
'id_command',
|
||||
$id_command,
|
||||
'',
|
||||
__('None'),
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
|
|
|
@ -140,7 +140,7 @@ function process_manage_delete($id_agents)
|
|||
}
|
||||
|
||||
|
||||
$id_group = (int) get_parameter('id_group');
|
||||
$id_group = (is_metaconsole() === true) ? get_parameter('id_group', '') : (int) get_parameter('id_group');
|
||||
$id_agents = get_parameter('id_agents');
|
||||
$recursion = get_parameter('recursion');
|
||||
$delete = (bool) get_parameter_post('delete');
|
||||
|
@ -282,15 +282,15 @@ $table->data[3][0] .= '<span id="agent_loading" class="invisible">';
|
|||
$table->data[3][0] .= html_print_image('images/spinner.png', true);
|
||||
$table->data[3][0] .= '</span>';
|
||||
|
||||
$agents = agents_get_group_agents(
|
||||
array_keys(users_get_groups($config['id_user'], 'AW', false)),
|
||||
['disabled' => 2],
|
||||
'none',
|
||||
false,
|
||||
false,
|
||||
is_metaconsole(),
|
||||
'|'
|
||||
);
|
||||
$agents = [];
|
||||
if (is_metaconsole() === false) {
|
||||
$agents = agents_get_group_agents(
|
||||
array_keys(users_get_groups($config['id_user'], 'AW', false)),
|
||||
['disabled' => 2],
|
||||
'none'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
$table->data[3][1] = html_print_select(
|
||||
$agents,
|
||||
|
|
|
@ -258,9 +258,9 @@ $table->style[0] = 'font-weight: bold;';
|
|||
$table->style[2] = 'font-weight: bold;';
|
||||
$table->size = [];
|
||||
$table->size[0] = '15%';
|
||||
$table->size[1] = '40%';
|
||||
$table->size[1] = '35%';
|
||||
$table->size[2] = '15%';
|
||||
$table->size[3] = '40%';
|
||||
$table->size[3] = '35%';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
|
@ -276,7 +276,12 @@ $table->data[0][1] = html_print_select(
|
|||
false,
|
||||
__('Select'),
|
||||
0,
|
||||
true
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width: 100%;'
|
||||
);
|
||||
$table->data[0][2] = '';
|
||||
$table->data[0][3] = '';
|
||||
|
@ -295,7 +300,8 @@ $table->data[1][1] = html_print_select_groups(
|
|||
false,
|
||||
true,
|
||||
'',
|
||||
$id_alert_template == 0
|
||||
$id_alert_template == 0,
|
||||
'width: 100%;'
|
||||
);
|
||||
|
||||
$table->data[0][2] = __('Show alerts on disabled modules');
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* 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
|
||||
|
@ -89,9 +89,9 @@ if ($update) {
|
|||
$agents_ = [];
|
||||
}
|
||||
|
||||
// If the option to select all of one group or module type is checked
|
||||
// If the option to select all of one group or module type is checked.
|
||||
if ($force) {
|
||||
if ($force == 'type') {
|
||||
if ($force === 'type') {
|
||||
$type_condition = '';
|
||||
if ($module_type != 0) {
|
||||
$type_condition = "AND tam.id_tipo_modulo = $module_type";
|
||||
|
@ -109,7 +109,7 @@ if ($update) {
|
|||
$agents_ = [];
|
||||
}
|
||||
|
||||
// Create an array of agent ids
|
||||
// Create an array of agent ids.
|
||||
$agents_ = extract_column($agents_, 'id_agente');
|
||||
|
||||
foreach ($agents_ as $id_agent) {
|
||||
|
@ -136,7 +136,7 @@ if ($update) {
|
|||
if ($success == 0) {
|
||||
$error_msg = __('Error updating the modules from a module type');
|
||||
}
|
||||
} else if ($force == 'group') {
|
||||
} else if ($force === 'group') {
|
||||
$agents_ = array_keys(agents_get_group_agents($group_select, false, 'none'));
|
||||
|
||||
foreach ($agents_ as $id_agent) {
|
||||
|
@ -2226,28 +2226,30 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
$values['quiet'] = get_parameter('quiet_select');
|
||||
}
|
||||
|
||||
$filter_modules = false;
|
||||
|
||||
if (!is_numeric($module_name) or ($module_name != 0)) {
|
||||
$filter_modules['nombre'] = $module_name;
|
||||
}
|
||||
|
||||
// Whether to update module tag info
|
||||
// Whether to update module tag info.
|
||||
$update_tags = get_parameter('id_tag', false);
|
||||
|
||||
if (array_search(0, $agents_select) !== false) {
|
||||
// Apply at All agents.
|
||||
$modules = db_get_all_rows_filter(
|
||||
'tagente_modulo',
|
||||
$filter_modules,
|
||||
[
|
||||
'id_agente_modulo',
|
||||
'id_tipo_modulo',
|
||||
]
|
||||
if (is_numeric($module_name) === false || ($module_name !== 0)) {
|
||||
$filterModules = sprintf('AND tam.nombre = \'%s\'', $module_name);
|
||||
} else {
|
||||
$filterModules = '';
|
||||
}
|
||||
|
||||
// Apply at All agents (within valid groups).
|
||||
$modules = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT tam.id_agente_modulo, tam.id_tipo_modulo
|
||||
FROM tagente_modulo tam INNER JOIN tagente ta
|
||||
ON ta.id_agente = tam.id_agente
|
||||
WHERE ta.id_grupo IN (%s) %s;',
|
||||
implode(',', array_keys(users_get_groups())),
|
||||
$filterModules
|
||||
)
|
||||
);
|
||||
} else {
|
||||
if ($module_name == '0') {
|
||||
// Any module
|
||||
if ($module_name === '0') {
|
||||
// Any module.
|
||||
$modules = db_get_all_rows_filter(
|
||||
'tagente_modulo',
|
||||
['id_agente' => $agents_select],
|
||||
|
@ -2275,12 +2277,12 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
return false;
|
||||
}
|
||||
|
||||
if (($module_status == 'unknown') && ($module_name == '0')) {
|
||||
if (($module_status === 'unknown') && ($module_name == '0')) {
|
||||
$modules_to_delete = [];
|
||||
foreach ($modules as $mod_id) {
|
||||
$mod_status = (int) db_get_value_filter('estado', 'tagente_estado', ['id_agente_modulo' => $mod_id]);
|
||||
|
||||
// Unknown, not init and no data modules
|
||||
// Unknown, not init and no data modules.
|
||||
if ($mod_status == 3 || $mod_status == 4 || $mod_status == 5) {
|
||||
$modules_to_delete[$mod_id] = $mod_id;
|
||||
}
|
||||
|
|
|
@ -525,21 +525,21 @@ $menu_godmode['links']['sub'] = $sub;
|
|||
|
||||
// Update Manager
|
||||
if (check_acl($config['id_user'], 0, 'PM') && $config['enable_update_manager']) {
|
||||
$menu_godmode['messages']['text'] = __('Update manager');
|
||||
$menu_godmode['messages']['text'] = __('Warp Update');
|
||||
$menu_godmode['messages']['id'] = 'god-um_messages';
|
||||
$menu_godmode['messages']['sec2'] = '';
|
||||
|
||||
$sub = [];
|
||||
$sub['godmode/update_manager/update_manager&tab=offline']['text'] = __('Update Manager offline');
|
||||
$sub['godmode/update_manager/update_manager&tab=offline']['text'] = __('Update offline');
|
||||
$sub['godmode/update_manager/update_manager&tab=offline']['id'] = 'Offline';
|
||||
|
||||
$sub['godmode/update_manager/update_manager&tab=online']['text'] = __('Update Manager online');
|
||||
$sub['godmode/update_manager/update_manager&tab=online']['text'] = __('Update online');
|
||||
$sub['godmode/update_manager/update_manager&tab=online']['id'] = 'Online';
|
||||
|
||||
$sub['godmode/update_manager/update_manager&tab=setup']['text'] = __('Update Manager options');
|
||||
$sub['godmode/update_manager/update_manager&tab=setup']['text'] = __('Options');
|
||||
$sub['godmode/update_manager/update_manager&tab=setup']['id'] = 'Options';
|
||||
|
||||
$sub['godmode/update_manager/update_manager&tab=history']['text'] = __('Update Manager journal');
|
||||
$sub['godmode/update_manager/update_manager&tab=history']['text'] = __('Warp journal');
|
||||
$sub['godmode/update_manager/update_manager&tab=history']['id'] = 'Journal';
|
||||
|
||||
$menu_godmode['messages']['sub'] = $sub;
|
||||
|
|
|
@ -178,6 +178,7 @@ switch ($type) {
|
|||
break;
|
||||
}
|
||||
|
||||
$query_filter = [];
|
||||
if (empty($query_filter) === false) {
|
||||
$query_filter = json_decode($query_filter, true);
|
||||
}
|
||||
|
|
|
@ -606,6 +606,7 @@ switch ($action) {
|
|||
$event_graph_by_criticity = $style['event_graph_by_criticity'];
|
||||
$event_graph_validated_vs_unvalidated = $style['event_graph_validated_vs_unvalidated'];
|
||||
$include_extended_events = $item['show_extended_events'];
|
||||
$custom_data_events = $style['custom_data_events'];
|
||||
|
||||
$filter_search = $style['event_filter_search'];
|
||||
$filter_exclude = $style['event_filter_exclude'];
|
||||
|
@ -631,6 +632,7 @@ switch ($action) {
|
|||
|
||||
|
||||
$include_extended_events = $item['show_extended_events'];
|
||||
$custom_data_events = $style['custom_data_events'];
|
||||
break;
|
||||
|
||||
case 'event_report_module':
|
||||
|
@ -665,6 +667,7 @@ switch ($action) {
|
|||
|
||||
|
||||
$include_extended_events = $item['show_extended_events'];
|
||||
$custom_data_events = $style['custom_data_events'];
|
||||
break;
|
||||
|
||||
case 'general':
|
||||
|
@ -2911,6 +2914,23 @@ $class = 'databox filters';
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_custom_data_events" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Show custom data');
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
html_print_checkbox_switch(
|
||||
'custom_data_events',
|
||||
true,
|
||||
$custom_data_events
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="row_event_graphs" class="datos">
|
||||
<td class="bolder"><?php echo __('Event graphs'); ?></td>
|
||||
<td>
|
||||
|
@ -5974,6 +5994,7 @@ function chooseType() {
|
|||
$("#row_event_graph_by_criticity").hide();
|
||||
$("#row_event_graph_by_validated").hide();
|
||||
$("#row_extended_events").hide();
|
||||
$("#row_custom_data_events").hide();
|
||||
$("#row_netflow_filter").hide();
|
||||
$("#row_max_values").hide();
|
||||
$("#row_resolution").hide();
|
||||
|
@ -6044,6 +6065,7 @@ function chooseType() {
|
|||
$("#row_event_graph_by_criticity").show();
|
||||
$("#row_event_graph_by_validated").show();
|
||||
$("#row_extended_events").show();
|
||||
$("#row_custom_data_events").show();
|
||||
|
||||
$("#row_filter_search").show();
|
||||
$("#row_filter_exclude").show();
|
||||
|
@ -6371,6 +6393,7 @@ function chooseType() {
|
|||
$("#row_event_graph_by_validated").show();
|
||||
$("#row_event_type").show();
|
||||
$("#row_extended_events").show();
|
||||
$("#row_custom_data_events").show();
|
||||
|
||||
$("#row_filter_search").show();
|
||||
$("#row_filter_exclude").show();
|
||||
|
@ -6389,7 +6412,7 @@ function chooseType() {
|
|||
$("#row_event_graphs").show();
|
||||
$("#row_event_type").show();
|
||||
$("#row_extended_events").show();
|
||||
$("#row_extended_events").show();
|
||||
$("#row_custom_data_events").show();
|
||||
|
||||
$("#row_event_graph_by_user").show();
|
||||
$("#row_event_graph_by_criticity").show();
|
||||
|
@ -6414,6 +6437,7 @@ function chooseType() {
|
|||
$("#row_event_graphs").show();
|
||||
$("#row_event_type").show();
|
||||
$("#row_extended_events").show();
|
||||
$("#row_custom_data_events").show();
|
||||
|
||||
$("#row_event_graph_by_user").show();
|
||||
$("#row_event_graph_by_criticity").show();
|
||||
|
|
|
@ -2224,12 +2224,18 @@ switch ($action) {
|
|||
$filter_event_status
|
||||
);
|
||||
|
||||
$custom_data_events = get_parameter_switch(
|
||||
'custom_data_events',
|
||||
0
|
||||
);
|
||||
|
||||
$style['event_graph_by_agent'] = $event_graph_by_agent;
|
||||
$style['event_graph_by_user_validator'] = $event_graph_by_user_validator;
|
||||
$style['event_graph_by_criticity'] = $event_graph_by_criticity;
|
||||
$style['event_graph_validated_vs_unvalidated'] = $event_graph_validated_vs_unvalidated;
|
||||
$style['event_filter_search'] = $event_filter_search;
|
||||
$style['event_filter_exclude'] = $event_filter_exclude;
|
||||
$style['custom_data_events'] = $custom_data_events;
|
||||
|
||||
|
||||
if ($label != '') {
|
||||
|
@ -2957,6 +2963,11 @@ switch ($action) {
|
|||
''
|
||||
);
|
||||
|
||||
$custom_data_events = get_parameter_switch(
|
||||
'custom_data_events',
|
||||
0
|
||||
);
|
||||
|
||||
|
||||
// Added for events items.
|
||||
$style['show_summary_group'] = $show_summary_group;
|
||||
|
@ -2976,6 +2987,7 @@ switch ($action) {
|
|||
$style['event_graph_validated_vs_unvalidated'] = $event_graph_validated_vs_unvalidated;
|
||||
$style['event_filter_search'] = $event_filter_search;
|
||||
$style['event_filter_exclude'] = $event_filter_exclude;
|
||||
$style['custom_data_events'] = $custom_data_events;
|
||||
|
||||
if ($label != '') {
|
||||
$style['label'] = $label;
|
||||
|
|
|
@ -256,16 +256,18 @@ $table->style[0] = 'font-weight: bold';
|
|||
$table->size[0] = '70%';
|
||||
$table->size[1] = '30%';
|
||||
|
||||
// enterprise_hook('enterprise_warnings_history_days');
|
||||
$table->data[1][0] = __('Max. days before delete events');
|
||||
|
||||
$table->data[1][1] = html_print_input_text(
|
||||
'event_purge',
|
||||
$config['event_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[1][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => 99999,
|
||||
'name' => 'event_purge',
|
||||
'value' => $config['event_purge'],
|
||||
'return' => true,
|
||||
'min' => ((((bool) $config['history_event_enabled'] === true) && $config['history_event_days'] > 0) ? $config['history_event_days'] + 1 : null),
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[2][0] = __('Max. days before delete traps');
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
<?php
|
||||
/**
|
||||
* Setup view for Netflow
|
||||
*
|
||||
* @category Setup
|
||||
* @package Pandora FMS
|
||||
* @subpackage Configuration
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
* 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
|
||||
|
@ -18,6 +26,7 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
require_once 'include/functions_ui.php';
|
||||
|
@ -26,6 +35,7 @@ check_login();
|
|||
|
||||
$update = (bool) get_parameter('update');
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->border = 0;
|
||||
$table->cellspacing = 3;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -203,20 +203,22 @@ if (is_ajax() !== true) {
|
|||
var clientMode = '<?php echo $mode; ?>';
|
||||
</script>
|
||||
<?php
|
||||
$server_version = (string) db_get_value_sql(
|
||||
'SELECT `version` FROM `tserver` ORDER BY `master` DESC'
|
||||
);
|
||||
if ($server_version !== false
|
||||
&& preg_match('/NG\.(\d\.*\d*?) /', $server_version, $matches) > 0
|
||||
) {
|
||||
if ((float) $matches[1] !== (float) $current_package) {
|
||||
ui_print_warning_message(
|
||||
__(
|
||||
'Master server version %s does not match console version %s.',
|
||||
(float) $matches[1],
|
||||
(float) $current_package
|
||||
)
|
||||
);
|
||||
if (function_exists('db_get_value_sql') === true) {
|
||||
$server_version = (string) db_get_value_sql(
|
||||
'SELECT `version` FROM `tserver` ORDER BY `master` DESC'
|
||||
);
|
||||
if ($server_version !== false
|
||||
&& preg_match('/NG\.(\d\.*\d*?) /', $server_version, $matches) > 0
|
||||
) {
|
||||
if ((float) $matches[1] !== floor((float) $current_package)) {
|
||||
ui_print_warning_message(
|
||||
__(
|
||||
'Master server version %s does not match console version %s.',
|
||||
(float) $matches[1],
|
||||
(float) $current_package
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -313,7 +315,7 @@ if (is_array($config) === true) {
|
|||
if ($mode === Manager::MODE_ONLINE
|
||||
&& ($puid === null || $puid === 'OFFLINE')
|
||||
) {
|
||||
ui_print_error_message(__('Update manager online requires registration.'));
|
||||
ui_print_error_message(__('Update online requires registration.'));
|
||||
}
|
||||
|
||||
if ($mode === Manager::MODE_OFFLINE) {
|
||||
|
|
|
@ -5,10 +5,11 @@ if ($argv === null) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
// UMC dependencies.
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
|
||||
chdir(__DIR__.'/../../');
|
||||
|
||||
// UMC dependencies.
|
||||
require_once 'vendor/autoload.php';
|
||||
// Config file.
|
||||
$cnf_file = 'include/config.php';
|
||||
|
||||
if (file_exists($cnf_file) === false) {
|
||||
|
@ -19,9 +20,6 @@ ini_set('display_errors', 1);
|
|||
|
||||
require_once $cnf_file;
|
||||
|
||||
// PandoraFMS dependencies.
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
|
||||
use PandoraFMS\Core\Config;
|
||||
use PandoraFMS\Core\DBMaintainer;
|
||||
|
||||
|
|
|
@ -1,21 +1,36 @@
|
|||
<?php
|
||||
/**
|
||||
* Update manager.
|
||||
*
|
||||
* @category Update Manager
|
||||
* @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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Pandora FMS - http://pandorafms.com
|
||||
// ==================================================
|
||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||
// Please see http://pandorafms.org for full contribution list
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; version 2
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
check_login();
|
||||
// The ajax is in
|
||||
// include/ajax/update_manager.php
|
||||
// The ajax is in include/ajax/update_manager.php.
|
||||
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
|
@ -36,59 +51,65 @@ if ($php_version_array[0] < 7) {
|
|||
$tab = get_parameter('tab', 'online');
|
||||
|
||||
$buttons['setup'] = [
|
||||
'active' => ($tab == 'setup') ? true : false,
|
||||
'active' => ($tab === 'setup') ? true : false,
|
||||
'text' => '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=setup'
|
||||
).'">'.html_print_image('images/gm_setup.png', true, ['title' => __('Options'), 'class' => 'invert_filter']).'</a>',
|
||||
).'">'.html_print_image('images/gm_setup.png', true, ['title' => __('Setup'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
$buttons['history'] = [
|
||||
'active' => ($tab == 'history') ? true : false,
|
||||
'active' => ($tab === 'history') ? true : false,
|
||||
'text' => '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=histo'
|
||||
).'ry">'.html_print_image('images/gm_db.png', true, ['title' => __('Journal'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
$buttons['offline'] = [
|
||||
'active' => ($tab == 'offline') ? true : false,
|
||||
'active' => ($tab === 'offline') ? true : false,
|
||||
'text' => '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=offli'
|
||||
).'ne">'.html_print_image('images/box.png', true, ['title' => __('Offline update manager'), 'class' => 'invert_filter']).'</a>',
|
||||
).'ne">'.html_print_image('images/box.png', true, ['title' => __('Offline update'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
$buttons['online'] = [
|
||||
'active' => ($tab == 'online') ? true : false,
|
||||
'active' => ($tab === 'online') ? true : false,
|
||||
'text' => '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=onlin'
|
||||
).'e">'.html_print_image('images/op_gis.png', true, ['title' => __('Online update manager'), 'class' => 'invert_filter']).'</a>',
|
||||
).'e">'.html_print_image('images/op_gis.png', true, ['title' => __('Online update'), 'class' => 'invert_filter']).'</a>',
|
||||
];
|
||||
|
||||
switch ($tab) {
|
||||
case 'history':
|
||||
$title = __('Update manager » Journal');
|
||||
$title = __('Journal');
|
||||
break;
|
||||
|
||||
case 'setup':
|
||||
$title = __('Update manager » Setup');
|
||||
$title = __('Setup');
|
||||
break;
|
||||
|
||||
case 'offline':
|
||||
$title = __('Update manager » Offline');
|
||||
$title = __('Offline');
|
||||
break;
|
||||
|
||||
case 'online':
|
||||
default:
|
||||
$title = __('Update manager » Online');
|
||||
$title = __('Online');
|
||||
break;
|
||||
}
|
||||
|
||||
ui_print_page_header(
|
||||
ui_print_standard_header(
|
||||
$title,
|
||||
'images/gm_setup.png',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
$buttons
|
||||
$buttons,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => 'Warp Update',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
switch ($tab) {
|
||||
|
@ -107,6 +128,39 @@ switch ($tab) {
|
|||
|
||||
case 'online':
|
||||
default:
|
||||
if (is_metaconsole() === false && has_metaconsole() === true) {
|
||||
$meta_puid = null;
|
||||
|
||||
$server_id = $config['metaconsole_node_id'];
|
||||
$dbh = (object) $config['dbconnection'];
|
||||
|
||||
// Connect to metaconsole.
|
||||
$result_code = metaconsole_load_external_db(
|
||||
[
|
||||
'dbhost' => $config['replication_dbhost'],
|
||||
'dbuser' => $config['replication_dbuser'],
|
||||
'dbpass' => io_output_password($config['replication_dbpass']),
|
||||
'dbname' => $config['replication_dbname'],
|
||||
]
|
||||
);
|
||||
|
||||
if ($result_code < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
$value = db_get_value('value', 'tconfig', 'token', 'pandora_uid');
|
||||
|
||||
$meta_puid = $value;
|
||||
|
||||
// Return connection to node.
|
||||
metaconsole_restore_db();
|
||||
|
||||
if ($meta_puid === false || $meta_puid === null) {
|
||||
ui_print_warning_message(__('Please register on metaconsole first.'));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$mode = \UpdateManager\UI\Manager::MODE_ONLINE;
|
||||
include $config['homedir'].'/godmode/um_client/index.php';
|
||||
break;
|
||||
|
|
|
@ -268,17 +268,18 @@ $table->style[$i] = 'font-weight: bolder;width:250px';
|
|||
|
||||
$url_update_manager = update_manager_get_url();
|
||||
|
||||
$table->data[$i][0] = __('URL update manager:');
|
||||
$table->data[$i][0] = __('Warp Update URL');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'url_update_manager',
|
||||
$url_update_manager,
|
||||
__('URL update manager'),
|
||||
80,
|
||||
60,
|
||||
255,
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Use secured update manager:');
|
||||
$table->data[$i][0] = __('Use secured Warp Update');
|
||||
$table->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'switch',
|
||||
|
@ -287,7 +288,7 @@ $table->data[$i++][1] = html_print_input(
|
|||
]
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Proxy server:');
|
||||
$table->data[$i][0] = __('Proxy server');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'update_manager_proxy_server',
|
||||
$update_manager_proxy_server,
|
||||
|
@ -297,7 +298,7 @@ $table->data[$i++][1] = html_print_input_text(
|
|||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Proxy port:');
|
||||
$table->data[$i][0] = __('Proxy port');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'update_manager_proxy_port',
|
||||
$update_manager_proxy_port,
|
||||
|
@ -307,7 +308,7 @@ $table->data[$i++][1] = html_print_input_text(
|
|||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Proxy user:');
|
||||
$table->data[$i][0] = __('Proxy user');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'update_manager_proxy_user',
|
||||
$update_manager_proxy_user,
|
||||
|
@ -317,7 +318,7 @@ $table->data[$i++][1] = html_print_input_text(
|
|||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Proxy password:');
|
||||
$table->data[$i][0] = __('Proxy password');
|
||||
$table->data[$i++][1] = html_print_input_password(
|
||||
'update_manager_proxy_password',
|
||||
$update_manager_proxy_password,
|
||||
|
@ -327,7 +328,7 @@ $table->data[$i++][1] = html_print_input_password(
|
|||
true
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Allow no-consecutive patches:');
|
||||
$table->data[$i][0] = __('Allow no-consecutive patches');
|
||||
$table->data[$i++][1] = html_print_switch(
|
||||
[
|
||||
'name' => 'allow_offline_patches',
|
||||
|
@ -336,7 +337,7 @@ $table->data[$i++][1] = html_print_switch(
|
|||
]
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Limit to LTS updates:');
|
||||
$table->data[$i][0] = __('Limit to LTS updates');
|
||||
$table->data[$i++][1] = html_print_switch(
|
||||
[
|
||||
'name' => 'lts_updates',
|
||||
|
@ -346,11 +347,11 @@ $table->data[$i++][1] = html_print_switch(
|
|||
);
|
||||
|
||||
|
||||
$table->data[$i][0] = __('Registration ID:');
|
||||
$table->data[$i++][1] = '<i>'.$config['pandora_uid'].'</i>';
|
||||
$table->data[$i][0] = __('Registration ID');
|
||||
$table->data[$i++][1] = '<i>'.($config['pandora_uid'] ?? __('Not registred yet')).'</i>';
|
||||
|
||||
if (update_manager_verify_registration() === true && users_is_admin()) {
|
||||
$table->data[$i][0] = __('Cancel registration:');
|
||||
$table->data[$i][0] = __('Cancel registration');
|
||||
$table->data[$i][1] = '<a href="';
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$table->data[$i][1] .= ui_get_full_url(
|
||||
|
@ -367,7 +368,7 @@ if (update_manager_verify_registration() === true && users_is_admin()) {
|
|||
|
||||
if (license_free()) {
|
||||
$config['identification_reminder'] = isset($config['identification_reminder']) ? $config['identification_reminder'] : 1;
|
||||
$table->data[$i][0] = __('Pandora FMS community reminder').ui_print_help_tip(__('Every 8 days, a message is displayed to admin users to remember to register this Pandora instance'), true);
|
||||
$table->data[$i][0] = __('%s community reminder', get_product_name()).ui_print_help_tip(__('Every 8 days, a message is displayed to admin users to remember to register this %s instance', get_product_name()), true);
|
||||
$table->data[$i][1] = __('Yes').' '.html_print_radio_button('identification_reminder', 1, '', $config['identification_reminder'], true).' ';
|
||||
$table->data[$i++][1] .= __('No').' '.html_print_radio_button('identification_reminder', 0, '', $config['identification_reminder'], true);
|
||||
}
|
||||
|
|
|
@ -860,7 +860,7 @@ if (!$new_user) {
|
|||
'',
|
||||
'',
|
||||
20,
|
||||
100,
|
||||
255,
|
||||
!$new_user || $view_mode,
|
||||
'',
|
||||
[
|
||||
|
|
|
@ -713,7 +713,7 @@ class DiscoveryTaskList extends HTML
|
|||
}
|
||||
|
||||
if ($task['id_recon_script'] == 0 || $ipam === true) {
|
||||
$data[4] = $subnet;
|
||||
$data[4] = ui_print_truncate_text($subnet, 50, true, true, true, '[…]');
|
||||
} else {
|
||||
$data[4] = '-';
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
|
@ -86,6 +86,8 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
$addedItems = json_decode($addedItems);
|
||||
$all = (string) get_parameter('all', 'all');
|
||||
|
||||
$delete_offspring_agents = (int) get_parameter('delete_offspring_agents', 0);
|
||||
|
||||
if ($addedItems != null) {
|
||||
foreach ($addedItems as $item) {
|
||||
echo $item."|\n";
|
||||
|
@ -111,21 +113,9 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
}
|
||||
|
||||
$data = [];
|
||||
// Get agents for only the alias
|
||||
// Get agents for only the alias.
|
||||
$filter_alias = $filter;
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
$filter_alias[] = '(UPPER(alias) LIKE "%'.$string.'%")';
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
$filter_alias[] = '(UPPER(alias) LIKE \'%'.$string.'%\')';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$filter_alias[] = '(UPPER(alias) LIKE UPPER(\'%'.$string.'%\'))';
|
||||
break;
|
||||
}
|
||||
$filter_alias[] = '(UPPER(alias) LIKE "%'.$string.'%")';
|
||||
|
||||
$agents = agents_get_agents($filter_alias, ['id_agente', 'nombre', 'direccion', 'alias']);
|
||||
if ($agents !== false) {
|
||||
|
@ -142,19 +132,7 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
|
||||
// Get agents for only the name.
|
||||
$filter_agents = $filter;
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
$filter_agents[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) LIKE "%'.$string.'%")';
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
$filter_agents[] = '(UPPER(alias) NOT LIKE \'%'.$string.'%\' AND UPPER(nombre) LIKE \'%'.$string.'%\')';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$filter_agents[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) LIKE UPPER(\'%'.$string.'%\'))';
|
||||
break;
|
||||
}
|
||||
$filter_agents[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) LIKE "%'.$string.'%")';
|
||||
|
||||
$agents = agents_get_agents($filter_agents, ['id_agente', 'nombre', 'direccion', 'alias']);
|
||||
if ($agents !== false) {
|
||||
|
@ -169,21 +147,9 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
}
|
||||
}
|
||||
|
||||
// Get agents for only the address
|
||||
// Get agents for only the address.
|
||||
$filter_address = $filter;
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
$filter_address[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) LIKE "%'.$string.'%")';
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
$filter_address[] = '(UPPER(alias) NOT LIKE \'%'.$string.'%\' AND UPPER(nombre) NOT LIKE \'%'.$string.'%\' AND UPPER(direccion) LIKE \'%'.$string.'%\')';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$filter_address[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) LIKE UPPER(\'%'.$string.'%\'))';
|
||||
break;
|
||||
}
|
||||
$filter_address[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) LIKE "%'.$string.'%")';
|
||||
|
||||
$agents = agents_get_agents($filter_address, ['id_agente', 'nombre', 'direccion', 'alias']);
|
||||
if ($agents !== false) {
|
||||
|
@ -198,21 +164,9 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
}
|
||||
}
|
||||
|
||||
// Get agents for only the description
|
||||
// Get agents for only the description.
|
||||
$filter_description = $filter;
|
||||
switch ($config['dbtype']) {
|
||||
case 'mysql':
|
||||
$filter_description[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) NOT LIKE "%'.$string.'%" AND UPPER(comentarios) LIKE "%'.$string.'%")';
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
$filter_description[] = '(UPPER(alias) NOT LIKE \'%'.$string.'%\' AND UPPER(nombre) NOT LIKE \'%'.$string.'%\' AND UPPER(direccion) NOT LIKE \'%'.$string.'%\' AND UPPER(comentarios) LIKE \'%'.$string.'%\')';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$filter_description[] = '(UPPER(alias) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(comentarios) LIKE UPPER(\'%'.$string.'%\'))';
|
||||
break;
|
||||
}
|
||||
$filter_description[] = '(UPPER(alias) NOT LIKE "%'.$string.'%" AND UPPER(nombre) NOT LIKE "%'.$string.'%" AND UPPER(direccion) NOT LIKE "%'.$string.'%" AND UPPER(comentarios) LIKE "%'.$string.'%")';
|
||||
|
||||
$agents = agents_get_agents($filter_description, ['id_agente', 'nombre', 'direccion', 'alias']);
|
||||
if ($agents !== false) {
|
||||
|
@ -227,6 +181,18 @@ if ($search_agents && (!is_metaconsole() || $force_local)) {
|
|||
}
|
||||
}
|
||||
|
||||
if (empty($data) === false && $delete_offspring_agents !== 0) {
|
||||
// Gets offspring and deletes them, including himself.
|
||||
$agents_offspring = agents_get_offspring($delete_offspring_agents);
|
||||
if (empty($agents_offspring) === false) {
|
||||
foreach ($data as $key => $value) {
|
||||
if (isset($agents_offspring[$value['id']]) === true) {
|
||||
unset($data[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($data);
|
||||
return;
|
||||
} else if ($search_agents && is_metaconsole()) {
|
||||
|
|
|
@ -136,7 +136,7 @@ if ($get_comments === true) {
|
|||
// Default grouped message filtering (evento and estado).
|
||||
$whereGrouped = sprintf(
|
||||
'`evento` = "%s" AND `estado` = "%s"',
|
||||
io_safe_output($event['evento']),
|
||||
$event['evento'],
|
||||
$event['estado']
|
||||
);
|
||||
// If id_agente is reported, filter the messages by them as well.
|
||||
|
|
|
@ -3559,7 +3559,8 @@ class AgentWizard extends HTML
|
|||
$this->targetPort,
|
||||
$this->server,
|
||||
$this->extraArguments,
|
||||
(($full_output === false) ? '-Oa -On' : '-Oa')
|
||||
(($full_output === false) ? '-On' : '-Oa'),
|
||||
''
|
||||
);
|
||||
|
||||
if ($pure === true) {
|
||||
|
@ -3572,7 +3573,12 @@ class AgentWizard extends HTML
|
|||
if ($full_output === true) {
|
||||
$output[] = $key.' = '.$oid_unit;
|
||||
} else {
|
||||
preg_match('/\.\d+$/', $key, $index);
|
||||
$index = [];
|
||||
$index[] = preg_replace('/^'.$oid.'/', '', $key);
|
||||
if (empty($index) === true) {
|
||||
preg_match('/\.\d+$/', $key, $index);
|
||||
}
|
||||
|
||||
$tmp = explode(': ', $oid_unit);
|
||||
$output[$index[0]] = str_replace('"', '', ($tmp[1] ?? ''));
|
||||
}
|
||||
|
|
|
@ -245,7 +245,7 @@ class AgentsAlerts extends HTML
|
|||
);
|
||||
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox data';
|
||||
$table->class = 'info_table';
|
||||
$table->id = 'table_agent_module';
|
||||
$table->data = [];
|
||||
|
||||
|
@ -537,7 +537,7 @@ class AgentsAlerts extends HTML
|
|||
'alerts_agents'
|
||||
);
|
||||
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="agents_modules_table table">';
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="info_table">';
|
||||
echo '<tr>';
|
||||
echo '<th class="header_table_principal_cell">'.__('Agents').' / '.__('Alerts').'</th>';
|
||||
|
||||
|
@ -576,10 +576,11 @@ class AgentsAlerts extends HTML
|
|||
'images/arrow_left_green.png',
|
||||
true,
|
||||
[
|
||||
'style' => 'float: right;',
|
||||
'style' => 'display:flex;justify-content: center',
|
||||
'title' => __('Previous alerts'),
|
||||
]
|
||||
),
|
||||
'style' => 'display:flex;justify-content: center',
|
||||
]
|
||||
);
|
||||
echo '</th>';
|
||||
|
@ -612,9 +613,9 @@ class AgentsAlerts extends HTML
|
|||
$outputLine = html_print_div(
|
||||
[
|
||||
'id' => 'line_header_'.$id,
|
||||
'class' => 'rotate_text_module position_text_module',
|
||||
'class' => 'position_text_module',
|
||||
'style' => '',
|
||||
'content' => '<div title="'.io_safe_output($name).'">'.ui_print_truncate_text(io_safe_output($name), 20).'</div>',
|
||||
'content' => '<div style="font-size: 7.5pt !important" title="'.io_safe_output($name).'">'.ui_print_truncate_text(io_safe_output($name), 20).'</div>',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -657,7 +658,7 @@ class AgentsAlerts extends HTML
|
|||
$alias = db_get_row('tagente', 'id_agente', $agent['id_agente']);
|
||||
echo '<tr>';
|
||||
// Name of the agent.
|
||||
echo '<td class="bolder" style="text-align: right" >'.$alias['alias'].'</td>';
|
||||
echo '<td style="text-align: left;font-weight: bold;color: #3f3f3f;">'.$alias['alias'].'</td>';
|
||||
// Alerts of the agent.
|
||||
foreach ($templates as $tid => $tname) {
|
||||
$anyfired = 0;
|
||||
|
@ -669,18 +670,6 @@ class AgentsAlerts extends HTML
|
|||
echo '<td class="center">';
|
||||
|
||||
if (isset($agent_alerts[$alias['alias']][$tid])) {
|
||||
foreach ($agent_alerts[$alias['alias']][$tid] as $alert) {
|
||||
if ((int) $alert['times_fired'] > 0) {
|
||||
$anyfired = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($anyfired) {
|
||||
$cellstyle = 'background:'.COL_ALERTFIRED.';';
|
||||
} else {
|
||||
$cellstyle = 'background:'.COL_NORMAL.';';
|
||||
}
|
||||
|
||||
$uniqid = uniqid();
|
||||
|
||||
html_print_anchor(
|
||||
|
@ -689,8 +678,7 @@ class AgentsAlerts extends HTML
|
|||
'content' => html_print_div(
|
||||
[
|
||||
'id' => 'line_header_'.$temp['id'],
|
||||
'class' => 'status_rounded_rectangles text_inside',
|
||||
'style' => $cellstyle,
|
||||
'style' => 'font-size: 13pt;',
|
||||
'content' => count($agent_alerts[$alias['alias']][$tid]),
|
||||
],
|
||||
true
|
||||
|
|
|
@ -1528,7 +1528,7 @@ class ConsoleSupervisor
|
|||
$this->cleanNotifications('NOTIF.PHP.UPLOAD_MAX_FILESIZE');
|
||||
}
|
||||
|
||||
if ($PHPmemory_limit < $PHPmemory_limit_min && $PHPmemory_limit !== '-1') {
|
||||
if ($PHPmemory_limit < $PHPmemory_limit_min && (int) $PHPmemory_limit !== -1) {
|
||||
$url = 'http://php.net/manual/en/ini.core.php#ini.memory-limit';
|
||||
if ($config['language'] == 'es') {
|
||||
$url = 'http://php.net/manual/es/ini.core.php#ini.memory-limit';
|
||||
|
@ -2145,8 +2145,8 @@ class ConsoleSupervisor
|
|||
[
|
||||
'type' => 'NOTIF.UPDATEMANAGER.REGISTRATION',
|
||||
'title' => __('This instance is not registered in the Update manager section'),
|
||||
'message' => __('Click <a class="bolder underline" href="javascript: force_run_register();"> here</a> to start the registration process'),
|
||||
'url' => 'javascript: force_run_register();',
|
||||
'message' => __('Click here to start the registration process'),
|
||||
'url' => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
|
@ -2166,7 +2166,7 @@ class ConsoleSupervisor
|
|||
// Check default password for "admin".
|
||||
$admin_with_default_pass = db_get_value_sql(
|
||||
'SELECT count(*) FROM tusuario
|
||||
WHERE
|
||||
WHERE
|
||||
id_user="admin"
|
||||
AND password="1da7ee7d45b96d0e1f45ee4ee23da560"
|
||||
AND is_admin=1
|
||||
|
@ -2441,11 +2441,11 @@ class ConsoleSupervisor
|
|||
config_update_value('last_um_check', $future, true);
|
||||
|
||||
$messages = update_manager_get_messages();
|
||||
|
||||
if (is_array($messages) === true) {
|
||||
$source_id = get_notification_source_id(
|
||||
'Official communication'
|
||||
);
|
||||
|
||||
foreach ($messages as $message) {
|
||||
if (isset($message['url']) === false) {
|
||||
$message['url'] = '#';
|
||||
|
@ -2476,8 +2476,8 @@ class ConsoleSupervisor
|
|||
// List all servers except satellite server.
|
||||
$server_version_list = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT `name`, `version`
|
||||
FROM tserver
|
||||
'SELECT `name`, `version`
|
||||
FROM tserver
|
||||
WHERE server_type != %d
|
||||
GROUP BY `version`',
|
||||
SERVER_TYPE_ENTERPRISE_SATELLITE
|
||||
|
@ -2490,7 +2490,7 @@ class ConsoleSupervisor
|
|||
foreach ($server_version_list as $server) {
|
||||
if (strpos(
|
||||
$server['version'],
|
||||
$config['current_package']
|
||||
(string) floor($config['current_package'])
|
||||
) === false
|
||||
) {
|
||||
$missed++;
|
||||
|
@ -2511,6 +2511,8 @@ class ConsoleSupervisor
|
|||
'url' => '__url__/index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=online',
|
||||
]
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -336,7 +336,7 @@ class OrderInterpreter extends Wizard
|
|||
),
|
||||
],
|
||||
[
|
||||
'name' => __('Update Manager'),
|
||||
'name' => __('Warp Update'),
|
||||
'icon' => ui_get_full_url(
|
||||
'images/menu/um_messages.menu_gray.png'
|
||||
),
|
||||
|
@ -404,10 +404,10 @@ class OrderInterpreter extends Wizard
|
|||
'.$value['name'].'</a><br>';
|
||||
}
|
||||
|
||||
$iterator ++;
|
||||
$iterator++;
|
||||
|
||||
if ($iterator > 10) {
|
||||
$more_results ++;
|
||||
$more_results++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -523,6 +523,14 @@ class TreeService extends Tree
|
|||
continue 2;
|
||||
}
|
||||
|
||||
$title = get_parameter('title', '');
|
||||
if (empty($title) === true) {
|
||||
$tmp['title'] = '';
|
||||
} else {
|
||||
$tmp['title'] = $title.'/';
|
||||
}
|
||||
|
||||
$tmp['title'] .= $service->name();
|
||||
$tmp['id'] = (int) $item->service()->id();
|
||||
$tmp['name'] = $item->service()->name();
|
||||
$tmp['alias'] = $item->service()->name();
|
||||
|
@ -530,33 +538,6 @@ class TreeService extends Tree
|
|||
$tmp['elementDescription'] = $item->description();
|
||||
$tmp['disabled'] = $item->service()->disabled();
|
||||
|
||||
if ($this->connectedToNode === false
|
||||
&& is_metaconsole() === true
|
||||
&& $tmp['metaID'] > 0
|
||||
) {
|
||||
// Impersonate node.
|
||||
\enterprise_include_once('include/functions_metaconsole.php');
|
||||
\enterprise_hook(
|
||||
'metaconsole_connect',
|
||||
[
|
||||
null,
|
||||
$tmp['metaID'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], $item->service()->id_group(), 'AR')) {
|
||||
$grandchildren = $item->service()->children();
|
||||
}
|
||||
|
||||
if ($this->connectedToNode === false
|
||||
&& is_metaconsole() === true
|
||||
&& $tmp['metaID'] > 0
|
||||
) {
|
||||
// Restore connection.
|
||||
\enterprise_hook('metaconsole_restore_db');
|
||||
}
|
||||
|
||||
$counters = [
|
||||
'total_modules' => 0,
|
||||
'total_agents' => 0,
|
||||
|
@ -565,29 +546,66 @@ class TreeService extends Tree
|
|||
'total' => 0,
|
||||
];
|
||||
|
||||
if (is_array($grandchildren) === true) {
|
||||
$counters = array_reduce(
|
||||
$grandchildren,
|
||||
function ($carry, $item) {
|
||||
if ($item->type() === SERVICE_ELEMENT_MODULE) {
|
||||
$carry['total_modules']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_AGENT) {
|
||||
$carry['total_agents']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_SERVICE) {
|
||||
$carry['total_services']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_DYNAMIC) {
|
||||
$carry['total_dynamic']++;
|
||||
}
|
||||
if (is_metaconsole() === false
|
||||
|| (isset($config['realtimestats']) === true
|
||||
&& $config['realtimestats'] === true
|
||||
&& $tmp['metaID'] > 0)
|
||||
) {
|
||||
// Look for counters.
|
||||
if ($this->connectedToNode === false
|
||||
&& is_metaconsole() === true
|
||||
&& $tmp['metaID'] > 0
|
||||
) {
|
||||
// Impersonate node.
|
||||
\enterprise_include_once('include/functions_metaconsole.php');
|
||||
\enterprise_hook(
|
||||
'metaconsole_connect',
|
||||
[
|
||||
null,
|
||||
$tmp['metaID'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$carry['total']++;
|
||||
if (check_acl($config['id_user'], $item->service()->id_group(), 'AR')) {
|
||||
$grandchildren = $item->service()->children();
|
||||
}
|
||||
|
||||
return $carry;
|
||||
},
|
||||
$counters
|
||||
);
|
||||
}
|
||||
if ($this->connectedToNode === false
|
||||
&& is_metaconsole() === true
|
||||
&& $tmp['metaID'] > 0
|
||||
) {
|
||||
// Restore connection.
|
||||
\enterprise_hook('metaconsole_restore_db');
|
||||
}
|
||||
|
||||
if ($counters['total'] > 0) {
|
||||
if (is_array($grandchildren) === true) {
|
||||
$counters = array_reduce(
|
||||
$grandchildren,
|
||||
function ($carry, $item) {
|
||||
if ($item->type() === SERVICE_ELEMENT_MODULE) {
|
||||
$carry['total_modules']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_AGENT) {
|
||||
$carry['total_agents']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_SERVICE) {
|
||||
$carry['total_services']++;
|
||||
} else if ($item->type() === SERVICE_ELEMENT_DYNAMIC) {
|
||||
$carry['total_dynamic']++;
|
||||
}
|
||||
|
||||
$carry['total']++;
|
||||
|
||||
return $carry;
|
||||
},
|
||||
$counters
|
||||
);
|
||||
}
|
||||
|
||||
if ($counters['total'] > 0) {
|
||||
$tmp['searchChildren'] = 1;
|
||||
}
|
||||
} else {
|
||||
// Always search for.
|
||||
$tmp['searchChildren'] = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC220518';
|
||||
$pandora_version = 'v7.0NG.761';
|
||||
$build_version = 'PC220621';
|
||||
$pandora_version = 'v7.0NG.762';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
$script_tz = @date_default_timezone_get();
|
||||
|
|
|
@ -294,7 +294,11 @@ define('SERVICE_ELEMENT_DYNAMIC', 'dynamic');
|
|||
define('SERVICE_MODE_MANUAL', 0);
|
||||
define('SERVICE_MODE_SMART', 1);
|
||||
|
||||
|
||||
// New installation Product Logo.
|
||||
define('HEADER_LOGO_DEFAULT_CLASSIC', 'logo-default-pandorafms.png');
|
||||
define('HEADER_LOGO_DEFAULT_COLLAPSED', 'logo-default-pandorafms-collapsed.png');
|
||||
define('HEADER_LOGO_BLACK_CLASSIC', 'logo-black-pandorafms.png');
|
||||
define('HEADER_LOGO_BLACK_COLLAPSED', 'logo-default-pandorafms-collapsed.png');
|
||||
|
||||
// Status images.
|
||||
// For modules.
|
||||
|
@ -802,7 +806,7 @@ define('AUDIT_LOG_SNMP_MANAGEMENT', 'SNMP management');
|
|||
define('AUDIT_LOG_DASHBOARD_MANAGEMENT', 'Dashboard management');
|
||||
define('AUDIT_LOG_SERVICE_MANAGEMENT', 'Service management');
|
||||
define('AUDIT_LOG_INCIDENT_MANAGEMENT', 'Incident management');
|
||||
define('AUDIT_LOG_UMC', 'Update Manager');
|
||||
define('AUDIT_LOG_UMC', 'Warp Manager');
|
||||
|
||||
// MIMEs.
|
||||
define(
|
||||
|
|
|
@ -1993,7 +1993,8 @@ function get_snmpwalk(
|
|||
$snmp_port='',
|
||||
$server_to_exec=0,
|
||||
$extra_arguments='',
|
||||
$format='-Oa'
|
||||
$format='-Oa',
|
||||
$load_mibs='-m ALL'
|
||||
) {
|
||||
global $config;
|
||||
|
||||
|
@ -2057,15 +2058,15 @@ function get_snmpwalk(
|
|||
case '3':
|
||||
switch ($snmp3_security_level) {
|
||||
case 'authNoPriv':
|
||||
$command_str = $snmpwalk_bin.' -m ALL '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
$command_str = $snmpwalk_bin.' '.$load_mibs.' '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
break;
|
||||
|
||||
case 'noAuthNoPriv':
|
||||
$command_str = $snmpwalk_bin.' -m ALL '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -l '.escapeshellarg($snmp3_security_level).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
$command_str = $snmpwalk_bin.' '.$load_mibs.' '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -l '.escapeshellarg($snmp3_security_level).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
break;
|
||||
|
||||
default:
|
||||
$command_str = $snmpwalk_bin.' -m ALL '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' -x '.escapeshellarg($snmp3_privacy_method).' -X '.escapeshellarg($snmp3_privacy_pass).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
$command_str = $snmpwalk_bin.' '.$load_mibs.' '.$format.' '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' -x '.escapeshellarg($snmp3_privacy_method).' -X '.escapeshellarg($snmp3_privacy_pass).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -2074,7 +2075,7 @@ function get_snmpwalk(
|
|||
case '2c':
|
||||
case '1':
|
||||
default:
|
||||
$command_str = $snmpwalk_bin.' -m ALL '.$extra_arguments.' '.$format.' -v '.escapeshellarg($snmp_version).' -c '.escapeshellarg(io_safe_output($snmp_community)).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
$command_str = $snmpwalk_bin.' '.$load_mibs.' '.$extra_arguments.' '.$format.' -v '.escapeshellarg($snmp_version).' -c '.escapeshellarg(io_safe_output($snmp_community)).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -5986,6 +5987,56 @@ function send_test_email(
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return array of ancestors of item, given array.
|
||||
*
|
||||
* @param integer $item From index.
|
||||
* @param array $data Array data.
|
||||
* @param string $key Pivot key (identifies the parent).
|
||||
* @param string|null $extract Extract certain column or index.
|
||||
* @param array $visited Cycle detection.
|
||||
*
|
||||
* @return array Array of ancestors.
|
||||
*/
|
||||
function get_ancestors(
|
||||
int $item,
|
||||
array $data,
|
||||
string $key,
|
||||
?string $extract=null,
|
||||
array &$visited=[]
|
||||
) :array {
|
||||
if (isset($visited[$item]) === true) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$visited[$item] = 1;
|
||||
|
||||
if (isset($data[$item]) === false) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (isset($data[$item][$key]) === false) {
|
||||
if ($extract !== null) {
|
||||
return [$data[$item][$extract]];
|
||||
}
|
||||
|
||||
return [$item];
|
||||
}
|
||||
|
||||
if ($extract !== null) {
|
||||
return array_merge(
|
||||
get_ancestors($data[$item][$key], $data, $key, $extract, $visited),
|
||||
[$data[$item][$extract]]
|
||||
);
|
||||
}
|
||||
|
||||
return array_merge(
|
||||
get_ancestors($data[$item][$key], $data, $key, $extract, $visited),
|
||||
[$item]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (function_exists('str_contains') === false) {
|
||||
|
||||
|
||||
|
|
|
@ -4268,3 +4268,30 @@ function get_status_data_agent_modules($id_group, $agents=[], $modules=[])
|
|||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
function agents_get_offspring(int $id_agent)
|
||||
{
|
||||
$return = [];
|
||||
// Get parent.
|
||||
$agents = db_get_all_rows_filter(
|
||||
'tagente',
|
||||
[
|
||||
'id_parent' => $id_agent,
|
||||
'disabled' => 0,
|
||||
],
|
||||
'id_agente'
|
||||
);
|
||||
|
||||
if ($agents !== false) {
|
||||
foreach ($agents as $agent) {
|
||||
if ((int) $agent['id_agente'] !== 0) {
|
||||
$return += agents_get_offspring((int) $agent['id_agente']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$return += [$id_agent => 0];
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
|
|
@ -118,6 +118,9 @@ function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby
|
|||
$sql .= ' AND t3.id_agente = '.$id_agent;
|
||||
}
|
||||
|
||||
// Only enabled agent.
|
||||
$sql .= ' AND t3.disabled = 0';
|
||||
|
||||
$row_alerts = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($total) {
|
||||
|
|
|
@ -53,8 +53,10 @@ enterprise_include_once('include/functions_clusters.php');
|
|||
enterprise_include_once('include/functions_alerts.php');
|
||||
|
||||
// Clases.
|
||||
use PandoraFMS\Agent;
|
||||
use PandoraFMS\Module;
|
||||
use PandoraFMS\Enterprise\Cluster;
|
||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||
use PandoraFMS\SpecialDay;
|
||||
|
||||
|
||||
|
@ -1469,22 +1471,22 @@ function api_set_update_agent($id_agent, $thrash2, $other, $thrash3)
|
|||
// Check parameters.
|
||||
if ($idGroup == 0) {
|
||||
$agent_update_error = __('The agent could not be modified. For security reasons, use a group other than 0.');
|
||||
returnError('generic error', $agent_update_error);
|
||||
returnError($agent_update_error);
|
||||
return;
|
||||
}
|
||||
|
||||
$server_name = db_get_value_sql('SELECT name FROM tserver WHERE BINARY name LIKE "'.$nameServer.'"');
|
||||
if ($alias == '' && $alias_as_name === 0) {
|
||||
returnError('alias_not_specified', 'No agent alias specified');
|
||||
returnError('No agent alias specified');
|
||||
return;
|
||||
} else if (db_get_value_sql('SELECT id_grupo FROM tgrupo WHERE id_grupo = '.$idGroup) === false) {
|
||||
returnError('id_grupo_not_exist', 'The group doesn`t exist.');
|
||||
returnError('The group doesn`t exist.');
|
||||
return;
|
||||
} else if (db_get_value_sql('SELECT id_os FROM tconfig_os WHERE id_os = '.$idOS) === false) {
|
||||
returnError('id_os_not_exist', 'The OS doesn`t exist.');
|
||||
returnError('The OS doesn`t exist.');
|
||||
return;
|
||||
} else if ($server_name === false) {
|
||||
returnError('server_not_exist', 'The '.get_product_name().' Server doesn`t exist.');
|
||||
returnError('The '.get_product_name().' Server doesn`t exist.');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1525,6 +1527,14 @@ function api_set_update_agent($id_agent, $thrash2, $other, $thrash3)
|
|||
returnError('The user cannot access to parent agent.');
|
||||
return;
|
||||
}
|
||||
|
||||
$agents_offspring = agents_get_offspring($id_agent);
|
||||
if (empty($agents_offspring) === false) {
|
||||
if (isset($agents_offspring[$idParent]) === true) {
|
||||
returnError('The parent cannot be a offspring');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$values_old = db_get_row_filter(
|
||||
|
@ -1751,6 +1761,14 @@ function api_set_update_agent_field($id_agent, $use_agent_alias, $params)
|
|||
returnError('The user cannot access to parent agent.');
|
||||
return;
|
||||
}
|
||||
|
||||
$agents_offspring = agents_get_offspring($id_agent);
|
||||
if (empty($agents_offspring) === false) {
|
||||
if (isset($agents_offspring[$data]) === true) {
|
||||
returnError('The parent cannot be a offspring');
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1826,18 +1844,18 @@ function api_set_update_agent_field($id_agent, $use_agent_alias, $params)
|
|||
/**
|
||||
* Create a new agent, and print the id for new agent.
|
||||
*
|
||||
* @param $thrash1 Don't use.
|
||||
* @param $id_node Id_node target (if metaconsole)
|
||||
* @param $thrash2 Don't use.
|
||||
* @param array $other it's array, $other as param is <agent_name>;<ip>;<id_parent>;<id_group>;
|
||||
* <cascade_protection>;<interval_sec>;<id_os>;<id_server>;<custom_id>;<learning_mode>;<disabled>;<description> in this order
|
||||
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
|
||||
* example:
|
||||
* @param array $other it's array, $other as param is <agent_name>;<ip>;<id_parent>;<id_group>;
|
||||
* <cascade_protection>;<interval_sec>;<id_os>;<id_server>;<custom_id>;<learning_mode>;<disabled>;<description> in this order
|
||||
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
|
||||
* example:
|
||||
*
|
||||
* api.php?op=set&op2=new_agent&other=pepito|1.1.1.1|0|4|0|30|8|10||0|0|nose%20nose&other_mode=url_encode_separator_|
|
||||
* api.php?op=set&op2=new_agent&other=pepito|1.1.1.1|0|4|0|30|8|10||0|0|nose%20nose&other_mode=url_encode_separator_|
|
||||
*
|
||||
* @param $thrash3 Don't use.
|
||||
*/
|
||||
function api_set_new_agent($thrash1, $thrash2, $other, $thrash3)
|
||||
function api_set_new_agent($id_node, $thrash2, $other, $trhash3)
|
||||
{
|
||||
global $config;
|
||||
|
||||
|
@ -1846,146 +1864,117 @@ function api_set_new_agent($thrash1, $thrash2, $other, $thrash3)
|
|||
return;
|
||||
}
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((int) $other['data'][3] == 0) {
|
||||
returnError('For security reasons, the agent was not created. Use a group other than 0.');
|
||||
return;
|
||||
}
|
||||
|
||||
$alias = io_safe_input(trim(preg_replace('/[\/\\\|%#&$]/', '', $other['data'][0])));
|
||||
$direccion_agente = io_safe_input($other['data'][1]);
|
||||
$nombre_agente = hash('sha256', $direccion_agente.'|'.$direccion_agente.'|'.time().'|'.sprintf('%04d', rand(0, 10000)));
|
||||
$id_parent = (int) $other['data'][2];
|
||||
$grupo = (int) $other['data'][3];
|
||||
$cascade_protection = (int) $other['data'][4];
|
||||
$cascade_protection_module = (int) $other['data'][5];
|
||||
$intervalo = (string) $other['data'][6];
|
||||
$id_os = (int) $other['data'][7];
|
||||
$server_name = (string) $other['data'][8];
|
||||
$custom_id = (string) $other['data'][9];
|
||||
$modo = (int) $other['data'][10];
|
||||
$disabled = (int) $other['data'][11];
|
||||
$comentarios = (string) $other['data'][12];
|
||||
$alias_as_name = (int) $other['data'][13];
|
||||
$update_module_count = (int) $config['metaconsole_agent_cache'] == 1;
|
||||
try {
|
||||
$agent = new Agent();
|
||||
|
||||
if ($cascade_protection == 1) {
|
||||
if (($id_parent != 0) && (db_get_value_sql(
|
||||
'SELECT id_agente_modulo
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente = '.$id_parent.' AND id_agente_modulo = '.$cascade_protection_module
|
||||
) === false)
|
||||
) {
|
||||
returnError('Cascade protection is not applied because it is not a parent module.');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$cascadeProtectionModule = 0;
|
||||
}
|
||||
|
||||
$server_name = db_get_value_sql('SELECT name FROM tserver WHERE BINARY name LIKE "'.$server_name.'"');
|
||||
|
||||
// Check if agent exists (BUG WC-50518-2).
|
||||
if ($alias == '' && $alias_as_name === 0) {
|
||||
returnError('No agent alias specified');
|
||||
} else if (agents_get_agent_id($nombre_agente)) {
|
||||
returnError('The agent name already exists in DB.');
|
||||
} else if (db_get_value_sql('SELECT id_grupo FROM tgrupo WHERE id_grupo = '.$grupo) === false) {
|
||||
returnError('The group does not exist.');
|
||||
} else if (group_allow_more_agents($grupo, true, 'create') === false) {
|
||||
returnError('Agent cannot be created due to the maximum agent limit for this group');
|
||||
} else if (db_get_value_sql('SELECT id_os FROM tconfig_os WHERE id_os = '.$id_os) === false) {
|
||||
returnError('The OS does not exist.');
|
||||
} else if ($server_name === false) {
|
||||
returnError('The '.get_product_name().' Server does not exist.');
|
||||
} else {
|
||||
if ($alias_as_name === 1) {
|
||||
$exists_alias = db_get_row_sql('SELECT nombre FROM tagente WHERE nombre = "'.$alias.'"');
|
||||
$nombre_agente = $alias;
|
||||
}
|
||||
|
||||
$exists_ip = false;
|
||||
|
||||
if ($config['unique_ip'] && $direccion_agente != '') {
|
||||
$exists_ip = db_get_row_sql('SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"');
|
||||
}
|
||||
|
||||
if (!$exists_alias && !$exists_ip) {
|
||||
$id_agente = db_process_sql_insert(
|
||||
'tagente',
|
||||
[
|
||||
'nombre' => $nombre_agente,
|
||||
'alias' => $alias,
|
||||
'alias_as_name' => $alias_as_name,
|
||||
'direccion' => $direccion_agente,
|
||||
'id_grupo' => $grupo,
|
||||
'intervalo' => $intervalo,
|
||||
'comentarios' => $comentarios,
|
||||
'modo' => $modo,
|
||||
'id_os' => $id_os,
|
||||
'disabled' => $disabled,
|
||||
'cascade_protection' => $cascade_protection,
|
||||
'cascade_protection_module' => $cascade_protection_module,
|
||||
'server_name' => $server_name,
|
||||
'id_parent' => $id_parent,
|
||||
'custom_id' => $custom_id,
|
||||
'os_version' => '',
|
||||
'agent_version' => '',
|
||||
'timezone_offset' => 0,
|
||||
'icon_path' => '',
|
||||
'url_address' => '',
|
||||
'update_module_count' => $update_module_count,
|
||||
]
|
||||
);
|
||||
enterprise_hook('update_agent', [$id_agente]);
|
||||
} else {
|
||||
$id_agente = false;
|
||||
}
|
||||
|
||||
if ($id_agente !== false) {
|
||||
// Create address for this agent in taddress.
|
||||
if ($direccion_agente != '') {
|
||||
agents_add_address($id_agente, $direccion_agente);
|
||||
if (is_metaconsole() === true) {
|
||||
if ($id_node <= 0) {
|
||||
throw new Exception('No node id specified');
|
||||
}
|
||||
|
||||
$info = '{"Name":"'.$nombre_agente.'",
|
||||
"IP":"'.$direccion_agente.'",
|
||||
"Group":"'.$grupo.'",
|
||||
"Interval":"'.$intervalo.'",
|
||||
"Comments":"'.$comentarios.'",
|
||||
"Mode":"'.$modo.'",
|
||||
"ID_parent:":"'.$id_parent.'",
|
||||
"Server":"'.$server_name.'",
|
||||
"ID os":"'.$id_os.'",
|
||||
"Disabled":"'.$disabled.'",
|
||||
"Custom ID":"'.$custom_id.'",
|
||||
"Cascade protection":"'.$cascade_protection.'",
|
||||
"Cascade protection module":"'.$cascade_protection_module.'"}';
|
||||
|
||||
$unsafe_alias = io_safe_output($alias);
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_AGENT_MANAGEMENT,
|
||||
'Created agent '.$unsafe_alias,
|
||||
false,
|
||||
true,
|
||||
$info
|
||||
$node = new Node($id_node);
|
||||
$id_agente = $node->callApi(
|
||||
'new_agent',
|
||||
'set',
|
||||
null,
|
||||
null,
|
||||
$other['data'],
|
||||
null
|
||||
);
|
||||
} else {
|
||||
$id_agente = 0;
|
||||
$alias = io_safe_input(
|
||||
trim(
|
||||
preg_replace(
|
||||
'/[\/\\\|%#&$]/',
|
||||
'',
|
||||
preg_replace(
|
||||
'/x20;/',
|
||||
' ',
|
||||
$other['data'][0]
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if ($exists_alias) {
|
||||
$agent_creation_error = 'Could not be created because name already exists';
|
||||
} else if ($exists_ip) {
|
||||
$agent_creation_error = 'Could not be created because IP already exists';
|
||||
$direccion_agente = io_safe_input($other['data'][1]);
|
||||
$id_parent = (int) $other['data'][2];
|
||||
$grupo = (int) $other['data'][3];
|
||||
$cascade_protection = (int) $other['data'][4];
|
||||
$cascade_protection_module = (int) $other['data'][5];
|
||||
$intervalo = (string) $other['data'][6];
|
||||
$id_os = (int) $other['data'][7];
|
||||
$server_name = (string) $other['data'][8];
|
||||
$custom_id = (string) $other['data'][9];
|
||||
$modo = (int) $other['data'][10];
|
||||
$disabled = (int) $other['data'][11];
|
||||
$comentarios = (string) html_entity_decode($other['data'][12]);
|
||||
$alias_as_name = (int) $other['data'][13];
|
||||
$update_module_count = (int) $config['metaconsole_agent_cache'] == 1;
|
||||
|
||||
$agent->nombre($alias);
|
||||
$agent->alias($alias);
|
||||
$agent->alias_as_name($alias_as_name);
|
||||
$agent->direccion($direccion_agente);
|
||||
$agent->id_grupo($grupo);
|
||||
$agent->intervalo($intervalo);
|
||||
$agent->comentarios($comentarios);
|
||||
$agent->modo($modo);
|
||||
$agent->id_os($id_os);
|
||||
$agent->disabled($disabled);
|
||||
$agent->cascade_protection($cascade_protection);
|
||||
$agent->cascade_protection_module($cascade_protection_module);
|
||||
$agent->server_name($server_name);
|
||||
$agent->id_parent($id_parent);
|
||||
$agent->custom_id($custom_id);
|
||||
$agent->timezone_offset(0);
|
||||
$agent->update_module_count($update_module_count);
|
||||
|
||||
if ($cascade_protection == 1) {
|
||||
if ($id_parent != 0) {
|
||||
try {
|
||||
$parent = new Agent($id_parent);
|
||||
} catch (\Exception $e) {
|
||||
returnError('Cascade protection is not applied because it is not a parent module.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$server_name = db_get_value_sql('SELECT name FROM tserver WHERE BINARY name LIKE "'.$server_name.'"');
|
||||
|
||||
// Check if agent exists (BUG WC-50518-2).
|
||||
if ($alias == '' && $alias_as_name === 0) {
|
||||
returnError('No agent alias specified');
|
||||
} else if (agents_get_agent_id($nombre_agente)) {
|
||||
returnError('The agent name already exists in DB.');
|
||||
} else if (db_get_value_sql('SELECT id_grupo FROM tgrupo WHERE id_grupo = '.$grupo) === false) {
|
||||
returnError('The group does not exist.');
|
||||
} else if (group_allow_more_agents($grupo, true, 'create') === false) {
|
||||
returnError('Agent cannot be created due to the maximum agent limit for this group');
|
||||
} else if (db_get_value_sql('SELECT id_os FROM tconfig_os WHERE id_os = '.$id_os) === false) {
|
||||
returnError('The OS does not exist.');
|
||||
} else if ($server_name === false) {
|
||||
returnError('The '.get_product_name().' Server does not exist.');
|
||||
} else {
|
||||
$agent_creation_error = 'Could not be created for unknown reason';
|
||||
}
|
||||
if ($alias_as_name === 1) {
|
||||
$exists_alias = db_get_row_sql('SELECT nombre FROM tagente WHERE nombre = "'.$alias.'"');
|
||||
$nombre_agente = $alias;
|
||||
}
|
||||
|
||||
returnError($agent_creation_error);
|
||||
return;
|
||||
$exists_ip = false;
|
||||
|
||||
if ($config['unique_ip'] && $direccion_agente != '') {
|
||||
$exists_ip = db_get_row_sql('SELECT direccion FROM tagente WHERE direccion = "'.$direccion_agente.'"');
|
||||
}
|
||||
|
||||
$agent->save((bool) $alias_as_name);
|
||||
$id_agente = $agent->id_agente();
|
||||
$agent->updateFromCache();
|
||||
}
|
||||
}
|
||||
|
||||
returnData(
|
||||
|
@ -1995,6 +1984,9 @@ function api_set_new_agent($thrash1, $thrash2, $other, $thrash3)
|
|||
'data' => $id_agente,
|
||||
]
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
returnError($e->getMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5088,7 +5080,7 @@ function api_set_update_snmp_module($id_module, $thrash1, $other, $thrash3)
|
|||
function api_set_new_network_component($id, $thrash1, $other, $thrash2)
|
||||
{
|
||||
global $config;
|
||||
if (is_metaconsole() === true) {
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -5190,7 +5182,7 @@ function api_set_new_plugin_component($id, $thrash1, $other, $thrash2)
|
|||
{
|
||||
global $config;
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -5470,7 +5462,7 @@ function api_set_new_local_component($id, $thrash1, $other, $thrash2)
|
|||
{
|
||||
global $config;
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
if (defined('METACONSOLE')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -556,7 +556,7 @@ function config_update_config()
|
|||
$error_update[] = __('Autocreate profile group');
|
||||
}
|
||||
|
||||
if (config_update_value('default_assign_tags', implode(',', get_parameter('default_assign_tags')), true) === false) {
|
||||
if (config_update_value('default_assign_tags', implode(',', get_parameter('default_assign_tags', [])), true) === false) {
|
||||
$error_update[] = __('Autocreate profile tags');
|
||||
}
|
||||
|
||||
|
@ -1607,7 +1607,7 @@ function config_update_config()
|
|||
'port' => $config['history_db_port'],
|
||||
'name' => $config['history_db_name'],
|
||||
'user' => $config['history_db_user'],
|
||||
'pass' => $config['history_db_pass'],
|
||||
'pass' => io_output_password($config['history_db_pass']),
|
||||
]
|
||||
);
|
||||
|
||||
|
@ -1619,48 +1619,47 @@ function config_update_config()
|
|||
$dbm->process();
|
||||
} else if ($dbm->check() !== true) {
|
||||
$errors[] = $dbm->getLastError();
|
||||
config_update_value('history_db_enabled', false);
|
||||
}
|
||||
|
||||
if ($dbm->check() === true) {
|
||||
// Historical configuration tokens (stored in historical db).
|
||||
if ($dbm->setConfigToken(
|
||||
'days_purge',
|
||||
get_parameter('history_dbh_purge')
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database purge');
|
||||
}
|
||||
|
||||
if ($dbm->setConfigToken(
|
||||
'history_partitions_auto',
|
||||
get_parameter_switch('history_partitions_auto', 0)
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database partitions');
|
||||
}
|
||||
|
||||
if ($dbm->setConfigToken(
|
||||
'event_purge',
|
||||
get_parameter('history_dbh_events_purge')
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database events purge');
|
||||
}
|
||||
|
||||
if ($dbm->setConfigToken(
|
||||
'string_purge',
|
||||
get_parameter('history_dbh_string_purge')
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database string purge');
|
||||
}
|
||||
|
||||
// Disable history db in history db.
|
||||
$dbm->setConfigToken('history_db_enabled', 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Historical configuration tokens (stored in historical db).
|
||||
if (Config::set(
|
||||
'days_purge',
|
||||
get_parameter('history_dbh_purge'),
|
||||
true
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database purge');
|
||||
}
|
||||
|
||||
if (Config::set(
|
||||
'history_partitions_auto',
|
||||
get_parameter_switch('history_partitions_auto', 0),
|
||||
true
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database partitions');
|
||||
}
|
||||
|
||||
if (Config::set(
|
||||
'event_purge',
|
||||
get_parameter('history_dbh_events_purge'),
|
||||
true
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database events purge');
|
||||
}
|
||||
|
||||
if (Config::set(
|
||||
'string_purge',
|
||||
get_parameter('history_dbh_string_purge'),
|
||||
true
|
||||
) !== true
|
||||
) {
|
||||
$error_update[] = __('Historical database string purge');
|
||||
}
|
||||
|
||||
// Disable history db in history db.
|
||||
Config::set('history_db_enabled', 0, true);
|
||||
break;
|
||||
|
||||
case 'ehorus':
|
||||
|
@ -2096,6 +2095,10 @@ function config_process_config()
|
|||
config_update_value('metaconsole_events_history', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['realtimestats'])) {
|
||||
config_update_value('realtimestats', 1);
|
||||
}
|
||||
|
||||
if (!isset($config['trap_purge'])) {
|
||||
config_update_value('trap_purge', 7);
|
||||
}
|
||||
|
@ -2353,12 +2356,12 @@ function config_process_config()
|
|||
config_update_value('custom_favicon', '');
|
||||
}
|
||||
|
||||
if (!isset($config['custom_logo'])) {
|
||||
config_update_value('custom_logo', 'pandora_logo_head_4.png');
|
||||
if (isset($config['custom_logo']) === false) {
|
||||
config_update_value('custom_logo', HEADER_LOGO_DEFAULT_CLASSIC);
|
||||
}
|
||||
|
||||
if (!isset($config['custom_logo_collapsed'])) {
|
||||
config_update_value('custom_logo_collapsed', 'pandora_logo_green_collapsed.png');
|
||||
if (isset($config['custom_logo_collapsed']) === false) {
|
||||
config_update_value('custom_logo_collapsed', HEADER_LOGO_DEFAULT_COLLAPSED);
|
||||
}
|
||||
|
||||
if (is_metaconsole()) {
|
||||
|
|
|
@ -2297,6 +2297,7 @@ function events_comment(
|
|||
$comments_format = 'new';
|
||||
} else {
|
||||
// If comments are not stored in json, the format is old.
|
||||
$event_comments[0]['user_comment'] = str_replace(["\n", '
'], '<br>', $event_comments[0]['user_comment']);
|
||||
$event_comments_array = json_decode($event_comments[0]['user_comment']);
|
||||
|
||||
if (empty($event_comments_array) === true) {
|
||||
|
@ -5227,6 +5228,8 @@ function events_page_comments($event, $ajax=false, $groupedComments=[])
|
|||
$comm = $comm['user_comment'];
|
||||
}
|
||||
|
||||
$comm = str_replace(["\n", '
'], '<br>', $comm);
|
||||
|
||||
$comments_array[] = io_safe_output(json_decode($comm, true));
|
||||
}
|
||||
|
||||
|
|
|
@ -4239,6 +4239,82 @@ function html_print_image(
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function for print the logo in menu header.
|
||||
*
|
||||
* @param boolean $menuCollapsed If true, the menu is collapsed.
|
||||
* @param boolean $return If true, the formed element is returned.
|
||||
*
|
||||
* @return mixed.
|
||||
*/
|
||||
function html_print_header_logo_image(bool $menuCollapsed, bool $return=false)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (defined('PANDORA_ENTERPRISE') === false) {
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
$custom_logo = 'images/custom_logo/'.HEADER_LOGO_BLACK_CLASSIC;
|
||||
$custom_logo_collapsed = 'images/custom_logo/'.HEADER_LOGO_DEFAULT_COLLAPSED;
|
||||
} else if ($config['style'] === 'pandora') {
|
||||
$custom_logo = 'images/custom_logo/'.HEADER_LOGO_DEFAULT_CLASSIC;
|
||||
$custom_logo_collapsed = 'images/custom_logo/'.HEADER_LOGO_DEFAULT_COLLAPSED;
|
||||
}
|
||||
|
||||
$logo_title = get_product_name().' Opensource';
|
||||
} else {
|
||||
// Handle default logos when change theme.
|
||||
if ($config['style'] === 'pandora_black' && $config['custom_logo'] === HEADER_LOGO_DEFAULT_CLASSIC) {
|
||||
$config['custom_logo'] = HEADER_LOGO_BLACK_CLASSIC;
|
||||
} else if ($config['style'] === 'pandora' && $config['custom_logo'] === HEADER_LOGO_BLACK_CLASSIC) {
|
||||
$config['custom_logo'] = HEADER_LOGO_DEFAULT_CLASSIC;
|
||||
}
|
||||
|
||||
$logo_title = get_product_name().' Enterprise';
|
||||
$custom_logo = 'images/custom_logo/'.$config['custom_logo'];
|
||||
|
||||
$custom_logo_collapsed = 'images/custom_logo/'.$config['custom_logo_collapsed'];
|
||||
|
||||
if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo) === true) {
|
||||
$custom_logo = ENTERPRISE_DIR.'/'.$custom_logo;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($config['custom_logo']) === true) {
|
||||
$output = html_print_image(
|
||||
$custom_logo,
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'width' => '215',
|
||||
'alt' => $logo_title,
|
||||
'class' => 'logo_full',
|
||||
'style' => ($menuCollapsed === true) ? 'display:none' : 'display:block',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($config['custom_logo_collapsed']) === true) {
|
||||
$output .= html_print_image(
|
||||
$custom_logo_collapsed,
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'width' => '60',
|
||||
'alt' => $logo_title,
|
||||
'class' => 'logo_icon',
|
||||
'style' => ($menuCollapsed === true) ? 'display:block' : 'display:none',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
if ($return === false) {
|
||||
echo $output;
|
||||
} else {
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render an input text element. Extended version, use html_print_input_text() to simplify.
|
||||
*
|
||||
|
|
|
@ -1133,7 +1133,7 @@ function modules_get_table_data(?int $id_agent_module, ?int $id_type)
|
|||
|
||||
function modules_get_raw_data($id_agent_module, $date_init, $date_end)
|
||||
{
|
||||
$table = modules_get_table_data($id_agent_module);
|
||||
$table = modules_get_table_data($id_agent_module, null);
|
||||
|
||||
$datelimit = ($date_init - $date_end);
|
||||
$search_in_history_db = db_search_in_history_db($datelimit);
|
||||
|
@ -4213,7 +4213,7 @@ function modules_get_min_max_data($id_agent_module, $time_init=0)
|
|||
$data[0]['max'] = $min_max['max'];
|
||||
} else {
|
||||
// Search limits of the last two days.
|
||||
$table = modules_get_table_data($id_agent_module);
|
||||
$table = modules_get_table_data($id_agent_module, null);
|
||||
$data = db_get_all_rows_sql(
|
||||
'SELECT min(datos) as min, max(datos) as max
|
||||
FROM '.$table.'
|
||||
|
|
|
@ -84,10 +84,7 @@ function get_notification_targets(int $id_message)
|
|||
|
||||
if (is_array($ret)) {
|
||||
foreach ($ret as $row) {
|
||||
array_push(
|
||||
$targets['users'],
|
||||
get_user_fullname($row['id_user'])
|
||||
);
|
||||
array_push($targets['users'], get_user_fullname($row['id_user']));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,8 +224,10 @@ function check_notification_readable(int $id_message)
|
|||
*
|
||||
* @return array [users] and [groups] with the targets.
|
||||
*/
|
||||
function get_notification_source_targets(int $id_source, ?string $subtype=null)
|
||||
{
|
||||
function get_notification_source_targets(
|
||||
int $id_source,
|
||||
?string $subtype=null
|
||||
) {
|
||||
$ret = [];
|
||||
|
||||
$filter = '';
|
||||
|
@ -484,7 +483,8 @@ function notifications_add_group_to_source($source_id, $groups)
|
|||
continue;
|
||||
}
|
||||
|
||||
$res = $res && db_process_sql_insert(
|
||||
$res = $res &&
|
||||
db_process_sql_insert(
|
||||
'tnotification_source_group',
|
||||
[
|
||||
'id_group' => $group,
|
||||
|
@ -525,7 +525,8 @@ function notifications_add_users_to_source($source_id, $users)
|
|||
continue;
|
||||
}
|
||||
|
||||
$res = $res && db_process_sql_insert(
|
||||
$res = $res &&
|
||||
db_process_sql_insert(
|
||||
'tnotification_source_user',
|
||||
[
|
||||
'id_user' => $user,
|
||||
|
@ -551,7 +552,13 @@ function notifications_add_users_to_source($source_id, $users)
|
|||
function notifications_get_group_source_not_configured($source_id)
|
||||
{
|
||||
$groups_selected = notifications_get_group_sources_for_select($source_id);
|
||||
$all_groups = users_get_groups_for_select(false, 'AR', false, true, $groups_selected);
|
||||
$all_groups = users_get_groups_for_select(
|
||||
false,
|
||||
'AR',
|
||||
false,
|
||||
true,
|
||||
$groups_selected
|
||||
);
|
||||
return array_diff($all_groups, $groups_selected);
|
||||
}
|
||||
|
||||
|
@ -566,12 +573,10 @@ function notifications_get_group_source_not_configured($source_id)
|
|||
*/
|
||||
function notifications_get_user_source_not_configured($source_id)
|
||||
{
|
||||
$users_selected = array_keys(notifications_get_user_sources_for_select($source_id));
|
||||
$users = get_users(
|
||||
'id_user',
|
||||
['!id_user' => $users_selected],
|
||||
['id_user']
|
||||
$users_selected = array_keys(
|
||||
notifications_get_user_sources_for_select($source_id)
|
||||
);
|
||||
$users = get_users('id_user', ['!id_user' => $users_selected], ['id_user']);
|
||||
return index_array($users, 'id_user', 'id_user');
|
||||
}
|
||||
|
||||
|
@ -587,8 +592,8 @@ function notifications_get_user_source_not_configured($source_id)
|
|||
function notifications_build_user_enable_return($status, $enabled)
|
||||
{
|
||||
return [
|
||||
'status' => ((bool) $status === true) ? 1 : 0,
|
||||
'enabled' => ((bool) $enabled === true) ? 1 : 0,
|
||||
'status' => (bool) $status === true ? 1 : 0,
|
||||
'enabled' => (bool) $enabled === true ? 1 : 0,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -625,16 +630,11 @@ function notifications_get_user_label_status($source, $user, $label)
|
|||
|
||||
$common_groups = array_intersect(
|
||||
array_keys(users_get_groups($user)),
|
||||
array_keys(
|
||||
notifications_get_group_sources_for_select($source['id'])
|
||||
)
|
||||
array_keys(notifications_get_group_sources_for_select($source['id']))
|
||||
);
|
||||
// No group found, return no permissions.
|
||||
$value = empty($common_groups) ? false : $source[$label];
|
||||
return notifications_build_user_enable_return(
|
||||
$value,
|
||||
false
|
||||
);
|
||||
return notifications_build_user_enable_return($value, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -681,13 +681,7 @@ function notifications_get_counters()
|
|||
{
|
||||
$num_notifications = 0;
|
||||
$last_id = 0;
|
||||
$last_message = messages_get_overview(
|
||||
'timestamp',
|
||||
'DESC',
|
||||
false,
|
||||
false,
|
||||
1
|
||||
);
|
||||
$last_message = messages_get_overview('timestamp', 'DESC', false, false, 1);
|
||||
if (!empty($last_message)) {
|
||||
$num_notifications = messages_get_count();
|
||||
$last_id = $last_message[0]['id_mensaje'];
|
||||
|
@ -718,7 +712,9 @@ function notifications_get_counters()
|
|||
function notifications_print_ball($num_notifications, $last_id)
|
||||
{
|
||||
$no_notifications = (int) $num_notifications === 0;
|
||||
$class_status = ($no_notifications) ? 'notification-ball-no-messages' : 'notification-ball-new-messages';
|
||||
$class_status = $no_notifications
|
||||
? 'notification-ball-no-messages'
|
||||
: 'notification-ball-new-messages';
|
||||
return sprintf(
|
||||
'<div
|
||||
%s
|
||||
|
@ -728,7 +724,7 @@ function notifications_print_ball($num_notifications, $last_id)
|
|||
>
|
||||
%s
|
||||
</div>',
|
||||
($no_notifications) ? '' : 'onclick="addNotifications(event)"',
|
||||
$no_notifications ? '' : 'onclick="addNotifications(event)"',
|
||||
$class_status,
|
||||
$last_id,
|
||||
$num_notifications
|
||||
|
@ -799,7 +795,7 @@ function notifications_print_global_source_configuration($source)
|
|||
'type' => 'switch',
|
||||
'id' => 'nt-'.$source['id'].'.'.$type.'-subtype',
|
||||
'class' => 'elem-clickable',
|
||||
'value' => (isset($blacklist[$type]) === false),
|
||||
'value' => isset($blacklist[$type]) === false,
|
||||
'return' => true,
|
||||
]
|
||||
);
|
||||
|
@ -833,14 +829,11 @@ function notifications_print_global_source_configuration($source)
|
|||
*
|
||||
* @return string HTML with the generated selector
|
||||
*/
|
||||
function notifications_print_source_select_box(
|
||||
$info_selec,
|
||||
$id,
|
||||
$source_id
|
||||
) {
|
||||
$title = ($id === 'users') ? __('Notified users') : __('Notified groups');
|
||||
$add_title = ($id === 'users') ? __('Add users') : __('Add groups');
|
||||
$delete_title = ($id === 'users') ? __('Delete users') : __('Delete groups');
|
||||
function notifications_print_source_select_box($info_selec, $id, $source_id)
|
||||
{
|
||||
$title = $id === 'users' ? __('Notified users') : __('Notified groups');
|
||||
$add_title = $id === 'users' ? __('Add users') : __('Add groups');
|
||||
$delete_title = $id === 'users' ? __('Delete users') : __('Delete groups');
|
||||
|
||||
// Generate the HTML.
|
||||
return sprintf(
|
||||
|
@ -873,11 +866,7 @@ function notifications_print_source_select_box(
|
|||
true,
|
||||
[
|
||||
'title' => $add_title,
|
||||
'onclick' => sprintf(
|
||||
"add_source_dialog('%s', '%s')",
|
||||
$id,
|
||||
$source_id
|
||||
),
|
||||
'onclick' => sprintf("add_source_dialog('%s', '%s')", $id, $source_id),
|
||||
]
|
||||
),
|
||||
html_print_image(
|
||||
|
@ -1062,7 +1051,6 @@ function notifications_print_dropdown()
|
|||
function notifications_print_dropdown_element($message_info)
|
||||
{
|
||||
$action = '';
|
||||
|
||||
switch ($message_info['description']) {
|
||||
case 'Official communication':
|
||||
$action = 'show_modal(this.id);';
|
||||
|
|
|
@ -14,54 +14,190 @@
|
|||
// Get critical agents by using the status code in modules.
|
||||
function os_agents_critical($id_os)
|
||||
{
|
||||
// TODO REVIEW ORACLE AND POSTGRES
|
||||
return db_get_sql(
|
||||
"
|
||||
SELECT COUNT(*)
|
||||
FROM tagente
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count>0 AND id_os=$id_os"
|
||||
);
|
||||
global $config;
|
||||
|
||||
$table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count>0 AND id_os=%d',
|
||||
$table,
|
||||
$id_os
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count>0 AND
|
||||
id_os=%d AND id_grupo IN (%s)',
|
||||
$table,
|
||||
$id_os,
|
||||
implode(',', $groups)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Get ok agents by using the status code in modules.
|
||||
function os_agents_ok($id_os)
|
||||
{
|
||||
return db_get_sql(
|
||||
"
|
||||
SELECT COUNT(*)
|
||||
FROM tagente
|
||||
WHERE tagente.disabled=0 AND
|
||||
normal_count=total_count AND id_os=$id_os"
|
||||
);
|
||||
global $config;
|
||||
|
||||
$table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
normal_count=total_count AND id_os=%d',
|
||||
$table,
|
||||
$id_os
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
normal_count=total_count AND
|
||||
id_os=%d AND id_grupo IN (%s)',
|
||||
$table,
|
||||
$id_os,
|
||||
implode(',', $groups)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Get warning agents by using the status code in modules.
|
||||
function os_agents_warning($id_os)
|
||||
{
|
||||
return db_get_sql(
|
||||
"
|
||||
SELECT COUNT(*)
|
||||
FROM tagente
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count>0 AND id_os=$id_os"
|
||||
);
|
||||
global $config;
|
||||
|
||||
$table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count>0
|
||||
AND id_os=%d',
|
||||
$table,
|
||||
$id_os
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count>0 AND
|
||||
id_os=%d AND id_grupo IN (%s)',
|
||||
$table,
|
||||
$id_os,
|
||||
implode(',', $groups)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Get unknown agents by using the status code in modules.
|
||||
function os_agents_unknown($id_os)
|
||||
{
|
||||
return db_get_sql(
|
||||
"
|
||||
SELECT COUNT(*)
|
||||
FROM tagente
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count=0 AND
|
||||
unknown_count>0 AND id_os=$id_os"
|
||||
);
|
||||
global $config;
|
||||
|
||||
$table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count=0 AND
|
||||
unknown_count>0 AND id_os=%d',
|
||||
$table,
|
||||
$id_os
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND
|
||||
critical_count=0 AND warning_count=0 AND
|
||||
unknown_count>0 AND id_os=%d AND id_grupo IN (%s)',
|
||||
$table,
|
||||
$id_os,
|
||||
implode(',', $groups)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get total agents
|
||||
*
|
||||
* @param integer $id_os OS id.
|
||||
*
|
||||
* @return array|boolean
|
||||
*/
|
||||
function os_agents_total(int $id_os)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
|
||||
|
||||
if (users_is_admin() === true) {
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND id_os=%d',
|
||||
$table,
|
||||
$id_os
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
|
||||
return db_get_sql(
|
||||
sprintf(
|
||||
'SELECT COUNT(*)
|
||||
FROM %s
|
||||
WHERE tagente.disabled=0 AND id_os=%d AND id_grupo IN (%s)',
|
||||
$table,
|
||||
$id_os,
|
||||
implode(',', $groups)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -810,7 +810,7 @@ function reporting_make_reporting_data(
|
|||
break;
|
||||
}
|
||||
|
||||
$report['contents'][] = $report_control;
|
||||
$report['contents'][] = $report_control;
|
||||
break;
|
||||
|
||||
case 'event_report_module':
|
||||
|
@ -826,7 +826,7 @@ function reporting_make_reporting_data(
|
|||
break;
|
||||
}
|
||||
|
||||
$report['contents'][] = $report_control;
|
||||
$report['contents'][] = $report_control;
|
||||
break;
|
||||
|
||||
case 'event_report_group':
|
||||
|
@ -1943,6 +1943,8 @@ function reporting_event_report_group(
|
|||
|
||||
$event_filter = $content['style'];
|
||||
$return['show_summary_group'] = $event_filter['show_summary_group'];
|
||||
$return['show_custom_data'] = (isset($event_filter['custom_data_events']) === true) ? (bool) $event_filter['custom_data_events'] : false;
|
||||
|
||||
// Filter.
|
||||
$show_summary_group = $event_filter['show_summary_group'];
|
||||
$filter_event_severity = json_decode($event_filter['filter_event_severity'], true);
|
||||
|
@ -2246,6 +2248,8 @@ function reporting_event_report_module(
|
|||
|
||||
$event_filter = $content['style'];
|
||||
$return['show_summary_group'] = $event_filter['show_summary_group'];
|
||||
$return['show_custom_data'] = (isset($event_filter['custom_data_events']) === true) ? (bool) $event_filter['custom_data_events'] : false;
|
||||
|
||||
// Filter.
|
||||
$show_summary_group = $event_filter['show_summary_group'];
|
||||
$filter_event_severity = json_decode(
|
||||
|
@ -3779,6 +3783,8 @@ function reporting_event_report_agent(
|
|||
$filter_event_status = json_decode($style['filter_event_status'], true);
|
||||
$filter_event_filter_search = $style['event_filter_search'];
|
||||
$filter_event_filter_exclude = $style['event_filter_exclude'];
|
||||
$show_custom_data = (isset($style['custom_data_events']) === true) ? (bool) $style['custom_data_events'] : false;
|
||||
$return['show_custom_data'] = $show_custom_data;
|
||||
|
||||
// Graph.
|
||||
$event_graph_by_user_validator = $style['event_graph_by_user_validator'];
|
||||
|
@ -3798,7 +3804,8 @@ function reporting_event_report_agent(
|
|||
$filter_event_status,
|
||||
$filter_event_filter_search,
|
||||
$filter_event_filter_exclude,
|
||||
$id_server
|
||||
$id_server,
|
||||
$show_custom_data
|
||||
);
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
|
@ -6954,7 +6961,7 @@ function sla_truncate($num, $accurancy=2)
|
|||
*
|
||||
* @param integer $value Value.
|
||||
* @param integer $min Treshold min SLA.
|
||||
* @param boolean $max Treshold max SLA.
|
||||
* @param integer $max Treshold max SLA.
|
||||
* @param boolean $inverse_interval Treshold inverse SLA.
|
||||
*
|
||||
* @return boolean Returns the interval in downtime (false if no matches).
|
||||
|
@ -10594,7 +10601,8 @@ function reporting_get_agents_detailed_event(
|
|||
$filter_event_status=false,
|
||||
$filter_event_filter_search=false,
|
||||
$filter_event_filter_exclude=false,
|
||||
$id_server=0
|
||||
$id_server=0,
|
||||
$show_custom_data=false
|
||||
) {
|
||||
global $config;
|
||||
|
||||
|
@ -10651,6 +10659,7 @@ function reporting_get_agents_detailed_event(
|
|||
'validated_by' => $e['id_usuario'],
|
||||
'timestamp' => $e['timestamp_rep'],
|
||||
'id_evento' => $e['id_evento'],
|
||||
'custom_data' => ($show_custom_data === true) ? $e['custom_data'] : '',
|
||||
];
|
||||
} else {
|
||||
$return_data[] = [
|
||||
|
@ -10661,6 +10670,7 @@ function reporting_get_agents_detailed_event(
|
|||
'validated_by' => $e['id_usuario'],
|
||||
'timestamp' => $e['timestamp'],
|
||||
'id_evento' => $e['id_evento'],
|
||||
'custom_data' => ($show_custom_data === true) ? $e['custom_data'] : '',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -14739,8 +14749,10 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||
if ($modules_is_string === false) {
|
||||
if ($agentmodule_info['max_critical'] == 0) {
|
||||
$max_value_critical = null;
|
||||
if ((bool) $content['dinamic_proc'] === true) {
|
||||
$max_value_critical = 0.01;
|
||||
if ($agentmodule_info['min_critical'] == 0) {
|
||||
if ((bool) $content['dinamic_proc'] === true) {
|
||||
$max_value_critical = 0.01;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$max_value_critical = $agentmodule_info['max_critical'];
|
||||
|
|
|
@ -1025,6 +1025,7 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
|||
global $config;
|
||||
|
||||
$show_extended_events = $item['show_extended_events'];
|
||||
$show_custom_data = (bool) $item['show_custom_data'];
|
||||
|
||||
if ($item['total_events']) {
|
||||
$table1 = new stdClass();
|
||||
|
@ -1060,6 +1061,10 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
|||
$table1->head[6] = __('Timestamp');
|
||||
}
|
||||
|
||||
if ($show_custom_data === true) {
|
||||
$table1->head[8] = __('Custom data');
|
||||
}
|
||||
|
||||
foreach ($item['data'] as $k => $event) {
|
||||
// First pass along the class of this row.
|
||||
if ($item['show_summary_group']) {
|
||||
|
@ -1132,6 +1137,16 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
|||
$data[] = '<font class="font_6pt">'.date($config['date_format'], strtotime($event['timestamp'])).'</font>';
|
||||
}
|
||||
|
||||
if ($show_custom_data === true) {
|
||||
$custom_data = json_decode($event['custom_data'], true);
|
||||
$custom_data_text = '';
|
||||
foreach ($custom_data as $key => $value) {
|
||||
$custom_data_text .= $key.' = '.$value.'<br>';
|
||||
}
|
||||
|
||||
$data[] = $custom_data_text;
|
||||
}
|
||||
|
||||
array_push($table1->data, $data);
|
||||
|
||||
if ($show_extended_events == 1 && events_has_extended_info($event['id_evento'])) {
|
||||
|
@ -1246,10 +1261,10 @@ function reporting_html_event_report_group($table, $item, $pdf=0)
|
|||
function reporting_html_event_report_module($table, $item, $pdf=0)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$show_extended_events = $item['show_extended_events'];
|
||||
|
||||
$show_summary_group = $item['show_summary_group'];
|
||||
$show_custom_data = (bool) $item['show_custom_data'];
|
||||
if ($item['total_events']) {
|
||||
if (!empty($item['failed'])) {
|
||||
$table->colspan['events']['cell'] = 3;
|
||||
|
@ -1279,6 +1294,10 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
|||
$table1->style[0] = 'text-align: center;';
|
||||
}
|
||||
|
||||
if ($show_custom_data === true) {
|
||||
$table1->head[6] = __('Custom data');
|
||||
}
|
||||
|
||||
if (is_array($item['data']) || is_object($item['data'])) {
|
||||
$item_data = array_reverse($item['data']);
|
||||
}
|
||||
|
@ -1331,6 +1350,16 @@ function reporting_html_event_report_module($table, $item, $pdf=0)
|
|||
$data[4] = date($config['date_format'], strtotime($event['timestamp']));
|
||||
}
|
||||
|
||||
if ($show_custom_data === true) {
|
||||
$custom_data = json_decode($event['custom_data'], true);
|
||||
$custom_data_text = '';
|
||||
foreach ($custom_data as $key => $value) {
|
||||
$custom_data_text .= $key.' = '.$value.'<br>';
|
||||
}
|
||||
|
||||
$data[6] = $custom_data_text;
|
||||
}
|
||||
|
||||
$table1->data[] = $data;
|
||||
|
||||
if ($show_extended_events == 1 && events_has_extended_info($event['id_evento'])) {
|
||||
|
@ -2341,6 +2370,13 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
|||
$table1->align[0] = 'center';
|
||||
$table1->align[1] = 'center';
|
||||
$table1->align[3] = 'center';
|
||||
if ((bool) $item['show_custom_data'] === true) {
|
||||
if ($item['show_summary_group']) {
|
||||
$table1->align[7] = 'left';
|
||||
} else {
|
||||
$table1->align[6] = 'left';
|
||||
}
|
||||
}
|
||||
|
||||
$table1->data = [];
|
||||
|
||||
|
@ -2355,6 +2391,9 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
|||
$table1->head[4] = __('Severity');
|
||||
$table1->head[5] = __('Val. by');
|
||||
$table1->head[6] = __('Timestamp');
|
||||
if ((bool) $item['show_custom_data'] === true) {
|
||||
$table1->head[7] = __('Custom data');
|
||||
}
|
||||
|
||||
foreach ($item['data'] as $i => $event) {
|
||||
if ($item['show_summary_group']) {
|
||||
|
@ -2420,6 +2459,16 @@ function reporting_html_event_report_agent($table, $item, $pdf=0)
|
|||
$data[] = '<font class="font_6pt">'.date($config['date_format'], strtotime($event['timestamp'])).'</font>';
|
||||
}
|
||||
|
||||
if ((bool) $item['show_custom_data'] === true) {
|
||||
$custom_data = json_decode($event['custom_data'], true);
|
||||
$custom_data_text = '';
|
||||
foreach ($custom_data as $key => $value) {
|
||||
$custom_data_text .= $key.' = '.$value.'<br>';
|
||||
}
|
||||
|
||||
$data[] = $custom_data_text;
|
||||
}
|
||||
|
||||
array_push($table1->data, $data);
|
||||
|
||||
if ($show_extended_events == 1 && events_has_extended_info($event['id_evento'])) {
|
||||
|
|
|
@ -5448,6 +5448,10 @@ function ui_print_agent_autocomplete_input($parameters)
|
|||
'q' => 'term',
|
||||
];
|
||||
|
||||
if (isset($parameters['delete_offspring_agents']) === true) {
|
||||
$javascript_change_ajax_params_original['delete_offspring_agents'] = $parameters['delete_offspring_agents'];
|
||||
}
|
||||
|
||||
if (!$metaconsole_enabled) {
|
||||
$javascript_change_ajax_params_original['force_local'] = 1;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ function pandoraFlotPie(
|
|||
colors,
|
||||
hide_labels
|
||||
) {
|
||||
height = parseInt(height);
|
||||
|
||||
labels = labels.split(separator);
|
||||
var data = values.split(separator);
|
||||
|
||||
|
@ -79,11 +81,22 @@ function pandoraFlotPie(
|
|||
break;
|
||||
}
|
||||
|
||||
var discount = 20;
|
||||
if (water_mark) {
|
||||
discount = 40;
|
||||
}
|
||||
|
||||
var plot = $.plot($("#" + graph_id), data, conf_pie);
|
||||
|
||||
var legends = $("#" + graph_id + " .legendLabel");
|
||||
legends.css("font-size", font_size + "pt");
|
||||
|
||||
var tableDiv = $("#" + graph_id + " .legend > div");
|
||||
tableDiv.css("max-height", height - discount + "px");
|
||||
|
||||
var tableLegend = $("#" + graph_id + " .legend table");
|
||||
tableLegend.css("max-height", height - discount + "px");
|
||||
|
||||
// Events
|
||||
$("#" + graph_id).bind("plothover", pieHover);
|
||||
//$("#" + graph_id).bind("plotclick", pieClick);
|
||||
|
@ -443,14 +456,15 @@ function pandoraFlotHBars(
|
|||
"pt !important;" +
|
||||
"margin: 0; max-width: 200px;" +
|
||||
"margin-right:5px;" +
|
||||
"margin-left: -1.5em" +
|
||||
"text-align: right" +
|
||||
"margin-left: -1.5em;" +
|
||||
"text-align: right;" +
|
||||
"text-overflow: ellipsis;" +
|
||||
"overflow: hidden;" +
|
||||
"white-space: pre;";
|
||||
|
||||
if (label.indexOf("<br>") != -1) {
|
||||
div_attributes += "min-height: 2.5em;";
|
||||
var label_array = label.split("<br>");
|
||||
label = label_array[0] + label_array[1];
|
||||
}
|
||||
|
||||
div_attributes += '" title="' + label + '" style="overflow: hidden;"';
|
||||
|
|
|
@ -150,7 +150,7 @@ function d3_tree_map_graph($data, $width=700, $height=700, $return=false)
|
|||
}
|
||||
|
||||
|
||||
function d3_sunburst_graph($data, $width=700, $height=700, $return=false)
|
||||
function d3_sunburst_graph($data, $width=700, $height=700, $return=false, $tooltip=true)
|
||||
{
|
||||
global $config;
|
||||
|
||||
|
@ -167,7 +167,7 @@ function d3_sunburst_graph($data, $width=700, $height=700, $return=false)
|
|||
}
|
||||
</style>';
|
||||
$output .= "<script language=\"javascript\" type=\"text/javascript\">
|
||||
sunburst('#sunburst', $data, '$width', '$height');
|
||||
sunburst('#sunburst', $data, '$width', '$height', '$tooltip');
|
||||
</script>";
|
||||
|
||||
if (!$return) {
|
||||
|
|
|
@ -29,6 +29,12 @@ function chordDiagram(recipient, elements, matrix, width) {
|
|||
var width = 700;
|
||||
var margin = 150;
|
||||
var padding = 0.02;
|
||||
var consoleStyle = document.getElementById("hidden-selected_style_theme")
|
||||
.value;
|
||||
var textColor =
|
||||
consoleStyle === "pandora_black" ? "rgb(240, 240, 240)" : "rgb(0, 0, 0)";
|
||||
var tooltipColor =
|
||||
consoleStyle === "pandora_black" ? "rgb(0, 0, 0)" : "rgb(240, 240, 240)";
|
||||
|
||||
function chart(selection) {
|
||||
selection.each(function(data) {
|
||||
|
@ -103,7 +109,6 @@ function chordDiagram(recipient, elements, matrix, width) {
|
|||
const chords = chord.chords();
|
||||
let aux = 0;
|
||||
$.each(chords, function(key, value) {
|
||||
console.log(aux);
|
||||
if (aux < 5) {
|
||||
if (
|
||||
(value.source.index == i && value.target.subindex == i) ||
|
||||
|
@ -159,6 +164,7 @@ function chordDiagram(recipient, elements, matrix, width) {
|
|||
.attr("text-anchor", function(d) {
|
||||
return d.angle > Math.PI ? "end" : null;
|
||||
})
|
||||
.attr("style", "fill: " + textColor)
|
||||
.attr("transform", function(d) {
|
||||
return (
|
||||
"rotate(" +
|
||||
|
@ -266,7 +272,12 @@ function chordDiagram(recipient, elements, matrix, width) {
|
|||
|
||||
$("#tooltip").attr(
|
||||
"style",
|
||||
"background: #fff;" +
|
||||
"background: " +
|
||||
tooltipColor +
|
||||
";" +
|
||||
"color: " +
|
||||
textColor +
|
||||
";" +
|
||||
"position: absolute;" +
|
||||
"display: inline-block;" +
|
||||
"width: auto;" +
|
||||
|
@ -393,6 +404,16 @@ function treeMap(recipient, data, width, height) {
|
|||
var isIE = true;
|
||||
var chartWidth = width;
|
||||
var chartHeight = height;
|
||||
var consoleStyle = document.getElementById("hidden-selected_style_theme")
|
||||
.value;
|
||||
$("#tooltip").css(
|
||||
"color",
|
||||
consoleStyle === "pandora_black" ? "rgb(240, 240, 240)" : "rgb(0, 0, 0)"
|
||||
);
|
||||
$("#tooltip").css(
|
||||
"background-color",
|
||||
consoleStyle === "pandora_black" ? "rgb(0, 0, 0)" : "rgb(240, 240, 240)"
|
||||
);
|
||||
if (width === "auto") {
|
||||
chartWidth = $(recipient).innerWidth();
|
||||
}
|
||||
|
@ -761,6 +782,7 @@ function treeMap(recipient, data, width, height) {
|
|||
$("#tooltip").attr(
|
||||
"style",
|
||||
"background: #fff;" +
|
||||
"color: #111;" +
|
||||
"position: absolute;" +
|
||||
"display: block;" +
|
||||
"width: 200px;" +
|
||||
|
@ -796,7 +818,7 @@ function treeMap(recipient, data, width, height) {
|
|||
// The area (or angle, depending on implementation) of each arc corresponds to its value.
|
||||
// Sunburst design by John Stasko. Data courtesy Jeff Heer.
|
||||
// http://bl.ocks.org/mbostock/4348373
|
||||
function sunburst(recipient, data, width, height) {
|
||||
function sunburst(recipient, data, width, height, tooltip = true) {
|
||||
if (width === "auto") {
|
||||
width = $(recipient).innerWidth();
|
||||
}
|
||||
|
@ -858,11 +880,14 @@ function sunburst(recipient, data, width, height) {
|
|||
})
|
||||
.style("cursor", "pointer")
|
||||
.on("click", click)
|
||||
.on("mouseover", over_user)
|
||||
.on("mouseover", tooltip === "1" ? over_user : "")
|
||||
.on("mouseout", out_user)
|
||||
.on("mousemove", move_tooltip);
|
||||
|
||||
function computeTextRotation(d) {
|
||||
if (d.type === "central_service") {
|
||||
return 0;
|
||||
}
|
||||
var ang = ((x(d.x + d.dx / 2) - Math.PI / 2) / Math.PI) * 180;
|
||||
return ang > 90 ? 180 + ang : ang;
|
||||
}
|
||||
|
@ -882,9 +907,18 @@ function sunburst(recipient, data, width, height) {
|
|||
return computeTextRotation(d) > 180 ? -40 : -30;
|
||||
})
|
||||
.attr("dx", "6") // margin
|
||||
.attr("dy", ".35em") // vertical-align
|
||||
.attr("dy", function(d) {
|
||||
if (d.type === "central_service") {
|
||||
return "-7em";
|
||||
}
|
||||
return ".35em";
|
||||
}) // vertical-align
|
||||
.attr("opacity", function(d) {
|
||||
if (typeof d.show_name != "undefined" && d.show_name) return 1;
|
||||
if (
|
||||
(typeof d.show_name != "undefined" && d.show_name) ||
|
||||
d.type === "central_service"
|
||||
)
|
||||
return 1;
|
||||
else return 0;
|
||||
})
|
||||
.text(function(d) {
|
||||
|
@ -899,7 +933,11 @@ function sunburst(recipient, data, width, height) {
|
|||
window.location.href = d.link;
|
||||
} else {
|
||||
// fade out all text elements
|
||||
text.transition().attr("opacity", 0);
|
||||
if (d.type === "central_service") {
|
||||
text.transition().attr("opacity", 1);
|
||||
} else {
|
||||
text.transition().attr("opacity", 0);
|
||||
}
|
||||
|
||||
path
|
||||
.transition()
|
||||
|
@ -965,8 +1003,8 @@ function sunburst(recipient, data, width, height) {
|
|||
}
|
||||
|
||||
function move_tooltip(d) {
|
||||
var x = d3.event.pageX + 10;
|
||||
var y = d3.event.pageY + 10;
|
||||
var x = d3.event.pageX + 10 - $("#menu_full").width();
|
||||
var y = d3.event.pageY - 90;
|
||||
|
||||
$("#tooltip").css("left", x + "px");
|
||||
$("#tooltip").css("top", y + "px");
|
||||
|
@ -1007,6 +1045,7 @@ function sunburst(recipient, data, width, height) {
|
|||
$("#tooltip").attr(
|
||||
"style",
|
||||
"background: #fff;" +
|
||||
"color: #111;" +
|
||||
"position: absolute;" +
|
||||
"display: block;" +
|
||||
"width: 200px;" +
|
||||
|
@ -1017,10 +1056,10 @@ function sunburst(recipient, data, width, height) {
|
|||
"-moz-box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" +
|
||||
"box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" +
|
||||
"left: " +
|
||||
x +
|
||||
100 +
|
||||
"px;" +
|
||||
"top: " +
|
||||
y +
|
||||
100 +
|
||||
"px;"
|
||||
);
|
||||
}
|
||||
|
|
|
@ -2027,3 +2027,33 @@ function inArray(needle, haystack) {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter selector item by text based on a text input.
|
||||
*
|
||||
* @param {string} textbox Text input.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
$.fn.filterByText = function(textbox) {
|
||||
var select = this;
|
||||
|
||||
$(textbox).bind("change keyup", function() {
|
||||
var search = $.trim($(textbox).val());
|
||||
var regex = new RegExp(search, "gi");
|
||||
|
||||
$(select)
|
||||
.find("option")
|
||||
.each(function() {
|
||||
if (
|
||||
$(this)
|
||||
.text()
|
||||
.match(regex) !== null
|
||||
) {
|
||||
$(this).show();
|
||||
} else {
|
||||
$(this).hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
|
@ -849,7 +849,8 @@ function add_macro_field(macro, row_model_id, type_copy, k) {
|
|||
$macro_field
|
||||
.find("input")
|
||||
.first()
|
||||
.attr("name", macro_macro);
|
||||
.attr("name", macro_macro)
|
||||
.val(macro_value);
|
||||
|
||||
$macro_field.attr("class", "macro_field");
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue