Merge remote-tracking branch 'origin/develop' into ent-7049-permitir-seleccionar-a-nivel-de-usuario-si-autenticara-local-o-remotamente-ldap-ad

This commit is contained in:
Calvo 2022-02-18 09:26:55 +01:00
commit 5ba7b47b85
421 changed files with 121189 additions and 123962 deletions

View File

@ -3,4 +3,5 @@ variables:
test:
script:
- docker run --rm -h pandorafms -t -v "$CI_PROJECT_DIR:/tmp/pandorafms" pandorafms/pandorafms-base /tmp/pandorafms/tests/test.sh
- docker pull pandorafms/pandorafms-base:centos6
- docker run --rm -h pandorafms -t -v "$CI_PROJECT_DIR:/tmp/pandorafms" pandorafms/pandorafms-base:centos6 /tmp/pandorafms/tests/test.sh

View File

@ -1,12 +1,16 @@
[![Build Status](https://travis-ci.org/pandorafms/pandorafms.svg?branch=develop)](https://travis-ci.org/pandorafms/pandorafms)
[![Pandora logo](http://wolf359.artica.es/public_images/logo_pandora_community.png)](http://pandorafms.org)
![logo Pandora-FMS](https://user-images.githubusercontent.com/8567291/151817953-dc9c4c88-5f3c-459b-98a7-da0534930a2c.png)
Pandora FMS is a monitoring software for IT infrastructure management which includes network equipment, Windows and Unix servers, virtual infrastructure and all different kind of applications. It has a large amount of features, making it a new generation software which discovers all the monitoring issues that an organization may need.
With more than 50,000 customer installations across the five continents, Pandora FMS is an out-of-the-box monitoring solution: profitable and scalable, covering most infrastructure deployment options.
Pandora FMS gives you the agility to find and solve problems quickly, scaling them so they can be derived from any source, on-premise, multi cloud or both of them mixed. Now you have that capability across your entire IT stack and analytics to find any problem, even the ones that are hard to find.
Thanks to more than 500 plugins available, you can control and manage any application and technology, from SAP, Oracle, Lotus, Citrix or Jboss to VMware, AWS, SQL Server, Redhat, Websphere, etc.
### Support
For community support you can visit our forums at http://forums.pandorafms.org. Visit our community page at http://pandorafms.org and if you need commercial information or/and professional support visit http://pandorafms.com.
For community support you can visit our forums at https://pandorafms.com/community/ and if you need commercial information or/and professional support visit https://pandorafms.com
### How to install Pandora FMS

View File

@ -82,10 +82,10 @@ execute_cmd "[ $PANDORA_SERVER_IP ]" 'Check Server IP Address' 'Please define e
# Check OS.
OS=$([[ $(grep '^ID_LIKE=' /etc/os-release) ]] && grep ^ID_LIKE= /etc/os-release | cut -d '=' -f2 | tr -d '"' || grep ^ID= /etc/os-release | cut -d '=' -f2 | tr -d '"')
[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'debian' ]] && OS_RELEASE=$OS
[[ $OS =~ 'rhel' ]] && OS_RELEASE=$OS
[[ $OS =~ 'debian' ]] && OS_RELEASE=$OS
#[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
#[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS
# initialice logfile
execute_cmd "echo 'Starting community deployment' > $LOGFILE" "All installer activity is logged on $LOGFILE"
@ -113,7 +113,7 @@ execute_cmd "cd $HOME/pandora_deploy_tmp" "Moving to workspace: $HOME/pandora_d
# Downloading and installing packages
if [[ $OS_RELEASE == 'rhel fedora' ]] || [[ $OS_RELEASE == 'centos rhel fedora' ]]; then
if [[ $OS_RELEASE =~ 'rhel' ]]; then
yum install -y perl wget curl perl-Sys-Syslog unzip &>> $LOGFILE
echo -e "${cyan}Instaling agent dependencies...${reset}" ${green}OK${reset}

View File

@ -1,20 +1,33 @@
#!/bin/bash
#######################################################
# PandoraFMS Community online installation script
#######################################################
## Tested versions ##
# Centos 7.9
# define variables
#Constants
PANDORA_CONSOLE=/var/www/html/pandora_console
CONSOLE_PATH=/var/www/html/pandora_console
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_SERVER_BIN=/usr/bin/pandora_server
PANDORA_HA_BIN=/usr/bin/pandora_ha
PANDORA_TABLES_MIN=160
DBHOST=127.0.0.1
DBNAME=pandora
DBUSER=pandora
DBPASS=pandora
DBPORT=3306
S_VERSION='2021012801'
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022020801'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
[ "$TZ" ] || TZ="Europe/Madrid"
[ "$DBHOST" ] || DBHOST=127.0.0.1
[ "$DBNAME" ] || DBNAME=pandora
[ "$DBUSER" ] || DBUSER=pandora
[ "$DBPASS" ] || DBPASS=pandora
[ "$DBPORT" ] || DBPORT=3306
[ "$DBROOTPASS" ] || DBROOTPASS=pandora
[ "$SKIP_PRECHECK" ] || SKIP_PRECHECK=0
[ "$SKIP_DATABASE_INSTALL" ] || SKIP_DATABASE_INSTALL=0
[ "$SKIP_KERNEL_OPTIMIZATIONS" ] || SKIP_KERNEL_OPTIMIZATIONS=0
[ "$POOL_SIZE" ] || POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
# Ansi color code variables
red="\e[0;91m"
green="\e[0;92m"
@ -60,7 +73,7 @@ check_pre_pandora () {
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
[ -d "$CONSOLE_PATH" ] && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
@ -98,6 +111,10 @@ fi
execute_cmd "grep -i centos /etc/redhat-release" "Checking Centos" 'Error This is not a Centos Base system'
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9])"$/\1/p' /etc/os-release) -eq '7' ]
check_cmd_status 'Error OS version, Centos 7 is expected'
@ -111,7 +128,10 @@ echo "Community installer version: $S_VERSION" >> $LOGFILE
check_root_permissions
# Pre installed pandora
check_pre_pandora
[ "$SKIP_PRECHECK" == 1 ] || check_pre_pandora
#advicing BETA PROGRAM
[ "$PANDORA_BETA" -ne '0' ] && echo -e "${red}BETA version enable using nightly PandoraFMS packages${reset}"
# Connectivity
check_repo_connection
@ -125,6 +145,9 @@ execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]"
# Check disk size at least 10 Gb free space
execute_cmd "[ $(df -BM / | tail -1 | awk '{print $4}' | tr -d M) -gt 10000 ]" 'Checking Disk (required: 10 GB free min)'
# Setting timezone
execute_cmd "timedatectl set-timezone $TZ" "Setting Timezone $TZ"
# Execute tools check
execute_cmd "awk --version" 'Checking needed tools: awk'
execute_cmd "grep --version" 'Checking needed tools: grep'
@ -148,10 +171,10 @@ http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "yum install -y $extra_repos" "Installing extra repositories"
execute_cmd "yum-config-manager --enable remi-php73" "Configuring PHP"
execute_cmd "yum-config-manager --enable remi-php74" "Configuring PHP"
# Install percona Database
[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
#[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
execute_cmd "yum install -y Percona-Server-server-57" "Installing Percona Server"
# Console dependencies
@ -256,6 +279,7 @@ server_dependencies=" \
perl(XML::Twig) \
expect \
openssh-clients \
java \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm"
execute_cmd "yum install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
@ -275,32 +299,61 @@ execute_cmd "yum install -y $vmware_dependencies" "Installing SDK VMware perl de
oracle_dependencies=" \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm"
execute_cmd "yum install -y $oracle_dependencies" "Installing Oracle Instant client"
execute_cmd "yum install -y $oracle_dependencies || yum reinstall -y $oracle_dependencies" "Installing Oracle Instant client"
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
perl(Sys::Syslog) \
perl(DBI) \
perl(XML::Simple) \
perl(Geo::IP) \
perl(IO::Socket::INET6) \
perl(XML::Twig)"
execute_cmd "yum install -y $ipam_dependencies" "Installing IPAM Instant client"
# MSSQL dependencies el7
execute_cmd "curl https://packages.microsoft.com/config/rhel/7/prod.repo -o /etc/yum.repos.d/mssql-release.repo" "Configuring Microsoft repositories"
execute_cmd "yum remove unixODBC-utf16 unixODBC-utf16-devel" "Removing default unixODBC packages"
execute_cmd "env ACCEPT_EULA=Y yum install -y msodbcsql17" "Installing ODBC Driver for Microsoft(R) SQL Server(R)"
MS_ID=$(head -1 /etc/odbcinst.ini | tr -d '[]') &>> "$LOGFILE"
#yum config-manager --set-disable packages-microsoft-com-prod
# Disabling SELINUX and firewalld
setenforce 0
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
systemctl disable firewalld --now &>> $LOGFILE
# Adding standar cnf for initial setup.
cat > /etc/my.cnf << EO_CONFIG_TMP
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_TMP
#Configuring Database
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
execute_cmd "systemctl start mysqld" "Starting database engine"
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
echo """
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pandora');
""" | mysql --connect-expired-password -uroot
export MYSQL_PWD=$DBPASS
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
fi
export MYSQL_PWD=$DBROOTPASS
echo -en "${cyan}Creating Pandora FMS database...${reset}"
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
check_cmd_status 'Error creating database pandora, 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
export MYSQL_PWD=$DBPASS
#Generating my.cnf
POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
@ -347,10 +400,21 @@ EO_CONFIG_F
execute_cmd "systemctl restart mysqld" "Configuring database engine"
#Define packages
if [ "$PANDORA_BETA" -eq '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
elif [ "$PANDORA_BETA" -ne '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://pandorafms.com/community/community-console-rpm-beta/"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm" "Downloading Pandora FMS Server community"
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm" "Downloading Pandora FMS Console community"
execute_cmd "wget http://firefly.artica.es/centos7/pandorafms_agent_unix-7.0NG.751_x86_64.rpm" "Downloading Pandora FMS Agent community"
execute_cmd "curl -LSs --output pandorafms_server-7.0NG.noarch.rpm ${PANDORA_SERVER_PACKAGE}" "Downloading Pandora FMS Server community"
execute_cmd "curl -LSs --output pandorafms_console-7.0NG.noarch.rpm ${PANDORA_CONSOLE_PACKAGE}" "Downloading Pandora FMS Console community"
execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA_AGENT_PACKAGE}" "Downloading Pandora FMS Agent community"
# Install Pandora
execute_cmd "yum install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
@ -374,13 +438,13 @@ mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sq
check_cmd_status 'Error Loading database schema data'
# Configure console
cat > $CONSOLE_PATH/include/config.php << EO_CONFIG_F
cat > $PANDORA_CONSOLE/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="$DBNAME";
\$config["dbuser"]="$DBUSER";
\$config["dbpass"]="$DBPASS";
\$config["dbhost"]="localhost";
\$config["dbhost"]="$DBHOST";
\$config["homedir"]="$PANDORA_CONSOLE";
\$config["homeurl"]="/pandora_console";
error_reporting(0);
@ -420,9 +484,9 @@ sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess
# Fixing console permissions
chmod 600 $CONSOLE_PATH/include/config.php
chown apache. $CONSOLE_PATH/include/config.php
mv $CONSOLE_PATH/install.php $CONSOLE_PATH/install.done
chmod 600 $PANDORA_CONSOLE/include/config.php
chown apache. $PANDORA_CONSOLE/include/config.php
mv $PANDORA_CONSOLE/install.php $PANDORA_CONSOLE/install.done
# Prepare php.ini
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
@ -449,6 +513,10 @@ sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
sed -i -e "s/^#.mssql_driver.*/mssql_driver $MS_ID/g" $PANDORA_SERVER_CONF
# Enable agent remote config
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF
# Set Oracle environment for pandora_server
cat > /etc/pandora/pandora_server.env << 'EOF_ENV'
@ -459,7 +527,7 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/$VERSION/client64/lib
export ORACLE_HOME=/usr/lib/oracle/$VERSION/client64
EOF_ENV
# Kernel optimization
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
cat >> /etc/sysctl.conf <<EO_KO
# Pandora FMS Optimization
@ -487,6 +555,7 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
fi
# Fix pandora_server.{log,error} permissions to allow Console check them
chown pandora:apache /var/log/pandora
@ -563,7 +632,7 @@ execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate http://12
echo "* * * * * root wget -q -O - --no-check-certificate http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log" >> /etc/crontab
## Enabling agent
systemctl enable pandora_agent_daemon &>> $LOGFILE
execute_cmd "systemctl start pandora_agent_daemon" "starting Pandora FMS Agent"
execute_cmd "systemctl start pandora_agent_daemon" "Starting Pandora FMS Agent"
#SSH banner
[ "$(curl -s ifconfig.me)" ] && ipplublic=$(curl -s ifconfig.me)
@ -593,4 +662,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use this credentials to login in the console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

View File

@ -1,17 +1,36 @@
#!/bin/bash
#######################################################
# PandoraFMS Community online installation script
#######################################################
## Tested versions ##
# Centos 8.4, 8.5
# Rocky 8.4, 8.5
# Almalinuz 8.4, 8.5
# RedHat 8.5
# define variables
#Constants
PANDORA_CONSOLE=/var/www/html/pandora_console
CONSOLE_PATH=/var/www/html/pandora_console
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
DBHOST=127.0.0.1
DBNAME=pandora
DBUSER=pandora
DBPASS=pandora
DBPORT=3306
S_VERSION='2021070101'
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022020801'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
[ "$TZ" ] || TZ="Europe/Madrid"
[ "$DBHOST" ] || DBHOST=127.0.0.1
[ "$DBNAME" ] || DBNAME=pandora
[ "$DBUSER" ] || DBUSER=pandora
[ "$DBPASS" ] || DBPASS=pandora
[ "$DBPORT" ] || DBPORT=3306
[ "$DBROOTPASS" ] || DBROOTPASS=pandora
[ "$SKIP_PRECHECK" ] || SKIP_PRECHECK=0
[ "$SKIP_DATABASE_INSTALL" ] || SKIP_DATABASE_INSTALL=0
[ "$SKIP_KERNEL_OPTIMIZATIONS" ] || SKIP_KERNEL_OPTIMIZATIONS=0
[ "$POOL_SIZE" ] || POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
# Ansi color code variables
red="\e[0;91m"
green="\e[0;92m"
@ -56,7 +75,7 @@ check_pre_pandora () {
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
[ -d "$CONSOLE_PATH" ] && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
@ -74,7 +93,7 @@ check_root_permissions () {
echo -en "${cyan}Checking root account... ${reset}"
if [ "$(whoami)" != "root" ]; then
echo -e "${red}Fail${reset}"
echo "Please use a root account or sudo for installing PandoraFMS"
echo "Please use a root account or sudo for installing Pandora FMS"
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
exit 1
@ -87,15 +106,19 @@ check_root_permissions () {
echo "Starting PandoraFMS Community deployment EL8 ver. $S_VERSION"
# Centos Version
if [ ! "$(grep -Ei 'centos|rocky' /etc/redhat-release)" ]; then
printf "\n ${red}Error this is not a Centos/Rocky Base system, this installer is compatible with Centos/Rocky systems only${reset}\n"
if [ ! "$(grep -Ei 'centos|rocky|Almalinux|Red Hat Enterprise' /etc/redhat-release)" ]; then
printf "\n ${red}Error this is not a Centos/Rocky/Almalinux Base system, this installer is compatible with RHEL/Almalinux/Centos/Rockylinux systems only${reset}\n"
exit 1
fi
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ]
check_cmd_status 'Error OS version, Centos/Rocky 8+ is expected'
check_cmd_status 'Error OS version, RHEL/Almalinux/Centos/Rockylinux 8+ is expected'
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
# initialice logfile
execute_cmd "echo 'Starting community deployment' > $LOGFILE" "All installer activity is logged on $LOGFILE"
@ -106,7 +129,10 @@ echo "Community installer version: $S_VERSION" >> "$LOGFILE"
check_root_permissions
# Pre installed pandora
check_pre_pandora
[ "$SKIP_PRECHECK" == 1 ] || check_pre_pandora
#advicing BETA PROGRAM
[ "$PANDORA_BETA" -ne '0' ] && echo -e "${red}BETA version enable using nightly PandoraFMS packages${reset}"
# Connectivity
check_repo_connection
@ -120,6 +146,10 @@ execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]"
# Check disk size at least 10 Gb free space
execute_cmd "[ $(df -BM / | tail -1 | awk '{print $4}' | tr -d M) -gt 10000 ]" 'Checking Disk (required: 10 GB free min)'
# Setting timezone
rm -rf /etc/localtime &>> "$LOGFILE"
execute_cmd "timedatectl set-timezone $TZ" "Setting Timezone $TZ"
# Execute tools check
execute_cmd "awk --version" 'Checking needed tools: awk'
execute_cmd "grep --version" 'Checking needed tools: grep'
@ -131,25 +161,57 @@ rm -rf "$HOME"/pandora_deploy_tmp/*.rpm* &>> "$LOGFILE"
mkdir "$HOME"/pandora_deploy_tmp &>> "$LOGFILE"
execute_cmd "cd $HOME/pandora_deploy_tmp" "Moving to workspace: $HOME/pandora_deploy_tmp"
## Extra steps on redhat envs
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 status &>> "$LOGFILE"
subscription-manager list &>> "$LOGFILE"
subscription-manager list | grep 'Status:' | grep Subscribed &>> "$LOGFILE"
check_cmd_status 'Error checking subscription status, make sure your server is activated and suscribed to Red Hat Enterprise repositories'
# Ckeck repolist
dnf repolist &>> "$LOGFILE"
echo -en "${cyan}Checking Red Hat Enterprise repolist... ${reset}"
dnf repolist | grep 'rhel-8-for-x86_64-baseos-rpms' &>> "$LOGFILE"
check_cmd_status 'Error checking repositories status, could try a subscription-manager attach command or contact sysadmin'
#install extra repos
extra_repos=" \
tar \
dnf-utils \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms" "Enabling subscription to codeready-builder"
else
# For alma/rocky/centos
extra_repos=" \
tar \
dnf-utils \
epel-release \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "dnf config-manager --set-enabled powertools" "Configuring Powertools"
fi
#Installing wget
execute_cmd "dnf install -y wget" "Installing wget"
#Installing extra repositiries
extra_repos=" \
tar \
dnf-utils \
epel-release \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "dnf config-manager --set-enabled powertools" "Configuring Powertools"
execute_cmd "dnf module reset -y php " "Disabling standard PHP module"
execute_cmd "dnf module install -y php:remi-7.3" "Configuring PHP"
execute_cmd "dnf module install -y php:remi-7.4" "Configuring PHP"
# Install percona Database
execute_cmd "dnf module disable -y mysql" "Disabiling mysql module"
rm -rf /etc/my.cnf
#rm -rf /etc/my.cnf
execute_cmd "dnf install -y Percona-Server-server-57" "Installing Percona Server"
# Console dependencies
@ -231,6 +293,7 @@ console_dependencies=" \
xorg-x11-fonts-misc \
poppler-data \
php-yaml \
mod_ssl \
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
@ -255,7 +318,8 @@ server_dependencies=" \
perl(IO::Socket::INET6) \
perl(XML::Twig) \
expect \
openssh-clients \
openssh-clients \
java \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm"
execute_cmd "dnf install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
@ -281,6 +345,7 @@ oracle_dependencies=" \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm"
execute_cmd "dnf install -y $oracle_dependencies" "Installing Oracle Instant client"
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
@ -290,32 +355,49 @@ ipam_dependencies=" \
perl(Geo::IP) \
perl(IO::Socket::INET6) \
perl(XML::Twig)"
execute_cmd "dnf install -y $ipam_dependencies" "Installing Oracle Instant client"
execute_cmd "dnf install -y $ipam_dependencies" "Installing IPAM Instant client"
# MSSQL dependencies el8
execute_cmd "curl https://packages.microsoft.com/config/rhel/8/prod.repo -o /etc/yum.repos.d/mssql-release.repo" "Configuring Microsoft repositories"
execute_cmd "dnf remove unixODBC-utf16 unixODBC-utf16-devel" "Removing default unixODBC packages"
execute_cmd "env ACCEPT_EULA=Y dnf install -y msodbcsql17" "Installing ODBC Driver for Microsoft(R) SQL Server(R)"
MS_ID=$(head -1 /etc/odbcinst.ini | tr -d '[]') &>> "$LOGFILE"
#dnf config-manager --set-disable packages-microsoft-com-prod
# Disabling SELINUX and firewalld
setenforce 0 &>> "$LOGFILE"
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config &>> "$LOGFILE"
systemctl disable firewalld --now &>> "$LOGFILE"
# Adding standar cnf for initial setup.
cat > /etc/my.cnf << EO_CONFIG_TMP
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_TMP
#Configuring Database
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
execute_cmd "systemctl start mysqld" "Starting database engine"
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
echo """
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pandora');
""" | mysql --connect-expired-password -uroot
export MYSQL_PWD=$DBPASS
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
fi
export MYSQL_PWD=$DBROOTPASS
echo -en "${cyan}Creating Pandora FMS database...${reset}"
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
check_cmd_status 'Error creating database pandora, 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
export MYSQL_PWD=$DBPASS
#Generating my.cnf
POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
@ -362,13 +444,25 @@ EO_CONFIG_F
execute_cmd "systemctl restart mysqld" "Configuring database engine"
#Define packages
if [ "$PANDORA_BETA" -eq '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
elif [ "$PANDORA_BETA" -ne '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://pandorafms.com/community/community-console-rpm-beta/"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm" "Downloading Pandora FMS Server community"
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm" "Downloading Pandora FMS Console community"
execute_cmd "wget http://firefly.artica.es/centos7/pandorafms_agent_unix-7.0NG.751_x86_64.rpm" "Downloading Pandora FMS Agent community"
execute_cmd "curl -LSs --output pandorafms_server-7.0NG.noarch.rpm ${PANDORA_SERVER_PACKAGE}" "Downloading Pandora FMS Server community"
execute_cmd "curl -LSs --output pandorafms_console-7.0NG.noarch.rpm ${PANDORA_CONSOLE_PACKAGE}" "Downloading Pandora FMS Console community"
execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA_AGENT_PACKAGE}" "Downloading Pandora FMS Agent community"
# Install Pandora
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "Installing Pandora FMS packages"
# Copy gotty utility
execute_cmd "wget https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
@ -391,13 +485,13 @@ mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sq
check_cmd_status 'Error Loading database schema data'
# Configure console
cat > $CONSOLE_PATH/include/config.php << EO_CONFIG_F
cat > $PANDORA_CONSOLE/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="$DBNAME";
\$config["dbuser"]="$DBUSER";
\$config["dbpass"]="$DBPASS";
\$config["dbhost"]="localhost";
\$config["dbhost"]="$DBHOST";
\$config["homedir"]="$PANDORA_CONSOLE";
\$config["homeurl"]="/pandora_console";
error_reporting(0);
@ -437,9 +531,9 @@ sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess
# Fixing console permissions
chmod 600 $CONSOLE_PATH/include/config.php
chown apache. $CONSOLE_PATH/include/config.php
mv $CONSOLE_PATH/install.php $CONSOLE_PATH/install.done
chmod 600 $PANDORA_CONSOLE/include/config.php
chown apache. $PANDORA_CONSOLE/include/config.php
mv $PANDORA_CONSOLE/install.php $PANDORA_CONSOLE/install.done &>> "$LOGFILE"
# Prepare php.ini
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
@ -466,6 +560,10 @@ sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
sed -i -e "s/^#.mssql_driver.*/mssql_driver $MS_ID/g" $PANDORA_SERVER_CONF
# Enable agent remote config
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF
# Set Oracle environment for pandora_server
cat > /etc/pandora/pandora_server.env << 'EOF_ENV'
@ -477,6 +575,8 @@ export ORACLE_HOME=/usr/lib/oracle/$VERSION/client64
EOF_ENV
# Kernel optimization
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
cat >> /etc/sysctl.conf <<EO_KO
# Pandora FMS Optimization
@ -504,6 +604,7 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
fi
# Fix pandora_server.{log,error} permissions to allow Console check them
chown pandora:apache /var/log/pandora
@ -558,7 +659,7 @@ chmod 0644 /etc/logrotate.d/pandora_server
chmod 0644 /etc/logrotate.d/pandora_agent
# Add websocket engine start script.
mv /var/www/html/pandora_console/pandora_websocket_engine /etc/init.d/
mv /var/www/html/pandora_console/pandora_websocket_engine /etc/init.d/ &>> "$LOGFILE"
chmod +x /etc/init.d/pandora_websocket_engine
# Start Websocket engine
@ -569,7 +670,7 @@ systemctl enable pandora_websocket_engine &>> "$LOGFILE"
# Enable pandora ha service
systemctl enable pandora_server --now &>> "$LOGFILE"
execute_cmd "systemctl start pandora_server" "Starting Pandora FMS Server"
execute_cmd "/etc/init.d/pandora_server start" "Starting Pandora FMS Server"
# starting tentacle server
systemctl enable tentacle_serverd &>> "$LOGFILE"
@ -580,7 +681,7 @@ execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate http://12
echo "* * * * * root wget -q -O - --no-check-certificate http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log" >> /etc/crontab
## Enabling agent
systemctl enable pandora_agent_daemon &>> "$LOGFILE"
execute_cmd "systemctl start pandora_agent_daemon" "starting Pandora FMS Agent"
execute_cmd "systemctl start pandora_agent_daemon" "Starting Pandora FMS Agent"
#SSH banner
[ "$(curl -s ifconfig.me)" ] && ipplublic=$(curl -s ifconfig.me)
@ -610,4 +711,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use this credentials to login in the console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.759-220202
Version: 7.0NG.760-220218
Architecture: all
Priority: optional
Section: admin

View File

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

View File

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

View File

@ -19,11 +19,11 @@
<choice id="com.pandorafms.pandorafms_src" visible="false">
<pkg-ref id="com.pandorafms.pandorafms_src"/>
</choice>
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.759" onConclusion="none">pandorafms_src.pdk</pkg-ref>
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.760" onConclusion="none">pandorafms_src.pdk</pkg-ref>
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
</choice>
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.759" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.760" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
<!-- <installation-check script="check()" />
<script>
<![CDATA[

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -47,4 +47,3 @@ License
The project is distributed under the GPL License v2 or later.
Copyright (C) 2004-2011 Pandora FMS development team

View File

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

View File

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

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent
#
%define name pandorafms_agent_unix
%define version 7.0NG.759
%define release 220202
%define version 7.0NG.760
%define release 220218
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent
#
%define name pandorafms_agent_unix
%define version 7.0NG.759
%define release 220202
%define version 7.0NG.760
%define release 220218
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

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

View File

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

View File

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

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.759 Build 220202")
#define PANDORA_VERSION ("7.0NG.760 Build 220218")
string pandora_path;
string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.759(Build 220202))"
VALUE "ProductVersion", "(7.0NG.760(Build 220218))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.759-220202
Version: 7.0NG.760-220218
Architecture: all
Priority: optional
Section: admin

View File

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

View File

@ -89,7 +89,11 @@ if (isset($_GET['loginhash']) === true) {
$config['id_user'] = $loginhash_user;
} else {
include_once 'general/login_page.php';
db_pandora_audit('Logon Failed (loginhash', '', 'system');
db_pandora_audit(
AUDIT_LOG_USER_REGISTRATION,
'Loginhash failed',
'system'
);
while (ob_get_length() > 0) {
ob_end_flush();
}
@ -111,8 +115,8 @@ if (class_exists($auth_class) === false || $public_hash === false) {
} else {
if ($auth_class::validatePublicHash($public_hash) === false) {
db_pandora_audit(
'Invalid public hash',
'Trying to access public dashboard'
AUDIT_LOG_USER_REGISTRATION,
'Trying to access public dashboard (Invalid public hash)'
);
include 'general/noaccess.php';
exit;

View File

@ -284,7 +284,7 @@ function mainAgentsModules()
// ACL Check.
if (! check_acl($config['id_user'], 0, 'AR')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Agent view (Grouped)'
);
include 'general/noaccess.php';
@ -304,7 +304,10 @@ function mainAgentsModules()
db_process_sql_update('tagente_modulo', ['flag' => 1], $where);
} else {
db_pandora_audit('ACL Violation', 'Trying to set flag for groups');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to set flag for groups'
);
include 'general/noaccess.php';
exit;
}

View File

@ -63,7 +63,7 @@ function extension_api_checker()
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Profile Management'
);
include 'general/noaccess.php';

View File

@ -32,7 +32,7 @@ function extension_db_status()
if (!is_user_admin($config['id_user'])) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access db status'
);
include 'general/noaccess.php';

View File

@ -89,7 +89,10 @@ function dbmgr_extension_main()
global $config;
if (!is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
@ -143,7 +146,13 @@ function dbmgr_extension_main()
echo '<strong>An error has occured when querying the database.</strong><br />';
echo $error;
db_pandora_audit('DB Interface Extension', 'Error in SQL', false, false, $sql);
db_pandora_audit(
AUDIT_LOG_SYSTEM,
'DB Interface Extension. Error in SQL',
false,
false,
$sql
);
return;
}
@ -151,7 +160,13 @@ function dbmgr_extension_main()
if (! is_array($result)) {
echo '<strong>Output: <strong>'.$result;
db_pandora_audit('DB Interface Extension', 'SQL', false, false, $sql);
db_pandora_audit(
AUDIT_LOG_SYSTEM,
'DB Interface Extension. SQL',
false,
false,
$sql
);
return;
}

View File

@ -16,7 +16,10 @@ function load_matrix_console()
global $config;
if (! check_acl($config['id_user'], 0, 'ER')) {
db_pandora_audit('ACL Violation', 'Trying to access event viewer');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access event viewer'
);
include 'general/noaccess.php';
return;
}

View File

@ -17,7 +17,7 @@ function extension_uploader_extensions()
if (!check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';
@ -61,7 +61,10 @@ function extension_uploader_extensions()
}
if ($result) {
db_pandora_audit('Extension manager', 'Upload extension '.$_FILES['extension']['name']);
db_pandora_audit(
AUDIT_LOG_EXTENSION_MANAGER,
'Upload extension '.$_FILES['extension']['name']
);
}
ui_print_result_message(

View File

@ -106,7 +106,10 @@ function pandora_files_repo_godmode()
// ACL Check
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit('ACL Violation', 'Trying to access to Files repository');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access to Files repository'
);
include 'general/noaccess.php';
return;
}

View File

@ -58,7 +58,10 @@ function mainInsertData()
ui_print_page_header(__('Insert data'), 'images/extensions.png', false, '', true, '');
if (! check_acl($config['id_user'], 0, 'AW') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}

View File

@ -15,7 +15,10 @@ global $config;
if (is_ajax()) {
if (! check_acl($config['id_user'], 0, 'ER')) {
db_pandora_audit('ACL Violation', 'Trying to access event viewer');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access event viewer'
);
return;
}

View File

@ -33,7 +33,7 @@ check_login();
// ACL Check.
if (!check_acl($config['id_user'], 0, 'AR')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Module Groups view'
);
include 'general/noaccess.php';

View File

@ -56,7 +56,10 @@ function pandoralogs_extension_main()
global $config;
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}

View File

@ -46,7 +46,7 @@ function quickShell()
if (check_acl($config['id_user'], 0, 'PM') === false) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Profile Management'
);
include 'general/noaccess.php';

View File

@ -29,7 +29,10 @@ if (isset($_GET['get_ptr'])) {
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
@ -404,7 +407,10 @@ function resource_exportation_extension_main()
check_login();
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}

View File

@ -143,14 +143,14 @@ function process_upload_xml_report($xml, $group_filter=0)
if ($id_report) {
db_pandora_audit(
'Report management',
AUDIT_LOG_REPORT_MANAGEMENT,
'Create report '.$id_report,
false,
false
);
} else {
db_pandora_audit(
'Report management',
AUDIT_LOG_REPORT_MANAGEMENT,
'Fail to create report',
false,
false
@ -554,7 +554,11 @@ function process_upload_xml_visualmap($xml, $filter_group=0)
);
if ($id_visual_map !== false) {
db_pandora_audit('CREATE VISUAL CONSOLE', $id_visual_map, $config['id_user']);
db_pandora_audit(
AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
sprintf('Create Visual Console #%s', $id_visual_map),
$config['id_user']
);
} else {
break;
}
@ -716,7 +720,11 @@ function process_upload_xml_visualmap($xml, $filter_group=0)
);
if ($id_item !== false) {
db_pandora_audit('CREATE ITEM VISUAL CONSOLE', $values['id_layout'].' - '.$id_item, $config['id_user']);
db_pandora_audit(
AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
sprintf('Create Item %s in Visual Console #%s', $id_item, $values['id_layout']),
$config['id_user']
);
}
} else {
foreach ($agents_in_item as $id => $agent) {
@ -725,7 +733,7 @@ function process_upload_xml_visualmap($xml, $filter_group=0)
$id_item = db_process_sql_insert('tlayout_data', $values);
if (isset($item->other_id)) {
if (isset($item->other_id) === true) {
$relation_other_ids[(string) $item->other_id] = $id_item;
}
@ -736,9 +744,14 @@ function process_upload_xml_visualmap($xml, $filter_group=0)
);
if ($id_item !== false) {
db_pandora_audit('CREATE ITEM VISUAL CONSOLE', $values['id_layout'].' - '.$id_item, $config['id_user']);
db_pandora_audit(
AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
sprintf('Create Item %s in Visual Console #%s', $id_item, $values['id_layout']),
$config['id_user']
);
}
} else {
// TODO: Review this else.
foreach ($agent['modules'] as $id_module => $module) {
$values['id_agent'] = $id;
$values['id_agente_modulo'] = $id_module;
@ -752,7 +765,11 @@ function process_upload_xml_visualmap($xml, $filter_group=0)
);
if ($id_item !== false) {
db_pandora_audit('CREATE ITEM VISUAL CONSOLE', $values['id_layout'].' - '.$id_item, $config['id_user']);
db_pandora_audit(
AUDIT_LOG_VISUAL_CONSOLE_MANAGEMENT,
sprintf('Create Item %s in Visual Console #%s', $id_item, $values['id_layout']),
$config['id_user']
);
}
}
}
@ -1063,7 +1080,10 @@ function resource_registration_extension_main()
global $config;
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
@ -1100,7 +1120,7 @@ function resource_registration_extension_main()
}
echo '<div class=notify>';
echo __('This extension makes registering resource templates easier.').' '.__('Here you can upload a resource template in .ptr format.').' '.__('Please refer to our documentation for more information on how to obtain and use %s resources.', get_product_name()).' '.'<br> <br>'.__('You can get more resurces in our <a href="http://pandorafms.com/Library/Library/">Public Resource Library</a>');
echo __('This extension makes registering resource templates easier.').' '.__('Here you can upload a resource template in .ptr format.').' '.__('Please refer to our documentation for more information on how to obtain and use %s resources.', get_product_name()).' '.'<br> <br>'.__('You can get more resurces in our <a href="https://pandorafms.com/Library/Library/">Public Resource Library</a>');
echo '</div>';
echo '<br /><br />';

