Merge branch 'develop' into 'ent-8838-Longitud-id-user-tusuario'

# Conflicts:
#   pandora_console/extras/mr/55.sql
This commit is contained in:
Alejandro Campos 2022-06-03 10:26:35 +00:00
commit 91d949942a
106 changed files with 1369 additions and 608 deletions

View File

@ -4,7 +4,7 @@
# define variables # define variables
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2021100601' S_VERSION='2022052301'
LOGFILE="/tmp/pandora-agent-deploy-$(date +%F).log" LOGFILE="/tmp/pandora-agent-deploy-$(date +%F).log"
# Ansi color code variables # Ansi color code variables
@ -49,7 +49,6 @@ check_cmd_status () {
} }
check_repo_connection () { 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 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' 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. # 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=$([[ $(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 =~ 'rhel' ]] && OS_RELEASE=$OS
[[ $OS =~ 'fedora' ]] && OS_RELEASE=$OS
[[ $OS =~ 'debian' ]] && OS_RELEASE=$OS [[ $OS =~ 'debian' ]] && OS_RELEASE=$OS
#[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS #[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
#[[ $OS == 'centos 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 # Downloading and installing packages
if [[ $OS_RELEASE =~ 'rhel' ]]; then if [[ $OS_RELEASE =~ 'rhel' ]] || [[ $OS_RELEASE =~ 'fedora' ]]; then
yum install -y perl wget curl perl-Sys-Syslog unzip &>> $LOGFILE ## Extra steps on redhat
echo -e "${cyan}Instaling agent dependencies...${reset}" ${green}OK${reset} 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 # Insatall pandora agent
echo -e "${cyan}Instaling Pandora FMS agent...${reset}" ${green}OK${reset} $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 fi
if [[ $OS_RELEASE == 'debian' ]]; then if [[ $OS_RELEASE == 'debian' ]]; then
execute_cmd "apt update" 'Updating repos' 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 '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' execute_cmd 'apt install -y ./pandorafms.agent_unix_7.0NG.deb' 'Installing Pandora FMS agent'
fi fi

View File

@ -422,7 +422,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" execute_cmd "yum install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
# Copy gotty utility # 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 tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util' execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'

View File

@ -14,11 +14,13 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022020801' S_VERSION='2022052501'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log" LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables # define default variables
[ "$TZ" ] || TZ="Europe/Madrid" [ "$TZ" ] || TZ="Europe/Madrid"
[ "$MYVER" ] || MYVER=57
[ "$PHPVER" ] || PHPVER=7
[ "$DBHOST" ] || DBHOST=127.0.0.1 [ "$DBHOST" ] || DBHOST=127.0.0.1
[ "$DBNAME" ] || DBNAME=pandora [ "$DBNAME" ] || DBNAME=pandora
[ "$DBUSER" ] || DBUSER=pandora [ "$DBUSER" ] || DBUSER=pandora
@ -203,15 +205,28 @@ fi
#Installing wget #Installing wget
execute_cmd "dnf install -y wget" "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 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 # Install percona Database
execute_cmd "dnf module disable -y mysql" "Disabiling mysql module" 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
console_dependencies=" \ console_dependencies=" \
@ -381,20 +396,33 @@ EO_CONFIG_TMP
#Configuring Database #Configuring Database
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
execute_cmd "systemctl start mysqld" "Starting database engine" execute_cmd "systemctl start mysqld" "Starting database engine"
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev) export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
echo """ if [ "$MYVER" -eq '80' ] ; then
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!'); echo """
UNINSTALL PLUGIN validate_password; SET PASSWORD FOR 'root'@'localhost' = 'Pandor4!';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS'); UNINSTALL COMPONENT 'file://component_validate_password';
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE" 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 fi
export MYSQL_PWD=$DBROOTPASS export MYSQL_PWD=$DBROOTPASS
echo -en "${cyan}Creating Pandora FMS database...${reset}" echo -en "${cyan}Creating Pandora FMS database...${reset}"
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST 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." 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 export MYSQL_PWD=$DBPASS
#Generating my.cnf #Generating my.cnf
@ -442,6 +470,10 @@ pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_F 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" execute_cmd "systemctl restart mysqld" "Configuring database engine"
@ -465,7 +497,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" execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "Installing Pandora FMS packages"
# Copy gotty utility # 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 tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util' execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, AIX version # Version 7.0NG.762, AIX version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, FreeBSD Version # Version 7.0NG.762, FreeBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # 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, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, GNU/Linux # Version 7.0NG.762, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, GNU/Linux # Version 7.0NG.762, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, Solaris Version # Version 7.0NG.762, Solaris Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent # Base config file for Pandora FMS Windows Agent
# (c) 2006-2021 Artica Soluciones Tecnologicas # (c) 2006-2021 Artica Soluciones Tecnologicas
# Version 7.0NG.761 # Version 7.0NG.762
# This program is Free Software, you can redistribute it and/or modify it # This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software # under the terms of the GNU General Public Licence as published by the Free Software
# Foundation; either version 2 of the Licence or any later version # Foundation; either version 2 of the Licence or any later version

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.761, AIX version # Version 7.0NG.762, AIX version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.761 # Version 7.0NG.762
# FreeBSD/IPSO version # FreeBSD/IPSO version
# Licenced under GPL licence, 2003-2007 Sancho Lerena # Licenced under GPL licence, 2003-2007 Sancho Lerena

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.761, HPUX Version # Version 7.0NG.762, HPUX Version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761 # Version 7.0NG.762
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2021 Artica Soluciones Tecnologicas # (c) 2003-2021 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761 # Version 7.0NG.762
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2021 Artica Soluciones Tecnologicas # (c) 2003-2021 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761 # Version 7.0NG.762
# Licensed under GPL license v2, # Licensed under GPL license v2,
# please visit http://pandora.sourceforge.net # please visit http://pandora.sourceforge.net

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora # Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents # Base config file for Pandora agents
# Version 7.0NG.761, Solaris version # Version 7.0NG.762, Solaris version
# General Parameters # General Parameters
# ================== # ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, AIX version # Version 7.0NG.762, AIX version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.761-220509 Version: 7.0NG.762-220603
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.761-220509" pandora_version="7.0NG.762-220603"
echo "Test if you has the tools for to make the packages." echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -31,7 +31,7 @@ fi
if [ "$#" -ge 2 ]; then if [ "$#" -ge 2 ]; then
VERSION="$2" VERSION="$2"
else else
VERSION="7.0NG.761" VERSION="7.0NG.762"
fi fi
# Path for the generated DMG file # Path for the generated DMG file

View File

@ -19,11 +19,11 @@
<choice id="com.pandorafms.pandorafms_src" visible="false"> <choice id="com.pandorafms.pandorafms_src" visible="false">
<pkg-ref id="com.pandorafms.pandorafms_src"/> <pkg-ref id="com.pandorafms.pandorafms_src"/>
</choice> </choice>
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.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"> <choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/> <pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
</choice> </choice>
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.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()" /> <!-- <installation-check script="check()" />
<script> <script>
<![CDATA[ <![CDATA[

View File

@ -5,9 +5,9 @@
<key>CFBundleIconFile</key> <string>pandorafms.icns</string> <key>CFBundleIconFile</key> <string>pandorafms.icns</string>
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string> <key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
<key>CFBundleVersion</key> <string>7.0NG.761</string> <key>CFBundleVersion</key> <string>7.0NG.762</string>
<key>CFBundleGetInfoString</key> <string>7.0NG.761 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</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.761</string> <key>CFBundleShortVersionString</key> <string>7.0NG.762</string>
<key>NSPrincipalClass</key><string>NSApplication</string> <key>NSPrincipalClass</key><string>NSApplication</string>
<key>NSMainNibFile</key><string>MainMenu</string> <key>NSMainNibFile</key><string>MainMenu</string>

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, GNU/Linux # Version 7.0NG.762, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, FreeBSD Version # Version 7.0NG.762, FreeBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # 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, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, GNU/Linux # Version 7.0NG.762, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, GNU/Linux # Version 7.0NG.762, GNU/Linux
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, NetBSD Version # Version 7.0NG.762, NetBSD Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents # Base config file for Pandora FMS agents
# Version 7.0NG.761, Solaris Version # Version 7.0NG.762, Solaris Version
# Licensed under GPL license v2, # Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas # Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com

View File

@ -1014,8 +1014,8 @@ my $Sem = undef;
# Semaphore used to control the number of threads # Semaphore used to control the number of threads
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.761'; use constant AGENT_VERSION => '7.0NG.762';
use constant AGENT_BUILD => '220509'; use constant AGENT_BUILD => '220603';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent #Pandora FMS Linux Agent
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.761 %define version 7.0NG.762
%define release 220509 %define release 220603
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent #Pandora FMS Linux Agent
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.761 %define version 7.0NG.762
%define release 220509 %define release 220603
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -9,8 +9,8 @@
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license. # Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.761" PI_VERSION="7.0NG.762"
PI_BUILD="220509" PI_BUILD="220603"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent # Base config file for Pandora FMS Windows Agent
# (c) 2006-2021 Artica Soluciones Tecnologicas # (c) 2006-2021 Artica Soluciones Tecnologicas
# Version 7.0NG.761 # Version 7.0NG.762
# This program is Free Software, you can redistribute it and/or modify it # This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software # under the terms of the GNU General Public Licence as published by the Free Software
# Foundation; either version 2 of the Licence or any later version # Foundation; either version 2 of the Licence or any later version

View File

@ -3,7 +3,7 @@ AllowLanguageSelection
{Yes} {Yes}
AppName AppName
{Pandora FMS Windows Agent v7.0NG.761} {Pandora FMS Windows Agent v7.0NG.762}
ApplicationID ApplicationID
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F} {17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{220509} {220603}
ViewReadme ViewReadme
{Yes} {Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils; using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1 #define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.761 Build 220509") #define PANDORA_VERSION ("7.0NG.762 Build 220603")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.761(Build 220509))" VALUE "ProductVersion", "(7.0NG.762(Build 220603))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.761-220509 Version: 7.0NG.762-220603
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.761-220509" pandora_version="7.0NG.762-220603"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -0,0 +1,5 @@
START TRANSACTION;
INSERT INTO `tconfig` (`token`, `value`) VALUES ('lts_name', 'Akira');
COMMIT;

View File

@ -11,5 +11,6 @@ ALTER TABLE `tnotification_user` ADD CONSTRAINT `tnotification_user_ibfk_2` FORE
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_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 `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 `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 `tservice` ADD COLUMN `enable_sunburst` tinyint(1) NOT NULL default 0;
COMMIT; COMMIT;

View File

@ -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.') ]); 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"> <div class="image_task_cluster">
<?php echo html_print_image('images/first_task/slave-mode.png', true, ['title' => __('Clusters')]); ?> <?php echo html_print_image('images/first_task/slave-mode.png', true, ['title' => __('Clusters')]); ?>
</div> </div>

View File

@ -31,6 +31,10 @@ if (!$config['MR']) {
$config['MR'] = 0; $config['MR'] = 0;
} }
if (isset($config['lts_name']) === false) {
$config['lts_name'] = '';
}
echo '<a class="footer"target="_blank" href="'.$config['homeurl'].$license_file.'">'; echo '<a class="footer"target="_blank" href="'.$config['homeurl'].$license_file.'">';
require_once $config['homedir'].'/include/functions_update_manager.php'; require_once $config['homedir'].'/include/functions_update_manager.php';
@ -46,7 +50,7 @@ if ($current_package === null) {
echo __( echo __(
'%s %s - %s - MR %s', '%s %s - %s - MR %s',
get_product_name(), get_product_name(),
$pandora_version, $pandora_version.' '.$config['lts_name'],
$build_package_version, $build_package_version,
$config['MR'] $config['MR']
).'</a><br><span>'.__('Page generated on %s', date('Y-m-d H:i:s')).'</span><br>'; ).'</a><br><span>'.__('Page generated on %s', date('Y-m-d H:i:s')).'</span><br>';

View File

@ -256,7 +256,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
$ignored_params['refr'] = ''; $ignored_params['refr'] = '';
$values = get_refresh_time_array(); $values = get_refresh_time_array();
$autorefresh_additional = '<span id="combo_refr" class="invisible">'; $autorefresh_additional = '<span id="combo_refr" class="invisible_events">';
$autorefresh_additional .= html_print_select( $autorefresh_additional .= html_print_select(
$values, $values,
'ref', 'ref',
@ -875,9 +875,9 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
$('div#head').addClass('fixed_header'); $('div#head').addClass('fixed_header');
$('div#main').css('padding-top', $('div#head').innerHeight() + 'px'); $('div#main').css('padding-top', $('div#head').innerHeight() + 'px');
} }
/* Temporal fix to hide graphics when ui_dialog are displayed */ /* Temporal fix to hide graphics when ui_dialog are displayed */
$("#yougotalert").click(function () { $("#yougotalert").click(function () {
$("#agent_access").css("display", "none"); $("#agent_access").css("display", "none");
}); });
$("#ui_close_dialog_titlebar").click(function () { $("#ui_close_dialog_titlebar").click(function () {
@ -912,7 +912,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
var autorefresh_draw = '<?php echo $autorefresh_draw; ?>'; var autorefresh_draw = '<?php echo $autorefresh_draw; ?>';
$("#header_autorefresh").css('padding-right', '5px'); $("#header_autorefresh").css('padding-right', '5px');
if(autorefresh_draw == true) { if(autorefresh_draw == true) {
var refresh_interval = parseInt('<?php echo ($config['refr'] * 1000); ?>'); var refresh_interval = parseInt('<?php echo ($config['refr'] * 1000); ?>');
var until_time=''; var until_time='';
@ -921,7 +921,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
until_time.setTime (until_time.getTime () + parseInt(<?php echo ($config['refr'] * 1000); ?>)); until_time.setTime (until_time.getTime () + parseInt(<?php echo ($config['refr'] * 1000); ?>));
$("#refrcounter").countdown ({ $("#refrcounter").countdown ({
until: until_time, until: until_time,
layout: '%M%nn%M:%S%nn%S', layout: '%M%nn%M:%S%nn%S',
labels: ['', '', '', '', '', '', ''], labels: ['', '', '', '', '', '', ''],
onExpiry: function () { onExpiry: function () {
@ -936,9 +936,9 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
} else { } else {
var refr_time = <?php echo (int) get_parameter('refr', $config['refr']); ?>; var refr_time = <?php echo (int) get_parameter('refr', $config['refr']); ?>;
var t = new Date(); var t = new Date();
t.setTime (t.getTime () + parseInt(<?php echo ($config['refr'] * 1000); ?>)); t.setTime (t.getTime () + parseInt(<?php echo ($config['refr'] * 1000); ?>));
$("#refrcounter").countdown ({ $("#refrcounter").countdown ({
until: t, until: t,
layout: '%M%nn%M:%S%nn%S', layout: '%M%nn%M:%S%nn%S',
labels: ['', '', '', '', '', '', ''], labels: ['', '', '', '', '', '', ''],
onExpiry: function () { onExpiry: function () {
@ -957,7 +957,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
$("#combo_refr").toggle (); $("#combo_refr").toggle ();
$("select#ref").change (function () { $("select#ref").change (function () {
href = $("a.autorefresh").attr ("href"); href = $("a.autorefresh").attr ("href");
if(autorefresh_draw == true){ if(autorefresh_draw == true){
inputs = $("#events_form :input"); inputs = $("#events_form :input");
values = {}; values = {};
@ -965,17 +965,17 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
values[this.name] = $(this).val(); values[this.name] = $(this).val();
}) })
var newValue = btoa(JSON.stringify(values)); var newValue = btoa(JSON.stringify(values));
<?php <?php
// Check if the url has the parameter fb64. // Check if the url has the parameter fb64.
if (isset($_GET['fb64']) === true) { if (isset($_GET['fb64']) === true) {
$fb64 = $_GET['fb64']; $fb64 = $_GET['fb64'];
?> ?>
var fb64 = '<?php echo $fb64; ?>'; var fb64 = '<?php echo $fb64; ?>';
// Check if the filters have changed. // Check if the filters have changed.
if(fb64 !== newValue){ if(fb64 !== newValue){
href = href.replace(fb64, newValue); href = href.replace(fb64, newValue);
} }
$(document).attr("location", href+ '&refr=' + this.value); $(document).attr("location", href+ '&refr=' + this.value);
<?php <?php
@ -989,7 +989,7 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
$(document).attr ("location", href + this.value); $(document).attr ("location", href + this.value);
} }
}); });
return false; return false;
}); });
}); });

View File

@ -278,11 +278,11 @@ foreach ($sessions as $session) {
true true
).human_time_comparation($session['utimestamp'], 'tiny'); ).human_time_comparation($session['utimestamp'], 'tiny');
$data[3] = $session_ip_origen; $data[3] = $session_ip_origen;
$description = str_replace([',', ', '], ', ', $session['descripcion']); $description = io_safe_output(str_replace([',', ', '], ', ', $session['descripcion']));
if (strlen($description) > 100) { if (strlen($description) > 100) {
$data[4] = '<div >'.io_safe_output(substr($description, 0, 150).'...').'</div>'; $data[4] = '<div >'.io_safe_input(substr($description, 0, 150)).'...</div>';
} else { } else {
$data[4] = '<div >'.io_safe_output($description).'</div>'; $data[4] = '<div >'.io_safe_input($description).'</div>';
} }
array_push($table->data, $data); array_push($table->data, $data);

View File

@ -1156,7 +1156,7 @@ if (check_acl($config['id_user'], 0, 'PM')) {
); );
$table_advanced->colspan[16][1] = 6; $table_advanced->colspan[16][1] = 6;
} else { } else {
// Store in a hidden field if is not visible to avoid delete the value // Store in a hidden field if is not visible to avoid delete the value.
$table_advanced->data[15][4] .= html_print_input_hidden('id_category', $id_category, true); $table_advanced->data[15][4] .= html_print_input_hidden('id_category', $id_category, true);
} }
@ -1193,7 +1193,7 @@ if (!$in_policy) {
} }
// Advanced form part // Advanced form part.
$table_macros = new stdClass(); $table_macros = new stdClass();
$table_macros->id = 'module_macros'; $table_macros->id = 'module_macros';
$table_macros->width = '100%'; $table_macros->width = '100%';
@ -1398,7 +1398,7 @@ ui_require_jquery_file('json');
<script type="text/javascript"> <script type="text/javascript">
/* <![CDATA[ */ /* <![CDATA[ */
$(document).ready (function () { $(document).ready (function () {
var disabledBecauseInPolicy = <?php echo '\''.(empty($disabledBecauseInPolicy) === true ? '0' : '1').'\''; ?>; var disabledBecauseInPolicy = <?php echo '\''.((empty($disabledBecauseInPolicy) === true) ? '0' : '1').'\''; ?>;
$("#right").click (function () { $("#right").click (function () {
jQuery.each($("select[name='id_tag_available[]'] option:selected"), function (key, value) { jQuery.each($("select[name='id_tag_available[]'] option:selected"), function (key, value) {
tag_name = $(value).html(); tag_name = $(value).html();
@ -1407,12 +1407,16 @@ $(document).ready (function () {
$("#id_tag_available").find("option[value='" + tag_name + "']").remove(); $("#id_tag_available").find("option[value='" + tag_name + "']").remove();
$("#id_tag_selected").find("option[value='']").remove(); $("#id_tag_selected").find("option[value='']").remove();
if($("#id_tag_available option").length == 0) { if($("#id_tag_available option").length == 0) {
$("select[name='id_tag_available[]']").append(value); $("select[name='id_tag_available[]']").append(
$("<option></option>").val('').html(
'<i><?php echo __('None'); ?></i>'
)
);
} }
} }
}); });
}); });
$("#left").click (function () { $("#left").click (function () {
jQuery.each($("select[name='id_tag_selected[]'] option:selected"), function (key, value) { jQuery.each($("select[name='id_tag_selected[]'] option:selected"), function (key, value) {
tag_name = $(value).html(); tag_name = $(value).html();
@ -1422,7 +1426,11 @@ $(document).ready (function () {
$("#id_tag_selected").find("option[value='" + id_tag + "']").remove(); $("#id_tag_selected").find("option[value='" + id_tag + "']").remove();
$("#id_tag_available").find("option[value='']").remove(); $("#id_tag_available").find("option[value='']").remove();
if($("#id_tag_selected option").length == 0) { if($("#id_tag_selected option").length == 0) {
$("select[name='id_tag_selected[]']").append(value); $("select[name='id_tag_selected[]']").append(
$("<option></option>").val('').html(
'<i><?php echo __('None'); ?></i>'
)
);
} }
} }
}); });

View File

@ -238,6 +238,9 @@ if ($searchFlag) {
} }
$id_agents = array_keys($agents); $id_agents = array_keys($agents);
if (empty($id_agents) === true) {
$id_agents[0] = 0;
}
$total = agents_get_alerts_simple( $total = agents_get_alerts_simple(
(empty($agent_id) === false) ? ['0' => $agent_id] : $id_agents, (empty($agent_id) === false) ? ['0' => $agent_id] : $id_agents,

View File

@ -258,9 +258,9 @@ $table->style[0] = 'font-weight: bold;';
$table->style[2] = 'font-weight: bold;'; $table->style[2] = 'font-weight: bold;';
$table->size = []; $table->size = [];
$table->size[0] = '15%'; $table->size[0] = '15%';
$table->size[1] = '40%'; $table->size[1] = '35%';
$table->size[2] = '15%'; $table->size[2] = '15%';
$table->size[3] = '40%'; $table->size[3] = '35%';
$table->data = []; $table->data = [];
@ -276,7 +276,12 @@ $table->data[0][1] = html_print_select(
false, false,
__('Select'), __('Select'),
0, 0,
true true,
false,
true,
'',
false,
'width: 100%;'
); );
$table->data[0][2] = ''; $table->data[0][2] = '';
$table->data[0][3] = ''; $table->data[0][3] = '';
@ -295,7 +300,8 @@ $table->data[1][1] = html_print_select_groups(
false, false,
true, true,
'', '',
$id_alert_template == 0 $id_alert_template == 0,
'width: 100%;'
); );
$table->data[0][2] = __('Show alerts on disabled modules'); $table->data[0][2] = __('Show alerts on disabled modules');

View File

@ -1,24 +1,39 @@
<?php <?php
/**
* Table builder for Servers View.
*
* @category View
* @package Pandora FMS
* @subpackage Monitoring.
* @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 // Begin.
// ==================================================
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Load global vars
require_once 'include/functions_clippy.php'; require_once 'include/functions_clippy.php';
global $config; global $config;
check_login(); check_login();
if (! check_acl($config['id_user'], 0, 'AW')) { if ((bool) check_acl($config['id_user'], 0, 'AR') === false) {
db_pandora_audit( db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION, AUDIT_LOG_ACL_VIOLATION,
'Trying to access Server Management' 'Trying to access Server Management'
@ -57,7 +72,6 @@ $table->headstyle[1] = 'text-align:center';
$table->headstyle[3] = 'text-align:center'; $table->headstyle[3] = 'text-align:center';
$table->headstyle[8] = 'text-align:right;width: 120px;'; $table->headstyle[8] = 'text-align:right;width: 120px;';
// $table->title = __('Tactical server information');
$table->titleclass = 'tabletitle'; $table->titleclass = 'tabletitle';
$table->titlestyle = 'text-transform:uppercase;'; $table->titlestyle = 'text-transform:uppercase;';
@ -69,11 +83,11 @@ $table->head[3] = __('Version');
$table->head[4] = __('Modules'); $table->head[4] = __('Modules');
$table->head[5] = __('Lag').ui_print_help_tip(__('Avg. Delay(sec)/Modules delayed'), true); $table->head[5] = __('Lag').ui_print_help_tip(__('Avg. Delay(sec)/Modules delayed'), true);
$table->head[6] = __('T/Q').ui_print_help_tip(__('Threads / Queued modules currently'), true); $table->head[6] = __('T/Q').ui_print_help_tip(__('Threads / Queued modules currently'), true);
// This will have a column of data such as "6 hours" // This will have a column of data such as "6 hours".
$table->head[7] = __('Updated'); $table->head[7] = __('Updated');
// Only Pandora Administrator can delete servers // Only Pandora Administrator can delete servers.
if (check_acl($config['id_user'], 0, 'PM')) { if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$table->head[8] = '<span title="Operations">'.__('Op.').'</span>'; $table->head[8] = '<span title="Operations">'.__('Op.').'</span>';
} }
@ -89,14 +103,14 @@ foreach ($servers as $server) {
foreach ($servers as $server) { foreach ($servers as $server) {
$data = []; $data = [];
// $table->cellclass[][3] = 'progress_bar';
$table->cellclass[] = [ $table->cellclass[] = [
3 => 'progress_bar', 3 => 'progress_bar',
8 => 'action_buttons', 8 => 'action_buttons',
]; ];
$data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>'; $data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>';
// Status // Status.
$data[1] = ui_print_status_image(STATUS_SERVER_OK, '', true); $data[1] = ui_print_status_image(STATUS_SERVER_OK, '', true);
if ($server['status'] == -1) { if ($server['status'] == -1) {
$data[1] = ui_print_status_image( $data[1] = ui_print_status_image(
@ -104,7 +118,7 @@ foreach ($servers as $server) {
__('Server has crashed.'), __('Server has crashed.'),
true true
); );
} else if (($server['status'] == 0) } else if ((int) ($server['status'] === 0)
|| (($date - time_w_fixed_tz($server['keepalive'])) > ($server['server_keepalive']) * 2) || (($date - time_w_fixed_tz($server['keepalive'])) > ($server['server_keepalive']) * 2)
) { ) {
$data[1] = ui_print_status_image( $data[1] = ui_print_status_image(
@ -114,13 +128,13 @@ foreach ($servers as $server) {
); );
} }
// Type // Type.
$data[2] = '<span class="nowrap">'.$server['img']; $data[2] = '<span class="nowrap">'.$server['img'];
if ($server['master'] == $master) { if ($server['master'] == $master) {
$data[2] .= ui_print_help_tip(__('This is a master server'), true); $data[2] .= ui_print_help_tip(__('This is a master server'), true);
} }
if ($server['exec_proxy'] == 1) { if ((int) $server['exec_proxy'] === 1) {
$data[2] .= html_print_image('images/star.png', true, ['title' => __('Exec server enabled')]); $data[2] .= html_print_image('images/star.png', true, ['title' => __('Exec server enabled')]);
} }
@ -169,11 +183,11 @@ foreach ($servers as $server) {
} }
} }
// Only Pandora Administrator can delete servers // Only Pandora Administrator can delete servers.
if (check_acl($config['id_user'], 0, 'PM')) { if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
$data[8] = ''; $data[8] = '';
if ($server['type'] == 'recon') { if ($server['type'] === 'recon') {
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">'; $data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist').'">';
$data[8] .= html_print_image( $data[8] .= html_print_image(
'images/first_task/icono_grande_reconserver.png', 'images/first_task/icono_grande_reconserver.png',
@ -188,7 +202,7 @@ foreach ($servers as $server) {
$data[8] .= '</a>'; $data[8] .= '</a>';
} }
if ($server['type'] == 'data') { if ($server['type'] === 'data') {
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_counts='.$server['id_server']).'">'; $data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_counts='.$server['id_server']).'">';
$data[8] .= html_print_image( $data[8] .= html_print_image(
'images/target.png', 'images/target.png',
@ -199,7 +213,7 @@ foreach ($servers as $server) {
] ]
); );
$data[8] .= '</a>'; $data[8] .= '</a>';
} else if ($server['type'] == 'enterprise snmp') { } else if ($server['type'] === 'enterprise snmp') {
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_snmp_enterprise='.$server['id_server']).'">'; $data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=0&server_reset_snmp_enterprise='.$server['id_server']).'">';
$data[8] .= html_print_image( $data[8] .= html_print_image(
'images/target.png', 'images/target.png',
@ -223,7 +237,7 @@ foreach ($servers as $server) {
); );
$data[8] .= '</a>'; $data[8] .= '</a>';
if (($names_servers[$safe_server_name] === true) && ($server['type'] == 'data' || $server['type'] == 'enterprise satellite')) { if (($names_servers[$safe_server_name] === true) && ($server['type'] === 'data' || $server['type'] === 'enterprise satellite')) {
$data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext).'">'; $data[8] .= '<a href="'.ui_get_full_url('index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$server['id_server'].'&ext='.$ext).'">';
$data[8] .= html_print_image( $data[8] .= html_print_image(
'images/remote_configuration.png', 'images/remote_configuration.png',

View File

@ -63,7 +63,7 @@ if (empty($directory) === true) {
$real_directory = realpath($config['homedir'].'/'.$directory); $real_directory = realpath($config['homedir'].'/'.$directory);
echo '<h4>'.__('Index of %s', $directory).'</h4>'; echo '<h4>'.__('Index of %s', io_safe_input($directory)).'</h4>';
$upload_file = (bool) get_parameter('upload_file'); $upload_file = (bool) get_parameter('upload_file');
$create_text_file = (bool) get_parameter('create_text_file'); $create_text_file = (bool) get_parameter('create_text_file');

View File

@ -256,16 +256,18 @@ $table->style[0] = 'font-weight: bold';
$table->size[0] = '70%'; $table->size[0] = '70%';
$table->size[1] = '30%'; $table->size[1] = '30%';
// enterprise_hook('enterprise_warnings_history_days');
$table->data[1][0] = __('Max. days before delete events'); $table->data[1][0] = __('Max. days before delete events');
$table->data[1][1] = html_print_input(
$table->data[1][1] = html_print_input_text( [
'event_purge', 'type' => 'number',
$config['event_purge'], 'size' => 5,
'', 'max' => 99999,
5, 'name' => 'event_purge',
5, 'value' => $config['event_purge'],
true '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'); $table->data[2][0] = __('Max. days before delete traps');

View File

@ -1,12 +1,20 @@
<?php <?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 * Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -18,6 +26,7 @@
* ============================================================================ * ============================================================================
*/ */
// Begin.
global $config; global $config;
require_once 'include/functions_ui.php'; require_once 'include/functions_ui.php';
@ -26,6 +35,7 @@ check_login();
$update = (bool) get_parameter('update'); $update = (bool) get_parameter('update');
$table = new stdClass();
$table->width = '100%'; $table->width = '100%';
$table->border = 0; $table->border = 0;
$table->cellspacing = 3; $table->cellspacing = 3;

View File

@ -5,10 +5,11 @@ if ($argv === null) {
exit(0); exit(0);
} }
// UMC dependencies.
require_once __DIR__.'/vendor/autoload.php';
chdir(__DIR__.'/../../'); chdir(__DIR__.'/../../');
// UMC dependencies.
require_once 'vendor/autoload.php';
// Config file.
$cnf_file = 'include/config.php'; $cnf_file = 'include/config.php';
if (file_exists($cnf_file) === false) { if (file_exists($cnf_file) === false) {
@ -19,9 +20,6 @@ ini_set('display_errors', 1);
require_once $cnf_file; require_once $cnf_file;
// PandoraFMS dependencies.
require_once __DIR__.'/vendor/autoload.php';
use PandoraFMS\Core\Config; use PandoraFMS\Core\Config;
use PandoraFMS\Core\DBMaintainer; use PandoraFMS\Core\DBMaintainer;

View File

@ -274,7 +274,7 @@ $table->data[$i++][1] = html_print_input_text(
$url_update_manager, $url_update_manager,
__('URL update manager'), __('URL update manager'),
80, 80,
60, 255,
true true
); );

View File

@ -713,7 +713,7 @@ class DiscoveryTaskList extends HTML
} }
if ($task['id_recon_script'] == 0 || $ipam === true) { if ($task['id_recon_script'] == 0 || $ipam === true) {
$data[4] = $subnet; $data[4] = ui_print_truncate_text($subnet, 50, true, true, true, '[&hellip;]');
} else { } else {
$data[4] = '-'; $data[4] = '-';
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -136,7 +136,7 @@ if ($get_comments === true) {
// Default grouped message filtering (evento and estado). // Default grouped message filtering (evento and estado).
$whereGrouped = sprintf( $whereGrouped = sprintf(
'`evento` = "%s" AND `estado` = "%s"', '`evento` = "%s" AND `estado` = "%s"',
io_safe_output($event['evento']), $event['evento'],
$event['estado'] $event['estado']
); );
// If id_agente is reported, filter the messages by them as well. // If id_agente is reported, filter the messages by them as well.

View File

@ -329,7 +329,7 @@ class AgentWizard extends HTML
} }
} }
if (count($this->datalist) === 1 && $this->targetIp === '') { if (empty($this->datalist) === false && count($this->datalist) === 1 && $this->targetIp === '') {
$this->targetIp = $this->datalist[0]; $this->targetIp = $this->datalist[0];
} }
} }
@ -4827,8 +4827,8 @@ class AgentWizard extends HTML
// SecurityName. // SecurityName.
$macros[6]['value'] = $this->authUserV3; $macros[6]['value'] = $this->authUserV3;
// SecurityContext. // SecurityContext. Empty by default.
$macros[7]['value'] = $this->community; $macros[7]['value'] = '';
// SecurityLevel. // SecurityLevel.
$macros[8]['value'] = $this->securityLevelV3; $macros[8]['value'] = $this->securityLevelV3;

View File

@ -811,7 +811,7 @@ class Tree
} }
} }
// Counters // Counters.
if (empty($agent['counters'])) { if (empty($agent['counters'])) {
$agent['counters'] = []; $agent['counters'] = [];
@ -824,7 +824,7 @@ class Tree
$agent['counters']['alerts'] = isset($agent['fired_count']) ? $agent['fired_count'] : 0; $agent['counters']['alerts'] = isset($agent['fired_count']) ? $agent['fired_count'] : 0;
} }
// Status image // Status image.
$agent['statusImageHTML'] = agents_tree_view_status_img_ball( $agent['statusImageHTML'] = agents_tree_view_status_img_ball(
$agent['counters']['critical'], $agent['counters']['critical'],
$agent['counters']['warning'], $agent['counters']['warning'],
@ -834,7 +834,14 @@ class Tree
$agent['counters']['alerts'] $agent['counters']['alerts']
); );
// search module recalculate counters $agent['agentStatus'] = -1;
if ((bool) $this->filter['show_not_init_agents'] === true) {
if ($agent['total_count'] === 0 || $agent['total_count'] === $agent['notinit_count']) {
$agent['agentStatus'] = AGENT_STATUS_NOT_INIT;
}
}
// Search module recalculate counters.
if (array_key_exists('state_normal', $agent)) { if (array_key_exists('state_normal', $agent)) {
$agent['counters']['unknown'] = $agent['state_unknown']; $agent['counters']['unknown'] = $agent['state_unknown'];
$agent['counters']['critical'] = $agent['state_critical']; $agent['counters']['critical'] = $agent['state_critical'];
@ -935,7 +942,8 @@ class Tree
foreach ($agents as $iterator => $agent) { foreach ($agents as $iterator => $agent) {
$this->processAgent($agents[$iterator], $server); $this->processAgent($agents[$iterator], $server);
if ($agents[$iterator]['counters']['total'] !== '0' if ($agents[$iterator]['counters']['total'] !== '0'
|| (bool) $this->filter['show_not_init_agents'] === true || ((bool) $this->filter['show_not_init_agents'] === true
&& $agents[$iterator]['agentStatus'] === AGENT_STATUS_NOT_INIT)
) { ) {
$agents_aux[] = $agents[$iterator]; $agents_aux[] = $agents[$iterator];
} }

View File

@ -530,33 +530,6 @@ class TreeService extends Tree
$tmp['elementDescription'] = $item->description(); $tmp['elementDescription'] = $item->description();
$tmp['disabled'] = $item->service()->disabled(); $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 = [ $counters = [
'total_modules' => 0, 'total_modules' => 0,
'total_agents' => 0, 'total_agents' => 0,
@ -565,29 +538,66 @@ class TreeService extends Tree
'total' => 0, 'total' => 0,
]; ];
if (is_array($grandchildren) === true) { if (is_metaconsole() === false
$counters = array_reduce( || (isset($config['realtimestats']) === true
$grandchildren, && $config['realtimestats'] === true
function ($carry, $item) { && $tmp['metaID'] > 0)
if ($item->type() === SERVICE_ELEMENT_MODULE) { ) {
$carry['total_modules']++; // Look for counters.
} else if ($item->type() === SERVICE_ELEMENT_AGENT) { if ($this->connectedToNode === false
$carry['total_agents']++; && is_metaconsole() === true
} else if ($item->type() === SERVICE_ELEMENT_SERVICE) { && $tmp['metaID'] > 0
$carry['total_services']++; ) {
} else if ($item->type() === SERVICE_ELEMENT_DYNAMIC) { // Impersonate node.
$carry['total_dynamic']++; \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; if ($this->connectedToNode === false
}, && is_metaconsole() === true
$counters && $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; $tmp['searchChildren'] = 1;
} }

View File

@ -20,8 +20,8 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC220509'; $build_version = 'PC220603';
$pandora_version = 'v7.0NG.761'; $pandora_version = 'v7.0NG.762';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.
$script_tz = @date_default_timezone_get(); $script_tz = @date_default_timezone_get();

View File

@ -3236,8 +3236,8 @@ function agents_get_network_interfaces($agents=false, $agents_filter=false)
$ni_by_agents = []; $ni_by_agents = [];
foreach ($agents as $agent) { foreach ($agents as $agent) {
$agent_id = (isset($agent['id_agente'])) ? $agent['id_agente'] : $agent; $agent_id = (isset($agent['id_agente'])) ? $agent['id_agente'] : $agent;
$agent_group_id = (isset($agent['id_grupo']) === true) ? $agent['id_grupo'] : ''; $agent_group_id = (isset($agent['id_grupo']) === true) ? $agent['id_grupo'] : agents_get_agent_group($agent_id);
$agent_name = (isset($agent['alias']) === true) ? $agent['alias'] : ''; $agent_name = (isset($agent['alias']) === true) ? $agent['alias'] : agents_get_alias($agent_id);
$agent_interfaces = []; $agent_interfaces = [];
$accepted_module_types = []; $accepted_module_types = [];

View File

@ -1855,7 +1855,19 @@ function api_set_new_agent($thrash1, $thrash2, $other, $thrash3)
return; return;
} }
$alias = io_safe_input(trim(preg_replace('/[\/\\\|%#&$]/', '', $other['data'][0]))); $alias = io_safe_input(
trim(
preg_replace(
'/[\/\\\|%#&$]/',
'',
preg_replace(
'/x20;/',
' ',
$other['data'][0]
)
)
)
);
$direccion_agente = io_safe_input($other['data'][1]); $direccion_agente = io_safe_input($other['data'][1]);
$nombre_agente = hash('sha256', $direccion_agente.'|'.$direccion_agente.'|'.time().'|'.sprintf('%04d', rand(0, 10000))); $nombre_agente = hash('sha256', $direccion_agente.'|'.$direccion_agente.'|'.time().'|'.sprintf('%04d', rand(0, 10000)));
$id_parent = (int) $other['data'][2]; $id_parent = (int) $other['data'][2];

View File

@ -556,7 +556,7 @@ function config_update_config()
$error_update[] = __('Autocreate profile group'); $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'); $error_update[] = __('Autocreate profile tags');
} }
@ -2096,6 +2096,10 @@ function config_process_config()
config_update_value('metaconsole_events_history', 0); config_update_value('metaconsole_events_history', 0);
} }
if (!isset($config['realtimestats'])) {
config_update_value('realtimestats', 1);
}
if (!isset($config['trap_purge'])) { if (!isset($config['trap_purge'])) {
config_update_value('trap_purge', 7); config_update_value('trap_purge', 7);
} }

View File

@ -2297,6 +2297,7 @@ function events_comment(
$comments_format = 'new'; $comments_format = 'new';
} else { } else {
// If comments are not stored in json, the format is old. // If comments are not stored in json, the format is old.
$event_comments[0]['user_comment'] = str_replace(["\n", '&#x0a;'], '<br>', $event_comments[0]['user_comment']);
$event_comments_array = json_decode($event_comments[0]['user_comment']); $event_comments_array = json_decode($event_comments[0]['user_comment']);
if (empty($event_comments_array) === true) { if (empty($event_comments_array) === true) {
@ -5227,6 +5228,8 @@ function events_page_comments($event, $ajax=false, $groupedComments=[])
$comm = $comm['user_comment']; $comm = $comm['user_comment'];
} }
$comm = str_replace(["\n", '&#x0a;'], '<br>', $comm);
$comments_array[] = io_safe_output(json_decode($comm, true)); $comments_array[] = io_safe_output(json_decode($comm, true));
} }

View File

@ -670,16 +670,16 @@ function filemanager_file_explorer(
} }
if ($fileinfo['is_dir']) { if ($fileinfo['is_dir']) {
$data[1] = '<a href="'.$url.'&directory='.$relative_directory.'/'.$fileinfo['name'].'&hash2='.md5($relative_directory.'/'.$fileinfo['name'].$config['server_unique_identifier']).'">'.$fileinfo['name'].'</a>'; $data[1] = '<a href="'.$url.'&directory='.$relative_directory.'/'.io_safe_input($fileinfo['name']).'&hash2='.md5($relative_directory.'/'.$fileinfo['name'].$config['server_unique_identifier']).'">'.io_safe_input($fileinfo['name']).'</a>';
} else if (empty($url_file) === false) { } else if (empty($url_file) === false) {
// Set the custom url file. // Set the custom url file.
$url_file_clean = str_replace('[FILE_FULLPATH]', $fileinfo['realpath'], $url_file); $url_file_clean = str_replace('[FILE_FULLPATH]', $fileinfo['realpath'], $url_file);
$data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>'; $data[1] = '<a href="'.$url_file_clean.'">'.io_safe_input($fileinfo['name']).'</a>';
} else { } else {
$filename = base64_encode($relative_directory.'/'.$fileinfo['name']); $filename = base64_encode($relative_directory.'/'.$fileinfo['name']);
$hash = md5($filename.$config['server_unique_identifier']); $hash = md5($filename.$config['server_unique_identifier']);
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.$fileinfo['name'].'</a>'; $data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.io_safe_input($fileinfo['name']).'</a>';
} }
// Notice that uploaded php files could be dangerous. // Notice that uploaded php files could be dangerous.

View File

@ -14,54 +14,190 @@
// Get critical agents by using the status code in modules. // Get critical agents by using the status code in modules.
function os_agents_critical($id_os) function os_agents_critical($id_os)
{ {
// TODO REVIEW ORACLE AND POSTGRES global $config;
return db_get_sql(
" $table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
SELECT COUNT(*)
FROM tagente if (users_is_admin() === true) {
WHERE tagente.disabled=0 AND return db_get_sql(
critical_count>0 AND id_os=$id_os" 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. // Get ok agents by using the status code in modules.
function os_agents_ok($id_os) function os_agents_ok($id_os)
{ {
return db_get_sql( global $config;
"
SELECT COUNT(*) $table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
FROM tagente
WHERE tagente.disabled=0 AND if (users_is_admin() === true) {
normal_count=total_count AND id_os=$id_os" 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. // Get warning agents by using the status code in modules.
function os_agents_warning($id_os) function os_agents_warning($id_os)
{ {
return db_get_sql( global $config;
"
SELECT COUNT(*) $table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
FROM tagente
WHERE tagente.disabled=0 AND if (users_is_admin() === true) {
critical_count=0 AND warning_count>0 AND id_os=$id_os" 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. // Get unknown agents by using the status code in modules.
function os_agents_unknown($id_os) function os_agents_unknown($id_os)
{ {
return db_get_sql( global $config;
"
SELECT COUNT(*) $table = (is_metaconsole() === true) ? 'tmetaconsole_agent' : 'tagente';
FROM tagente
WHERE tagente.disabled=0 AND if (users_is_admin() === true) {
critical_count=0 AND warning_count=0 AND return db_get_sql(
unknown_count>0 AND id_os=$id_os" 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)
)
);
}
} }

View File

@ -15,6 +15,8 @@ function pandoraFlotPie(
colors, colors,
hide_labels hide_labels
) { ) {
height = parseInt(height);
labels = labels.split(separator); labels = labels.split(separator);
var data = values.split(separator); var data = values.split(separator);
@ -79,11 +81,22 @@ function pandoraFlotPie(
break; break;
} }
var discount = 20;
if (water_mark) {
discount = 40;
}
var plot = $.plot($("#" + graph_id), data, conf_pie); var plot = $.plot($("#" + graph_id), data, conf_pie);
var legends = $("#" + graph_id + " .legendLabel"); var legends = $("#" + graph_id + " .legendLabel");
legends.css("font-size", font_size + "pt"); 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 // Events
$("#" + graph_id).bind("plothover", pieHover); $("#" + graph_id).bind("plothover", pieHover);
//$("#" + graph_id).bind("plotclick", pieClick); //$("#" + graph_id).bind("plotclick", pieClick);
@ -443,14 +456,15 @@ function pandoraFlotHBars(
"pt !important;" + "pt !important;" +
"margin: 0; max-width: 200px;" + "margin: 0; max-width: 200px;" +
"margin-right:5px;" + "margin-right:5px;" +
"margin-left: -1.5em" + "margin-left: -1.5em;" +
"text-align: right" + "text-align: right;" +
"text-overflow: ellipsis;" + "text-overflow: ellipsis;" +
"overflow: hidden;" + "overflow: hidden;" +
"white-space: pre;"; "white-space: pre;";
if (label.indexOf("<br>") != -1) { 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;"'; div_attributes += '" title="' + label + '" style="overflow: hidden;"';
@ -2455,6 +2469,8 @@ function pandoraFlotArea(
number_format(value[x].max, 0, unit, short_data, divisor) + number_format(value[x].max, 0, unit, short_data, divisor) +
" Avg: " + " Avg: " +
number_format(value[x].avg, 0, unit, short_data, divisor); number_format(value[x].avg, 0, unit, short_data, divisor);
} else {
data_legend[index] = " Min: " + 0 + " Max: " + 0 + " Avg: " + 0;
} }
}); });

View File

@ -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; global $config;
@ -167,7 +167,7 @@ function d3_sunburst_graph($data, $width=700, $height=700, $return=false)
} }
</style>'; </style>';
$output .= "<script language=\"javascript\" type=\"text/javascript\"> $output .= "<script language=\"javascript\" type=\"text/javascript\">
sunburst('#sunburst', $data, '$width', '$height'); sunburst('#sunburst', $data, '$width', '$height', '$tooltip');
</script>"; </script>";
if (!$return) { if (!$return) {

View File

@ -796,7 +796,7 @@ function treeMap(recipient, data, width, height) {
// The area (or angle, depending on implementation) of each arc corresponds to its value. // The area (or angle, depending on implementation) of each arc corresponds to its value.
// Sunburst design by John Stasko. Data courtesy Jeff Heer. // Sunburst design by John Stasko. Data courtesy Jeff Heer.
// http://bl.ocks.org/mbostock/4348373 // http://bl.ocks.org/mbostock/4348373
function sunburst(recipient, data, width, height) { function sunburst(recipient, data, width, height, tooltip = true) {
if (width === "auto") { if (width === "auto") {
width = $(recipient).innerWidth(); width = $(recipient).innerWidth();
} }
@ -858,11 +858,14 @@ function sunburst(recipient, data, width, height) {
}) })
.style("cursor", "pointer") .style("cursor", "pointer")
.on("click", click) .on("click", click)
.on("mouseover", over_user) .on("mouseover", tooltip === "1" ? over_user : "")
.on("mouseout", out_user) .on("mouseout", out_user)
.on("mousemove", move_tooltip); .on("mousemove", move_tooltip);
function computeTextRotation(d) { function computeTextRotation(d) {
if (d.type === "central_service") {
return 0;
}
var ang = ((x(d.x + d.dx / 2) - Math.PI / 2) / Math.PI) * 180; var ang = ((x(d.x + d.dx / 2) - Math.PI / 2) / Math.PI) * 180;
return ang > 90 ? 180 + ang : ang; return ang > 90 ? 180 + ang : ang;
} }
@ -882,9 +885,18 @@ function sunburst(recipient, data, width, height) {
return computeTextRotation(d) > 180 ? -40 : -30; return computeTextRotation(d) > 180 ? -40 : -30;
}) })
.attr("dx", "6") // margin .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) { .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; else return 0;
}) })
.text(function(d) { .text(function(d) {
@ -899,7 +911,11 @@ function sunburst(recipient, data, width, height) {
window.location.href = d.link; window.location.href = d.link;
} else { } else {
// fade out all text elements // 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 path
.transition() .transition()
@ -965,8 +981,8 @@ function sunburst(recipient, data, width, height) {
} }
function move_tooltip(d) { function move_tooltip(d) {
var x = d3.event.pageX + 10; var x = d3.event.pageX + 10 - $("#menu_full").width();
var y = d3.event.pageY + 10; var y = d3.event.pageY - 90;
$("#tooltip").css("left", x + "px"); $("#tooltip").css("left", x + "px");
$("#tooltip").css("top", y + "px"); $("#tooltip").css("top", y + "px");
@ -1017,10 +1033,10 @@ function sunburst(recipient, data, width, height) {
"-moz-box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" + "-moz-box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" +
"box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" + "box-shadow: 7px 7px 5px rgba(50, 50, 50, 0.75);" +
"left: " + "left: " +
x + 100 +
"px;" + "px;" +
"top: " + "top: " +
y + 100 +
"px;" "px;"
); );
} }

View File

@ -2027,3 +2027,33 @@ function inArray(needle, haystack) {
} }
return false; 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();
}
});
});
};

View File

@ -846,6 +846,10 @@ function add_macro_field(macro, row_model_id, type_copy, k) {
// Change attributes to be unique and with identificable class // Change attributes to be unique and with identificable class
$macro_field.attr("id", row_id); $macro_field.attr("id", row_id);
$macro_field
.find("input")
.first()
.attr("name", macro_macro);
$macro_field.attr("class", "macro_field"); $macro_field.attr("class", "macro_field");

View File

@ -412,6 +412,10 @@ class Widget
$className .= '\WuxWidget'; $className .= '\WuxWidget';
break; break;
case 'os_quick_report':
$className .= '\OsQuickReportWidget';
break;
default: default:
$className = false; $className = false;
break; break;

View File

@ -0,0 +1,350 @@
<?php
/**
* Widget Tree view Pandora FMS Console
*
* @category Console Class
* @package Pandora FMS
* @subpackage Widget Tree view
* @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.
* ============================================================================
*/
namespace PandoraFMS\Dashboard;
/**
* OS quick report Widgets.
*/
class OsQuickReportWidget extends Widget
{
/**
* Name widget.
*
* @var string
*/
protected $name;
/**
* Title widget.
*
* @var string
*/
protected $title;
/**
* Page widget;
*
* @var string
*/
protected $page;
/**
* Class name widget.
*
* @var [type]
*/
protected $className;
/**
* Values options for each widget.
*
* @var [type]
*/
protected $values;
/**
* Configuration required.
*
* @var boolean
*/
protected $configurationRequired;
/**
* Error load widget.
*
* @var boolean
*/
protected $loadError;
/**
* Width.
*
* @var integer
*/
protected $width;
/**
* Heigth.
*
* @var integer
*/
protected $height;
/**
* Dashboard ID.
*
* @var integer
*/
protected $dashboardId;
/**
* Cell ID.
*
* @var integer
*/
protected $cellId;
/**
* Construct.
*
* @param integer $cellId Cell ID.
* @param integer $dashboardId Dashboard ID.
* @param integer $widgetId Widget ID.
* @param integer|null $width New width.
* @param integer|null $height New height.
*/
public function __construct(
int $cellId,
int $dashboardId=0,
int $widgetId=0,
?int $width=0,
?int $height=0
) {
global $config;
// Includes.
enterprise_include_once('/include/functions_services.php');
enterprise_include_once('/include/functions_servicemap.php');
// WARNING: Do not edit. This chunk must be in the constructor.
parent::__construct(
$cellId,
$dashboardId,
$widgetId
);
// Width.
$this->width = $width;
// Height.
$this->height = $height;
// Cell Id.
$this->cellId = $cellId;
// Widget ID.
$this->widgetId = $widgetId;
// Dashboard ID.
$this->dashboardId = $dashboardId;
// Options.
$this->values = $this->decoders($this->getOptionsWidget());
// Positions.
$this->position = $this->getPositionWidget();
// Page.
$this->page = basename(__FILE__);
// ClassName.
$class = new \ReflectionClass($this);
$this->className = $class->getShortName();
// Title.
$this->title = __('OS quick report');
// Name.
if (empty($this->name) === true) {
$this->name = 'os_quick_report';
}
$this->overflow_scrollbars = false;
}
/**
* Decoders hack for retrocompability.
*
* @param array $decoder Values.
*
* @return array Returns the values with the correct key.
*/
public function decoders(array $decoder): array
{
$values = [];
// Retrieve global - common inputs.
$values = parent::decoders($decoder);
return $values;
}
/**
* Generates inputs for form (specific).
*
* @return array Of inputs.
*
* @throws Exception On error.
*/
public function getFormInputs(): array
{
// Retrieve global - common inputs.
$inputs = parent::getFormInputs();
return $inputs;
}
/**
* Get Post for widget.
*
* @return array
*/
public function getPost():array
{
// Retrieve global - common inputs.
$values = parent::getPost();
return $values;
}
/**
* Draw widget.
*
* @return string;
*/
public function load()
{
global $config;
$values = $this->values;
$result = [];
$os_array = os_get_os();
foreach ($os_array as $os) {
$id_os = (int) $os['id_os'];
$total = os_agents_total($id_os);
if ((int) $total === 0) {
continue;
}
$result[$id_os]['name'] = $os['name'];
$result[$id_os]['total'] = (int) $total;
$result[$id_os]['normal'] = (int) os_agents_ok($id_os);
$result[$id_os]['critical'] = (int) os_agents_critical($id_os);
$result[$id_os]['unknown'] = (int) os_agents_unknown($id_os);
}
$output = '';
if (empty($result) === false) {
$table = new \stdClass();
$table->class = 'info_table';
$table->width = '100%';
$table->cellpadding = 0;
$table->cellspacing = 0;
$table->size = [];
$table->size[0] = '10%';
$table->size[1] = '10%';
$table->size[2] = '20%';
$table->size[3] = '20%';
$table->size[4] = '20%';
$table->size[5] = '20%';
$table->align = [];
$table->align[0] = 'center';
$table->align[1] = 'left';
$table->align[2] = 'center';
$table->align[3] = 'center';
$table->align[4] = 'center';
$table->align[5] = 'center';
$table->head = [];
$table->head[0] = __('OS');
$table->head[1] = __('OS name');
$table->head[2] = ucfirst(__('total agents'));
$table->head[3] = ucfirst(__('normal agents'));
$table->head[4] = ucfirst(__('critical agents'));
$table->head[5] = ucfirst(__('unknown agents'));
$table->headstyle = [];
$table->headstyle[0] = 'text-align:center;background-color: '.$values['background'];
$table->headstyle[1] = 'background-color: '.$values['background'];
$table->headstyle[2] = 'text-align:center;background-color: '.$values['background'];
$table->headstyle[3] = 'text-align:center;background-color: '.$values['background'];
$table->headstyle[4] = 'text-align:center;background-color: '.$values['background'];
$table->headstyle[5] = 'text-align:center;background-color: '.$values['background'];
$table->style = [];
$table->style[0] = 'background-color: '.$values['background'];
$table->style[1] = 'background-color: '.$values['background'];
$table->style[2] = 'font-size: 22px;background-color: '.$values['background'];
$table->style[3] = 'font-size: 22px;background-color: '.$values['background'];
$table->style[4] = 'font-size: 22px;background-color: '.$values['background'];
$table->style[5] = 'font-size: 22px;background-color: '.$values['background'];
foreach ($result as $id => $os) {
$data = [];
$data[0] = ui_print_os_icon($id, false, true);
$data[1] = $os['name'];
$data[2] = $os['total'];
$data[3] = $os['normal'];
$data[4] = $os['critical'];
$data[5] = $os['unknown'];
$table->data[] = $data;
}
$output = html_print_table($table, true);
} else {
$output = 'No data available';
}
return $output;
}
/**
* Get description.
*
* @return string.
*/
public static function getDescription()
{
return __('OS quick report');
}
/**
* Get Name.
*
* @return string.
*/
public static function getName()
{
return 'os_quick_report';
}
}

View File

@ -235,6 +235,10 @@ class ServiceMapWidget extends Widget
$values['showLegend'] = $decoder['showLegend']; $values['showLegend'] = $decoder['showLegend'];
} }
if (isset($decoder['sunburst']) === true) {
$values['sunburst'] = $decoder['sunburst'];
}
return $values; return $values;
} }
@ -296,19 +300,16 @@ class ServiceMapWidget extends Widget
], ],
]; ];
// TODO refactoriced services: Hidden legend. $inputs[] = [
/* 'label' => __('Enable sunburst'),
// Show legend.
$inputs[] = [
'label' => __('Show legend'),
'arguments' => [ 'arguments' => [
'name' => 'showLegend', 'type' => 'switch',
'id' => 'showLegend', 'name' => 'sunburst',
'type' => 'switch', 'class' => 'event-widget-input',
'value' => $values['showLegend'], 'value' => $values['sunburst'],
'return' => true,
], ],
]; ];
*/
return $inputs; return $inputs;
} }
@ -325,7 +326,9 @@ class ServiceMapWidget extends Widget
$values = parent::getPost(); $values = parent::getPost();
$values['serviceId'] = \get_parameter('serviceId', 0); $values['serviceId'] = \get_parameter('serviceId', 0);
// $values['showLegend'] = \get_parameter_switch('showLegend');
$values['sunburst'] = \get_parameter_switch('sunburst', 0);
return $values; return $values;
} }
@ -341,6 +344,7 @@ class ServiceMapWidget extends Widget
$size = parent::getSize(); $size = parent::getSize();
$output = '';
if (check_acl($config['id_user'], 0, 'AR') === 0) { if (check_acl($config['id_user'], 0, 'AR') === 0) {
$output .= '<div class="container-center">'; $output .= '<div class="container-center">';
$output .= \ui_print_error_message( $output .= \ui_print_error_message(
@ -367,42 +371,6 @@ class ServiceMapWidget extends Widget
$style = 'position: relative; text-align: center;'; $style = 'position: relative; text-align: center;';
$output .= "<div id='".$containerId."' style='".$style."'>"; $output .= "<div id='".$containerId."' style='".$style."'>";
// TODO refactoriced services: Hidden legend.
/*
if ($this->values['showLegend'] === 1) {
$output .= "<div id='container_servicemap_legend".$this->values['serviceId'].'_'.$this->cellId."'>";
$output .= '<table>';
$output .= "<tr class='legend_servicemap_title'><td colspan='3' style='padding-bottom: 10px; min-width: 177px;'><b>".__('Legend').'</b></td>';
$output .= "<td><img class='legend_servicemap_toggle' style='padding-bottom: 10px;' src='images/darrowup.png'></td></tr>";
$output .= "<tr class='legend_servicemap_item'><td>";
$output .= "<img src='images/service.png'>";
$output .= '</td><td>'.__('Services').'</td>';
// Coulour legend.
$output .= "<td rowspan='3'>";
$output .= '<table>';
$output .= "<tr><td class='legend_square'><div style='background-color: ".COL_CRITICAL.";'></div></td><td>".__('Critical').'</td></tr>';
$output .= "<tr><td class='legend_square'><div style='background-color: ".COL_WARNING.";'></div></td><td>".__('Warning').'</td></tr>';
$output .= "<tr><td class='legend_square'><div style='background-color: ".COL_NORMAL.";'></div></td><td>".__('Ok').'</td></tr>';
$output .= "<tr><td class='legend_square'><div style='background-color: ".COL_UNKNOWN.";'></div></td><td>".__('Unknown').'</td></tr>';
$output .= '</table>';
$output .= '</td></tr>';
$output .= "<tr class='legend_servicemap_item'><td>";
$output .= "<img src='images/agent.png'>";
$output .= '</td><td>'.__('Agents').'</td>';
$output .= '</tr>';
$output .= "<tr class='legend_servicemap_item'><td>";
$output .= "<img src='images/module.png'>";
$output .= '</td><td>'.__('Modules').'</td>';
$output .= '</tr>';
$output .= '</table>';
$output .= '</div>';
}
*/
// TODO: removed refactoriced services. Only 1 widget Zoom. // TODO: removed refactoriced services. Only 1 widget Zoom.
$sql = sprintf( $sql = sprintf(
'SELECT COUNT(*) 'SELECT COUNT(*)
@ -425,14 +393,21 @@ class ServiceMapWidget extends Widget
); );
// TODO:XXX fix draw service map. // TODO:XXX fix draw service map.
ob_start(); ob_start();
servicemap_print_servicemap(
$this->values['serviceId'], if ($this->values['sunburst'] === 0) {
false, servicemap_print_servicemap(
$size['width'], $this->values['serviceId'],
$size['height'], false,
$this->cellId, $size['width'],
$disableZoom $size['height'],
); $this->cellId,
$disableZoom
);
} else {
include_once $config['homedir'].'/include/graphs/functions_d3.php';
servicemap_print_sunburst($this->values['serviceId'], $size['width'], $size['height'], false);
}
$output .= ob_get_clean(); $output .= ob_get_clean();
$output .= '</div>'; $output .= '</div>';
return $output; return $output;

View File

@ -454,11 +454,38 @@ class TopNWidget extends Widget
} }
$data_hbar = []; $data_hbar = [];
$valueMax = 0;
$valueMin = 0;
$booleanModulesCount = 0;
$booleanModulesTypes = [
2,
6,
9,
18,
35,
];
foreach ($modules as $module) { foreach ($modules as $module) {
$module['aliasAgent'] = ui_print_truncate_text($module['aliasAgent'], 20); $module['aliasAgent'] = ui_print_truncate_text($module['aliasAgent'], 20);
$item_name = '';
$item_name = $module['aliasAgent'].' - '.$module['nameModule']; $item_name = $module['aliasAgent'].' - '.$module['nameModule'];
$data_hbar[$item_name]['g'] = $module[$display]; $data_hbar[$item_name]['g'] = $module[$display];
// Calculation of max-min values for show in graph.
$calc = (ceil((5 * (float) $module[$display]) / 100) + $module[$display]);
// Set of max-min values for graph.
$valueMax = ((int) $module[$display] >= $valueMax) ? $calc : (int) $valueMax;
$valueMin = ((int) $module[$display] < $valueMin) ? $calc : (int) $valueMin;
// Count if all modules are booleans (for visual representation).
if (in_array($module['type_module'], $booleanModulesTypes) === true) {
$booleanModulesCount++;
}
}
if ($booleanModulesCount === count($modules)) {
// All modules are booleans. By this, only are allowed 0 or 1.
$valueMax = 1;
} else if ((int) $valueMax === (int) $valueMin) {
// This change is for get more space between values.
$valueMax += 10;
} }
$height = (count($data_hbar) * 25 + 35); $height = (count($data_hbar) * 25 + 35);
@ -480,7 +507,9 @@ class TopNWidget extends Widget
1, 1,
$config['homeurl'], $config['homeurl'],
'white', 'white',
'black' '#DFDFDF',
$valueMin,
$valueMax
); );
$output .= '</div>'; $output .= '</div>';