View File

@ -117,4 +117,6 @@ mobile/include/style/jquery.mobile-1.3.1.css
godmode/alerts/configure_alert_special_days.php
godmode/admin_access_logs.php
enterprise/extensions/backup/main.php
enterprise/extensions/backup.php
enterprise/extensions/backup.php
mobile/include/javascript/jquery.mobile-1.4.5.js
mobile/include/style/jquery.mobile-1.4.5.css

View File

@ -5,4 +5,17 @@ CREATE INDEX `IDX_tservice_element` ON `tservice_element`(`id_service`,`id_agent
ALTER TABLE `tusuario` ADD COLUMN `local_user` tinyint(1) unsigned NOT NULL DEFAULT 0;
ALTER TABLE tevent_response ADD COLUMN display_command tinyint(1) default 0;
COMMIT;
ALTER TABLE `talert_templates` ADD COLUMN `schedule` TEXT;
ALTER TABLE `tevent_alert` ADD COLUMN `schedule` TEXT;
SOURCE procedures/alertTemplates.sql;
CALL `migrateRanges`();
DROP PROCEDURE `migrateRanges`;
SOURCE procedures/alertEvents.sql;
CALL `migrateEventRanges`();
DROP PROCEDURE `migrateEventRanges`;
ALTER TABLE `tautoconfig` ADD COLUMN `disabled` TINYINT DEFAULT 0;
COMMIT;

View File

@ -0,0 +1,40 @@
CREATE PROCEDURE migrateEventRanges()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE i INT;
DECLARE r TEXT;
DECLARE cur1 CURSOR FOR SELECT `id` FROM `tevent_alert`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
UPDATE `tevent_alert` SET `schedule` = '{"monday":_1_,"tuesday":_2_,"wednesday":_3_,"thursday":_4_,"friday":_5_,"saturday":_6_,"sunday":_7_}';
UPDATE `tevent_alert` SET `time_from` = "00:00:00", `time_to` = "00:00:00" WHERE `time_from` = `time_to`;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO i;
IF done THEN
LEAVE read_loop;
END IF;
SELECT concat('[{"start":"', `time_from`, '","end":"', `time_to`, '"}]') into r FROM `tevent_alert` WHERE `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_1_", r) WHERE `monday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_2_", r) WHERE `tuesday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_3_", r) WHERE `wednesday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_4_", r) WHERE `thursday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_5_", r) WHERE `friday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_6_", r) WHERE `saturday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_7_", r) WHERE `sunday` > 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_1_", '""') WHERE `monday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_2_", '""') WHERE `tuesday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_3_", '""') WHERE `wednesday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_4_", '""') WHERE `thursday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_5_", '""') WHERE `friday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_6_", '""') WHERE `saturday` = 0 AND `id` = i;
UPDATE `tevent_alert` SET `schedule` = REPLACE(`schedule`, "_7_", '""') WHERE `sunday` = 0 AND `id` = i;
END LOOP;
CLOSE cur1;
END ;