View File

@ -704,14 +704,19 @@ class Module extends Entity
return false; return false;
} }
return (bool) \db_process_sql_insert( $old = $this->alertTemplatesAssigned();
'talert_template_modules', if (in_array($id_alert_template, $old) === false) {
[ return (bool) \db_process_sql_insert(
'id_agent_module' => $this->id_agente_modulo(), 'talert_template_modules',
'id_alert_template' => $id_alert_template, [
'last_reference' => time(), 'id_agent_module' => $this->id_agente_modulo(),
] 'id_alert_template' => $id_alert_template,
); 'last_reference' => time(),
]
);
}
return false;
} }

View File

@ -759,6 +759,9 @@ select:-internal-list-box {
.flex { .flex {
display: flex; display: flex;
} }
.padding-0 {
padding: 0 !important;
}
.padding-2 { .padding-2 {
padding: 2em; padding: 2em;
} }
@ -6045,9 +6048,9 @@ table.table_modal_alternate tr td:first-child {
font-family: "lato" !important; font-family: "lato" !important;
} }
.flot-text { .flot-text .flot-x-axis div {
width: 100%; white-space: normal;
font-family: inherit !important; word-break: break-all;
} }
/*Font header feedback*/ /*Font header feedback*/
@ -6223,6 +6226,9 @@ div.graph td.legendLabel {
div.graph div.legend div, div.graph div.legend div,
div.graph div.legend table { div.graph div.legend table {
top: 25px !important; top: 25px !important;
display: block;
overflow: auto;
text-align: left;
} }
.rotate_text_module { .rotate_text_module {

View File

@ -340,8 +340,8 @@ a.pandora_pagination {
/* firts_task.css */ /* firts_task.css */
.new_task, .new_task,
div.new_task_cluster, div.new_task,
div.new_task_cluster > div { div.new_task > div {
background-color: #222; background-color: #222;
} }

View File

@ -128,8 +128,8 @@
</div> </div>
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.761'; $version = '7.0NG.762';
$build = '220509'; $build = '220603';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -552,14 +552,18 @@ function print_table(
$all_interfaces = []; $all_interfaces = [];
foreach ($data as $value) { foreach ($data as $key => $value) {
$agent_alias = agents_get_alias($value['name']); if (empty($value['name']) === false) {
$agent_alias = $value['name'];
} else {
$agent_alias = agents_get_alias($key);
}
foreach ($value['interfaces'] as $if_name => $interface) { foreach ($value['interfaces'] as $if_name => $interface) {
$interface['agent_id'] = $value['name']; $interface['agent_id'] = $key;
$interface['agent_alias'] = $agent_alias; $interface['agent_alias'] = $agent_alias;
$interface['if_name'] = $if_name; $interface['if_name'] = $if_name;
$all_interfaces[$if_name] = $interface; $all_interfaces[$key][$if_name] = $interface;
} }
} }
@ -569,117 +573,121 @@ function print_table(
) { ) {
$filtered_interfaces = $all_interfaces; $filtered_interfaces = $all_interfaces;
} else { } else {
// Filter interfaces array. foreach ($all_interfaces as $key => $value) {
$filtered_interfaces = array_filter( // Filter interfaces array.
$all_interfaces, $filtered_interfaces[$key] = array_filter(
function ($interface) use ($selected_interfaces) { $value,
return in_array( function ($interface) use ($selected_interfaces) {
$interface['status_module_id'], return in_array(
$selected_interfaces $interface['status_module_id'],
) === true; $selected_interfaces
} );
); }
);
}
} }
$data = []; $data = [];
foreach ($filtered_interfaces as $if_name => $agent_interfaces) { foreach ($filtered_interfaces as $interfaces) {
// Get usage modules. foreach ($interfaces as $if_name => $agent_interfaces) {
$usage_module_in = db_get_row( // Get usage modules.
'tagente_modulo', $usage_module_in = db_get_row(
'nombre', 'tagente_modulo',
$if_name.'_inUsage' 'nombre',
); $if_name.'_inUsage'
$usage_module_out = db_get_row( );
'tagente_modulo', $usage_module_out = db_get_row(
'nombre', 'tagente_modulo',
$if_name.'_outUsage' 'nombre',
); $if_name.'_outUsage'
);
$usage_module_id_in = $usage_module_in['id_agente_modulo']; $usage_module_id_in = $usage_module_in['id_agente_modulo'];
$usage_module_id_out = $usage_module_out['id_agente_modulo']; $usage_module_id_out = $usage_module_out['id_agente_modulo'];
$usage_module_description = $usage_module_in['descripcion']; $usage_module_description = $usage_module_in['descripcion'];
// Get usage modules data. // Get usage modules data.
$usage_module_data_in = modules_get_previous_data( $usage_module_data_in = modules_get_previous_data(
$usage_module_id_in, $usage_module_id_in,
time() time()
); );
$usage_module_data_out = modules_get_previous_data( $usage_module_data_out = modules_get_previous_data(
$usage_module_id_out, $usage_module_id_out,
time() time()
); );
// Extract ifSpeed from description of usage module. // Extract ifSpeed from description of usage module.
$if_speed_str = strstr($usage_module_description, 'Speed:'); $if_speed_str = strstr($usage_module_description, 'Speed:');
$if_speed_str = substr($if_speed_str, 0, -1); $if_speed_str = substr($if_speed_str, 0, -1);
$if_speed_str = explode(':', $if_speed_str)[1]; $if_speed_str = explode(':', $if_speed_str)[1];
$matches = []; $matches = [];
preg_match_all('/\d+/', $if_speed_str, $matches); preg_match_all('/\d+/', $if_speed_str, $matches);
$if_speed_value = $matches[0][0]; $if_speed_value = $matches[0][0];
// Transform ifSpeed unit. // Transform ifSpeed unit.
$divisor = 1000; $divisor = 1000;
$counter = 0; $counter = 0;
while ($if_speed_value >= $divisor) { while ($if_speed_value >= $divisor) {
if ($if_speed_value >= $divisor) { if ($if_speed_value >= $divisor) {
$if_speed_value = ($if_speed_value / $divisor); $if_speed_value = ($if_speed_value / $divisor);
}
$counter++;
} }
$counter++; $if_speed_unit = 'bps';
switch ($counter) {
case 1:
$if_speed_unit = 'Kbps';
break;
case 2:
$if_speed_unit = 'Mbps';
break;
case 3:
$if_speed_unit = 'Gbps';
break;
case 4:
$if_speed_unit = 'Tbps';
break;
default:
$if_speed_unit = 'bps';
break;
}
// Get in and out traffic.
$ifInOctets = modules_get_previous_data(
$agent_interfaces['traffic']['in'],
time()
);
$ifOutOctets = modules_get_previous_data(
$agent_interfaces['traffic']['out'],
time()
);
if ($sec === 'view') {
$table_data[$loop_index]['if_agent_name'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent_interfaces['agent_id'].'">'.$agent_interfaces['agent_alias'].'</a>';
}
$table_data[$loop_index]['if_name'] = $agent_interfaces['if_name'];
$table_data[$loop_index]['if_status_image'] = $agent_interfaces['status_image'];
$table_data[$loop_index]['if_speed_data'] = ($if_speed_value === null) ? __('N/A') : $if_speed_value.' '.$if_speed_unit;
$table_data[$loop_index]['if_in_octets'] = ($ifInOctets['datos'] === null) ? __('N/A') : $ifInOctets['datos'];
$table_data[$loop_index]['if_out_octets'] = ($ifOutOctets['datos'] === null) ? __('N/A') : $ifOutOctets['datos'];
$table_data[$loop_index]['if_usage_module_data_in'] = ($usage_module_data_in['datos'] === null) ? __('N/A') : $usage_module_data_in['datos'];
$table_data[$loop_index]['if_usage_module_data_out'] = ($usage_module_data_out['datos'] === null) ? __('N/A') : $usage_module_data_out['datos'];
$table_data[$loop_index]['if_last_data'] = human_time_comparation($agent_interfaces['last_contact']);
$loop_index++;
} }
$if_speed_unit = 'bps';
switch ($counter) {
case 1:
$if_speed_unit = 'Kbps';
break;
case 2:
$if_speed_unit = 'Mbps';
break;
case 3:
$if_speed_unit = 'Gbps';
break;
case 4:
$if_speed_unit = 'Tbps';
break;
default:
$if_speed_unit = 'bps';
break;
}
// Get in and out traffic.
$ifInOctets = modules_get_previous_data(
$agent_interfaces['traffic']['in'],
time()
);
$ifOutOctets = modules_get_previous_data(
$agent_interfaces['traffic']['out'],
time()
);
if ($sec === 'view') {
$table_data[$loop_index]['if_agent_name'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent_interfaces['agent_id'].'">'.$agent_interfaces['agent_alias'].'</a>';
}
$table_data[$loop_index]['if_name'] = $agent_interfaces['if_name'];
$table_data[$loop_index]['if_status_image'] = $agent_interfaces['status_image'];
$table_data[$loop_index]['if_speed_data'] = ($if_speed_value === null) ? __('N/A') : $if_speed_value.' '.$if_speed_unit;
$table_data[$loop_index]['if_in_octets'] = ($ifInOctets['datos'] === null) ? __('N/A') : $ifInOctets['datos'];
$table_data[$loop_index]['if_out_octets'] = ($ifOutOctets['datos'] === null) ? __('N/A') : $ifOutOctets['datos'];
$table_data[$loop_index]['if_usage_module_data_in'] = ($usage_module_data_in['datos'] === null) ? __('N/A') : $usage_module_data_in['datos'];
$table_data[$loop_index]['if_usage_module_data_out'] = ($usage_module_data_out['datos'] === null) ? __('N/A') : $usage_module_data_out['datos'];
$table_data[$loop_index]['if_last_data'] = human_time_comparation($agent_interfaces['last_contact']);
$loop_index++;
} }
// Sort array of previously processed table values. // Sort array of previously processed table values.

View File

@ -117,11 +117,13 @@ ui_print_message_dialog(
<link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" />
<link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="../../include/styles/js/jquery-ui_custom.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/js/jquery-ui_custom.css" type="text/css" />
<link rel="stylesheet" href="../../include/styles/select2.min.css" type="text/css" />
<script type='text/javascript' src='../../include/javascript/pandora.js'></script> <script type='text/javascript' src='../../include/javascript/pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/pandora_ui.js'></script> <script type='text/javascript' src='../../include/javascript/pandora_ui.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery.current.js'></script> <script type='text/javascript' src='../../include/javascript/jquery.current.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script> <script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script> <script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script>
<script type='text/javascript' src='../../include/javascript/select2.min.js'></script>
<?php <?php
require_once $config['homedir'].'/include/graphs/functions_flot.php'; require_once $config['homedir'].'/include/graphs/functions_flot.php';
echo include_javascript_dependencies_flot_graph(true, '../'); echo include_javascript_dependencies_flot_graph(true, '../');

View File

@ -241,10 +241,10 @@ if ($is_admin) {
} }
$out = '<table cellpadding=0 cellspacing=0 class="databox pies mrgn_top_15px" width=100%><tr><td>'; $out = '<table cellpadding=0 cellspacing=0 class="databox pies mrgn_top_15px" width=100%><tr><td>';
$out .= '<fieldset class="databox tactical_set" id="total_event_graph"> $out .= '<fieldset class="padding-0 databox tactical_set" id="total_event_graph">
<legend>'.__('Event graph').'</legend>'.html_print_image('images/spinner.gif', true, ['id' => 'spinner_total_event_graph']).'</fieldset>'; <legend>'.__('Event graph').'</legend>'.html_print_image('images/spinner.gif', true, ['id' => 'spinner_total_event_graph']).'</fieldset>';
$out .= '</td><td>'; $out .= '</td><td>';
$out .= '<fieldset class="databox tactical_set" id="graphic_event_group"> $out .= '<fieldset class="padding-0 databox tactical_set" id="graphic_event_group">
<legend>'.__('Event graph by agent').'</legend>'.html_print_image('images/spinner.gif', true, ['id' => 'spinner_graphic_event_group']).'</fieldset>'; <legend>'.__('Event graph by agent').'</legend>'.html_print_image('images/spinner.gif', true, ['id' => 'spinner_graphic_event_group']).'</fieldset>';
$out .= '</td></tr></table>'; $out .= '</td></tr></table>';

View File

@ -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 * Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -46,19 +46,19 @@ check_login();
enterprise_include_once('/include/class/CommandCenter.class.php'); enterprise_include_once('/include/class/CommandCenter.class.php');
$event_a = check_acl($config['id_user'], 0, 'ER'); $event_a = (bool) check_acl($config['id_user'], 0, 'ER');
$event_w = check_acl($config['id_user'], 0, 'EW'); $event_w = (bool) check_acl($config['id_user'], 0, 'EW');
$event_m = check_acl($config['id_user'], 0, 'EM'); $event_m = (bool) check_acl($config['id_user'], 0, 'EM');
if (! $event_a if ($event_a === false
&& ! $event_w && $event_w === false
&& ! $event_m && $event_m === false
) { ) {
db_pandora_audit( db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION, AUDIT_LOG_ACL_VIOLATION,
'Trying to access event viewer' 'Trying to access event viewer'
); );
if (is_ajax()) { if (is_ajax() === true) {
return ['error' => 'noaccess']; return ['error' => 'noaccess'];
} }
@ -67,14 +67,14 @@ if (! $event_a
} }
$access = ($event_a == true) ? 'ER' : (($event_w == true) ? 'EW' : (($event_m == true) ? 'EM' : 'ER')); $access = ($event_a === true) ? 'ER' : (($event_w === true) ? 'EW' : (($event_m === true) ? 'EM' : 'ER'));
$readonly = false; $readonly = false;
if (is_metaconsole() === false if (is_metaconsole() === false
&& isset($config['event_replication']) && isset($config['event_replication']) === true
&& $config['event_replication'] == 1 && (int) $config['event_replication'] === 1
&& $config['show_events_in_local'] == 1 && (int) $config['show_events_in_local'] === 1
) { ) {
$readonly = true; $readonly = true;
} }
@ -100,7 +100,7 @@ $default_filter = [
]; ];
$fb64 = get_parameter('fb64', null); $fb64 = get_parameter('fb64', null);
if (isset($fb64)) { if (isset($fb64) === true) {
$filter = json_decode(base64_decode($fb64), true); $filter = json_decode(base64_decode($fb64), true);
$filter['tag_with'] = []; $filter['tag_with'] = [];
$filter['tag_without'] = []; $filter['tag_without'] = [];
@ -238,20 +238,20 @@ $custom_data = get_parameter(
if (is_metaconsole() === true) { if (is_metaconsole() === true) {
// Connect to node database. // Connect to node database.
$id_node = $server_id; $id_node = (int) $server_id;
if ($id_node != 0) { if ($id_node !== 0) {
if (metaconsole_connect(null, $id_node) != NOERR) { if (metaconsole_connect(null, $id_node) !== NOERR) {
return false; return false;
} }
} }
} }
if (empty($text_agent) && empty($id_agent) === false) { if (empty($text_agent) === true && empty($id_agent) === false) {
$text_agent = agents_get_alias($id_agent); $text_agent = agents_get_alias($id_agent);
} }
if (empty($text_module) && empty($id_agent_module) === false) { if (empty($text_module) === true && empty($id_agent_module) === false) {
$text_module = modules_get_agentmodule_name($id_agent_module); $text_module = modules_get_agentmodule_name($id_agent_module);
$text_agent = agents_get_alias(modules_get_agentmodule_agent($id_agent_module)); $text_agent = agents_get_alias(modules_get_agentmodule_agent($id_agent_module));
} }
@ -501,7 +501,7 @@ if ($load_filter_id === 0) {
// Do not load the user filter if we come from the 24h event graph. // Do not load the user filter if we come from the 24h event graph.
$from_event_graph = get_parameter('filter[from_event_graph]', $filter['from_event_graph']); $from_event_graph = get_parameter('filter[from_event_graph]', $filter['from_event_graph']);
if ($loaded_filter !== false && $from_event_graph != 1 && !isset($fb64)) { if ($loaded_filter !== false && $from_event_graph != 1 && isset($fb64) === false) {
$filter = events_get_event_filter($loaded_filter['id_filter']); $filter = events_get_event_filter($loaded_filter['id_filter']);
if ($filter !== false) { if ($filter !== false) {
$id_group = $filter['id_group']; $id_group = $filter['id_group'];
@ -1136,15 +1136,19 @@ $in = '<div class="filter_input"><label>'.__('Free search').'</label>';
$in .= $data.'</div>'; $in .= $data.'</div>';
$inputs[] = $in; $inputs[] = $in;
if (empty($severity) === true && $severity !== '0') { if (is_array($severity) === false) {
$severity = -1; if (empty($severity) === true && $severity !== '0') {
$severity = -1;
} else {
$severity = explode(',', $severity);
}
} }
// Criticity - severity. // Criticity - severity.
$data = html_print_select( $data = html_print_select(
get_priorities(), get_priorities(),
'severity', 'severity',
explode(',', $severity), $severity,
'', '',
__('All'), __('All'),
-1, -1,

View File

@ -2,8 +2,8 @@
# Pandora FMS Console # Pandora FMS Console
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.761 %define version 7.0NG.762
%define release 220509 %define release 220603
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -2,8 +2,8 @@
# Pandora FMS Console # Pandora FMS Console
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.761 %define version 7.0NG.762
%define release 220509 %define release 220603
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -2,8 +2,8 @@
# Pandora FMS Console # Pandora FMS Console
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.761 %define version 7.0NG.762
%define release 220509 %define release 220603
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -9,7 +9,7 @@
# This code is licensed under GPL 2.0 license. # This code is licensed under GPL 2.0 license.
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.761" PI_VERSION="7.0NG.762"
FORCE=0 FORCE=0
DESTDIR="" DESTDIR=""
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"` LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`

View File

@ -2817,6 +2817,7 @@ CREATE TABLE IF NOT EXISTS `tservice` (
`cascade_protection` TINYINT NOT NULL DEFAULT 0, `cascade_protection` TINYINT NOT NULL DEFAULT 0,
`evaluate_sla` INT NOT NULL DEFAULT 0, `evaluate_sla` INT NOT NULL DEFAULT 0,
`is_favourite` TINYINT NOT NULL DEFAULT 0, `is_favourite` TINYINT NOT NULL DEFAULT 0,
`enable_sunburst` TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB ) ENGINE=InnoDB
COMMENT = 'Table to define services to monitor' COMMENT = 'Table to define services to monitor'

View File

@ -109,10 +109,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''), ('custom_report_front_header', ''),
('custom_report_front_footer', ''), ('custom_report_front_footer', ''),
('MR', 53), ('MR', 54),
('identification_reminder', 1), ('identification_reminder', 1),
('identification_reminder_timestamp', 0), ('identification_reminder_timestamp', 0),
('current_package', 761), ('current_package', 762),
('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.00097656250000":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'), ('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.00097656250000":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}'),
('custom_docs_logo', 'default_docs.png'), ('custom_docs_logo', 'default_docs.png'),
('custom_support_logo', 'default_support.png'), ('custom_support_logo', 'default_support.png'),
@ -142,7 +142,8 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('sample_agent', '0'), ('sample_agent', '0'),
('gotty', '/usr/bin/gotty'), ('gotty', '/usr/bin/gotty'),
('custom_module_units', '{"bytes":"bytes","entries":"entries","files":"files","hits":"hits","sessions":"sessions","users":"users","ºC":"ºC","ºF":"ºF"}'), ('custom_module_units', '{"bytes":"bytes","entries":"entries","files":"files","hits":"hits","sessions":"sessions","users":"users","ºC":"ºC","ºF":"ºF"}'),
('server_unique_identifier', replace(uuid(),'-','')); ('server_unique_identifier', replace(uuid(),'-','')),
('lts_name', 'Akira');
UNLOCK TABLES; UNLOCK TABLES;
-- --

View File

@ -469,15 +469,21 @@ sub parse_log ($$$$$$$$) {
# Go to starting position # Go to starting position
seek(LOGFILE, $Idx_pos, 0); seek(LOGFILE, $Idx_pos, 0);
$buffer .= "<module>\n"; if ($type eq "log_module"){
$buffer .= "<name><![CDATA[" . $Module_name . "]]></name>\n"; $buffer = "<log_module>\n";
$buffer .= "<description><![CDATA[" . $Description . "]]></description>\n"; $buffer .= "<source><![CDATA[" . $Module_name . "]]></source>\n";
$buffer .= "<data><![CDATA[";
if ($type eq "return_ocurrences"){
$buffer .= "<type>generic_data</type>\n";
} else { } else {
$buffer .= "<type><![CDATA[async_string]]></type>\n"; $buffer .= "<module>\n";
$buffer .= "<datalist>\n"; $buffer .= "<name><![CDATA[" . $Module_name . "]]></name>\n";
$buffer .= "<description><![CDATA[" . $Description . "]]></description>\n";
if ($type eq "return_ocurrences"){
$buffer .= "<type>generic_data</type>\n";
} else {
$buffer .= "<type><![CDATA[async_string]]></type>\n";
$buffer .= "<datalist>\n";
}
} }
while ($line = <LOGFILE>) { while ($line = <LOGFILE>) {
@ -503,6 +509,11 @@ sub parse_log ($$$$$$$$) {
$buffer .= "<data><value><![CDATA[".$line."]]></value></data>\n"; $buffer .= "<data><value><![CDATA[".$line."]]></value></data>\n";
} }
if ($type eq "log_module") {
$line =~ s/\]\]/]]]]><![CDATA[/g;
$buffer .= $line."\n";
}
# Critical severity will prevail over other matches # Critical severity will prevail over other matches
if ($severity eq ""){ if ($severity eq ""){
$severity = $value->{"severity"}; $severity = $value->{"severity"};
@ -515,11 +526,12 @@ sub parse_log ($$$$$$$$) {
} }
} }
} }
if ($type ne "log_module"){
if ($type eq "return_ocurrences"){ if ($type eq "return_ocurrences"){
$buffer .= "<data><![CDATA[".$count."]]></data>\n"; $buffer .= "<data><![CDATA[".$count."]]></data>\n";
} else { } else {
$buffer .= "</datalist>\n"; $buffer .= "</datalist>\n";
}
} }
# Execute action if any match (always for last match) # Execute action if any match (always for last match)
@ -527,13 +539,18 @@ sub parse_log ($$$$$$$$) {
`$action`; `$action`;
} }
# Write severity field in XML if ($type ne "log_module"){
if ($severity ne ""){ # Write severity field in XML
$buffer .= "<status>$severity</status>\n"; if ($severity ne ""){
} $buffer .= "<status>$severity</status>\n";
}
# End XML # End XML
$buffer .= "</module>\n"; $buffer .= "</module>\n";
}else {
$buffer .= "]]></data>\n";
$buffer .= "</log_module>\n";
}
# Update Index # Update Index
$Idx_pos = tell(LOGFILE); $Idx_pos = tell(LOGFILE);
@ -746,4 +763,4 @@ while (my ($key, $value) = each (@{$plugin_setup{"log"}})) {
print "\n"; print "\n";
} }

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.761-220509 Version: 7.0NG.762-220603
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
pandora_version="7.0NG.761-220509" pandora_version="7.0NG.762-220603"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -68,10 +68,6 @@ dbhost 127.0.0.1
#dbport 3306 #dbport 3306
# By default, parent agent will not be updated
#update_parent 0
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy) # verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
# -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and # -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and
# set to 1 or 3 on production enviroments. # set to 1 or 3 on production enviroments.

View File

@ -68,10 +68,6 @@ dbhost 127.0.0.1
#dbport 3306 #dbport 3306
# By default, parent agent will not be updated
#update_parent 0
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy) # verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
# -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and # -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and
# set to 1 or 3 on production enviroments. # set to 1 or 3 on production enviroments.

View File

@ -1,7 +1,7 @@
############################################################################# #############################################################################
# Pandora FMS Server Parameters # Pandora FMS Server Parameters
# Pandora FMS, the Flexible Monitoring System. # Pandora FMS, the Flexible Monitoring System.
# Version 7.0NG.761 # Version 7.0NG.762
# Licensed under GPL license v2, # Licensed under GPL license v2,
# (c) 2003-2021 Artica Soluciones Tecnologicas # (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com # http://www.pandorafms.com
@ -79,10 +79,6 @@ dbssl 0
# dbsslcapath # dbsslcapath
# By default, parent agent will not be updated
#update_parent 0
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy) # verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
# -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and # -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and
# set to 1 or 3 on production enviroments. # set to 1 or 3 on production enviroments.
@ -434,6 +430,7 @@ sample_agent_interval 600
# Update parent from the agent xml # Update parent from the agent xml
update_parent 1 update_parent 1
# #
# #
# This enable realtime reverse geocoding using Google Maps public api. # This enable realtime reverse geocoding using Google Maps public api.

View File

@ -68,10 +68,6 @@ dbhost 192.168.55.1
#dbport 3306 #dbport 3306
# By default, parent agent will not be updated
#update_parent 0
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy) # verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
# -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and # -v in command line (verbose) or -d (debug). Set this to 10 when try to locate problems and
# set to 1 or 3 on production enviroments. # set to 1 or 3 on production enviroments.