View File

@ -0,0 +1,40 @@
CREATE PROCEDURE migrateRanges()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE i INT;
DECLARE r TEXT;
DECLARE cur1 CURSOR FOR SELECT `id` FROM `talert_templates`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
UPDATE `talert_templates` SET `schedule` = '{"monday":_1_,"tuesday":_2_,"wednesday":_3_,"thursday":_4_,"friday":_5_,"saturday":_6_,"sunday":_7_}';
UPDATE `talert_templates` SET `time_from` = "00:00:00", `time_to` = "00:00:00" WHERE `time_from` = `time_to`;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO i;
IF done THEN
LEAVE read_loop;
END IF;
SELECT concat('[{"start":"', `time_from`, '","end":"', `time_to`, '"}]') into r FROM `talert_templates` WHERE `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_1_", r) WHERE `monday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_2_", r) WHERE `tuesday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_3_", r) WHERE `wednesday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_4_", r) WHERE `thursday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_5_", r) WHERE `friday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_6_", r) WHERE `saturday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_7_", r) WHERE `sunday` > 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_1_", '""') WHERE `monday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_2_", '""') WHERE `tuesday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_3_", '""') WHERE `wednesday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_4_", '""') WHERE `thursday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_5_", '""') WHERE `friday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_6_", '""') WHERE `saturday` = 0 AND `id` = i;
UPDATE `talert_templates` SET `schedule` = REPLACE(`schedule`, "_7_", '""') WHERE `sunday` = 0 AND `id` = i;
END LOOP;
CLOSE cur1;
END ;

View File

@ -715,6 +715,7 @@ ALTER TABLE `tevent_alert` ADD COLUMN `id_template_conditions` int(10) unsigned
ALTER TABLE `tevent_alert` ADD COLUMN `id_template_fields` int(10) unsigned NOT NULL default 0;
ALTER TABLE `tevent_alert` ADD COLUMN `last_evaluation` bigint(20) NOT NULL default 0;
ALTER TABLE `tevent_alert` ADD COLUMN `pool_occurrences` int unsigned not null default 0;
ALTER TABLE `tevent_alert` ADD COLUMN `schedule` TEXT;
-- -----------------------------------------------------
-- Table `tevent_alert_action`
@ -1317,6 +1318,7 @@ ALTER TABLE talert_templates ADD COLUMN `field18_recovery` TEXT NOT NULL DEFAULT
ALTER TABLE talert_templates ADD COLUMN `field19_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_templates ADD COLUMN `field20_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE `talert_templates` ADD COLUMN `disable_event` tinyint(1) DEFAULT 0;
ALTER TABLE `talert_templates` ADD COLUMN `schedule` TEXT;
-- ---------------------------------------------------------------------
-- Table `talert_snmp`
@ -1451,13 +1453,13 @@ ALTER TABLE `ttag` MODIFY COLUMN `name` text NOT NULL default '';
INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 51);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 52);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png');
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png');
UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager';
DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise';
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 759);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package', 760);
INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp');
UPDATE `tconfig` SET `value` = 'mini_severity,evento,id_agente,estado,timestamp' WHERE `token` LIKE 'event_fields';
DELETE FROM `tconfig` WHERE `token` LIKE 'integria_api_password';
@ -2186,6 +2188,7 @@ CREATE TABLE IF NOT EXISTS `tautoconfig` (
`name` varchar(100) NOT NULL,
`order` int(11) NOT NULL DEFAULT '0',
`description` text,
`disabled` TINYINT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -26,7 +26,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access HA cluster'
);
include 'general/noaccess.php';

View File

@ -17,7 +17,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'AR') && ! check_acl($config['id_user'], 0, 'AW')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Inventory'
);
include 'general/noaccess.php';

View File

@ -27,7 +27,7 @@ $group = $id_grupo;
if (! check_acl($config['id_user'], $group, 'AW', $id_agente)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager'
);
include 'general/noaccess.php';

View File

@ -154,7 +154,10 @@ ui_require_javascript_file('openlayers.pandora');
$new_agent = (empty($id_agente)) ? true : false;
if (! isset($id_agente) && ! $new_agent) {
db_pandora_audit('ACL Violation', 'Trying to access agent manager witout an agent');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager witout an agent'
);
include 'general/noaccess.php';
return;
}

View File