View File

@ -45,8 +45,8 @@ our @EXPORT = qw(
); );
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.761"; my $pandora_version = "7.0NG.762";
my $pandora_build = "220509"; my $pandora_build = "220603";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -33,8 +33,8 @@ use base 'Exporter';
our @ISA = qw(Exporter); our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.761"; my $pandora_version = "7.0NG.762";
my $pandora_build = "220509"; my $pandora_build = "220603";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );
@ -2206,73 +2206,93 @@ sub snmp_get {
'error' => 'snmpwalk not found' 'error' => 'snmpwalk not found'
}; };
} }
$snmp->{extra} = '' unless defined $snmp->{extra};
if ( defined ($snmp->{version} ) if (!defined $snmp->{version}) {
&& (($snmp->{version} eq "1")
|| ($snmp->{version} eq "2")
|| ($snmp->{version} eq "2c"))) {
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -c $snmp->{community} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -c $snmp->{community} $snmp->{host} $snmp->{oid}";
}
}
elsif ( defined ($snmp->{version} )
&& ($snmp->{version} eq "3") ) { # SNMP v3
# Authentication required
# $securityLevel = (noAuthNoPriv|authNoPriv|authPriv);
# unauthenticated request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u noAuthUser -l noAuthNoPriv test.net-snmp.org sysUpTime
# authenticated request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u MD5User -a MD5 -A "The Net-SNMP Demo Password" -l authNoPriv test.net-snmp.org sysUpTime
# authenticated and encrypted request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u MD5DESUser -a MD5 -A "The Net-SNMP Demo Password" -x DES -X "The Net-SNMP Demo Password" -l authPriv test.net-snmp.org system
if ($snmp->{securityLevel} =~ /^noAuthNoPriv$/i){
# Unauthenticated request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -l $snmp->{securityLevel} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -l $snmp->{securityLevel} $snmp->{host} $snmp->{oid}";
}
}
elsif ($snmp->{securityLevel} =~ /^authNoPriv$/i){
# Authenticated request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -a $snmp->{authProtocol} -A $snmp->{authKey} -l $snmp->{securityLevel} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -a $snmp->{authProtocol} -A $snmp->{authKey} -l $snmp->{securityLevel} $snmp->{host} $snmp->{oid}";
}
}
elsif ($snmp->{securityLevel} =~ /^authPriv$/i){
# Authenticated and encrypted request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -l $snmp->{securityLevel} -a $snmp->{authProtocol} -A $snmp->{authKey} -x $snmp->{privProtocol} -X $snmp->{privKey} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -l $snmp->{securityLevel} -a $snmp->{authProtocol} -A $snmp->{authKey} -x $snmp->{privProtocol} -X $snmp->{privKey} $snmp->{host} $snmp->{oid}";
}
}
}
else {
return { return {
error => "Only SNMP 1 2 2c and 3 are supported." 'error' => "Only SNMP 1 2 2c and 3 are supported."
};
} elsif (!defined $snmp->{host}) {
return {
'error' => "Destination host must be defined."
};
} elsif (!defined $snmp->{oid}) {
return {
'error' => "OID must be defined"
};
} else {
$snmp->{extra} = '' unless defined $snmp->{extra};
$snmp->{context} = '' unless defined $snmp->{context};
$snmp->{community} = 'public' unless defined $snmp->{community};
if (($snmp->{version} eq "1")
|| ($snmp->{version} eq "2")
|| ($snmp->{version} eq "2c")) {
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -c $snmp->{community} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -c $snmp->{community} $snmp->{host} $snmp->{oid}";
}
}
elsif ( defined ($snmp->{version} )
&& ($snmp->{version} eq "3") ) {
$snmp->{securityLevel} = '' unless defined $snmp->{securityLevel};
# SNMP v3
# Authentication required
# $securityLevel = (noAuthNoPriv|authNoPriv|authPriv);
# unauthenticated request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u noAuthUser -l noAuthNoPriv test.net-snmp.org sysUpTime
# authenticated request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u MD5User -a MD5 -A "The Net-SNMP Demo Password" -l authNoPriv test.net-snmp.org sysUpTime
# authenticated and encrypted request
# Ex. snmpget -r $retries -t $timeout $snmp->{extra} -On -v 3 -n "" -u MD5DESUser -a MD5 -A "The Net-SNMP Demo Password" -x DES -X "The Net-SNMP Demo Password" -l authPriv test.net-snmp.org system
if ($snmp->{securityLevel} =~ /^noAuthNoPriv$/i){
# Unauthenticated request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -l $snmp->{securityLevel} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -l $snmp->{securityLevel} $snmp->{host} $snmp->{oid}";
}
}
elsif ($snmp->{securityLevel} =~ /^authNoPriv$/i){
# Authenticated request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -a $snmp->{authProtocol} -A $snmp->{authKey} -l $snmp->{securityLevel} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -a $snmp->{authProtocol} -A $snmp->{authKey} -l $snmp->{securityLevel} $snmp->{host} $snmp->{oid}";
}
}
elsif ($snmp->{securityLevel} =~ /^authPriv$/i){
# Authenticated and encrypted request
if (defined $snmp->{port}){
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -l $snmp->{securityLevel} -a $snmp->{authProtocol} -A $snmp->{authKey} -x $snmp->{privProtocol} -X $snmp->{privKey} $snmp->{host}:$snmp->{port} $snmp->{oid}";
}
else {
$cmd = "snmpget -r $retries -t $timeout $snmp->{extra} -On -v $snmp->{version} -n \"$snmp->{context}\" -u $snmp->{securityName} -l $snmp->{securityLevel} -a $snmp->{authProtocol} -A $snmp->{authKey} -x $snmp->{privProtocol} -X $snmp->{privKey} $snmp->{host} $snmp->{oid}";
}
}
else {
return {
'error' => "Security Level not defined."
};
}
} }
} }
#print STDERR "Launched: $cmd\n"; #print STDERR "Launched: $cmd\n";
my $result = `$cmd`; my $result = `$cmd`;
if ($? != 0) { if ($? != 0) {
@ -2293,7 +2313,7 @@ sub snmp_data_switcher {
my $pure_data = trim($st_data[1]) or undef; my $pure_data = trim($st_data[1]) or undef;
$data{data} = $pure_data; $data{data} = $pure_data;
if ( uc($st_data[0]) eq uc("INTEGER")) { if ( uc($st_data[0]) eq uc("INTEGER")) {
$data{type} = "generic_data"; $data{type} = "generic_data";
} }

Some files were not shown because too many files have changed in this diff Show More