@ -70,7 +70,7 @@ if (!check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
if (!$access_granted) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager'
);
include 'general/noaccess.php';
@ -198,7 +198,10 @@ if ($create_agent) {
$grupo = (int) get_parameter_post('grupo');
if ((bool) check_acl($config['id_user'], $grupo, 'AW') === false) {
db_pandora_audit('ACL Violation', 'Trying to access agent manager');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager'
);
include $config['homedir'].'/general/noaccess.php';
return;
}
@ -352,7 +355,7 @@ if ($create_agent) {
$unsafe_alias = io_safe_output($alias);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Created agent '.$unsafe_alias,
false,
true,
@ -1243,7 +1246,7 @@ if ($update_agent) {
ui_print_success_message(__('Successfully updated'));
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Updated agent '.io_safe_output($alias),
false,
false,
@ -1259,7 +1262,10 @@ if ($id_agente) {
// This has been done in the beginning of the page, but if an agent was created, this id might change.
$id_grupo = agents_get_agent_group($id_agente);
if (!check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') && !check_acl_one_of_groups($config['id_user'], $all_groups, 'AD')) {
db_pandora_audit('ACL Violation', 'Trying to admin an agent without access');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to admin an agent without access'
);
include 'general/noaccess.php';
exit;
}
@ -1319,7 +1325,7 @@ if ($update_module || $create_module) {
if (! check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to create a module without admin rights'
);
include 'general/noaccess.php';
@ -1803,7 +1809,7 @@ if ($update_module) {
$edit_module = true;
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Fail to try update module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias'])
);
} else {
@ -1827,7 +1833,7 @@ if ($update_module) {
$agent = db_get_row('tagente', 'id_agente', $id_agente);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Updated module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']),
false,
false,
@ -1989,7 +1995,7 @@ if ($create_module) {
$edit_module = true;
$moduletype = $id_module;
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Fail to try added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias'])
);
} else {
@ -2014,7 +2020,7 @@ if ($create_module) {
$agent = db_get_row('tagente', 'id_agente', $id_agente);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']),
false,
true,
@ -2049,12 +2055,12 @@ if ($enable_module) {
$success_action = $result;
if ($result === NOERR) {
db_pandora_audit(
'Module management',
AUDIT_LOG_MODULE_MANAGEMENT,
'Enable #'.$enable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
} else {
db_pandora_audit(
'Module management',
AUDIT_LOG_MODULE_MANAGEMENT,
'Fail to enable #'.$enable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
}
@ -2084,12 +2090,12 @@ if ($disable_module) {
if ($result === NOERR) {
db_pandora_audit(
'Module management',
AUDIT_LOG_MODULE_MANAGEMENT,
'Disable #'.$disable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
} else {
db_pandora_audit(
'Module management',
AUDIT_LOG_MODULE_MANAGEMENT,
'Fail to disable #'.$disable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
}
@ -2133,7 +2139,7 @@ if ($delete_module) {
if (! check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to delete a module without admin rights'
);
include 'general/noaccess.php';
@ -2143,7 +2149,7 @@ if ($delete_module) {
if (empty($module_data) || $id_borrar_modulo < 1) {
db_pandora_audit(
'HACK Attempt',
AUDIT_LOG_HACK_ATTEMPT,
'Expected variable from form is not correct'
);
include 'general/noaccess.php';
@ -2165,7 +2171,7 @@ if ($delete_module) {
$agent = db_get_row('tagente', 'id_agente', $id_agente);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Deleted module '".io_safe_output($module_data['nombre'])."' for agent ".io_safe_output($agent['alias'])
);
}
@ -2206,12 +2212,12 @@ if (!empty($duplicate_module)) {
if ($result) {
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Duplicate module '".$id_duplicate_module."' for agent ".$agent['alias'].' with the new id for clon '.$result
);
} else {
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
"Fail to try duplicate module '".$id_duplicate_module."' for agent ".$agent['alias']
);
}
@ -2225,9 +2231,15 @@ if ($enable_module) {
if ($result === NOERR) {
enterprise_hook('config_agents_enable_module_conf', [$id_agente, $enable_module]);
db_pandora_audit('Module management', 'Enable #'.$enable_module.' | '.$modulo_nombre.' | '.$agent['alias']);
db_pandora_audit(
AUDIT_LOG_MODULE_MANAGEMENT,
'Enable #'.$enable_module.' | '.$modulo_nombre.' | '.$agent['alias']
);
} else {
db_pandora_audit('Module management', 'Fail to enable #'.$enable_module.' | '.$modulo_nombre.' | '.$agent['alias']);
db_pandora_audit(
AUDIT_LOG_MODULE_MANAGEMENT,
'Fail to enable #'.$enable_module.' | '.$modulo_nombre.' | '.$agent['alias']
);
}
ui_print_result_message(
@ -2244,9 +2256,15 @@ if ($disable_module) {
if ($result === NOERR) {
enterprise_hook('config_agents_disable_module_conf', [$id_agente, $disable_module]);
db_pandora_audit('Module management', 'Disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']);
db_pandora_audit(
AUDIT_LOG_MODULE_MANAGEMENT,
'Disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']
);
} else {
db_pandora_audit('Module management', 'Fail to disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']);
db_pandora_audit(
AUDIT_LOG_MODULE_MANAGEMENT,
'Fail to disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']
);
}
ui_print_result_message(

View File

@ -16,7 +16,10 @@ global $config;
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit('ACL Violation', 'Trying to access Group Management2');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';
return;
}

View File

@ -18,7 +18,7 @@ check_login();
if (!check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';

View File

@ -58,7 +58,7 @@ if (! check_acl(
)
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager'
);
include 'general/noaccess.php';
@ -158,7 +158,7 @@ if ($agent_to_delete) {
} else {
// NO permissions.
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
"Trying to delete agent \'".agents_get_name($id_agente)."\'"
);
include 'general/noaccess.php';
@ -219,12 +219,12 @@ if ($enable_agent) {
]
);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Enable '.$alias
);
} else {
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Fail to enable '.$alias
);
}
@ -262,12 +262,12 @@ if ($disable_agent) {
);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Disable '.$alias
);
} else {
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Fail to disable '.$alias
);
}

View File

@ -144,7 +144,7 @@ if ($prediction_available) {
$modules['predictionserver'] = __('Create a new prediction server module');
}
if (is_metaconsole() === true || $web_available === '1') {
if (is_metaconsole() === true || $web_available >= '1') {
$modules['webserver'] = __('Create a new web Server module');
}
@ -238,7 +238,7 @@ echo '</table>';
if (!$config['disable_help']) {
echo '<div class="disable_help">';
echo '<strong>';
echo "<a class='color-black-grey invert_filter' target='_blank' href='http://pandorafms.com/Library/Library/'>".__('Get more modules on Monitoring Library').'</a>';
echo "<a class='color-black-grey invert_filter' target='_blank' href='https://pandorafms.com/Library/Library/'>".__('Get more modules on Monitoring Library').'</a>';
echo '</strong>';
echo '</div>';
}
@ -261,7 +261,7 @@ if ($module_action === 'delete') {
if (! check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to delete a module without admin rights'
);
include 'general/noaccess.php';

View File

@ -549,7 +549,7 @@ if ($is_function_policies !== ENTERPRISE_NOT_HOOK) {
);
db_pandora_audit(
'Agent management',
AUDIT_LOG_AGENT_MANAGEMENT,
'Re-link module '.$id_agent_module
);
}
@ -562,7 +562,10 @@ if ($is_function_policies !== ENTERPRISE_NOT_HOOK) {
__('Module will be unlinked in the next application')
);
db_pandora_audit('Agent management', 'Unlink module '.$id_agent_module);
db_pandora_audit(
AUDIT_LOG_AGENT_MANAGEMENT,
'Unlink module '.$id_agent_module
);
}
}
@ -582,7 +585,7 @@ if ($__code_from !== 'policies') {
if (!$tag_acl) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent manager'
);
include 'general/noaccess.php';

View File

@ -73,7 +73,7 @@ if ($edit_networkmap) {
if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access networkmap'
);
include 'general/noaccess.php';

View File

@ -38,7 +38,7 @@ $agent_w = check_acl($config['id_user'], 0, 'AW');
$access = ($agent_d == true) ? 'AD' : (($agent_w == true) ? 'AW' : 'AD');
if (!$agent_d && !$agent_w) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -170,7 +170,7 @@ if ($delete_downtime_agent === 1) {
|| !in_array($downtime_group, $user_groups_ad)
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -189,7 +189,7 @@ if ($delete_downtime_agent === 1) {
|| !in_array($agent_group, $user_groups_ad)
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -266,7 +266,7 @@ if ($create_downtime || $update_downtime) {
// Check AD permission on new downtime.
if (!in_array($id_group, $user_groups_ad)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -324,7 +324,7 @@ if ($create_downtime || $update_downtime) {
// Check AD permission on OLD downtime.
if (empty($old_downtime) || !in_array($old_downtime['id_group'], $user_groups_ad)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -334,7 +334,7 @@ if ($create_downtime || $update_downtime) {
// Check AD permission on NEW downtime group.
if (!in_array($id_group, $user_groups_ad)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -498,7 +498,7 @@ if ($id_downtime > 0) {
// Permission check for the downtime with the AD user groups
if (empty($result) || !in_array($result['id_group'], $user_groups_ad)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -1093,7 +1093,7 @@ function insert_downtime_agent($id_downtime, $user_groups_ad)
|| !in_array($downtime_group, $user_groups_ad)
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';

View File

@ -23,7 +23,10 @@ require_once '../../include/functions_reporting.php';
$config['id_user'] = $_SESSION['id_usuario'];
if (! check_acl($config['id_user'], 0, 'AR')) {
db_pandora_audit('ACL Violation', 'Trying to access downtime scheduler');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
return;
}

View File

@ -23,7 +23,7 @@ $access = ($read_permisson == true) ? 'AR' : (($write_permisson == true) ? 'AD'
if (! $read_permisson && !$manage_permisson) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -70,7 +70,7 @@ if ($stop_downtime) {
// Check AD permission on the downtime
if (empty($downtime) || (! check_acl($config['id_user'], $downtime['id_group'], 'AD') && ! check_acl($config['id_user'], $downtime['id_group'], 'AW'))) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';
@ -94,7 +94,7 @@ if ($delete_downtime) {
// Check AD permission on the downtime
if (empty($downtime) || (! check_acl($config['id_user'], $downtime['id_group'], 'AD') && ! check_acl($config['id_user'], $downtime['id_group'], 'AW'))) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access downtime scheduler'
);
include 'general/noaccess.php';

View File

@ -20,7 +20,7 @@ if (! check_acl($config['id_user'], 0, 'AR')
&& ! check_acl($config['id_user'], 0, 'AM')
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Agent Management'
);
include 'general/noaccess.php';

View File

@ -42,7 +42,7 @@ enterprise_hook('open_meta_frame');
if (! check_acl($config['id_user'], 0, 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert actions'
);
include 'general/noaccess.php';
@ -104,7 +104,7 @@ if ($copy_action) {
// Then action group have to be in his own groups.
if (!$is_in_group) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -115,17 +115,14 @@ if ($copy_action) {
$result = alerts_clone_alert_action($id, $al_action['id_group']);
if ($result) {
db_pandora_audit(
'Command management',
'Duplicate alert action '.$id.' clone to '.$result
);
} else {
db_pandora_audit(
'Command management',
'Fail try to duplicate alert action '.$id
);
}
$auditMessage = ((bool) $result === true)
? sprintf('Duplicate alert action %s clone to %s', $id, $result)
: sprintf('Fail try to duplicate alert action %s', $id);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
$auditMessage
);
ui_print_result_message(
$result,
@ -145,7 +142,7 @@ if ($delete_action) {
if (!check_acl_restricted_all($config['id_user'], $al_action['id_group'], 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -158,7 +155,7 @@ if ($delete_action) {
// Then must have "PM" access privileges.
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -182,7 +179,7 @@ if ($delete_action) {
// Then action group have to be in his own groups.
if (!$is_in_group) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -194,17 +191,14 @@ if ($delete_action) {
$result = alerts_delete_alert_action($id);
if ($result) {
db_pandora_audit(
'Command management',
'Delete alert action #'.$id
);
} else {
db_pandora_audit(
'Command management',
'Fail try to delete alert action #'.$id
);
}
$auditMessage = ((bool) $result === true)
? sprintf('Delete alert action #%s', $id)
: sprintf('Fail try to delete alert action #%s', $id);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
$auditMessage
);
ui_print_result_message(
$result,

View File

@ -21,7 +21,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -538,9 +538,20 @@ if ($create_command) {
}
if ($result) {
db_pandora_audit('Command management', 'Create alert command #'.$result, false, false, $info);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Create alert command #'.$result,
false,
false,
$info
);
} else {
db_pandora_audit('Command management', 'Fail try to create alert command', false, false);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail try to create alert command',
false,
false
);
}
// Show errors.
@ -570,7 +581,7 @@ if ($delete_command) {
// Internal commands cannot be deleted.
if (alerts_get_alert_command_internal($id)) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -579,11 +590,14 @@ if ($delete_command) {
$result = alerts_delete_alert_command($id);
if ($result) {
db_pandora_audit('Command management', 'Delete alert command #'.$id);
} else {
db_pandora_audit('Command management', 'Fail try to delete alert command #'.$id);
}
$auditMessage = ((bool) $result === true)
? sprintf('Delete alert command #%s', $id)
: sprintf('Fail try to delete alert command #%s', $id);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
$auditMessage
);
ui_print_result_message(
$result,

View File

@ -18,7 +18,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'LW')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';

View File

@ -22,7 +22,7 @@ if (! check_acl($config['id_user'], 0, 'LW')
&& ! check_acl($config['id_user'], 0, 'LM')
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';

View File

@ -21,7 +21,7 @@ if (! check_acl($config['id_user'], 0, 'LW')
&& ! check_acl($config['id_user'], 0, 'LM')
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -146,7 +146,7 @@ if ($create_alert) {
$unsafe_agent_alias = io_safe_output($agent_alias);
if ($id) {
db_pandora_audit(
'Alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
"Added alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'",
false,
false,
@ -154,7 +154,7 @@ if ($create_alert) {
);
} else {
db_pandora_audit(
'Alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
"Fail Added alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'"
);
}
@ -217,12 +217,12 @@ if ($delete_alert) {
if ($result) {
db_pandora_audit(
'Alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
"Deleted alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'"
);
} else {
db_pandora_audit(
'Alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
"Fail to deleted alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'"
);
}
@ -255,9 +255,15 @@ if ($add_action) {
$result = alerts_add_alert_agent_module_action($id_alert_module, $id_action, $values);
if ($result) {
db_pandora_audit('Alert management', 'Add action '.$id_action.' in alert '.$id_alert_module);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Add action '.$id_action.' in alert '.$id_alert_module
);
} else {
db_pandora_audit('Alert management', 'Fail to add action '.$id_action.' in alert '.$id_alert_module);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to add action '.$id_action.' in alert '.$id_alert_module
);
}
$messageAction = ui_print_result_message(
@ -290,9 +296,15 @@ if ($update_action) {
$result = alerts_update_alert_agent_module_action($id_module_action, $values);
if ($result) {
db_pandora_audit('Alert management', 'Update action '.$id_action.' in alert '.$id_alert_module);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Update action '.$id_action.' in alert '.$id_alert_module
);
} else {
db_pandora_audit('Alert management', 'Fail to updated action '.$id_action.' in alert '.$id_alert_module);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to updated action '.$id_action.' in alert '.$id_alert_module
);
}
$messageAction = ui_print_result_message(
@ -311,9 +323,15 @@ if ($delete_action) {
$result = alerts_delete_alert_agent_module_action($id_action);
if ($result) {
db_pandora_audit('Alert management', 'Delete action '.$id_action.' in alert '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Delete action '.$id_action.' in alert '.$id_alert
);
} else {
db_pandora_audit('Alert management', 'Fail to delete action '.$id_action.' in alert '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to delete action '.$id_action.' in alert '.$id_alert
);
}
$messageAction = ui_print_result_message(
@ -332,9 +350,15 @@ if ($enable_alert) {
$result = alerts_agent_module_disable($id_alert, false);
if ($result) {
db_pandora_audit('Alert management', 'Enable '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Enable '.$id_alert
);
} else {
db_pandora_audit('Alert management', 'Fail to enable '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to enable '.$id_alert
);
}
$messageAction = ui_print_result_message(
@ -353,9 +377,15 @@ if ($disable_alert) {
$result = alerts_agent_module_disable($id_alert, true);
if ($result) {
db_pandora_audit('Alert management', 'Disable '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Disable '.$id_alert
);
} else {
db_pandora_audit('Alert management', 'Fail to disable '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to disable '.$id_alert
);
}
$messageAction = ui_print_result_message(
@ -374,9 +404,15 @@ if ($standbyon_alert) {
$result = alerts_agent_module_standby($id_alert, true);
if ($result) {
db_pandora_audit('Alert management', 'Standby '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Standby '.$id_alert
);
} else {
db_pandora_audit('Alert management', 'Fail to standby '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to standby '.$id_alert
);
}
$messageAction = ui_print_result_message(
@ -395,9 +431,15 @@ if ($standbyoff_alert) {
$result = alerts_agent_module_standby($id_alert, false);
if ($result) {
db_pandora_audit('Alert management', 'Standbyoff '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Standbyoff '.$id_alert
);
} else {
db_pandora_audit('Alert management', 'Fail to standbyoff '.$id_alert);
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail to standbyoff '.$id_alert
);
}
$messageAction = ui_print_result_message(

View File

@ -108,7 +108,7 @@ if (is_ajax()) {
if (! check_acl($config['id_user'], 0, 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -118,12 +118,7 @@ if (! check_acl($config['id_user'], 0, 'LM')) {
$update_template = (bool) get_parameter('update_template');
$delete_template = (bool) get_parameter('delete_template');
$pure = get_parameter('pure', 0);
if (defined('METACONSOLE')) {
$sec = 'advanced';
} else {
$sec = 'galertas';
}
$sec = (is_metaconsole() === true) ? 'advanced' : 'galertas';
// This prevents to duplicate the header in
// case delete_templete action is performed.
@ -175,7 +170,7 @@ if ($delete_template) {
if ($al_template['id_group'] == 0) {
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -217,7 +212,7 @@ if ($delete_template) {
}
} else {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -242,12 +237,12 @@ if ($delete_template) {
if ($result) {
db_pandora_audit(
'Template alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
'Delete alert template #'.$id
);
} else {
db_pandora_audit(
'Template alert management',
AUDIT_LOG_ALERT_MANAGEMENT,
'Fail try to delete alert template #'.$id
);
}

View File

@ -1,24 +1,39 @@
<?php
/**
* Alerts details for agent.
*
* @category Alert
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation 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
// Load global vars.
global $config;
check_login();
if (! check_acl($config['id_user'], 0, 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert View (In management section)'
);
include 'general/noaccess.php';
@ -28,7 +43,7 @@ if (! check_acl($config['id_user'], 0, 'LM')) {
enterprise_include_once('include/functions_policies.php');
$id_alert = get_parameter('id_alert', 0);
// ID given as parameter
// ID given as parameter.
$alert = alerts_get_alert_agent_module($id_alert);
$template = alerts_get_alert_template($alert['id_alert_template']);
$actions = alerts_get_alert_agent_module_actions($id_alert);
@ -36,19 +51,27 @@ $agent_alias = modules_get_agentmodule_agent_alias($alert['id_agent_module']);
$agent = modules_get_agentmodule_agent($alert['id_agent_module']);
$module_name = modules_get_agentmodule_name($alert['id_agent_module']);
// Default action
// Default action.
$default_action = $template['id_alert_action'];
if ($default_action != 0) {
$default_action = alerts_get_alert_action($default_action);
$default_action['name'] .= ' '.'('.__('Default').')';
$default_action['name'] .= ' ('.__('Default').')';
$default_action['default'] = 1;
$default_action['module_action_threshold'] = '0';
}
// Header
ui_print_page_header(__('Alert details'), 'images/op_alerts.png', false, '', false, '');
// Header.
ui_print_page_header(
__('Alert details'),
'images/op_alerts.png',
false,
'',
false,
''
);
// TABLE DETAILS
// TABLE DETAILS.
$table_details = new stdClass;
$table_details->class = 'databox';
$table_details->width = '100%';
$table_details->size = [];
@ -103,7 +126,7 @@ $data[1] = '<span title="'.$priorities[$template['priority']].'" class="'.get_pr
$table_details->data[] = $data;
$data[0] = __('Stand by');
$data[1] = $alert['standby'] == 1 ? __('Yes') : __('No');
$data[1] = ($alert['standby'] == 1) ? __('Yes') : __('No');
$table_details->data[] = $data;
if (enterprise_installed() && $alert['id_policy_alerts'] != 0) {
@ -113,7 +136,13 @@ if (enterprise_installed() && $alert['id_policy_alerts'] != 0) {
} else {
$img = 'images/policies_mc.png';
$policy = '<a href="?sec=gmodules&amp;sec2=enterprise/godmode/policies/policies&amp;id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
$policy = '<a href="?sec=gmodules&amp;sec2=enterprise/godmode/policies/policies&amp;id='.$policyInfo['id'].'">';
$policy .= html_print_image(
$img,
true,
['title' => $policyInfo['name']]
);
$policy .= '</a>';
}
$data[0] = __('Policy');
@ -121,8 +150,7 @@ if (enterprise_installed() && $alert['id_policy_alerts'] != 0) {
$table_details->data[] = $data;
}
// TABLE DETAILS END
// TABLE CONDITIONS
$table_conditions = new stdClass;
$table_conditions->class = 'databox';
$table_conditions->width = '100%';
$table_conditions->size = [];
@ -155,9 +183,13 @@ switch ($template['type']) {
case 'max_min':
if ($template['matches_value']) {
$condition = __('The alert would fire when the value is between <span id="min"></span> and <span id="max"></span>');
$condition = __(
'The alert would fire when the value is between <span id="min"></span> and <span id="max"></span>'
);
} else {
$condition = __('The alert would fire when the value is not between <span id="min"></span> and <span id="max"></span>');
$condition = __(
'The alert would fire when the value is not between <span id="min"></span> and <span id="max"></span>'
);
}
$condition = str_replace('<span id="min"></span>', $template['min_value'], $condition);
@ -200,111 +232,27 @@ switch ($template['type']) {
case 'always':
$condition = __('Always');
break;
default:
// Not possible.
break;
}
$data[0] = $condition;
$table_conditions->data[] = $data;
// DAYS
$table_days->class = 'databox alert_days';
$table_days->width = '100%';
$table_days->size = [];
$table_days->data = [];
$table_days->style = [];
$table_days->styleTable = 'padding: 1px; margin: 0px; text-align: center; height: 80px;';
$table_days->head[0] = __('Mon');
$table_days->head[1] = __('Tue');
$table_days->head[2] = __('Wed');
$table_days->head[3] = __('Thu');
$table_days->head[4] = __('Fri');
$table_days->head[5] = __('Sat');
$table_days->head[6] = __('Sun');
$table_days->data[0] = array_fill(0, 7, html_print_image('images/blade.png', true));
$table_conditions->colspan[1][0] = 2;
$schedule = io_safe_output(
$template['schedule']
);
$days = [];
if ($template['monday']) {
$table_days->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['tuesday']) {
$table_days->data[0][1] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['wednesday']) {
$table_days->data[0][2] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['thursday']) {
$table_days->data[0][3] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['friday']) {
$table_days->data[0][4] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['saturday']) {
$table_days->data[0][5] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
if ($template['sunday']) {
$table_days->data[0][6] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
$data[0] = html_print_table($table_days, true);
unset($table_days);
// TIME
$table_time->class = 'databox alert_time';
$table_time->width = '100%';
$table_time->size = [];
$table_time->data = [];
$table_time->style = [];
$table_time->styleTable = 'padding: 1px; margin: 0px; text-align: center; height: 80px; width: 100%;';
// $data[0] = __('Time from') . ' / ' . __('Time to');
if ($template['time_from'] == $template['time_to']) {
$table_time->head[0] = '00:00:00<br>-<br>23:59:59';
$table_time->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
} else {
$from_array = explode(':', $template['time_from']);
$from = ($from_array[0] * SECONDS_1HOUR + $from_array[1] * SECONDS_1MINUTE + $from_array[2]);
$to_array = explode(':', $template['time_to']);
$to = ($to_array[0] * SECONDS_1HOUR + $to_array[1] * SECONDS_1MINUTE + $to_array[2]);
if ($to > $from) {
if ($template['time_from'] != '00:00:00') {
$table_time->head[0] = '00:00:00<br>-<br>'.$template['time_from'];
$table_time->data[0][0] = html_print_image('images/blade.png', true);
}
$table_time->head[1] = $template['time_from'].'<br>-<br>'.$template['time_to'];
$table_time->data[0][1] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
if ($template['time_to'] != '23:59:59') {
$table_time->head[2] = $template['time_to'].'<br>-<br>23:59:59';
$table_time->data[0][2] = html_print_image('images/blade.png', true);
}
} else {
if ($template['time_to'] != '00:00:00') {
$table_time->head[0] = '00:00:00<br>-<br>'.$template['time_to'];
$table_time->data[0][0] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
$table_time->head[1] = $template['time_to'].'<br>-<br>'.$template['time_from'];
$table_time->data[0][1] = html_print_image('images/blade.png', true, ['class' => 'invert_filter']);
if ($template['time_from'] != '23:59:59') {
$table_time->head[2] = $template['time_from'].'<br>-<br>23:59:59';
$table_time->data[0][2] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
}
}
$data[1] = $template['time_from'].' / '.$template['time_to'];
}
$data[1] = html_print_table($table_time, true);
unset($table_time);
$data[0] = '';
$data[0] .= html_print_input_hidden('schedule', $schedule, true);
$data[0] .= '<div id="calendar_map"></div>';
$data[1] = '';
$table_conditions->data[] = $data;
$data[0] = __('Use special days list');
@ -319,7 +267,8 @@ $data[0] = __('Number of alerts').' ('.__('Min').'/'.__('Max').')';
$data[1] = $template['min_alerts'].'/'.$template['max_alerts'];
$table_conditions->data[] = $data;
// TABLE CONDITIONS END
// TABLE CONDITIONS END.
$table = new stdClass;
$table->class = 'alert_list databox';
$table->width = '98%';
$table->size = [];
@ -339,7 +288,8 @@ unset($table);
$actions = alerts_get_actions_escalation($actions, $default_action);
// ESCALATION
// ESCALATION.
$table = new stdClass;
$table->class = 'alert_list databox alternate alert_escalation';
$table->width = '98%';
$table->size = [];
@ -354,19 +304,33 @@ $table->style[0] = 'font-weight: bold; text-align: left;';
if (count($actions) == 1 && isset($actions[0])) {
$table->head[1] = __('Every time that the alert is fired');
$table->data[0][0] = $actions[0]['name'];
$table->data[0][1] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
$table->data[0][1] = html_print_image(
'images/tick.png',
true,
['class' => 'invert_filter']
);
} else {
foreach ($actions as $kaction => $action) {
$table->data[$kaction][0] = $action['name'];
if ($kaction == 0) {
$table->data[$kaction][0] .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true);
if ((int) $kaction === 0) {
$table->data[$kaction][0] .= ui_print_help_tip(
__('The default actions will be executed every time that the alert is fired and no other action is executed'),
true
);
}
foreach ($action['escalation'] as $k => $v) {
if ($v > 0) {
$table->data[$kaction][$k] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']);
$table->data[$kaction][$k] = html_print_image(
'images/tick.png',
true,
['class' => 'invert_filter']
);
} else {
$table->data[$kaction][$k] = html_print_image('images/blade.png', true);
$table->data[$kaction][$k] = html_print_image(
'images/blade.png',
true
);
}
if (count($table->head) <= count($action['escalation'])) {
@ -382,12 +346,16 @@ if (count($actions) == 1 && isset($actions[0])) {
}
}
$action_threshold = $action['module_action_threshold'] > 0 ? $action['module_action_threshold'] : $action['action_threshold'];
$action_threshold = ($action['module_action_threshold'] > 0) ? $action['module_action_threshold'] : $action['action_threshold'];
if ($action_threshold == 0) {
$table->data[$kaction][($k + 1)] = __('No');
} else {
$table->data[$kaction][($k + 1)] = human_time_description_raw($action_threshold, true, 'tiny');
$table->data[$kaction][($k + 1)] = human_time_description_raw(
$action_threshold,
true,
'tiny'
);
}
$table->head[($k + 1)] = __('Threshold');
@ -397,7 +365,8 @@ if (count($actions) == 1 && isset($actions[0])) {
html_print_table($table);
unset($table);
echo '</div>';
// ESCALATION TABLE
// ESCALATION TABLE.
$table = new stdClass;
$table->class = 'alert_list databox';
$table->width = '98%';
$table->size = [];
@ -405,7 +374,7 @@ $table->head = [];
$table->data = [];
$table->rowstyle[1] = 'font-weight: bold;';
if ($default_action != 0) {
if ((int) $default_action != 0) {
$actions_select[0] = $default_action['name'];
}
@ -416,17 +385,43 @@ foreach ($actions as $kaction => $action) {
$table->data[0][0] = __('Select the desired action and mode to see the Firing/Recovery fields for this action');
$table->colspan[0][0] = 2;
$table->data[1][0] = __('Action').'<br>'.html_print_select($actions_select, 'firing_action_select', -1, '', __('Select the action'), -1, true, false, false);
$table->data[1][0] = __('Action');
$table->data[1][0] .= '<br>';
$table->data[1][0] .= html_print_select(
$actions_select,
'firing_action_select',
-1,
'',
__('Select the action'),
-1,
true,
false,
false
);
$modes = [];
$modes['firing'] = __('Firing');
$modes['recovering'] = __('Recovering');
$table->data[1][1] = '<div class="action_details invisible" >'.__('Mode').'<br>'.html_print_select($modes, 'modes', 'firing', '', '', 0, true, false, false).'</div>';
$table->data[1][1] = '<div class="action_details invisible" >';
$table->data[1][1] .= __('Mode');
$table->data[1][1] .= '<br>';
$table->data[1][1] .= html_print_select(
$modes,
'modes',
'firing',
'',
'',
0,
true,
false,
false
);
$table->data[1][1] .= '</div>';
html_print_table($table);
unset($table);
$table = new stdClass;
$table->class = 'alert_list databox alternate';
$table->width = '98%';
$table->size = [];
@ -437,13 +432,33 @@ $table->style[1] = 'width: 30%;';
$table->style[2] = 'width: 30%;';
$table->style[3] = 'font-weight: bold; width: 30%;';
$table->title = __('Firing fields').ui_print_help_tip(__('Fields passed to the command executed by this action when the alert is fired'), true);
$table->title = __('Firing fields');
$table->title .= ui_print_help_tip(
__('Fields passed to the command executed by this action when the alert is fired'),
true
);
$table->head[0] = __('Field').ui_print_help_tip(__('Fields configured on the command associated to the action'), true);
$table->head[1] = __('Template fields').ui_print_help_tip(__('Triggering fields configured in template'), true);
$table->head[2] = __('Action fields').ui_print_help_tip(__('Triggering fields configured in action'), true);
$table->head[0] = __('Field');
$table->head[0] .= ui_print_help_tip(
__('Fields configured on the command associated to the action'),
true
);
$table->head[1] = __('Template fields');
$table->head[1] .= ui_print_help_tip(
__('Triggering fields configured in template'),
true
);
$table->head[2] = __('Action fields');
$table->head[2] .= ui_print_help_tip(
__('Triggering fields configured in action'),
true
);
$table->head[3] = __('Executed on firing').ui_print_help_tip(__('Fields used on execution when the alert is fired'), true);
$table->head[3] = __('Executed on firing');
$table->head[3] .= ui_print_help_tip(
__('Fields used on execution when the alert is fired'),
true
);
$firing_fields = [];
@ -456,14 +471,12 @@ foreach ($actions as $kaction => $action) {
$descriptions = json_decode($command['fields_descriptions'], true);
foreach ($descriptions as $kdesc => $desc) {
if (empty($desc)) {
// continue;
}
$field = 'field'.($kdesc + 1);
$data = [];
$data[0] = $firing_fields[$kaction]['description'][$field] = $desc;
if (!empty($data[0])) {
$data[0] = $desc;
$firing_fields[$kaction]['description'][$field] = $desc;
if (empty($data[0]) === false) {
$data[0] = '<b>'.$data[0].'</b><br>';
}
@ -473,12 +486,14 @@ foreach ($actions as $kaction => $action) {
).')</span>';
$data[1] = $template[$field];
$data[2] = $action[$field];
$data[3] = $firing_fields[$kaction]['value'][$field] = empty($action[$field]) ? $template[$field] : $action[$field];
$data[3] = (empty($action[$field]) === true) ? $template[$field] : $action[$field];
$firing_fields[$kaction]['value'][$field] = (empty($action[$field]) === true) ? $template[$field] : $action[$field];
$first_level = $template[$field];
$second_level = $action[$field];
if (!empty($second_level) || !empty($first_level)) {
if (empty($second_level)) {
if (empty($second_level) === false || empty($first_level) === false) {
if (empty($second_level) === false) {
$table->cellclass[count($table->data)][1] = 'used_field';
$table->cellclass[count($table->data)][2] = 'empty_field';
} else {
@ -493,7 +508,7 @@ foreach ($actions as $kaction => $action) {
$table->rowclass[] = 'firing_action firing_action_'.$kaction;
if ($command_preview != 'Internal type') {
if ($command_preview !== 'Internal type') {
$command_preview = str_replace('_'.$field.'_', $data[3], $command_preview);
}
}
@ -504,20 +519,32 @@ foreach ($actions as $kaction => $action) {
echo '<div class="mode_table mode_table_firing action_details invisible w100p">';
html_print_table($table);
unset($table);
foreach ($actions as $kaction => $action) {
echo '<div class="firing_action firing_action_'.$kaction.' invisible">';
ui_print_info_message(['title' => __('Command preview'), 'message' => $firing_fields[$kaction]['command_preview'], 'no_close' => true]);
ui_print_info_message(
[
'title' => __('Command preview'),
'message' => $firing_fields[$kaction]['command_preview'],
'no_close' => true,
]
);
echo '</div>';
}
echo '</div>';
// Firing table
// Firing table.
echo '<div class="mode_table mode_table_recovering action_details invisible w100p" >';
if ($template['recovery_notify'] == 0) {
ui_print_info_message(['title' => __('Disabled'), 'message' => __('The alert recovering is disabled on this template.'), 'no_close' => true]);
if ((int) $template['recovery_notify'] === 0) {
ui_print_info_message(
[
'title' => __('Disabled'),
'message' => __('The alert recovering is disabled on this template.'),
'no_close' => true,
]
);
} else {
$table = new stdClass;
$table->class = 'alert_list databox alternate';
$table->width = '98%';
$table->size = [];
@ -528,13 +555,37 @@ if ($template['recovery_notify'] == 0) {
$table->style[2] = 'width: 25%;';
$table->style[3] = 'width: 25%;';
$table->style[3] = 'font-weight: bold; width: 25%;';
$table->title = __('Recovering fields').ui_print_help_tip(__('Fields passed to the command executed by this action when the alert is recovered'), true);
$table->title = __('Recovering fields');
$table->title .= ui_print_help_tip(
__('Fields passed to the command executed by this action when the alert is recovered'),
true
);
$table->head[0] = __('Field').ui_print_help_tip(__('Fields configured on the command associated to the action'), true);
$table->head[1] = __('Firing fields').ui_print_help_tip(__('Fields used on execution when the alert is fired'), true);
$table->head[2] = __('Template recovery fields').ui_print_help_tip(__('Recovery fields configured in alert template'), true);
$table->head[3] = __('Action recovery fields').ui_print_help_tip(__('Recovery fields configured in alert action'), true);
$table->head[4] = __('Executed on recovery').ui_print_help_tip(__('Fields used on execution when the alert is recovered'), true);
$table->head[0] = __('Field');
$table->head[0] .= ui_print_help_tip(
__('Fields configured on the command associated to the action'),
true
);
$table->head[1] = __('Firing fields');
$table->head[1] .= ui_print_help_tip(
__('Fields used on execution when the alert is fired'),
true
);
$table->head[2] = __('Template recovery fields');
$table->head[2] .= ui_print_help_tip(
__('Recovery fields configured in alert template'),
true
);
$table->head[3] = __('Action recovery fields');
$table->head[3] .= ui_print_help_tip(
__('Recovery fields configured in alert action'),
true
);
$table->head[4] = __('Executed on recovery');
$table->head[4] .= ui_print_help_tip(
__('Fields used on execution when the alert is recovered'),
true
);
$table->style[4] = 'font-weight: bold;';
foreach ($firing_fields as $kaction => $firing) {
@ -544,7 +595,7 @@ if ($template['recovery_notify'] == 0) {
foreach ($firing['description'] as $field => $desc) {
$data[0] = $desc;
if (!empty($data[0])) {
if (empty($data[0]) === false) {
$data[0] = '<b>'.$data[0].'</b><br>';
}
@ -560,14 +611,14 @@ if ($template['recovery_notify'] == 0) {
$first_level = $data[1];
$second_level = $data[2];
$third_level = $data[3];
if (!empty($third_level) || !empty($second_level) || !empty($first_level)) {
if (!empty($third_level)) {
if (empty($third_level) === false || empty($second_level) === false || empty($first_level) === false) {
if (empty($third_level) === false) {
$table->cellclass[count($table->data)][1] = 'overrided_field';
$table->cellclass[count($table->data)][2] = 'overrided_field';
$table->cellclass[count($table->data)][3] = 'used_field';
$data[4] = $data[3];
} else if (!empty($second_level)) {
} else if (empty($second_level) === false) {
$table->cellclass[count($table->data)][1] = 'overrided_field';
$table->cellclass[count($table->data)][2] = 'used_field';
$table->cellclass[count($table->data)][3] = 'empty_field';
@ -578,8 +629,8 @@ if ($template['recovery_notify'] == 0) {
$table->cellclass[count($table->data)][2] = 'empty_field';
$table->cellclass[count($table->data)][3] = 'empty_field';
// All fields but field1 will have [RECOVER] prefix if no recovery fields are configured
$data[4] = $fieldn == 1 ? $data[1] : '[RECOVER]'.$data[1];
// All fields but field1 will have [RECOVER] prefix if no recovery fields are configured.
$data[4] = ((int) $fieldn === 1) ? $data[1] : '[RECOVER]'.$data[1];
}
}
@ -588,7 +639,7 @@ if ($template['recovery_notify'] == 0) {
$table->rowclass[] = 'firing_action firing_action_'.$kaction;
if ($command_preview != 'Internal type') {
if ($command_preview !== 'Internal type') {
$command_preview = str_replace('_'.$field.'_', $data[4], $command_preview);
}
@ -598,16 +649,85 @@ if ($template['recovery_notify'] == 0) {
html_print_table($table);
unset($table);
ui_print_info_message(['title' => __('Command preview'), 'message' => $command_preview, 'no_close' => true]);
ui_print_info_message(
[
'title' => __('Command preview'),
'message' => $command_preview,
'no_close' => true,
]
);
}
echo '</div>';
// Recovering table
ui_require_css_file('main.min', 'include/javascript/fullcalendar/');
ui_require_javascript_file('main.min', 'include/javascript/fullcalendar/');
ui_require_javascript_file('pandora_fullcalendar');
?>
<script language="javascript" type="text/javascript">
$(document).ready (function () {
var calendarEl = document.getElementById('calendar_map');
if(calendarEl){
var eventsBBDD = $("#hidden-schedule").val();
if(eventsBBDD === '' || eventsBBDD === 'Array') {
eventsBBDD = '';
}
var events = loadEventBBDD(eventsBBDD);
var options = {
contentHeight: "auto",
headerToolbar: {
left: "",
center: "",
right: ''
},
buttonText: {},
dayHeaderFormat: { weekday: "short" },
initialView: "dayGridWeek",
navLinks: false,
selectable: true,
selectMirror: true,
slotDuration: "01:00:00",
slotLabelInterval: "02:00:00",
snapDuration: "01:00:00",
slotMinTime: "00:00:00",
slotMaxTime: "24:00:00",
scrollTime: "01:00:00",
locale: "en-GB",
firstDay: 1,
eventTimeFormat: {
hour: "numeric",
minute: "2-digit",
hour12: false
},
eventColor: "#82b92e",
editable: false,
dayMaxEvents: 3,
dayPopoverFormat: { weekday: "long" },
defaultAllDay: false,
displayEventTime: true,
displayEventEnd: true,
selectOverlap: false,
eventOverlap: false,
allDaySlot: true,
droppable: false,
select: false,
selectAllow: false,
eventAllow: false,
eventDrop: false,
eventDragStop: false,
eventResize: false,
eventMouseEnter: false,
eventMouseLeave: false,
eventClick: false,
};
var settings = {}
var calendar = fullCalendarPandora(calendarEl, options, settings, events);
calendar.render();
}
});
$('#firing_action_select').change(function() {
@ -619,8 +739,7 @@ $('#firing_action_select').change(function() {
else {
$('.action_details').show();
}
$('.firing_action').hide();
if($(this).val() != -1) {
$('.firing_action_' + $(this).val()).show();

View File

@ -23,7 +23,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'LM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -96,7 +96,10 @@ if ($al_action !== false) {
}
if (!$is_in_group && $al_action['id_group'] != 0) {
db_pandora_audit('ACL Violation', 'Trying to access unauthorized alert action configuration');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access unauthorized alert action configuration'
);
include 'general/noaccess.php';
exit;
}

View File

@ -1,17 +1,34 @@
<?php
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation 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.
/**
* Configure Alert commands
*
* @category Alert management
* @package Pandora FMS
* @subpackage Community
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Begin.
global $config;
require_once $config['homedir'].'/include/functions_alerts.php';
@ -23,7 +40,7 @@ enterprise_hook('open_meta_frame');
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
@ -52,7 +69,10 @@ if ($id > 0) {
$alert = alerts_get_alert_command($id);
if ($alert['internal'] || !check_acl_restricted_all($config['id_user'], $alert['id_group'], 'PM')) {
db_pandora_audit('ACL Violation', 'Trying to access Alert Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Alert Management'
);
include 'general/noaccess.php';
exit;
}
@ -87,17 +107,17 @@ if ($update_command) {
$values['description'] = $description;
$values['id_group'] = $id_group;
// Only for Metaconsole. Save the previous name for synchronizing.
if (is_metaconsole()) {
if (is_metaconsole() === true) {
$values['previous_name'] = db_get_value('name', 'talert_commands', 'id', $id);
}
// Check it the new name is used in the other command.
$id_check = db_get_value('id', 'talert_commands', 'name', $name);
if (($id_check != $id) && (!empty($id_check))) {
$result = '';
$result = false;
} else {
$result = alerts_update_alert_command($id, $values);
if ($result) {
$result = (bool) alerts_update_alert_command($id, $values);
if ($result === true) {
$info = '{"Name":"'.$name.'","Command":"'.$command.'","Description":"'.$description.' '.$info_fields.'"}';
$alert['fields_values'] = io_json_mb_encode($fields_values);
$alert['fields_descriptions'] = io_json_mb_encode($fields_descriptions);
@ -109,11 +129,15 @@ if ($update_command) {
}
}
if ($result) {
db_pandora_audit('Command management', 'Update alert command #'.$id, false, false, $info);
} else {
db_pandora_audit('Command management', 'Fail to update alert command #'.$id, false, false);
}
$auditMessage = ((bool) $result === true) ? 'Update alert command' : 'Fail to update alert command';
db_pandora_audit(
AUDIT_LOG_ALERT_MANAGEMENT,
sprintf('%s #%s', $auditMessage, $id),
false,
false,
$info
);
ui_print_result_message(
$result,
@ -130,7 +154,7 @@ $fields_descriptions = '';
$fields_values = '';
$id_group = 0;
if ($id) {
if (!$result) {
if ($result === false) {
$alert = alerts_get_alert_command($id);
}

File diff suppressed because it is too large Load Diff

View File

@ -32,7 +32,10 @@ if (!isset($_SESSION['id_usuario'])) {
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit('ACL Violation', 'Trying to access audit CSV export');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access audit CSV export'
);
include 'general/noaccess.php';
exit;
}

View File

@ -35,7 +35,10 @@ check_login();
enterprise_hook('open_meta_frame');
if (!check_acl($config['id_user'], 0, 'PM') && !is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Categories Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Categories Management'
);
include 'general/noaccess.php';
return;
}
@ -113,10 +116,16 @@ if (is_management_allowed() === false) {
if ($is_management_allowed === true && $delete != 0) {
$return_delete = categories_delete_category($delete);
if (!$return_delete) {
db_pandora_audit('Category management', 'Fail try to delete category #'.$delete);
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Fail try to delete category #'.$delete
);
ui_print_error_message(__('Error deleting category'));
} else {
db_pandora_audit('Category management', 'Delete category #'.$delete);
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Delete category #'.$delete
);
ui_print_success_message(__('Successfully deleted category'));
}
}

View File

@ -19,7 +19,10 @@ enterprise_hook('open_meta_frame');
require_once $config['homedir'].'/include/functions_categories.php';
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Edit Category');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Edit Category'
);
include 'general/noaccess.php';
return;
@ -85,34 +88,46 @@ if ($update_category && $id_category != 0) {
}
if ($result === false) {
db_pandora_audit('Category management', "Fail try to update category #$id_category");
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Fail try to update category #'.$id_category
);
ui_print_error_message(__('Error updating category'));
} else {
db_pandora_audit('Category management', "Update category #$id_category");
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Update category #'.$id_category
);
ui_print_success_message(__('Successfully updated category'));
}
}
// Create category: creates a new category
// Create category: creates a new category.
if ($create_category) {
$return_create = true;
$values = [];
$values['name'] = $name_category;
// DB insert
// DB insert.
$return_create = false;
if ($values['name'] != '') {
$return_create = db_process_sql_insert('tcategory', $values);
}
if ($return_create === false) {
db_pandora_audit('Category management', 'Fail try to create category');
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Fail try to create category'
);
ui_print_error_message(__('Error creating category'));
$action = 'new';
// If create action ends successfully then current action is update
// If create action ends successfully then current action is update.
} else {
db_pandora_audit('Category management', "Create category #$return_create");
db_pandora_audit(
AUDIT_LOG_CATEGORY_MANAGEMENT,
'Create category #'.$return_create
);
ui_print_success_message(__('Successfully created category'));
$id_category = $return_create;
$action = 'update';
@ -120,7 +135,7 @@ if ($create_category) {
}
// Form fields are filled here
// Get results when update action is performed
// Get results when update action is performed.
if ($action == 'update' && $id_category != 0) {
$result_category = db_get_row_filter('tcategory', ['id' => $id_category]);
$name_category = $result_category['name'];

View File

@ -18,7 +18,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'DM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Database Management'
);
include 'general/noaccess.php';

View File

@ -17,7 +17,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Custom events Management'
);
include 'general/noaccess.php';

View File

@ -21,7 +21,7 @@ $access = ($event_w == true) ? 'EW' : (($event_m == true) ? 'EM' : 'EW');
if (!$event_w && !$event_m) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access events filter editor'
);
include 'general/noaccess.php';

View File

@ -22,7 +22,7 @@ $access = ($event_w == true) ? 'EW' : (($event_m == true) ? 'EM' : 'EW');
if (!$event_w && !$event_m) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access events filter editor'
);
include 'general/noaccess.php';
@ -43,7 +43,7 @@ if ($delete) {
&& !check_acl_restricted_all($config['id_user'], $filter_group, 'EM')
) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access events filter editor'
);
include 'general/noaccess.php';

View File

@ -17,7 +17,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';
@ -43,7 +43,7 @@ if ($event_response_id > 0) {
// ACL check for event response edition.
if (!check_acl_restricted_all($config['id_user'], $event_response['id_group'], 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';

View File

@ -19,7 +19,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';

View File

@ -19,7 +19,7 @@ check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';

View File

@ -20,7 +20,7 @@ enterprise_hook('open_meta_frame');
if (!check_acl($config['id_user'], 0, 'EW') && !check_acl($config['id_user'], 0, 'EM') && ! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access event manage'
);
include 'general/noaccess.php';

View File

@ -17,7 +17,7 @@ global $config;
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access extensions list'
);
include 'general/noaccess.php';

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