Merge branch 'develop' into ent-9819-crear-tip-en-consola-sonora-de-eventos
This commit is contained in:
commit
fdab2cff8e
|
@ -0,0 +1,322 @@
|
|||
#!/bin/bash
|
||||
#######################################################
|
||||
# PandoraFMS Community online installation script
|
||||
#######################################################
|
||||
## Tested versions ##
|
||||
# Centos 8.4, 8.5
|
||||
# Rocky 8.4, 8.5, 8.6, 8.7
|
||||
# Almalinuz 8.4, 8.5
|
||||
# RedHat 8.5
|
||||
|
||||
#Constants
|
||||
S_VERSION='202302201'
|
||||
LOGFILE="/tmp/deploy-ext-db-$(date +%F).log"
|
||||
|
||||
|
||||
# define default variables
|
||||
[ "$TZ" ] || TZ="Europe/Madrid"
|
||||
[ "$MYVER" ] || MYVER=57
|
||||
[ "$DBHOST" ] || DBHOST=127.0.0.1
|
||||
[ "$DBNAME" ] || DBNAME=pandora
|
||||
[ "$DBUSER" ] || DBUSER=pandora
|
||||
[ "$DBPASS" ] || DBPASS=pandora
|
||||
[ "$DBPORT" ] || DBPORT=3306
|
||||
[ "$DBROOTUSER" ] || DBROOTUSER=root
|
||||
[ "$DBROOTPASS" ] || DBROOTPASS=pandora
|
||||
[ "$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")
|
||||
|
||||
# Ansi color code variables
|
||||
red="\e[0;91m"
|
||||
green="\e[0;92m"
|
||||
cyan="\e[0;36m"
|
||||
reset="\e[0m"
|
||||
|
||||
# Functions
|
||||
execute_cmd () {
|
||||
local cmd="$1"
|
||||
local msg="$2"
|
||||
|
||||
echo -e "${cyan}$msg...${reset}"
|
||||
$cmd &>> "$LOGFILE"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${red}Fail${reset}"
|
||||
[ "$3" ] && echo "$3"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
rm -rf "$HOME"/pandora_deploy_tmp &>> "$LOGFILE"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[1A\e ${cyan}$msg...${reset} ${green}OK${reset}"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
check_cmd_status () {
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${red}Fail${reset}"
|
||||
[ "$1" ] && echo "$1"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
rm -rf "$HOME"/pandora_deploy_tmp/*.rpm* &>> "$LOGFILE"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${green}OK${reset}"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
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 Pandora FMS"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
exit 1
|
||||
|
||||
else
|
||||
echo -e "${green}OK${reset}"
|
||||
fi
|
||||
}
|
||||
|
||||
## Main
|
||||
echo "Starting PandoraFMS External DB deployment EL8 ver. $S_VERSION"
|
||||
|
||||
# Centos Version
|
||||
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, 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"
|
||||
echo "Community installer version: $S_VERSION" >> "$LOGFILE"
|
||||
|
||||
# Pre checks
|
||||
# Root permisions
|
||||
check_root_permissions
|
||||
|
||||
# Systemd
|
||||
execute_cmd "systemctl status" "Checking SystemD" 'This is not a SystemD enable system, if tryng to use in a docker env please check: https://github.com/pandorafms/pandorafms/tree/develop/extras/docker/centos8'
|
||||
|
||||
# Check memomry greather or equal to 2G
|
||||
execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]" 'Checking memory (required: 2 GB)'
|
||||
|
||||
# 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'
|
||||
execute_cmd "sed --version" 'Checking needed tools: sed'
|
||||
execute_cmd "dnf --version" 'Checking needed tools: dnf'
|
||||
|
||||
# Creating working directory
|
||||
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 list &>> "$LOGFILE"
|
||||
subscription-manager status &>> "$LOGFILE"
|
||||
check_cmd_status 'Error checking subscription status, make sure your server is activated and suscribed to Red Hat Enterprise repositories'
|
||||
|
||||
# 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 \
|
||||
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 \
|
||||
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"
|
||||
|
||||
|
||||
# Install percona Database
|
||||
execute_cmd "dnf module disable -y mysql" "Disabiling mysql module"
|
||||
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
execute_cmd "percona-release setup ps80 -y" "Enabling mysql80 module"
|
||||
execute_cmd "dnf install -y percona-server-server percona-xtrabackup-24" "Installing Percona Server 80"
|
||||
fi
|
||||
|
||||
if [ "$MYVER" -ne '80' ] ; then
|
||||
execute_cmd "dnf install -y Percona-Server-server-57 percona-xtrabackup-24" "Installing Percona Server 57"
|
||||
fi
|
||||
|
||||
# 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)
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
echo """
|
||||
SET PASSWORD FOR '$DBROOTUSER'@'localhost' = 'Pandor4!';
|
||||
UNINSTALL COMPONENT 'file://component_validate_password';
|
||||
SET PASSWORD FOR '$DBROOTUSER'@'localhost' = '$DBROOTPASS';
|
||||
""" | mysql --connect-expired-password -u$DBROOTUSER &>> "$LOGFILE"
|
||||
fi
|
||||
|
||||
if [ "$MYVER" -ne '80' ] ; then
|
||||
echo """
|
||||
SET PASSWORD FOR '$DBROOTUSER'@'localhost' = PASSWORD('Pandor4!');
|
||||
UNINSTALL PLUGIN validate_password;
|
||||
SET PASSWORD FOR '$DBROOTUSER'@'localhost' = PASSWORD('$DBROOTPASS');
|
||||
""" | mysql --connect-expired-password -u$DBROOTUSER &>> "$LOGFILE"fi
|
||||
fi
|
||||
|
||||
export MYSQL_PWD=$DBROOTPASS
|
||||
echo -en "${cyan}Creating Pandora FMS database...${reset}"
|
||||
echo "create database $DBNAME" | mysql -u$DBROOTUSER -P$DBPORT -h$DBHOST
|
||||
check_cmd_status "Error creating database $DBNAME, is this an empty node? if you have a previus installation please contact with support."
|
||||
|
||||
echo "CREATE USER \"$DBUSER\"@'%' IDENTIFIED BY \"$DBPASS\";" | mysql -u$DBROOTUSER -P$DBPORT -h$DBHOST
|
||||
echo "ALTER USER \"$DBUSER\"@'%' IDENTIFIED WITH mysql_native_password BY \"$DBPASS\"" | mysql -u$DBROOTUSER -P$DBPORT -h$DBHOST
|
||||
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%'" | mysql -u$DBROOTUSER -P$DBPORT -h$DBHOST
|
||||
|
||||
#Generating my.cnf
|
||||
cat > /etc/my.cnf << EO_CONFIG_F
|
||||
[mysqld]
|
||||
datadir=/var/lib/mysql
|
||||
socket=/var/lib/mysql/mysql.sock
|
||||
user=mysql
|
||||
character-set-server=utf8
|
||||
skip-character-set-client-handshake
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
# Mysql optimizations for Pandora FMS
|
||||
# Please check the documentation in http://pandorafms.com for better results
|
||||
|
||||
max_allowed_packet = 64M
|
||||
innodb_buffer_pool_size = $POOL_SIZE
|
||||
innodb_lock_wait_timeout = 90
|
||||
innodb_file_per_table
|
||||
innodb_flush_log_at_trx_commit = 0
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_log_file_size = 64M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_io_capacity = 100
|
||||
thread_cache_size = 8
|
||||
thread_stack = 256K
|
||||
max_connections = 100
|
||||
|
||||
key_buffer_size=4M
|
||||
read_buffer_size=128K
|
||||
read_rnd_buffer_size=128K
|
||||
sort_buffer_size=128K
|
||||
join_buffer_size=4M
|
||||
|
||||
query_cache_type = 1
|
||||
query_cache_size = 64M
|
||||
query_cache_min_res_unit = 2k
|
||||
query_cache_limit = 256K
|
||||
|
||||
#skip-log-bin
|
||||
|
||||
sql_mode=""
|
||||
|
||||
[mysqld_safe]
|
||||
log-error=/var/log/mysqld.log
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
||||
|
||||
EO_CONFIG_F
|
||||
|
||||
if [ "$MYVER" -eq '80' ] ; then
|
||||
sed -i -e "/query_cache.*/ s/^#*/#/g" /etc/my.cnf
|
||||
sed -i -e "s/#skip-log-bin/skip-log-bin/g" /etc/my.cnf
|
||||
sed -i -e "s/character-set-server=utf8/character-set-server=utf8mb4/g" /etc/my.cnf
|
||||
|
||||
fi
|
||||
|
||||
execute_cmd "systemctl restart mysqld" "Configuring database engine"
|
||||
execute_cmd "systemctl enable mysqld --now" "Enabling Database service"
|
||||
fi
|
||||
export MYSQL_PWD=$DBPASS
|
||||
|
||||
|
||||
# Kernel optimization
|
||||
|
||||
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
|
||||
cat >> /etc/sysctl.conf <<EO_KO
|
||||
# Pandora FMS Optimization
|
||||
|
||||
# default=5
|
||||
net.ipv4.tcp_syn_retries = 3
|
||||
|
||||
# default=5
|
||||
net.ipv4.tcp_synack_retries = 3
|
||||
|
||||
# default=1024
|
||||
net.ipv4.tcp_max_syn_backlog = 65536
|
||||
|
||||
# default=124928
|
||||
net.core.wmem_max = 8388608
|
||||
|
||||
# default=131071
|
||||
net.core.rmem_max = 8388608
|
||||
|
||||
# default = 128
|
||||
net.core.somaxconn = 1024
|
||||
|
||||
# default = 20480
|
||||
net.core.optmem_max = 81920
|
||||
|
||||
EO_KO
|
||||
|
||||
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
|
||||
fi
|
||||
|
||||
execute_cmd "echo done" "Percona server installed"
|
||||
cd
|
||||
execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
|
|
@ -0,0 +1,258 @@
|
|||
#!/bin/bash
|
||||
##############################################################################################################
|
||||
# PandoraFMS Community online installation script for Ubuntu 22.04
|
||||
##############################################################################################################
|
||||
## Tested versions ##
|
||||
# Ubuntu 22.04.1
|
||||
# Ubuntu 22.04.2
|
||||
|
||||
#avoid promps
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export NEEDRESTART_SUSPEND=1
|
||||
|
||||
#Constants
|
||||
PANDORA_CONSOLE=/var/www/html/pandora_console
|
||||
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
|
||||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
WORKDIR=/opt/pandora/deploy
|
||||
|
||||
|
||||
S_VERSION='202302201'
|
||||
LOGFILE="/tmp/deploy-ext-db-$(date +%F).log"
|
||||
rm -f $LOGFILE &> /dev/null # remove last log before start
|
||||
|
||||
# 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_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")
|
||||
|
||||
|
||||
# Ansi color code variables
|
||||
red="\e[0;91m"
|
||||
green="\e[0;92m"
|
||||
cyan="\e[0;36m"
|
||||
reset="\e[0m"
|
||||
|
||||
# Functions
|
||||
|
||||
execute_cmd () {
|
||||
local cmd="$1"
|
||||
local msg="$2"
|
||||
|
||||
echo -e "${cyan}$msg...${reset}"
|
||||
$cmd &>> "$LOGFILE"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${red}Fail${reset}"
|
||||
[ "$3" ] && echo "$3"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
rm -rf "$WORKDIR" &>> "$LOGFILE"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[1A\e ${cyan}$msg...${reset} ${green}OK${reset}"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
check_cmd_status () {
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${red}Fail${reset}"
|
||||
[ "$1" ] && echo "$1"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
rm -rf "$WORKDIR" &>> "$LOGFILE"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${green}OK${reset}"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
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 Pandora FMS"
|
||||
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
|
||||
exit 1
|
||||
|
||||
else
|
||||
echo -e "${green}OK${reset}"
|
||||
fi
|
||||
}
|
||||
|
||||
## Main
|
||||
echo "Starting PandoraFMS External DB deployment Ubuntu 22.04 ver. $S_VERSION"
|
||||
|
||||
# Ubuntu Version
|
||||
if [ ! "$(grep -Ei 'Ubuntu' /etc/lsb-release)" ]; then
|
||||
printf "\n ${red}Error this is not a Ubuntu system, this installer is compatible with Ubuntu systems only${reset}\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo -en "${cyan}Check Ubuntu Version...${reset}"
|
||||
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9][0-9].[0-9][0-9])"$/\1/p' /etc/os-release) == "22.04" ]
|
||||
check_cmd_status 'Error OS version, Ubuntu 22.04 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"
|
||||
echo "Community installer version: $S_VERSION" >> "$LOGFILE"
|
||||
|
||||
# Pre checks
|
||||
# Root permisions
|
||||
check_root_permissions
|
||||
|
||||
#Install awk, sed, grep if not present
|
||||
execute_cmd "apt install -y gawk sed grep" 'Installing needed tools'
|
||||
|
||||
# Systemd
|
||||
execute_cmd "systemctl --version" "Checking SystemD" 'This is not a SystemD enable system, if tryng to use in a docker env please check: https://github.com/pandorafms/pandorafms/tree/develop/extras/docker/centos8'
|
||||
|
||||
# Check memomry greather or equal to 2G
|
||||
execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]" 'Checking memory (required: 2 GB)'
|
||||
|
||||
# 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'
|
||||
execute_cmd "sed --version" 'Checking needed tools: sed'
|
||||
execute_cmd "apt --version" 'Checking needed tools: apt'
|
||||
|
||||
# Creating working directory
|
||||
rm -rf "$WORKDIR" &>> "$LOGFILE"
|
||||
mkdir -p "$WORKDIR" &>> "$LOGFILE"
|
||||
execute_cmd "cd $WORKDIR" "Moving to workdir: $WORKDIR"
|
||||
|
||||
## Install utils
|
||||
execute_cmd "apt update" "Updating repos"
|
||||
execute_cmd "apt install -y net-tools vim curl wget software-properties-common apt-transport-https" "Installing utils"
|
||||
|
||||
# Disabling apparmor and ufw
|
||||
systemctl stop ufw.service &>> "$LOGFILE"
|
||||
systemctl disable ufw &>> "$LOGFILE"
|
||||
systemctl stop apparmor &>> "$LOGFILE"
|
||||
systemctl disable apparmor &>> "$LOGFILE"
|
||||
|
||||
#install mysql
|
||||
execute_cmd "curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb" "Downloading Percona repository for MySQL8"
|
||||
execute_cmd "apt install -y gnupg2 lsb-release ./percona-release_latest.generic_all.deb" "Installing Percona repository for MySQL8"
|
||||
execute_cmd "percona-release setup ps80" "Configuring Percona repository for MySQL8"
|
||||
|
||||
echo -en "${cyan}Installing Percona Server for MySQL8...${reset}"
|
||||
env DEBIAN_FRONTEND=noninteractive apt install -y percona-server-server &>> "$LOGFILE"
|
||||
check_cmd_status "Error Installing MySql Server"
|
||||
|
||||
#Configuring Database
|
||||
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
|
||||
execute_cmd "systemctl start mysql" "Starting database engine"
|
||||
|
||||
echo """
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$DBROOTPASS';
|
||||
""" | mysql -uroot &>> "$LOGFILE"
|
||||
|
||||
export MYSQL_PWD=$DBROOTPASS
|
||||
echo -en "${cyan}Creating Pandora FMS database...${reset}"
|
||||
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
check_cmd_status "Error creating database $DBNAME, is this an empty node? if you have a previus installation please contact with support."
|
||||
|
||||
echo "CREATE USER \"$DBUSER\"@'%' IDENTIFIED BY \"$DBPASS\";" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
echo "ALTER USER \"$DBUSER\"@'%' IDENTIFIED WITH mysql_native_password BY \"$DBPASS\"" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%'" | mysql -uroot -P$DBPORT -h$DBHOST
|
||||
fi
|
||||
export MYSQL_PWD=$DBPASS
|
||||
|
||||
#Generating my.cnf
|
||||
cat > /etc/mysql/my.cnf << EOF_DB
|
||||
[mysqld]
|
||||
datadir=/var/lib/mysql
|
||||
user=mysql
|
||||
character-set-server=utf8mb4
|
||||
skip-character-set-client-handshake
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
# Mysql optimizations for Pandora FMS
|
||||
# Please check the documentation in http://pandorafms.com for better results
|
||||
|
||||
max_allowed_packet = 64M
|
||||
innodb_buffer_pool_size = $POOL_SIZE
|
||||
innodb_lock_wait_timeout = 90
|
||||
innodb_file_per_table
|
||||
innodb_flush_log_at_trx_commit = 0
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_log_file_size = 64M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_io_capacity = 300
|
||||
thread_cache_size = 8
|
||||
thread_stack = 256K
|
||||
max_connections = 100
|
||||
|
||||
key_buffer_size=4M
|
||||
read_buffer_size=128K
|
||||
read_rnd_buffer_size=128K
|
||||
sort_buffer_size=128K
|
||||
join_buffer_size=4M
|
||||
|
||||
skip-log-bin
|
||||
|
||||
sql_mode=""
|
||||
|
||||
log-error=/var/log/mysql/error.log
|
||||
[mysqld_safe]
|
||||
log-error=/var/log/mysqld.log
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
||||
|
||||
EOF_DB
|
||||
|
||||
execute_cmd "systemctl restart mysql" "Configuring and restarting database engine"
|
||||
|
||||
# Kernel optimization
|
||||
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
|
||||
cat >> /etc/sysctl.conf <<EO_KO
|
||||
# Pandora FMS Optimization
|
||||
|
||||
# default=5
|
||||
net.ipv4.tcp_syn_retries = 3
|
||||
|
||||
# default=5
|
||||
net.ipv4.tcp_synack_retries = 3
|
||||
|
||||
# default=1024
|
||||
net.ipv4.tcp_max_syn_backlog = 65536
|
||||
|
||||
# default=124928
|
||||
net.core.wmem_max = 8388608
|
||||
|
||||
# default=131071
|
||||
net.core.rmem_max = 8388608
|
||||
|
||||
# default = 128
|
||||
net.core.somaxconn = 1024
|
||||
|
||||
# default = 20480
|
||||
net.core.optmem_max = 81920
|
||||
|
||||
EO_KO
|
||||
|
||||
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
|
||||
fi
|
||||
|
||||
# Remove temporary files
|
||||
execute_cmd "echo done" "Percona server installed"
|
||||
cd "$HOME"
|
||||
execute_cmd "rm -rf $WORKDIR" "Removing temporary files"
|
|
@ -431,7 +431,7 @@ execute_cmd "curl -LSs --output pandorafms_agent_linux-7.0NG.noarch.rpm ${PANDOR
|
|||
execute_cmd "yum install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
|
||||
|
||||
# Copy gotty utility
|
||||
execute_cmd "wget https://pandorafms.com/library/wp-content/uploads/2019/11/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
execute_cmd "wget https://firefly.pandorafms.com/pandorafms/utils/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
|
||||
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'
|
||||
|
||||
|
@ -639,8 +639,8 @@ systemctl enable tentacle_serverd &>> $LOGFILE
|
|||
execute_cmd "service tentacle_serverd start" "Starting Tentacle Server"
|
||||
|
||||
# Enabling condole cron
|
||||
execute_cmd "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 Pandora FMS Console cron"
|
||||
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
|
||||
execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log\" >> /etc/crontab" "Enabling Pandora FMS Console cron"
|
||||
echo "* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies 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"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
## Tested versions ##
|
||||
# Centos 8.4, 8.5
|
||||
# Rocky 8.4, 8.5, 8.6, 8.7
|
||||
# Almalinuz 8.4, 8.5
|
||||
# Almalinux 8.4, 8.5
|
||||
# RedHat 8.5
|
||||
|
||||
#Constants
|
||||
|
@ -14,7 +14,7 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
|
|||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
|
||||
|
||||
S_VERSION='202301251'
|
||||
S_VERSION='202302201'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
|
||||
# define default variables
|
||||
|
@ -107,6 +107,17 @@ check_root_permissions () {
|
|||
fi
|
||||
}
|
||||
|
||||
installing_docker () {
|
||||
#Installing docker for debug
|
||||
echo "Start installig docker" &>> "$LOGFILE"
|
||||
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo &>> "$LOGFILE"
|
||||
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin &>> "$LOGFILE"
|
||||
systemctl disable --now docker &>> "$LOGFILE"
|
||||
systemctl disable docker.socket --now &>> "$LOGFILE"
|
||||
echo "End installig docker" &>> "$LOGFILE"
|
||||
}
|
||||
|
||||
|
||||
## Main
|
||||
echo "Starting PandoraFMS Community deployment EL8 ver. $S_VERSION"
|
||||
|
||||
|
@ -207,6 +218,7 @@ else
|
|||
execute_cmd "dnf config-manager --set-enabled powertools" "Configuring Powertools"
|
||||
fi
|
||||
|
||||
execute_cmd "installing_docker" "Installing Docker for debug"
|
||||
|
||||
#Installing wget
|
||||
execute_cmd "dnf install -y wget" "Installing wget"
|
||||
|
@ -454,7 +466,7 @@ innodb_flush_log_at_trx_commit = 0
|
|||
innodb_flush_method = O_DIRECT
|
||||
innodb_log_file_size = 64M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_io_capacity = 100
|
||||
innodb_io_capacity = 300
|
||||
thread_cache_size = 8
|
||||
thread_stack = 256K
|
||||
max_connections = 100
|
||||
|
@ -483,6 +495,7 @@ EO_CONFIG_F
|
|||
if [ "$MYVER" -eq '80' ] ; then
|
||||
sed -i -e "/query_cache.*/ s/^#*/#/g" /etc/my.cnf
|
||||
sed -i -e "s/#skip-log-bin/skip-log-bin/g" /etc/my.cnf
|
||||
sed -i -e "s/character-set-server=utf8/character-set-server=utf8mb4/g" /etc/my.cnf
|
||||
fi
|
||||
|
||||
execute_cmd "systemctl restart mysqld" "Configuring database engine"
|
||||
|
@ -517,7 +530,7 @@ execute_cmd "curl -LSs --output pandorafms_agent_linux-7.0NG.noarch.rpm ${PANDOR
|
|||
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "Installing Pandora FMS packages"
|
||||
|
||||
# Copy gotty utility
|
||||
execute_cmd "wget https://pandorafms.com/library/wp-content/uploads/2019/11/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
execute_cmd "wget https://firefly.pandorafms.com/pandorafms/utils/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
|
||||
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'
|
||||
|
||||
|
@ -732,8 +745,8 @@ systemctl enable tentacle_serverd &>> "$LOGFILE"
|
|||
execute_cmd "service tentacle_serverd start" "Starting Tentacle Server"
|
||||
|
||||
# Enabling condole cron
|
||||
execute_cmd "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 Pandora FMS Console cron"
|
||||
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
|
||||
execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log\" >> /etc/crontab" "Enabling Pandora FMS Console cron"
|
||||
echo "* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies 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"
|
||||
|
@ -743,7 +756,7 @@ execute_cmd "systemctl start pandora_agent_daemon" "Starting Pandora FMS Agent"
|
|||
|
||||
cat > /etc/issue.net << EOF_banner
|
||||
|
||||
Welcome to Pandora FMS appliance on CentOS
|
||||
Welcome to Pandora FMS appliance on RHEL/Rocky Linux 8
|
||||
------------------------------------------
|
||||
Go to Public http://$ipplublic/pandora_console$to to login web console
|
||||
$(ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v "172.17.0.1" | awk '{print $2}' | awk -F '/' '{print "Go to Local http://"$1"/pandora_console to login web console"}')
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
##############################################################################################################
|
||||
## Tested versions ##
|
||||
# Ubuntu 22.04.1
|
||||
# Ubuntu 22.04.2
|
||||
|
||||
#avoid promps
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
@ -16,7 +17,7 @@ PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
|||
WORKDIR=/opt/pandora/deploy
|
||||
|
||||
|
||||
S_VERSION='202301251'
|
||||
S_VERSION='202302201'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
rm -f $LOGFILE &> /dev/null # remove last log before start
|
||||
|
||||
|
@ -106,6 +107,21 @@ check_root_permissions () {
|
|||
fi
|
||||
}
|
||||
|
||||
installing_docker () {
|
||||
#Installing docker for debug
|
||||
echo "Start installig docker" &>> "$LOGFILE"
|
||||
mkdir -m 0755 -p /etc/apt/keyrings &>> "$LOGFILE"
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /etc/apt/keyrings/docker.gpg &>> "$LOGFILE"
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &>> "$LOGFILE"
|
||||
apt update -y &>> "$LOGFILE"
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin &>> "$LOGFILE"
|
||||
systemctl disable docker --now &>> "$LOGFILE"
|
||||
systemctl disable docker.socket --now &>> "$LOGFILE"
|
||||
echo "End installig docker" &>> "$LOGFILE"
|
||||
}
|
||||
|
||||
## Main
|
||||
echo "Starting PandoraFMS Community deployment Ubuntu 22.04 ver. $S_VERSION"
|
||||
|
||||
|
@ -173,7 +189,7 @@ execute_cmd "cd $WORKDIR" "Moving to workdir: $WORKDIR"
|
|||
|
||||
## Install utils
|
||||
execute_cmd "apt update" "Updating repos"
|
||||
execute_cmd "apt install -y net-tools vim curl wget software-properties-common apt-transport-https" "Installing utils"
|
||||
execute_cmd "apt install -y net-tools vim curl wget software-properties-common apt-transport-https ca-certificates gnupg lsb-release" "Installing utils"
|
||||
|
||||
#Installing Apache and php-fpm
|
||||
[ -e "/etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list" ] || execute_cmd "add-apt-repository ppa:ondrej/php -y" "Enable ppa:ondrej/php repo"
|
||||
|
@ -221,7 +237,8 @@ systemctl restart php$PHPVER-fpm &>> "$LOGFILE"
|
|||
php$PHPVER-xml \
|
||||
php$PHPVER-yaml \
|
||||
libnet-telnet-perl \
|
||||
whois"
|
||||
whois \
|
||||
cron"
|
||||
execute_cmd "apt install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
|
||||
|
||||
# Server dependencies
|
||||
|
@ -254,10 +271,13 @@ server_dependencies=" \
|
|||
libnet-telnet-perl \
|
||||
libjson-perl \
|
||||
libencode-perl \
|
||||
cron \
|
||||
libgeo-ip-perl \
|
||||
openjdk-8-jdk "
|
||||
execute_cmd "apt install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
|
||||
|
||||
execute_cmd "installing_docker" "Installing Docker for debug"
|
||||
|
||||
# wmic and pandorawmic
|
||||
execute_cmd "curl -O https://firefly.artica.es/pandorafms/utils/bin/wmic" "Downloading wmic"
|
||||
execute_cmd "curl -O https://firefly.artica.es/pandorafms/utils/bin/pandorawmic" "Downloading pandorawmic"
|
||||
|
@ -393,7 +413,7 @@ cat > /etc/mysql/my.cnf << EOF_DB
|
|||
[mysqld]
|
||||
datadir=/var/lib/mysql
|
||||
user=mysql
|
||||
character-set-server=utf8
|
||||
character-set-server=utf8mb4
|
||||
skip-character-set-client-handshake
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
|
@ -408,7 +428,7 @@ innodb_flush_log_at_trx_commit = 0
|
|||
innodb_flush_method = O_DIRECT
|
||||
innodb_log_file_size = 64M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_io_capacity = 100
|
||||
innodb_io_capacity = 300
|
||||
thread_cache_size = 8
|
||||
thread_stack = 256K
|
||||
max_connections = 100
|
||||
|
@ -477,7 +497,7 @@ check_cmd_status "Error installing PandoraFMS Agent"
|
|||
|
||||
# Copy gotty utility
|
||||
cd $WORKDIR &>> "$LOGFILE"
|
||||
execute_cmd "wget https://pandorafms.com/library/wp-content/uploads/2019/11/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
execute_cmd "wget https://firefly.pandorafms.com/pandorafms/utils/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
|
||||
tar xvzf gotty_linux_amd64.tar.gz &>> $LOGFILE
|
||||
execute_cmd "mv gotty /usr/bin/" 'Installing gotty util'
|
||||
|
||||
|
@ -731,9 +751,14 @@ systemctl enable pandora_server &>> "$LOGFILE"
|
|||
execute_cmd "service tentacle_serverd start" "Starting Tentacle Server"
|
||||
systemctl enable tentacle_serverd &>> "$LOGFILE"
|
||||
|
||||
# Enabling condole cron
|
||||
execute_cmd "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 Pandora FMS Console cron"
|
||||
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 console cron
|
||||
execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log\" >> /etc/crontab" "Enabling Pandora FMS Console cron"
|
||||
echo "* * * * * root wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log" >> /etc/crontab
|
||||
|
||||
# Enabling pandoradb cron
|
||||
execute_cmd "echo 'enabling pandoradb cron' >> $PANDORA_CONSOLE/log/cron.log\" >> /etc/crontab" "Enabling Pandora FMS pandoradb cron"
|
||||
echo "@hourly root bash -c /etc/cron.hourly/pandora_db" >> /etc/crontab
|
||||
|
||||
|
||||
## Enabling agent adn configuring Agente
|
||||
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF &>> "$LOGFILE"
|
||||
|
@ -748,7 +773,7 @@ sed --follow-symlinks -i -e "s/^openssl_conf = openssl_init/#openssl_conf = open
|
|||
|
||||
cat > /etc/issue.net << EOF_banner
|
||||
|
||||
Welcome to Pandora FMS appliance on CentOS
|
||||
Welcome to Pandora FMS appliance on Ubuntu
|
||||
------------------------------------------
|
||||
Go to Public http://$ipplublic/pandora_console$to to login web console
|
||||
$(ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v "172.17.0.1" | awk '{print $2}' | awk -F '/' '{print "Go to Local http://"$1"/pandora_console to login web console"}')
|
||||
|
|
|
@ -277,8 +277,8 @@ export ORACLE_HOME=/usr/lib/oracle/$VERSION/client64
|
|||
EOF_ENV
|
||||
|
||||
echo ">> Enable discovery cron: "
|
||||
#while true ; do wget -q -O - --no-check-certificate http://localhost/pandora_console/enterprise/cron.php >> /var/www/html/pandora_console/pandora_console.log && sleep 60 ; done &
|
||||
echo "*/5 * * * * wget -q -O - --no-check-certificate http://localhost/pandora_console/enterprise/cron.php >> /var/www/html/pandora_console/log/cron.log" >> /opt/pandora/crontasks
|
||||
#while true ; do wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://localhost/pandora_console/enterprise/cron.php >> /var/www/html/pandora_console/pandora_console.log && sleep 60 ; done &
|
||||
echo "*/5 * * * * wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies http://localhost/pandora_console/enterprise/cron.php >> /var/www/html/pandora_console/log/cron.log" >> /opt/pandora/crontasks
|
||||
|
||||
echo ">> Enable pandora_db cron: "
|
||||
/usr/bin/perl /usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, AIX version
|
||||
# Version 7.0NG.769, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, FreeBSD Version
|
||||
# Version 7.0NG.769, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, HP-UX Version
|
||||
# Version 7.0NG.769, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, GNU/Linux
|
||||
# Version 7.0NG.769, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, GNU/Linux
|
||||
# Version 7.0NG.769, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, Solaris Version
|
||||
# Version 7.0NG.769, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#
|
||||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 4.0
|
||||
%define release 1
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#
|
||||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 4.0.1
|
||||
%define release 1
|
||||
|
|
|
@ -1,15 +1,8 @@
|
|||
#!/usr/bin/perl
|
||||
##########################################################################
|
||||
# pandora_agent_exec
|
||||
################################################################################
|
||||
# pandora_exec - Execute a command with a time limit.
|
||||
#
|
||||
# Executes the given command and prints its output to stdout. If the
|
||||
# execution times out or the command does not exist nothing is printed
|
||||
# to stdout. This is part of Pandora FMS Plugin server, do not delete!.
|
||||
#
|
||||
# Usage: pandora_agent_exec <timeout in seconds> <command>
|
||||
##########################################################################
|
||||
# Copyright (c) 2008-2010 Ramon Novoa, rnovoa@gmail.com
|
||||
# (c) 2008-2010 Artica Soluciones Tecnologicas S.L
|
||||
# Copyright (c) 2008-2023 Artica PFMS S.L.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
|
@ -22,37 +15,41 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##########################################################################
|
||||
|
||||
################################################################################
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX qw(WEXITSTATUS WIFEXITED);
|
||||
|
||||
# Check command line parameters
|
||||
# Check command line arguments.
|
||||
if ($#ARGV < 1) {
|
||||
print("Usage: $0 <timeout in seconds> <command>\n");
|
||||
exit 1;
|
||||
}
|
||||
|
||||
my @opts = @ARGV;
|
||||
my $timeout = shift(@opts);
|
||||
my $command = join(' ', @opts);
|
||||
my $output = '';
|
||||
my $ReturnCode = 0;
|
||||
my $command = ($0 =~ m/_agent_exec$/) ? # For backward compatibility with pandora_agent.
|
||||
join(' ', @opts) :
|
||||
join(' ', map { quotemeta($_) } @opts);
|
||||
|
||||
# Execute the command
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { die "alarm\n" };
|
||||
alarm $timeout;
|
||||
|
||||
$output = `$command`;
|
||||
$ReturnCode = ($? >> 8) & 0xff;
|
||||
alarm 0;
|
||||
};
|
||||
|
||||
# Timeout
|
||||
if ($@ eq "alarm\n") {
|
||||
exit 3;
|
||||
# Fork:
|
||||
# * The child will run the command.
|
||||
# * The parent will timeout if needed
|
||||
# and exit with the appropriate exit status.
|
||||
my $pid = fork();
|
||||
if ($pid == 0) {
|
||||
setpgrp();
|
||||
exec($command);
|
||||
} else {
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { kill(9, -$pid); exit 1; };
|
||||
alarm $timeout;
|
||||
waitpid($pid, 0);
|
||||
alarm 0;
|
||||
if (WIFEXITED(${^CHILD_ERROR_NATIVE})) {
|
||||
exit WEXITSTATUS(${^CHILD_ERROR_NATIVE});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
print $output;
|
||||
|
||||
exit $ReturnCode;
|
||||
exit 1;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.768, AIX version
|
||||
# Version 7.0NG.769, AIX version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# FreeBSD/IPSO version
|
||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.768, HPUX Version
|
||||
# Version 7.0NG.769, HPUX Version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#
|
||||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent
|
||||
%define version 3.2
|
||||
Summary: Pandora FMS Linux agent
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# Licensed under GPL license v2,
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.768, Solaris version
|
||||
# Version 7.0NG.769, Solaris version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, AIX version
|
||||
# Version 7.0NG.769, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.768-230131
|
||||
Version: 7.0NG.769-230302
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.768-230131"
|
||||
pandora_version="7.0NG.769-230302"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -31,7 +31,7 @@ fi
|
|||
if [ "$#" -ge 2 ]; then
|
||||
VERSION="$2"
|
||||
else
|
||||
VERSION="7.0NG.768"
|
||||
VERSION="7.0NG.769"
|
||||
fi
|
||||
|
||||
# Path for the generated DMG file
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.768" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.769" 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.768" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.769" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<!-- <installation-check script="check()" />
|
||||
<script>
|
||||
<![CDATA[
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
||||
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
||||
|
||||
<key>CFBundleVersion</key> <string>7.0NG.768</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.768 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.768</string>
|
||||
<key>CFBundleVersion</key> <string>7.0NG.769</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.769 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.769</string>
|
||||
|
||||
<key>NSPrincipalClass</key><string>NSApplication</string>
|
||||
<key>NSMainNibFile</key><string>MainMenu</string>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, GNU/Linux
|
||||
# Version 7.0NG.769, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, FreeBSD Version
|
||||
# Version 7.0NG.769, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, HP-UX Version
|
||||
# Version 7.0NG.769, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, GNU/Linux
|
||||
# Version 7.0NG.769, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, GNU/Linux
|
||||
# Version 7.0NG.769, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, NetBSD Version
|
||||
# Version 7.0NG.769, NetBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.768, Solaris Version
|
||||
# Version 7.0NG.769, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
|
||||
# http://www.pandorafms.com
|
||||
|
|
|
@ -556,30 +556,38 @@ BEGIN {
|
|||
sub runCommand {
|
||||
my ($self, $ref, $output_mode) = @_;
|
||||
|
||||
my $result;
|
||||
if($self->load_libraries()) {
|
||||
# Functionality possible.
|
||||
my $command = $self->{'commands'}->{$ref};
|
||||
my $result = $self->evaluate_command($ref);
|
||||
if (ref($result) eq "HASH") {
|
||||
# Process command result.
|
||||
if (defined($output_mode) && $output_mode eq 'xml') {
|
||||
my $output = '';
|
||||
$output .= "<cmd_report>\n";
|
||||
$output .= " <cmd_response>\n";
|
||||
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
|
||||
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
|
||||
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
|
||||
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
|
||||
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
|
||||
$output .= " </cmd_response>\n";
|
||||
$output .= "</cmd_report>\n";
|
||||
$result = $self->evaluate_command($ref);
|
||||
} else {
|
||||
$result = {
|
||||
'stderr' => 'Cannot use commands without YAML dependency, please install it.',
|
||||
'name' => 'YAML::Tiny',
|
||||
'error_level' => 2,
|
||||
};
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
$self->set_last_error('Failed to process ['.$ref.']: '.$result);
|
||||
if (ref($result) eq "HASH") {
|
||||
# Process command result.
|
||||
if (defined($output_mode) && $output_mode eq 'xml') {
|
||||
my $output = '';
|
||||
$output .= "<cmd_report>\n";
|
||||
$output .= " <cmd_response>\n";
|
||||
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
|
||||
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
|
||||
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
|
||||
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
|
||||
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
|
||||
$output .= " </cmd_response>\n";
|
||||
$output .= "</cmd_report>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
$self->set_last_error('Failed to process ['.$ref.']: '.$result);
|
||||
}
|
||||
|
||||
return undef;
|
||||
|
@ -1014,8 +1022,8 @@ my $Sem = undef;
|
|||
# Semaphore used to control the number of threads
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.768';
|
||||
use constant AGENT_BUILD => '230131';
|
||||
use constant AGENT_VERSION => '7.0NG.769';
|
||||
use constant AGENT_BUILD => '230302';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
#
|
||||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.768
|
||||
%define release 230131
|
||||
%define version 7.0NG.769
|
||||
%define release 230302
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
#
|
||||
#Pandora FMS Linux Agent
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.768
|
||||
%define release 230131
|
||||
%define version 7.0NG.769
|
||||
%define release 230302
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -1,15 +1,8 @@
|
|||
#!/usr/bin/perl
|
||||
##########################################################################
|
||||
# pandora_agent_exec
|
||||
################################################################################
|
||||
# pandora_exec - Execute a command with a time limit.
|
||||
#
|
||||
# Executes the given command and prints its output to stdout. If the
|
||||
# execution times out or the command does not exist nothing is printed
|
||||
# to stdout. This is part of Pandora FMS Plugin server, do not delete!.
|
||||
#
|
||||
# Usage: pandora_agent_exec <timeout in seconds> <command>
|
||||
##########################################################################
|
||||
# Copyright (c) 2008-2010 Ramon Novoa, rnovoa@gmail.com
|
||||
# (c) 2008-2010 Artica Soluciones Tecnologicas S.L
|
||||
# Copyright (c) 2008-2023 Artica PFMS S.L.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
|
@ -22,37 +15,41 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
##########################################################################
|
||||
|
||||
################################################################################
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX qw(WEXITSTATUS WIFEXITED);
|
||||
|
||||
# Check command line parameters
|
||||
# Check command line arguments.
|
||||
if ($#ARGV < 1) {
|
||||
print("Usage: $0 <timeout in seconds> <command>\n");
|
||||
exit 1;
|
||||
}
|
||||
|
||||
my @opts = @ARGV;
|
||||
my $timeout = shift(@opts);
|
||||
my $command = join(' ', @opts);
|
||||
my $output = '';
|
||||
my $ReturnCode = 0;
|
||||
my $command = ($0 =~ m/_agent_exec$/) ? # For backward compatibility with pandora_agent.
|
||||
join(' ', @opts) :
|
||||
join(' ', map { quotemeta($_) } @opts);
|
||||
|
||||
# Execute the command
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { die "alarm\n" };
|
||||
alarm $timeout;
|
||||
|
||||
$output = `$command`;
|
||||
$ReturnCode = ($? >> 8) & 0xff;
|
||||
alarm 0;
|
||||
};
|
||||
|
||||
# Timeout
|
||||
if ($@ eq "alarm\n") {
|
||||
exit 3;
|
||||
# Fork:
|
||||
# * The child will run the command.
|
||||
# * The parent will timeout if needed
|
||||
# and exit with the appropriate exit status.
|
||||
my $pid = fork();
|
||||
if ($pid == 0) {
|
||||
setpgrp();
|
||||
exec($command);
|
||||
} else {
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { kill(9, -$pid); exit 1; };
|
||||
alarm $timeout;
|
||||
waitpid($pid, 0);
|
||||
alarm 0;
|
||||
if (WIFEXITED(${^CHILD_ERROR_NATIVE})) {
|
||||
exit WEXITSTATUS(${^CHILD_ERROR_NATIVE});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
print $output;
|
||||
|
||||
exit $ReturnCode;
|
||||
exit 1;
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.768"
|
||||
PI_BUILD="230131"
|
||||
PI_VERSION="7.0NG.769"
|
||||
PI_BUILD="230302"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2021 Artica Soluciones Tecnologicas
|
||||
# Version 7.0NG.768
|
||||
# Version 7.0NG.769
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
|
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
|||
{Yes}
|
||||
|
||||
AppName
|
||||
{Pandora FMS Windows Agent v7.0NG.768}
|
||||
{Pandora FMS Windows Agent v7.0NG.769}
|
||||
|
||||
ApplicationID
|
||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{230131}
|
||||
{230302}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.768 Build 230131")
|
||||
#define PANDORA_VERSION ("7.0NG.769 Build 230302")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.768(Build 230131))"
|
||||
VALUE "ProductVersion", "(7.0NG.769(Build 230302))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.768-230131
|
||||
Version: 7.0NG.769-230302
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.768-230131"
|
||||
pandora_version="7.0NG.769-230302"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -103,6 +103,15 @@ function api_execute(
|
|||
}
|
||||
}
|
||||
|
||||
$url_protocol = parse_url($url)['scheme'];
|
||||
|
||||
if ($url_protocol !== 'http' && $url_protocol !== 'https') {
|
||||
return [
|
||||
'url' => $url,
|
||||
'result' => '',
|
||||
];
|
||||
}
|
||||
|
||||
$curlObj = curl_init($url);
|
||||
if (empty($data) === false) {
|
||||
$url .= http_build_query($data);
|
||||
|
|
|
@ -227,7 +227,7 @@ function dbmgr_extension_main()
|
|||
'dbport' => $node->dbport(),
|
||||
'dbname' => $node->dbname(),
|
||||
'dbuser' => $node->dbuser(),
|
||||
'dbpass' => $node->dbpass(),
|
||||
'dbpass' => io_output_password($node->dbpass()),
|
||||
]
|
||||
);
|
||||
$error = '';
|
||||
|
|
|
@ -1,5 +1,29 @@
|
|||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `tserver` ADD COLUMN `server_keepalive_utimestamp` BIGINT NOT NULL DEFAULT 0;
|
||||
|
||||
ALTER TABLE `tmap` MODIFY COLUMN `id_group` TEXT NOT NULL default '';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tmonitor_filter` (
|
||||
`id_filter` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`id_name` VARCHAR(600) NOT NULL,
|
||||
`id_group_filter` INT NOT NULL DEFAULT 0,
|
||||
`ag_group` INT NOT NULL DEFAULT 0,
|
||||
`recursion` TEXT,
|
||||
`status` INT NOT NULL DEFAULT -1,
|
||||
`ag_modulename` TEXT,
|
||||
`ag_freestring` TEXT,
|
||||
`tag_filter` TEXT,
|
||||
`moduletype` TEXT,
|
||||
`module_option` INT DEFAULT 1,
|
||||
`modulegroup` INT NOT NULL DEFAULT -1,
|
||||
`min_hours_status` TEXT,
|
||||
`datatype` TEXT,
|
||||
`not_condition` TEXT,
|
||||
`ag_custom_fields` TEXT,
|
||||
PRIMARY KEY (`id_filter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `tsesion_filter` (
|
||||
`id_filter` INT NOT NULL AUTO_INCREMENT,
|
||||
`id_name` TEXT NULL,
|
||||
|
@ -11,4 +35,15 @@ CREATE TABLE IF NOT EXISTS `tsesion_filter` (
|
|||
PRIMARY KEY (`id_filter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE INDEX `tusuario_perfil_user` ON `tusuario_perfil` (`id_usuario`);
|
||||
CREATE INDEX `tusuario_perfil_group` ON `tusuario_perfil` (`id_grupo`);
|
||||
CREATE INDEX `tusuario_perfil_profile` ON `tusuario_perfil` (`id_perfil`);
|
||||
CREATE INDEX `tlayout_data_layout` ON `tlayout_data` (`id_layout`);
|
||||
CREATE INDEX `taddress_agent_agent` ON `taddress_agent` (`id_agent`);
|
||||
CREATE INDEX `ttag_name` ON `ttag` (name(15));
|
||||
CREATE INDEX `tservice_element_service` ON `tservice_element` (`id_service`);
|
||||
CREATE INDEX `tservice_element_agent` ON `tservice_element` (`id_agent`);
|
||||
CREATE INDEX `tservice_element_am` ON `tservice_element` (`id_agente_modulo`);
|
||||
CREATE INDEX `tagent_module_log_agent` ON `tagent_module_log` (`id_agent`);
|
||||
|
||||
COMMIT;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
-- Active: 1653046769261@@172.16.0.2@3306@pandora
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE INDEX agente_modulo_estado ON tevento (estado, id_agentmodule);
|
||||
CREATE INDEX idx_disabled ON talert_template_modules (disabled);
|
||||
|
||||
COMMIT;
|
|
@ -0,0 +1,5 @@
|
|||
START TRANSACTION;
|
||||
|
||||
INSERT INTO `treport_custom_sql` (`name`, `sql`) VALUES ('Agent safe mode not enable', 'select alias from tagente where safe_mode_module = 0');
|
||||
|
||||
COMMIT;
|
|
@ -359,6 +359,10 @@ if ($config['enterprise_installed']) {
|
|||
}
|
||||
|
||||
// CSRF validation.
|
||||
if (isset($_SESSION['csrf_code']) === true) {
|
||||
unset($_SESSION['csrf_code']);
|
||||
}
|
||||
|
||||
html_print_csrf_hidden();
|
||||
|
||||
echo '</form></div>';
|
||||
|
|
|
@ -498,10 +498,12 @@ if ($id_agente) {
|
|||
}
|
||||
|
||||
// Collection.
|
||||
$collectiontab = enterprise_hook('collection_tab');
|
||||
if ((int) $config['license_nms'] !== 1) {
|
||||
$collectiontab = enterprise_hook('collection_tab');
|
||||
|
||||
if ($collectiontab == -1) {
|
||||
$collectiontab = '';
|
||||
if ($collectiontab == -1) {
|
||||
$collectiontab = '';
|
||||
}
|
||||
}
|
||||
|
||||
// NetworkConfigManager tab.
|
||||
|
@ -1994,7 +1996,7 @@ if ($create_module) {
|
|||
$agent = db_get_row('tagente', 'id_agente', $id_agente);
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_AGENT_MANAGEMENT,
|
||||
"Added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']),
|
||||
"Added module '".db_escape_string_sql($name)."' for agent ".io_safe_output($agent['alias']),
|
||||
false,
|
||||
true,
|
||||
io_json_mb_encode($values)
|
||||
|
|
|
@ -89,8 +89,7 @@ $password_fields = [];
|
|||
|
||||
// If there are $macros, we create the form fields
|
||||
if (!empty($macros)) {
|
||||
$macros = json_decode($macros, true);
|
||||
|
||||
$macros = json_decode(io_safe_output($macros), true);
|
||||
foreach ($macros as $k => $m) {
|
||||
$data = [];
|
||||
$data[0] = $m['desc'];
|
||||
|
|
|
@ -391,7 +391,7 @@ foreach ($actions as $action) {
|
|||
|
||||
$data = [];
|
||||
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_action&id='.$action['id'].'&pure='.$pure.'">'.$action['name'].'</a>';
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_action&id='.$action['id'].'&pure='.$pure.'&offset='.$offset.'">'.$action['name'].'</a>';
|
||||
if ($action['id_group'] == 0 && $can_edit_all == false) {
|
||||
$data[0] .= ui_print_help_tip(__('You cannot edit this action, You don\'t have the permission to edit All group.'), true);
|
||||
}
|
||||
|
@ -467,7 +467,7 @@ if (isset($data)) {
|
|||
|
||||
if (is_management_allowed() === true) {
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_action&pure='.$pure.'">';
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_action&pure='.$pure.'&offset='.$offset.'">';
|
||||
html_print_submit_button(__('Create'), 'create', false, 'class="sub next"');
|
||||
html_print_input_hidden('create_alert', 1);
|
||||
echo '</form>';
|
||||
|
|
|
@ -795,15 +795,15 @@ foreach ($commands as $command) {
|
|||
);
|
||||
$data['action'] = '';
|
||||
$table->cellclass[]['action'] = 'action_buttons';
|
||||
|
||||
$offset_delete = ($offset >= ($total_commands - 1)) ? ($offset - $limit) : $offset;
|
||||
// (IMPORTANT, DO NOT CHANGE!) only users with permissions over "All" group have access to edition of commands belonging to "All" group.
|
||||
if ($is_management_allowed === true && !$command['internal'] && check_acl_restricted_all($config['id_user'], $command['id_group'], 'LM')) {
|
||||
if (is_user_admin($config['id_user']) === true) {
|
||||
$data['action'] = '<span class="inline_flex">';
|
||||
$data['action'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_commands&copy_command=1&id='.$command['id'].'&pure='.$pure.'"
|
||||
$data['action'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_commands&copy_command=1&id='.$command['id'].'&pure='.$pure.'&offset='.$offset.'"
|
||||
onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/copy.png', true, ['class' => 'invert_filter']).'</a>';
|
||||
|
||||
$data['action'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_commands&delete_command=1&id='.$command['id'].'&pure='.$pure.'"
|
||||
$data['action'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_commands&delete_command=1&id='.$command['id'].'&pure='.$pure.'&offset='.$offset_delete.'"
|
||||
onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['class' => 'invert_filter']).'</a>';
|
||||
$data['action'] .= '</span>';
|
||||
}
|
||||
|
|
|
@ -352,7 +352,8 @@ if ($search_string) {
|
|||
$filter[] = "(name LIKE '%".$search_string."%' OR description LIKE '%".$search_string."%' OR value LIKE '%".$search_string."%')";
|
||||
}
|
||||
|
||||
$filter['offset'] = (int) get_parameter('offset');
|
||||
$offset = (int) get_parameter('offset');
|
||||
$filter['offset'] = $offset;
|
||||
$filter['limit'] = (int) $config['block_size'];
|
||||
if (!is_user_admin($config['id_user'])) {
|
||||
$filter['id_group'] = array_keys(users_get_groups(false, 'LM'));
|
||||
|
@ -420,7 +421,7 @@ foreach ($templates as $template) {
|
|||
&& check_acl($config['id_user'], $template['id_group'], 'LM')
|
||||
) {
|
||||
$table->cellclass[][4] = 'action_buttons';
|
||||
$data[4] = '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_template&pure='.$pure.'" class="float-left inline_line">';
|
||||
$data[4] = '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_template&pure='.$pure.'&offset='.$offset.'" class="float-left inline_line">';
|
||||
$data[4] .= html_print_input_hidden('duplicate_template', 1, true);
|
||||
$data[4] .= html_print_input_hidden('source_id', $template['id'], true);
|
||||
$data[4] .= html_print_input_image(
|
||||
|
|
|
@ -372,8 +372,9 @@ for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
|||
);
|
||||
}
|
||||
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions&pure='.$pure.'">';
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions&pure='.$pure.'&offset='.$offset.'">';
|
||||
$table_html = html_print_table($table, true);
|
||||
|
||||
echo $table_html;
|
||||
|
|
|
@ -1147,9 +1147,10 @@ if ($step == 2) {
|
|||
echo ui_get_using_system_timezone_warning();
|
||||
}
|
||||
|
||||
$offset = (int) get_parameter('offset');
|
||||
// If it's the last step it will redirect to template lists.
|
||||
if ($step >= LAST_STEP) {
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_templates&pure='.$pure.'">';
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_templates&pure='.$pure.'&offset='.$offset.'">';
|
||||
} else {
|
||||
echo '<form method="post">';
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ $custom_id = '';
|
|||
|
||||
$create_group = (bool) get_parameter('create_group');
|
||||
$id_group = (int) get_parameter('id_group');
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
|
||||
if ($id_group) {
|
||||
$group = db_get_row('tmodule_group', 'id_mg', $id_group);
|
||||
|
@ -70,9 +71,9 @@ $table->data[0][1] = html_print_input_text('name', $name, '', 35, 100, true);
|
|||
|
||||
echo '</span>';
|
||||
if (is_metaconsole()) {
|
||||
echo '<form name="grupo" method="post" action="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group">';
|
||||
echo '<form name="grupo" method="post" action="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group&offset='.$offset.'">';
|
||||
} else {
|
||||
echo '<form name="grupo" method="post" action="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list">';
|
||||
echo '<form name="grupo" method="post" action="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list&offset='.$offset.'">';
|
||||
}
|
||||
|
||||
html_print_table($table);
|
||||
|
|
|
@ -262,18 +262,18 @@ if (empty($groups) === false) {
|
|||
}
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$offset_delete = ($offset >= $total_groups - 1) ? ($offset - $config['block_size']) : $offset;
|
||||
foreach ($groups as $id_group) {
|
||||
$data = [];
|
||||
$data[0] = $id_group['id_mg'];
|
||||
|
||||
if ($is_management_allowed === true) {
|
||||
$data[1] = '<strong><a href="index.php?sec=gmodules&sec2=godmode/groups/configure_modu_group&id_group='.$id_group['id_mg'].'">'.ui_print_truncate_text($id_group['name'], GENERIC_SIZE_TEXT).'</a></strong>';
|
||||
$data[1] = '<strong><a href="index.php?sec=gmodules&sec2=godmode/groups/configure_modu_group&id_group='.$id_group['id_mg'].'&offset='.$offset.'">'.ui_print_truncate_text($id_group['name'], GENERIC_SIZE_TEXT).'</a></strong>';
|
||||
if (is_metaconsole() === true) {
|
||||
$data[2] = '<a href="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>';
|
||||
$data[2] = '<a href="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group&id_group='.$id_group['id_mg'].'&delete_group=1&offset='.$offset_delete.'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>';
|
||||
} else {
|
||||
$table->cellclass[][2] = 'action_buttons';
|
||||
$data[2] = '<a href="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>';
|
||||
$data[2] = '<a href="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list&id_group='.$id_group['id_mg'].'&delete_group=1&offset='.$offset_delete.'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>';
|
||||
}
|
||||
} else {
|
||||
$data[1] = '<strong>';
|
||||
|
|
|
@ -2094,46 +2094,21 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
switch ($field) {
|
||||
case 'id_plugin':
|
||||
if ($value != 0) {
|
||||
$value_field_1 = get_parameter('_field1_', '');
|
||||
$value_field_1_desc = get_parameter('desc_field1_', '');
|
||||
|
||||
$value_field_2 = get_parameter('_field2_', '');
|
||||
$value_field_2_desc = get_parameter('desc_field2_', '');
|
||||
|
||||
$value_field_3 = get_parameter('_field3_', '');
|
||||
$value_field_3_desc = get_parameter('desc_field3_', '');
|
||||
|
||||
$value_field_4 = get_parameter('_field4_', '');
|
||||
$value_field_4_desc = get_parameter('desc_field4_', '');
|
||||
|
||||
$value_field_5 = get_parameter('_field5_', '');
|
||||
$value_field_5_desc = get_parameter('desc_field5_', '');
|
||||
|
||||
$values['macros'] = '{"1":{"macro":"_field1_","desc":"'.io_safe_input($value_field_1_desc).'","help":"'.io_safe_input($value_field_1_desc).'","value":"'.$value_field_1.'"}';
|
||||
|
||||
if ($value_field_2_desc != '') {
|
||||
$values['macros'] .= ',"2":{"macro":"_field2_","desc":"'.io_safe_input($value_field_2_desc).'","help":"'.io_safe_input($value_field_2_desc).'","value":"'.$value_field_2.'"}';
|
||||
|
||||
if ($value_field_3_desc != '') {
|
||||
$values['macros'] .= ',"3":{"macro":"_field3_","desc":"'.io_safe_input($value_field_3_desc).'","help":"'.io_safe_input($value_field_3_desc).'","value":"'.$value_field_3.'"}';
|
||||
|
||||
if ($value_field_4_desc != '') {
|
||||
$values['macros'] .= ',"4":{"macro":"_field4_","desc":"'.io_safe_input($value_field_4_desc).'","help":"'.io_safe_input($value_field_4_desc).'","value":"'.$value_field_4.'"}';
|
||||
|
||||
if ($value_field_5_desc != '') {
|
||||
$values['macros'] .= ',"5":{"macro":"_field5_","desc":"'.io_safe_input($value_field_5_desc).'","help":"'.io_safe_input($value_field_5_desc).'","value":"'.$value_field_5.'"}';
|
||||
} else {
|
||||
$values['macros'] .= '}';
|
||||
}
|
||||
} else {
|
||||
$values['macros'] .= '}';
|
||||
}
|
||||
} else {
|
||||
$values['macros'] .= '}';
|
||||
for ($i = 0; $i <= 15; $i++) {
|
||||
$value_field = get_parameter('_field'.$i.'_', '');
|
||||
$value_field_desc = get_parameter('desc_field'.$i.'_', '');
|
||||
if ($value_field_desc != '') {
|
||||
$values['macros'][$i] = [
|
||||
'macro' => '_field'.$i.'_',
|
||||
'desc' => io_safe_input($value_field_desc),
|
||||
'help' => io_safe_input($value_field_desc),
|
||||
'value' => $value_field,
|
||||
];
|
||||
}
|
||||
} else {
|
||||
$values['macros'] .= '}';
|
||||
}
|
||||
|
||||
$values['macros'] = json_encode($values['macros']);
|
||||
$values[$field] = $value;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -2143,6 +2118,12 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
}
|
||||
break;
|
||||
|
||||
case 'dynamic_interval':
|
||||
if ($value !== '-2') {
|
||||
$values[$field] = $value;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'plugin_pass':
|
||||
if ($value != '') {
|
||||
$values['plugin_pass'] = io_input_password($value);
|
||||
|
@ -2254,7 +2235,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
// Apply at All agents (within valid groups).
|
||||
$modules = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT tam.id_agente_modulo, tam.id_tipo_modulo
|
||||
'SELECT tam.id_agente_modulo, tam.id_tipo_modulo,tam.macros, tam.id_plugin
|
||||
FROM tagente_modulo tam INNER JOIN tagente ta
|
||||
ON ta.id_agente = tam.id_agente
|
||||
WHERE ta.id_grupo IN (%s) %s;',
|
||||
|
@ -2271,6 +2252,8 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
[
|
||||
'id_agente_modulo',
|
||||
'id_tipo_modulo',
|
||||
'macros',
|
||||
'id_plugin',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
|
@ -2283,6 +2266,8 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
[
|
||||
'id_agente_modulo',
|
||||
'id_tipo_modulo',
|
||||
'macros',
|
||||
'id_plugin',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
@ -2340,6 +2325,23 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
|
|||
}
|
||||
}
|
||||
|
||||
if ($module['macros'] && $module['id_plugin'] == $values['id_plugin']) {
|
||||
$module_macros = json_decode($module['macros'], true);
|
||||
$values_macros = json_decode($values['macros'], true);
|
||||
|
||||
foreach ($values_macros as $k => $value_macro) {
|
||||
foreach ($module_macros as $s => $module_macro) {
|
||||
if ($value_macro['macro'] == $module_macro['macro'] && $value_macro['value'] !== '') {
|
||||
$module_macros[$s]['value'] = $value_macro['value'];
|
||||
$module_macros[$s]['desc'] = $value_macro['desc'];
|
||||
$module_macros[$s]['help'] = $value_macro['help'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$values['macros'] = json_encode($module_macros);
|
||||
}
|
||||
|
||||
$result = modules_update_agent_module(
|
||||
$module['id_agente_modulo'],
|
||||
$values,
|
||||
|
|
|
@ -597,9 +597,10 @@ if ((bool) $id !== false || $new_component
|
|||
$search_id_group = (int) get_parameter('search_id_group');
|
||||
$search_string = (string) get_parameter('search_string');
|
||||
|
||||
$offset = (int) get_parameter('offset');
|
||||
$url = ui_get_url_refresh(
|
||||
[
|
||||
'offset' => false,
|
||||
'offset' => $offset,
|
||||
'search_string' => $search_string,
|
||||
'search_id_group' => $search_id_group,
|
||||
'id' => $id,
|
||||
|
@ -607,7 +608,7 @@ $url = ui_get_url_refresh(
|
|||
true,
|
||||
false
|
||||
);
|
||||
|
||||
$name_url = 'index.php?sec=templates&sec2=godmode/modules/manage_network_components';
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
|
@ -712,8 +713,9 @@ $total_components = network_components_get_network_components(
|
|||
'COUNT(*) AS total'
|
||||
);
|
||||
$total_components = $total_components[0]['total'];
|
||||
ui_pagination($total_components, $url);
|
||||
$filter['offset'] = (int) get_parameter('offset');
|
||||
$offset_delete = ($offset >= ($total_components - 1)) ? ($offset - $config['block_size']) : $offset;
|
||||
ui_pagination($total_components, $name_url);
|
||||
$filter['offset'] = $offset;
|
||||
$filter['limit'] = (int) $config['block_size'];
|
||||
$components = network_components_get_network_components(
|
||||
false,
|
||||
|
@ -791,7 +793,7 @@ foreach ($components as $component) {
|
|||
true
|
||||
);
|
||||
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_network_components&id='.$component['id_nc'].'&pure='.$pure.'">';
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_network_components&id='.$component['id_nc'].'&pure='.$pure.'&offset='.$offset.'">';
|
||||
$data[0] .= io_safe_output($component['name']);
|
||||
$data[0] .= '</a>';
|
||||
} else {
|
||||
|
@ -855,7 +857,7 @@ foreach ($components as $component) {
|
|||
|
||||
if ($is_management_allowed === true) {
|
||||
$table->cellclass[][6] = 'action_buttons';
|
||||
$data[6] = '<a class="inline_line float-left" href="'.$url.'&search_id_group='.$search_id_group.'search_string='.$search_string.'&duplicate_network_component=1&source_id='.$component['id_nc'].'">'.html_print_image(
|
||||
$data[6] = '<a class="inline_line float-left" href="'.$url.'&search_id_group='.$search_id_group.'search_string='.$search_string.'&duplicate_network_component=1&source_id='.$component['id_nc'].'&offset='.$offset.'">'.html_print_image(
|
||||
'images/copy.png',
|
||||
true,
|
||||
[
|
||||
|
@ -864,7 +866,7 @@ foreach ($components as $component) {
|
|||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
$data[6] .= '<a href="'.$url.'&delete_component=1&id='.$component['id_nc'].'&search_id_group='.$search_id_group.'search_string='.$search_string.'" onclick="if (! confirm (\''.__('Are you sure?').'\')) return false" >'.html_print_image(
|
||||
$data[6] .= '<a href="'.$url.'&delete_component=1&id='.$component['id_nc'].'&search_id_group='.$search_id_group.'search_string='.$search_string.'&offset='.$offset_delete.'" onclick="if (! confirm (\''.__('Are you sure?').'\')) return false" >'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
|
@ -887,7 +889,7 @@ if (isset($data) === true) {
|
|||
html_print_table($table);
|
||||
ui_pagination(
|
||||
$total_components,
|
||||
$url,
|
||||
$name_url,
|
||||
0,
|
||||
0,
|
||||
false,
|
||||
|
|
|
@ -281,7 +281,7 @@ switch ($action) {
|
|||
$server_name = $item['server_name'];
|
||||
|
||||
// Metaconsole db connection.
|
||||
if ($meta && empty($server_name) === false) {
|
||||
if ($meta && empty($server_name) === false && $server_name !== 'all') {
|
||||
$connection = metaconsole_get_connection($server_name);
|
||||
$server_id = $connection['id'];
|
||||
if (metaconsole_load_external_db($connection) != NOERR) {
|
||||
|
@ -1233,6 +1233,29 @@ $class = 'databox filters';
|
|||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
$servers_all_opt = array_merge(['all' => 'All nodes'], $servers);
|
||||
if ($meta) {
|
||||
?>
|
||||
<tr id="row_servers_all_opt" class="datos">
|
||||
<td class="bolder"><?php echo __('Server'); ?></td>
|
||||
<td >
|
||||
<?php
|
||||
html_print_select(
|
||||
$servers_all_opt,
|
||||
'combo_server',
|
||||
$server_name,
|
||||
'',
|
||||
$nothing,
|
||||
$nothing_value
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
if ($meta) {
|
||||
?>
|
||||
|
@ -6334,6 +6357,7 @@ function chooseType() {
|
|||
$("#row_alert_templates").hide();
|
||||
$("#row_alert_actions").hide();
|
||||
$("#row_servers").hide();
|
||||
$("#row_servers_all_opt").hide();
|
||||
$("#row_multiple_servers").hide();
|
||||
$("#row_sort").hide();
|
||||
$("#row_date").hide();
|
||||
|
@ -6648,7 +6672,7 @@ function chooseType() {
|
|||
$("#row_header").show();
|
||||
$("#row_custom").show();
|
||||
$("#row_custom_example").show();
|
||||
$("#row_servers").show();
|
||||
$("#row_servers_all_opt").show();
|
||||
$("#row_historical_db_check").show();
|
||||
break;
|
||||
|
||||
|
|
|
@ -865,6 +865,11 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
|
|||
var id_layout_data = $("#active_id_layout_data").val();
|
||||
var label = tinyMCE.activeEditor.getContent();
|
||||
$("#hidden-label_" + id_layout_data).val(label);
|
||||
},
|
||||
buttons: {
|
||||
Save: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -141,11 +141,13 @@ if (isset($_GET['server'])) {
|
|||
|
||||
];
|
||||
|
||||
$buttons['collections'] = [
|
||||
'active' => false,
|
||||
'text' => '<a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$id_server.'&ext='.$ext.'&tab=collections&pure='.$pure.'">'.html_print_image('images/collection.png', true, ['title' => __('Collections')]).'</a>',
|
||||
if ((int) $config['license_nms'] !== 1) {
|
||||
$buttons['collections'] = [
|
||||
'active' => false,
|
||||
'text' => '<a href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&server_remote='.$id_server.'&ext='.$ext.'&tab=collections&pure='.$pure.'">'.html_print_image('images/collection.png', true, ['title' => __('Collections')]).'</a>',
|
||||
|
||||
];
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$buttons[$tab]['active'] = true;
|
||||
|
|
|
@ -230,9 +230,64 @@ if ($filemanager) {
|
|||
$directory = filemanager_safe_directory($directory, $fallback_directory);
|
||||
}
|
||||
|
||||
$base_url = 'index.php?sec=gservers&sec2=godmode/servers/plugin';
|
||||
$setup_url = $base_url.'&filemanager=1&tab=Attachments';
|
||||
$tab = get_parameter('tab', null);
|
||||
$tabs = [
|
||||
'list' => [
|
||||
'text' => '<a href="'.$base_url.'">'.html_print_image(
|
||||
'images/eye_show.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Plugins'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
'active' => (bool) ($tab != 'Attachments'),
|
||||
],
|
||||
'options' => [
|
||||
'text' => '<a href="'.$setup_url.'">'.html_print_image(
|
||||
'images/collection.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Attachments'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
'active' => (bool) ($tab == 'Attachments'),
|
||||
],
|
||||
];
|
||||
|
||||
if ($tab === 'Attachments') {
|
||||
$helpHeader = '';
|
||||
$titleHeader = __('Index of attachment/plugin');
|
||||
} else {
|
||||
$helpHeader = 'servers_ha_clusters_tab';
|
||||
$titleHeader = __('Plug-ins registered on %s', get_product_name());
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
$titleHeader,
|
||||
'images/gm_servers.png',
|
||||
false,
|
||||
$helpHeader,
|
||||
false,
|
||||
$tabs,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Servers'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Plugins'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$real_directory = realpath($config['homedir'].'/'.$directory);
|
||||
|
||||
echo '<h4>'.__('Index of %s', $directory).'</h4>';
|
||||
|
||||
$chunck_url = '&view='.$id_plugin;
|
||||
if ($id_plugin == 0) {
|
||||
|
@ -255,7 +310,7 @@ if ($filemanager) {
|
|||
filemanager_file_explorer(
|
||||
$real_directory,
|
||||
$directory,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$id_plugin,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$id_plugin.'&tab=Attachments',
|
||||
$fallback_directory,
|
||||
true,
|
||||
false,
|
||||
|
@ -401,7 +456,7 @@ if (($create != '') || ($view != '')) {
|
|||
$data[0] = __('Plugin command').ui_print_help_tip(__('Specify interpreter and plugin path. The server needs permissions to run it.'), true);
|
||||
$data[1] = '<input type="text" name="form_execute" id="form_execute" class="command_component command_advanced_conf text_input" size=100 value="'.$form_execute.'" >';
|
||||
|
||||
$data[1] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$form_id.'" class="bot">';
|
||||
$data[1] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&tab=Attachments&id_plugin='.$form_id.'" class="bot">';
|
||||
$data[1] .= html_print_image('images/file.png', true, ['class' => 'invert_filter'], false, true);
|
||||
$data[1] .= '</a>';
|
||||
$table->data['plugin_command'] = $data;
|
||||
|
@ -597,15 +652,60 @@ if (($create != '') || ($view != '')) {
|
|||
);
|
||||
}
|
||||
} else {
|
||||
ui_print_page_header(
|
||||
__(
|
||||
'Plug-ins registered on %s',
|
||||
get_product_name()
|
||||
),
|
||||
$base_url = 'index.php?sec=gservers&sec2=godmode/servers/plugin';
|
||||
$setup_url = $base_url.'&filemanager=1&tab=Attachments';
|
||||
$tab = get_parameter('tab', null);
|
||||
$tabs = [
|
||||
'list' => [
|
||||
'text' => '<a href="'.$base_url.'">'.html_print_image(
|
||||
'images/eye_show.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Plugins'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
'active' => (bool) ($tab != 'Attachments'),
|
||||
],
|
||||
'options' => [
|
||||
'text' => '<a href="'.$setup_url.'">'.html_print_image(
|
||||
'images/collection.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Attachments'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
'active' => (bool) ($tab == 'Attachments'),
|
||||
],
|
||||
];
|
||||
|
||||
if ($tab === 'Attachments') {
|
||||
$helpHeader = '';
|
||||
$titleHeader = __('Index of attachment/plugin');
|
||||
} else {
|
||||
$helpHeader = 'servers_ha_clusters_tab';
|
||||
$titleHeader = __('Plug-ins registered on %s', get_product_name());
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
$titleHeader,
|
||||
'images/gm_servers.png',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
$helpHeader,
|
||||
false,
|
||||
$tabs,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Servers'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Plugins'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$management_allowed = is_management_allowed();
|
||||
|
@ -892,7 +992,7 @@ if (($create != '') || ($view != '')) {
|
|||
echo '<div id="deploy_messages" class="invisible">';
|
||||
}
|
||||
|
||||
// The '%s' will be replaced in the javascript code of the function 'show_locked_dialog'
|
||||
// The '%s' will be replaced in the javascript code of the function 'show_locked_dialog'.
|
||||
echo "<div id='dialog_locked' title='".__('List of modules and components created by "%s" ')."' class='invisible left'>";
|
||||
echo '</div>';
|
||||
|
||||
|
@ -903,50 +1003,49 @@ ui_require_javascript_file('pandora_modules');
|
|||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
var locked = <?php echo (int) json_encode((int) $locked); ?>;
|
||||
|
||||
|
||||
function update_preview() {
|
||||
var command = $('#form_execute').val();
|
||||
var parameters = $('#form_parameters').val();
|
||||
|
||||
|
||||
var i = 1;
|
||||
|
||||
|
||||
while (1) {
|
||||
if ($('#text-field' + i + '_value').val() == undefined) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if ($('#text-field'+i+'_value').val() != '') {
|
||||
parameters = parameters
|
||||
.replace('_field' + i + '_',
|
||||
$('#text-field' + i + '_value').val());
|
||||
}
|
||||
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
$('#command_preview').html(_.escape(command) + ' ' + _.escape(parameters));
|
||||
}
|
||||
|
||||
|
||||
function show_locked_dialog(id_plugin, plugin_name) {
|
||||
var parameters = {};
|
||||
parameters['page'] = "godmode/servers/plugin";
|
||||
parameters["get_list_modules_and_component_locked_plugin"] = 1;
|
||||
parameters["id_plugin"] = id_plugin;
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
data: parameters,
|
||||
dataType: "html",
|
||||
success: function(data) {
|
||||
var title = $("#dialog_locked").prop('title').replace(/%s/, plugin_name);
|
||||
|
||||
var title = 'List of modules and components created by "'+ plugin_name +'"';
|
||||
$("#dialog_locked")
|
||||
.prop('title', title)
|
||||
.html(data)
|
||||
.dialog ({
|
||||
title: title,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
|
@ -961,8 +1060,7 @@ ui_require_javascript_file('pandora_modules');
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
// Add macro
|
||||
var add_macro_click_event = function (event) {
|
||||
|
@ -992,34 +1090,34 @@ ui_require_javascript_file('pandora_modules');
|
|||
update_preview();
|
||||
}
|
||||
$('div#delete_macro_button>a').click(delete_macro_click_event);
|
||||
|
||||
|
||||
update_preview();
|
||||
|
||||
|
||||
$('.command_component').keyup(function() {
|
||||
update_preview();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
var add_macro_click_locked_event = function (event) {
|
||||
var message = '<?php echo __('Some modules or components are using the plugin'); ?>.'
|
||||
+ '\n' + '<?php echo __('The modules or components should be updated manually or using the bulk operations for plugins after this change'); ?>.'
|
||||
+ '\n'
|
||||
+ '\n' + '<?php echo __('Are you sure you want to perform this action?'); ?>';
|
||||
|
||||
|
||||
if (!confirm(message)) {
|
||||
event.stopImmediatePropagation();
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var macros_click_locked_event = function (event) {
|
||||
alert("<?php echo __('The plugin macros cannot be updated because some modules or components are using the plugin'); ?>");
|
||||
}
|
||||
|
||||
|
||||
if (locked) {
|
||||
$('a#add_macro_btn').click(add_macro_click_locked_event);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
|
|
@ -110,6 +110,12 @@ foreach ($servers as $server) {
|
|||
];
|
||||
$data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>';
|
||||
|
||||
$server_keepalive = time_w_fixed_tz($server['keepalive']);
|
||||
|
||||
if ($server['server_keepalive_utimestamp'] > 0) {
|
||||
$server_keepalive = $server['server_keepalive_utimestamp'];
|
||||
}
|
||||
|
||||
// Status.
|
||||
$data[1] = ui_print_status_image(STATUS_SERVER_OK, '', true);
|
||||
if ($server['status'] == -1) {
|
||||
|
@ -119,7 +125,7 @@ foreach ($servers as $server) {
|
|||
true
|
||||
);
|
||||
} else if ((int) ($server['status'] === 0)
|
||||
|| (($date - time_w_fixed_tz($server['keepalive'])) > ($server['server_keepalive']) * 2)
|
||||
|| (($date - $server_keepalive) > ($server['server_keepalive']) * 2)
|
||||
) {
|
||||
$data[1] = ui_print_status_image(
|
||||
STATUS_SERVER_DOWN,
|
||||
|
|
|
@ -87,6 +87,20 @@ $create_text_file = (bool) get_parameter('create_text_file');
|
|||
|
||||
$default_real_directory = realpath($config['homedir'].'/');
|
||||
|
||||
// Remove double dot in filename path.
|
||||
$file_name = $_FILES['file']['name'];
|
||||
$path_parts = explode('/', $file_name);
|
||||
|
||||
$stripped_parts = array_filter(
|
||||
$path_parts,
|
||||
function ($value) {
|
||||
return $value !== '..';
|
||||
}
|
||||
);
|
||||
|
||||
$stripped_path = implode('/', $stripped_parts);
|
||||
$_FILES['file']['name'] = $stripped_path;
|
||||
|
||||
if ($upload_file === true) {
|
||||
upload_file(
|
||||
$upload_file,
|
||||
|
|
|
@ -151,6 +151,11 @@ if ($update_config == 1 && $config['history_db_enabled'] == 1) {
|
|||
}
|
||||
}
|
||||
|
||||
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
||||
$total_agents = db_get_value('count(*)', 'tagente');
|
||||
$disable_agentaccess = ($total_agents >= 200 && $config['agentaccess'] == 0) ? true : false;
|
||||
|
||||
$table_status = new StdClass();
|
||||
$table_status->width = '100%';
|
||||
$table_status->class = 'databox filters';
|
||||
|
@ -261,104 +266,140 @@ $table->data[1][1] = html_print_input(
|
|||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => 99999,
|
||||
'max' => $performance_variables_control['event_purge']->max,
|
||||
'name' => 'event_purge',
|
||||
'value' => $config['event_purge'],
|
||||
'return' => true,
|
||||
'min' => ((((bool) $config['history_event_enabled'] === true) && $config['history_event_days'] > 0) ? $config['history_event_days'] + 1 : null),
|
||||
'min' => $performance_variables_control['event_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[2][0] = __('Max. days before delete traps');
|
||||
$table->data[2][1] = html_print_input_text(
|
||||
'trap_purge',
|
||||
$config['trap_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[2][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['trap_purge']->max,
|
||||
'name' => 'trap_purge',
|
||||
'value' => $config['trap_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['trap_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[3][0] = __('Max. days before delete audit events');
|
||||
$table->data[3][1] = html_print_input_text(
|
||||
'audit_purge',
|
||||
$config['audit_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[3][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['audit_purge']->max,
|
||||
'name' => 'audit_purge',
|
||||
'value' => $config['audit_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['audit_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[4][0] = __('Max. days before delete string data');
|
||||
$table->data[4][1] = html_print_input_text(
|
||||
'string_purge',
|
||||
$config['string_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[4][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['string_purge']->max,
|
||||
'name' => 'string_purge',
|
||||
'value' => $config['string_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['string_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[5][0] = __('Max. days before delete GIS data');
|
||||
$table->data[5][1] = html_print_input_text(
|
||||
'gis_purge',
|
||||
$config['gis_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[5][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['gis_purge']->max,
|
||||
'name' => 'gis_purge',
|
||||
'value' => $config['gis_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['gis_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[6][0] = __('Max. days before purge');
|
||||
$table->data[6][1] = html_print_input_text(
|
||||
'days_purge',
|
||||
$config['days_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[6][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['days_purge']->max,
|
||||
'name' => 'days_purge',
|
||||
'value' => $config['days_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['days_purge']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[7][0] = __('Max. days before compact data');
|
||||
$table->data[7][1] = html_print_input_text(
|
||||
'days_compact',
|
||||
$config['days_compact'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[7][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['days_compact']->max,
|
||||
'name' => 'days_compact',
|
||||
'value' => $config['days_compact'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['days_compact']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[8][0] = __('Max. days before delete unknown modules');
|
||||
$table->data[8][1] = html_print_input_text(
|
||||
'days_delete_unknown',
|
||||
$config['days_delete_unknown'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[8][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['days_delete_unknown']->max,
|
||||
'name' => 'days_delete_unknown',
|
||||
'value' => $config['days_delete_unknown'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['days_delete_unknown']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
$table->data[9][0] = __('Max. days before delete not initialized modules');
|
||||
$table->data[9][1] = html_print_input_text(
|
||||
'days_delete_not_initialized',
|
||||
$config['days_delete_not_initialized'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[9][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['days_delete_not_initialized']->max,
|
||||
'name' => 'days_delete_not_initialized',
|
||||
'value' => $config['days_delete_not_initialized'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['days_delete_not_initialized']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[10][0] = __('Max. days before delete autodisabled agents');
|
||||
$table->data[10][1] = html_print_input_text(
|
||||
'days_autodisable_deletion',
|
||||
$config['days_autodisable_deletion'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table->data[10][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['days_autodisable_deletion']->max,
|
||||
'name' => 'days_autodisable_deletion',
|
||||
'value' => $config['days_autodisable_deletion'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['days_autodisable_deletion']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[11][0] = __('Retention period of past special days');
|
||||
|
@ -499,13 +540,17 @@ $table->data[] = [
|
|||
|
||||
$table->data[] = [
|
||||
__('Max. days before delete old network matrix data'),
|
||||
html_print_input_text(
|
||||
'delete_old_network_matrix',
|
||||
$config['delete_old_network_matrix'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['delete_old_network_matrix']->max,
|
||||
'name' => 'delete_old_network_matrix',
|
||||
'value' => $config['delete_old_network_matrix'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['delete_old_network_matrix']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
),
|
||||
];
|
||||
|
||||
|
@ -519,13 +564,30 @@ $table_other->size[0] = '70%';
|
|||
$table_other->size[1] = '30%';
|
||||
$i = 0;
|
||||
$table_other->data[$i][0] = __('Item limit for realtime reports');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
'report_limit',
|
||||
$config['report_limit'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['report_limit']->max,
|
||||
'name' => 'report_limit',
|
||||
'value' => $config['report_limit'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['report_limit']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Limit of events per query');
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => 10000,
|
||||
'name' => 'events_per_query',
|
||||
'value' => $config['events_per_query'],
|
||||
'return' => true,
|
||||
'style' => 'width:50px',
|
||||
]
|
||||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Compact interpolation in hours (1 Fine-20 bad)');
|
||||
|
@ -549,13 +611,17 @@ $intervals[SECONDS_2WEEK] = __('2 weeks');
|
|||
$intervals[SECONDS_1MONTH] = __('Last month');
|
||||
|
||||
$table_other->data[$i][0] = __('Default hours for event view');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
'event_view_hr',
|
||||
$config['event_view_hr'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['event_view_hr']->max,
|
||||
'name' => 'event_view_hr',
|
||||
'value' => $config['event_view_hr'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['event_view_hr']->min,
|
||||
'style' => 'width:43px',
|
||||
]
|
||||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Use realtime statistics');
|
||||
|
@ -577,7 +643,7 @@ $table_other->data[$i++][1] = html_print_input_text(
|
|||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Use agent access graph');
|
||||
$table_other->data[$i++][1] = html_print_checkbox_switch('agentaccess', 1, $config['agentaccess'], true);
|
||||
$table_other->data[$i++][1] = html_print_checkbox_switch('agentaccess', 1, $config['agentaccess'], true, $disable_agentaccess);
|
||||
|
||||
$table_other->data[$i][0] = __('Max. recommended number of files in attachment directory');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
|
@ -593,23 +659,33 @@ $table_other->data[$i][0] = __('Delete not init modules');
|
|||
$table_other->data[$i++][1] = html_print_checkbox_switch('delete_notinit', 1, $config['delete_notinit'], true);
|
||||
|
||||
$table_other->data[$i][0] = __('Big Operation Step to purge old data');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
'big_operation_step_datos_purge',
|
||||
$config['big_operation_step_datos_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['big_operation_step_datos_purge']->max,
|
||||
'name' => 'big_operation_step_datos_purge',
|
||||
'value' => $config['big_operation_step_datos_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['big_operation_step_datos_purge']->min,
|
||||
'style' => 'width:50px',
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
|
||||
$table_other->data[$i][0] = __('Small Operation Step to purge old data');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
'small_operation_step_datos_purge',
|
||||
$config['small_operation_step_datos_purge'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['small_operation_step_datos_purge']->max,
|
||||
'name' => 'small_operation_step_datos_purge',
|
||||
'value' => $config['small_operation_step_datos_purge'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['small_operation_step_datos_purge']->min,
|
||||
'style' => 'width:50px',
|
||||
]
|
||||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Graph container - Max. Items');
|
||||
|
@ -633,13 +709,17 @@ $table_other->data[$i++][1] = html_print_input_text(
|
|||
);
|
||||
|
||||
$table_other->data[$i][0] = __('Row limit in csv log');
|
||||
$table_other->data[$i++][1] = html_print_input_text(
|
||||
'row_limit_csv',
|
||||
$config['row_limit_csv'],
|
||||
'',
|
||||
5,
|
||||
10,
|
||||
true
|
||||
$table_other->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['row_limit_csv']->max,
|
||||
'name' => 'row_limit_csv',
|
||||
'value' => $config['row_limit_csv'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['row_limit_csv']->min,
|
||||
'style' => 'width:63px',
|
||||
]
|
||||
);
|
||||
|
||||
$table_other->data[$i][0] = __('SNMP walk binary');
|
||||
|
|
|
@ -47,6 +47,8 @@ if (is_ajax()) {
|
|||
exit();
|
||||
}
|
||||
|
||||
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
||||
$table = new StdClass();
|
||||
$table->class = 'databox filters';
|
||||
$table->id = 'setup_general';
|
||||
|
@ -512,13 +514,17 @@ $table->data[$i++][1] = html_print_checkbox_switch(
|
|||
);
|
||||
|
||||
$table->data[$i][0] = __('Limit for bulk operations');
|
||||
$table->data[$i++][1] = html_print_input_text(
|
||||
'limit_parameters_massive',
|
||||
$config['limit_parameters_massive'],
|
||||
'',
|
||||
10,
|
||||
10,
|
||||
true
|
||||
$table->data[$i++][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['limit_parameters_massive']->max,
|
||||
'name' => 'limit_parameters_massive',
|
||||
'value' => $config['limit_parameters_massive'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['limit_parameters_massive']->min,
|
||||
'style' => 'width:50px',
|
||||
]
|
||||
);
|
||||
|
||||
$table->data[$i][0] = __('Include agents manually disabled');
|
||||
|
|
|
@ -53,6 +53,8 @@ $row = 0;
|
|||
echo '<form id="form_setup" method="post">';
|
||||
html_print_input_hidden('update_config', 1);
|
||||
|
||||
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// BEHAVIOUR CONFIGURATION
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -64,7 +66,18 @@ $table_behaviour->size[0] = '50%';
|
|||
$table_behaviour->data = [];
|
||||
|
||||
$table_behaviour->data[$row][0] = __('Block size for pagination');
|
||||
$table_behaviour->data[$row][1] = html_print_input_text('block_size', $config['global_block_size'], '', 5, 5, true);
|
||||
$table_behaviour->data[$row][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['block_size']->max,
|
||||
'name' => 'block_size',
|
||||
'value' => $config['global_block_size'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['block_size']->min,
|
||||
'style' => 'width:50px',
|
||||
]
|
||||
);
|
||||
$row++;
|
||||
|
||||
$values = [];
|
||||
|
@ -823,16 +836,19 @@ if (enterprise_installed() === false) {
|
|||
}
|
||||
|
||||
$table_chars->data[$row][0] = __('Data precision');
|
||||
$table_chars->data[$row][1] = html_print_input_text(
|
||||
'graph_precision',
|
||||
$config['graph_precision'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true,
|
||||
$disabled_graph_precision,
|
||||
false,
|
||||
'onChange="change_precision()"'
|
||||
$table_chars->data[$row][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['graph_precision']->max,
|
||||
'name' => 'graph_precision',
|
||||
'value' => $config['graph_precision'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['graph_precision']->min,
|
||||
'style' => 'width:50px',
|
||||
($disabled_graph_precision) ? 'readonly' : '' => 'readonly',
|
||||
'onchange' => 'change_precision()',
|
||||
]
|
||||
);
|
||||
$row++;
|
||||
|
||||
|
@ -841,17 +857,21 @@ if (isset($config['short_module_graph_data']) === false) {
|
|||
}
|
||||
|
||||
$table_chars->data[$row][0] = __('Data precision in graphs');
|
||||
$table_chars->data[$row][1] = html_print_input_text(
|
||||
'short_module_graph_data',
|
||||
$config['short_module_graph_data'],
|
||||
'',
|
||||
5,
|
||||
5,
|
||||
true,
|
||||
$disabled_graph_precision,
|
||||
false,
|
||||
'onChange="change_precision()"'
|
||||
$table_chars->data[$row][1] = html_print_input(
|
||||
[
|
||||
'type' => 'number',
|
||||
'size' => 5,
|
||||
'max' => $performance_variables_control['short_module_graph_data']->max,
|
||||
'name' => 'short_module_graph_data',
|
||||
'value' => $config['short_module_graph_data'],
|
||||
'return' => true,
|
||||
'min' => $performance_variables_control['short_module_graph_data']->min,
|
||||
'style' => 'width:50px',
|
||||
($disabled_graph_precision) ? 'readonly' : '' => 'readonly',
|
||||
'onchange' => 'change_precision()',
|
||||
]
|
||||
);
|
||||
|
||||
$row++;
|
||||
|
||||
$table_chars->data[$row][0] = __(
|
||||
|
|
|
@ -207,14 +207,14 @@ if (empty($tag_name) === false) {
|
|||
|
||||
// If the user has filtered the view.
|
||||
$filter_performed = !empty($filter);
|
||||
|
||||
$filter['offset'] = (int) get_parameter('offset');
|
||||
$offset = (int) get_parameter('offset');
|
||||
$filter['offset'] = $offset;
|
||||
$filter['limit'] = (int) $config['block_size'];
|
||||
|
||||
// Statements for pagination.
|
||||
$url = ui_get_url_refresh();
|
||||
$url = 'index.php?sec=gusuarios&sec2=godmode/tag/tag';
|
||||
$total_tags = tags_get_tag_count($filter);
|
||||
|
||||
$offset_delete = ($offset >= ($total_tags - 1)) ? ($offset - $config['block_size']) : $offset;
|
||||
$result = tags_search_tag(false, $filter);
|
||||
|
||||
// Filter form.
|
||||
|
@ -392,7 +392,7 @@ if (empty($result) === false) {
|
|||
]
|
||||
);
|
||||
$data[6] .= '</a>';
|
||||
$data[6] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/tag/tag&delete_tag='.$tag['id_tag'].'"onclick="if (! confirm (\''.__('Are you sure?').'\')) return false">'.html_print_image(
|
||||
$data[6] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/tag/tag&delete_tag='.$tag['id_tag'].'&offset='.$offset_delete.'"onclick="if (! confirm (\''.__('Are you sure?').'\')) return false">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
|
|
|
@ -402,6 +402,11 @@ if ($delete_user === true) {
|
|||
__('There was a problem deleting the profile')
|
||||
);
|
||||
} else if ($disable_user !== false) {
|
||||
// CSRF Validator.
|
||||
if (html_print_csrf_error()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Disable_user.
|
||||
$id_user = get_parameter('id', 0);
|
||||
|
||||
|
@ -646,6 +651,8 @@ $limit = (int) $config['block_size'];
|
|||
$rowPair = true;
|
||||
$iterator = 0;
|
||||
$cont = 0;
|
||||
// Creates csrf.
|
||||
$csrf = html_print_csrf_hidden(true);
|
||||
foreach ($info as $user_id => $user_info) {
|
||||
if (empty($user_id) === true) {
|
||||
continue;
|
||||
|
@ -809,12 +816,14 @@ foreach ($info as $user_id => $user_info) {
|
|||
$toDoClass = 'filter_none';
|
||||
}
|
||||
|
||||
$data[6] = '<form method="POST" action="index.php?sec='.$sec.'&sec2=godmode/users/user_list&pure='.$pure.'" class="inline">';
|
||||
$data[6] = '<form method="POST" action="index.php?sec='.$sec.'&sec2=godmode/users/user_list&pure='.$pure.'&offset='.$offset.'" class="inline">';
|
||||
$data[6] .= html_print_input_hidden(
|
||||
'id',
|
||||
$user_info['id_user'],
|
||||
true
|
||||
);
|
||||
// Same csrf for every disable button for submit.
|
||||
$data[6] .= $csrf;
|
||||
$data[6] .= html_print_input_hidden(
|
||||
'disable_user',
|
||||
$toDoAction,
|
||||
|
@ -865,7 +874,8 @@ foreach ($info as $user_id => $user_info) {
|
|||
&& $user_info['id_user'] != $config['id_user']
|
||||
&& isset($user_info['not_delete']) === false
|
||||
) {
|
||||
$data[6] .= '<form method="POST" action="index.php?sec='.$sec.'&sec2=godmode/users/user_list&pure='.$pure.'" class="inline">';
|
||||
$offset_delete = ($offset >= count($info) - 1) ? ($offset - $config['block_size']) : $offset;
|
||||
$data[6] .= '<form method="POST" action="index.php?sec='.$sec.'&sec2=godmode/users/user_list&pure='.$pure.'&offset='.$offset_delete.'" class="inline">';
|
||||
$data[6] .= html_print_input_hidden(
|
||||
'delete_user',
|
||||
$user_info['id_user'],
|
||||
|
|
|
@ -955,29 +955,42 @@ class DiscoveryTaskList extends HTML
|
|||
)
|
||||
) {
|
||||
if ($ipam === true) {
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
sprintf(
|
||||
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=edit&id=%d',
|
||||
$tipam_task_id
|
||||
)
|
||||
).'">'.html_print_image(
|
||||
'images/config.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Edit task'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=delete&id='.$tipam_task_id
|
||||
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete task'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
if (empty($tipam_task_id) === false) {
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
sprintf(
|
||||
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=edit&id=%d',
|
||||
$tipam_task_id
|
||||
)
|
||||
).'">'.html_print_image(
|
||||
'images/config.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Edit task'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gextensions&sec2=enterprise/tools/ipam/ipam&action=delete&id='.$tipam_task_id
|
||||
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete task'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
} else {
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist&delete=1&task='.$task['id_rt']
|
||||
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
|
||||
'images/cross.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete task'),
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
}
|
||||
} else {
|
||||
// Check if is a H&D, Cloud or Application or IPAM.
|
||||
$data[9] .= '<a href="'.ui_get_full_url(
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
|
@ -92,6 +92,9 @@ $node_id = (int) get_parameter('node_id', 0);
|
|||
if ($get_comments === true) {
|
||||
$event = get_parameter('event', false);
|
||||
$event_rep = (int) get_parameter('event_rep', 0);
|
||||
$event_rep = get_parameter_post('event')['event_rep'];
|
||||
$group_rep = get_parameter_post('event')['group_rep'];
|
||||
|
||||
if ($event === false) {
|
||||
return __('Failed to retrieve comments');
|
||||
}
|
||||
|
@ -99,7 +102,7 @@ if ($get_comments === true) {
|
|||
$eventsGrouped = [];
|
||||
// Consider if the event is grouped.
|
||||
$whereGrouped = '1=1';
|
||||
if ($event_rep === EVENT_GROUP_REP_EVENTS) {
|
||||
if ($group_rep === EVENT_GROUP_REP_EVENTS && $event_rep > 1) {
|
||||
// Default grouped message filtering (evento and estado).
|
||||
$whereGrouped = sprintf(
|
||||
'`evento` = "%s"',
|
||||
|
@ -120,7 +123,7 @@ if ($get_comments === true) {
|
|||
(int) $event['id_agentmodule']
|
||||
);
|
||||
}
|
||||
} else if ($event_rep === EVENT_GROUP_REP_EXTRAIDS) {
|
||||
} else if ($group_rep === EVENT_GROUP_REP_EXTRAIDS) {
|
||||
$whereGrouped = sprintf(
|
||||
'`id_extra` = "%s"',
|
||||
$event['id_extra']
|
||||
|
@ -1639,6 +1642,7 @@ if ($get_extended_event) {
|
|||
$comments = $event['comments'];
|
||||
|
||||
$event['similar_ids'] = $similar_ids;
|
||||
$event['group_rep'] = $group_rep;
|
||||
|
||||
if (isset($comments) === false) {
|
||||
$comments = $event['user_comment'];
|
||||
|
@ -2412,6 +2416,18 @@ if ($drawConsoleSound === true) {
|
|||
$output .= '</span>';
|
||||
$output .= '</div>';
|
||||
$output .= '<div class="elements-discovered-alerts"><ul></ul></div>';
|
||||
$output .= html_print_input_hidden(
|
||||
'ajax_file_sound_console',
|
||||
ui_get_full_url('ajax.php', false, false, false),
|
||||
true
|
||||
);
|
||||
$output .= html_print_input_hidden(
|
||||
'meta',
|
||||
is_metaconsole(),
|
||||
true
|
||||
);
|
||||
$output .= '<div id="sound_event_details_window"></div>';
|
||||
$output .= '<div id="sound_event_response_window"></div>';
|
||||
$output .= '</div>';
|
||||
$output .= '</div>';
|
||||
|
||||
|
@ -2498,6 +2514,37 @@ if ($get_events_fired) {
|
|||
$filter = events_get_event_filter($filter_id);
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$servers = metaconsole_get_servers();
|
||||
if (is_array($servers) === true) {
|
||||
$servers = array_reduce(
|
||||
$servers,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id']] = $item['server_name'];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
$servers = [];
|
||||
}
|
||||
|
||||
if ($filter['server_id'] === '') {
|
||||
$filter['server_id'] = array_keys($servers);
|
||||
} else {
|
||||
if (is_array($filter['server_id']) === false) {
|
||||
if (is_numeric($filter['server_id']) === true) {
|
||||
if ($filter['server_id'] !== 0) {
|
||||
$filter['server_id'] = [$filter['server_id']];
|
||||
} else {
|
||||
$filter['server_id'] = array_keys($servers);
|
||||
}
|
||||
} else {
|
||||
$filter['server_id'] = explode(',', $filter['server_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set time.
|
||||
$filter['event_view_hr'] = 0;
|
||||
|
||||
|
@ -2516,29 +2563,32 @@ if ($get_events_fired) {
|
|||
$return = [];
|
||||
if (empty($data) === false) {
|
||||
foreach ($data as $event) {
|
||||
$return[] = [
|
||||
'fired' => $event['id_evento'],
|
||||
'message' => ui_print_string_substr(
|
||||
strip_tags(io_safe_output($event['evento'])),
|
||||
75,
|
||||
true,
|
||||
'9'
|
||||
),
|
||||
'priority' => ui_print_event_priority($event['criticity'], true, true),
|
||||
'type' => events_print_type_img(
|
||||
$event['event_type'],
|
||||
true
|
||||
),
|
||||
'timestamp' => ui_print_timestamp(
|
||||
$event['timestamp'],
|
||||
true,
|
||||
['style' => 'font-size: 9pt; letter-spacing: 0.3pt;']
|
||||
),
|
||||
];
|
||||
$return[] = array_merge(
|
||||
$event,
|
||||
[
|
||||
'fired' => $event['id_evento'],
|
||||
'message' => ui_print_string_substr(
|
||||
strip_tags(io_safe_output($event['evento'])),
|
||||
75,
|
||||
true,
|
||||
'9'
|
||||
),
|
||||
'priority' => ui_print_event_priority($event['criticity'], true, true),
|
||||
'type' => events_print_type_img(
|
||||
$event['event_type'],
|
||||
true
|
||||
),
|
||||
'timestamp' => ui_print_timestamp(
|
||||
$event['timestamp'],
|
||||
true,
|
||||
['style' => 'font-size: 9pt; letter-spacing: 0.3pt;']
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
echo io_json_mb_encode($return);
|
||||
echo io_safe_output(io_json_mb_encode($return));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,6 +68,12 @@ if (check_login()) {
|
|||
0
|
||||
);
|
||||
|
||||
$load_filter_modal = get_parameter('load_filter_modal', 0);
|
||||
$save_filter_modal = get_parameter('save_filter_modal', 0);
|
||||
$get_monitor_filters = get_parameter('get_monitor_filters', 0);
|
||||
$save_monitor_filter = get_parameter('save_monitor_filter', 0);
|
||||
$update_monitor_filter = get_parameter('update_monitor_filter', 0);
|
||||
|
||||
if ($get_agent_modules_json_by_name === true) {
|
||||
$agent_name = get_parameter('agent_name');
|
||||
|
||||
|
@ -1661,6 +1667,534 @@ if (check_login()) {
|
|||
}
|
||||
|
||||
echo json_encode($children_selected);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Saves an event filter.
|
||||
if ($save_monitor_filter) {
|
||||
$values = [];
|
||||
$values['id_name'] = get_parameter('id_name');
|
||||
$values['id_group_filter'] = get_parameter('id_group_filter');
|
||||
$values['ag_group'] = get_parameter('ag_group');
|
||||
$values['modulegroup'] = get_parameter('modulegroup');
|
||||
$values['recursion'] = get_parameter('recursion');
|
||||
$values['status'] = get_parameter('status');
|
||||
$values['ag_modulename'] = get_parameter('ag_modulename');
|
||||
$values['ag_freestring'] = get_parameter('ag_freestring');
|
||||
$values['tag_filter'] = json_encode(get_parameter('tag_filter'));
|
||||
$values['moduletype'] = get_parameter('moduletype');
|
||||
$values['module_option'] = get_parameter('module_option');
|
||||
$values['min_hours_status'] = get_parameter('min_hours_status');
|
||||
$values['datatype'] = get_parameter('datatype');
|
||||
$values['not_condition'] = get_parameter('not_condition');
|
||||
$values['ag_custom_fields'] = get_parameter('ag_custom_fields');
|
||||
|
||||
$exists = (bool) db_get_value_filter(
|
||||
'id_filter',
|
||||
'tmonitor_filter',
|
||||
$values
|
||||
);
|
||||
|
||||
if ($exists === true) {
|
||||
echo 'duplicate';
|
||||
} else {
|
||||
$result = db_process_sql_insert('tmonitor_filter', $values);
|
||||
|
||||
if ($result === false) {
|
||||
echo 'error';
|
||||
} else {
|
||||
echo $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($update_monitor_filter) {
|
||||
$values = [];
|
||||
$id = get_parameter('id');
|
||||
|
||||
$values['ag_group'] = get_parameter('ag_group');
|
||||
$values['modulegroup'] = get_parameter('modulegroup');
|
||||
$values['recursion'] = get_parameter('recursion');
|
||||
$values['status'] = get_parameter('status');
|
||||
$values['ag_modulename'] = get_parameter('ag_modulename');
|
||||
$values['ag_freestring'] = get_parameter('ag_freestring');
|
||||
$values['tag_filter'] = json_encode(get_parameter('tag_filter'));
|
||||
$values['moduletype'] = get_parameter('moduletype');
|
||||
$values['module_option'] = get_parameter('module_option');
|
||||
$values['min_hours_status'] = get_parameter('min_hours_status');
|
||||
$values['datatype'] = get_parameter('datatype');
|
||||
$values['not_condition'] = get_parameter('not_condition');
|
||||
$values['ag_custom_fields'] = get_parameter('ag_custom_fields');
|
||||
|
||||
$result = db_process_sql_update(
|
||||
'tmonitor_filter',
|
||||
$values,
|
||||
['id_filter' => $id]
|
||||
);
|
||||
|
||||
if ($result === false) {
|
||||
echo 'error';
|
||||
} else {
|
||||
echo 'ok';
|
||||
}
|
||||
}
|
||||
|
||||
if ($get_monitor_filters) {
|
||||
$sql = 'SELECT id_filter, id_name FROM tmonitor_filter';
|
||||
|
||||
$monitor_filters = db_get_all_rows_sql($sql);
|
||||
|
||||
$result = [];
|
||||
|
||||
if ($monitor_filters !== false) {
|
||||
foreach ($monitor_filters as $monitor_filter) {
|
||||
$result[$monitor_filter['id_filter']] = $monitor_filter['id_name'];
|
||||
}
|
||||
}
|
||||
|
||||
echo io_json_mb_encode($result);
|
||||
}
|
||||
|
||||
if ((int) $load_filter_modal === 1) {
|
||||
$user_groups = users_get_groups(
|
||||
$config['id_user'],
|
||||
'AR',
|
||||
users_can_manage_group_all(),
|
||||
true
|
||||
);
|
||||
|
||||
$sql = 'SELECT id_filter, id_name
|
||||
FROM tmonitor_filter
|
||||
WHERE id_group_filter IN ('.implode(',', array_keys($user_groups)).')';
|
||||
|
||||
$event_filters = db_get_all_rows_sql($sql);
|
||||
|
||||
$filters = [];
|
||||
foreach ($event_filters as $event_filter) {
|
||||
$filters[$event_filter['id_filter']] = $event_filter['id_name'];
|
||||
}
|
||||
|
||||
echo '<div id="load-filter-select" class="load-filter-modal">';
|
||||
echo '<form method="post" id="form_load_filter" action="index.php?sec=view&sec2=operation/agentes/status_monitor&pure=">';
|
||||
|
||||
$table = new StdClass;
|
||||
$table->id = 'load_filter_form';
|
||||
$table->width = '100%';
|
||||
$table->cellspacing = 4;
|
||||
$table->cellpadding = 4;
|
||||
$table->class = 'databox';
|
||||
if (is_metaconsole()) {
|
||||
$table->cellspacing = 0;
|
||||
$table->cellpadding = 0;
|
||||
$table->class = 'databox filters';
|
||||
}
|
||||
|
||||
$table->styleTable = 'font-weight: bold; color: #555; text-align:left;';
|
||||
$filter_id_width = '200px';
|
||||
if (is_metaconsole()) {
|
||||
$filter_id_width = '150px';
|
||||
}
|
||||
|
||||
$data = [];
|
||||
$table->rowid[3] = 'update_filter_row1';
|
||||
$data[0] = __('Load filter').$jump;
|
||||
$data[0] .= html_print_select(
|
||||
$filters,
|
||||
'filter_id',
|
||||
$current,
|
||||
'',
|
||||
__('None'),
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'margin-left:5px; width:'.$filter_id_width.';'
|
||||
);
|
||||
$data[1] = html_print_submit_button(
|
||||
__('Load filter'),
|
||||
'load_filter',
|
||||
false,
|
||||
'class="sub upd"',
|
||||
true
|
||||
);
|
||||
$data[1] .= html_print_input_hidden('load_filter', 1, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
html_print_table($table);
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
function show_filter() {
|
||||
$("#load-filter-select").dialog({
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: false,
|
||||
closeOnEscape: true,
|
||||
width: 450
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
show_filter();
|
||||
});
|
||||
|
||||
</script>
|
||||
<?php
|
||||
return;
|
||||
}
|
||||
|
||||
if ($save_filter_modal) {
|
||||
echo '<div id="save-filter-select">';
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
echo '<div id="#info_box"></div>';
|
||||
$table = new StdClass;
|
||||
$table->id = 'save_filter_form';
|
||||
$table->width = '100%';
|
||||
$table->cellspacing = 4;
|
||||
$table->cellpadding = 4;
|
||||
$table->class = 'databox';
|
||||
if (is_metaconsole()) {
|
||||
$table->class = 'databox filters';
|
||||
$table->cellspacing = 0;
|
||||
$table->cellpadding = 0;
|
||||
}
|
||||
|
||||
$table->styleTable = 'font-weight: bold; text-align:left;';
|
||||
if (!is_metaconsole()) {
|
||||
$table->style[0] = 'width: 50%; width:50%;';
|
||||
}
|
||||
|
||||
$data = [];
|
||||
$table->rowid[0] = 'update_save_selector';
|
||||
$data[0] = html_print_radio_button(
|
||||
'filter_mode',
|
||||
'new',
|
||||
'',
|
||||
true,
|
||||
true
|
||||
).__('New filter').'';
|
||||
|
||||
$data[1] = html_print_radio_button(
|
||||
'filter_mode',
|
||||
'update',
|
||||
'',
|
||||
false,
|
||||
true
|
||||
).__('Update filter').'';
|
||||
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$table->rowid[1] = 'save_filter_row1';
|
||||
$data[0] = __('Filter name').$jump;
|
||||
$data[0] .= html_print_input_text('id_name', '', '', 15, 255, true);
|
||||
if (is_metaconsole()) {
|
||||
$data[1] = __('Save in Group').$jump;
|
||||
} else {
|
||||
$data[1] = __('Filter group').$jump;
|
||||
}
|
||||
|
||||
$user_groups_array = users_get_groups_for_select(
|
||||
$config['id_user'],
|
||||
'AW',
|
||||
users_can_manage_group_all(),
|
||||
true
|
||||
);
|
||||
|
||||
$data[1] .= html_print_select(
|
||||
$user_groups_array,
|
||||
'id_group_filter_dialog',
|
||||
$id_group_filter,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'w130'
|
||||
);
|
||||
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$table->rowid[2] = 'save_filter_row2';
|
||||
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$table->rowid[3] = 'update_filter_row1';
|
||||
$data[0] = __('Overwrite filter').$jump;
|
||||
|
||||
$sql = 'SELECT id_filter, id_name FROM tmonitor_filter';
|
||||
$monitor_filters = db_get_all_rows_sql($sql);
|
||||
|
||||
$_filters_update = [];
|
||||
|
||||
if ($monitor_filters !== false) {
|
||||
foreach ($monitor_filters as $monitor_filter) {
|
||||
$_filters_update[$monitor_filter['id_filter']] = $monitor_filter['id_name'];
|
||||
}
|
||||
}
|
||||
|
||||
$data[0] .= html_print_select(
|
||||
$_filters_update,
|
||||
'overwrite_filter',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
);
|
||||
$data[1] = html_print_submit_button(
|
||||
__('Update filter'),
|
||||
'update_filter',
|
||||
false,
|
||||
'class="sub upd" onclick="save_update_filter();"',
|
||||
true
|
||||
);
|
||||
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
html_print_table($table);
|
||||
echo '<div>';
|
||||
echo html_print_submit_button(
|
||||
__('Save filter'),
|
||||
'save_filter',
|
||||
false,
|
||||
'class="sub upd float-right" onclick="save_new_filter();"',
|
||||
true
|
||||
);
|
||||
echo '</div>';
|
||||
} else {
|
||||
include 'general/noaccess.php';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
function show_save_filter() {
|
||||
$('#save_filter_row1').show();
|
||||
$('#save_filter_row2').show();
|
||||
$('#update_filter_row1').hide();
|
||||
// Filter save mode selector
|
||||
$("[name='filter_mode']").click(function() {
|
||||
if ($(this).val() == 'new') {
|
||||
$('#save_filter_row1').show();
|
||||
$('#save_filter_row2').show();
|
||||
$('#submit-save_filter').show();
|
||||
$('#update_filter_row1').hide();
|
||||
}
|
||||
else {
|
||||
$('#save_filter_row1').hide();
|
||||
$('#save_filter_row2').hide();
|
||||
$('#update_filter_row1').show();
|
||||
$('#submit-save_filter').hide();
|
||||
}
|
||||
});
|
||||
$("#save-filter-select").dialog({
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: false,
|
||||
closeOnEscape: true
|
||||
});
|
||||
}
|
||||
|
||||
function save_new_filter() {
|
||||
// If the filter name is blank show error
|
||||
if ($('#text-id_name').val() == '') {
|
||||
$('#show_filter_error').html("<h3 class='error'><?php echo __('Filter name cannot be left blank'); ?></h3>");
|
||||
|
||||
// Close dialog
|
||||
$('.ui-dialog-titlebar-close').trigger('click');
|
||||
return false;
|
||||
}
|
||||
|
||||
var custom_fields_values = $('input[name^="ag_custom_fields"]').map(function() {
|
||||
return this.value;
|
||||
}).get();
|
||||
|
||||
var custom_fields_ids = $("input[name^='ag_custom_fields']").map(function() {
|
||||
var name = $(this).attr("name");
|
||||
var number = name.match(/\[(.*?)\]/)[1];
|
||||
|
||||
return number;
|
||||
}).get();
|
||||
|
||||
var ag_custom_fields = custom_fields_ids.reduce(function(result, custom_fields_id, index) {
|
||||
result[custom_fields_id] = custom_fields_values[index];
|
||||
return result;
|
||||
}, {});
|
||||
|
||||
var id_filter_save;
|
||||
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
{
|
||||
"page" : "include/ajax/module",
|
||||
"save_monitor_filter" : 1,
|
||||
"id_name": $("#text-id_name").val(),
|
||||
"id_group_filter": $("#id_group_filter_dialog").val(),
|
||||
"ag_group" : $("#ag_group").val(),
|
||||
"modulegroup" : $("#modulegroup").val(),
|
||||
"recursion" : $("#checkbox-recursion").is(':checked'),
|
||||
"status" : $("#status").val(),
|
||||
"severity" : $("#severity").val(),
|
||||
"ag_modulename" : $("#text-ag_modulename").val(),
|
||||
"ag_freestring" : $("#text-ag_freestring").val(),
|
||||
"tag_filter" : $("#tag_filter").val(),
|
||||
"moduletype" : $("#moduletype").val(),
|
||||
"module_option" : $('#module_option').val(),
|
||||
"min_hours_status" : $('#text-min_hours_status').val(),
|
||||
"datatype" : $("#datatype").val(),
|
||||
"not_condition" : $("#not_condition_switch").is(':checked'),
|
||||
"ag_custom_fields": JSON.stringify(ag_custom_fields),
|
||||
},
|
||||
function (data) {
|
||||
$("#info_box").hide();
|
||||
if (data == 'error') {
|
||||
$("#info_box").filter(function(i, item) {
|
||||
if ($(item).data('type_info_box') == "error_create_filter") {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}).show();
|
||||
}
|
||||
else if (data == 'duplicate') {
|
||||
$("#info_box").filter(function(i, item) {
|
||||
if ($(item).data('type_info_box') == "duplicate_create_filter") {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}).show();
|
||||
}
|
||||
else {
|
||||
id_filter_save = data;
|
||||
|
||||
$("#info_box").filter(function(i, item) {
|
||||
if ($(item).data('type_info_box') == "success_create_filter") {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}).show();
|
||||
}
|
||||
|
||||
// Close dialog.
|
||||
$("#save-filter-select").dialog('close');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function save_update_filter() {
|
||||
var id_filter_update = $("#overwrite_filter").val();
|
||||
var name_filter_update = $("#overwrite_filter option[value='"+id_filter_update+"']").text();
|
||||
|
||||
var custom_fields_values = $('input[name^="ag_custom_fields"]').map(function() {
|
||||
return this.value;
|
||||
}).get();
|
||||
|
||||
var custom_fields_ids = $("input[name^='ag_custom_fields']").map(function() {
|
||||
var name = $(this).attr("name");
|
||||
var number = name.match(/\[(.*?)\]/)[1];
|
||||
|
||||
return number;
|
||||
}).get();
|
||||
|
||||
var ag_custom_fields = custom_fields_ids.reduce(function(result, custom_fields_id, index) {
|
||||
result[custom_fields_id] = custom_fields_values[index];
|
||||
return result;
|
||||
}, {});
|
||||
|
||||
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
{
|
||||
"page" : "include/ajax/module",
|
||||
"update_monitor_filter" : 1,
|
||||
"id" : $("#overwrite_filter").val(),
|
||||
"ag_group" : $("#ag_group").val(),
|
||||
"modulegroup" : $("#modulegroup").val(),
|
||||
"recursion" : $("#checkbox-recursion").is(':checked'),
|
||||
"status" : $("#status").val(),
|
||||
"severity" : $("#severity").val(),
|
||||
"ag_modulename" : $("#text-ag_modulename").val(),
|
||||
"ag_freestring" : $("#text-ag_freestring").val(),
|
||||
"tag_filter" : $("#tag_filter").val(),
|
||||
"moduletype" : $("#moduletype").val(),
|
||||
"module_option" : $('#module_option').val(),
|
||||
"min_hours_status" : $('#text-min_hours_status').val(),
|
||||
"datatype" : $("#datatype").val(),
|
||||
"not_condition" : $("#not_condition_switch").is(':checked'),
|
||||
"ag_custom_fields": JSON.stringify(ag_custom_fields),
|
||||
},
|
||||
function (data) {
|
||||
$(".info_box").hide();
|
||||
if (data == 'ok') {
|
||||
$(".info_box").filter(function(i, item) {
|
||||
if ($(item).data('type_info_box') == "success_update_filter") {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}).show();
|
||||
}
|
||||
else {
|
||||
$(".info_box").filter(function(i, item) {
|
||||
if ($(item).data('type_info_box') == "error_create_filter") {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}).show();
|
||||
}
|
||||
});
|
||||
|
||||
// First remove all options of filters select
|
||||
$('#filter_id').find('option').remove().end();
|
||||
// Add 'none' option the first
|
||||
$('#filter_id').append ($('<option></option>').html ( <?php echo "'".__('none')."'"; ?> ).attr ("value", 0));
|
||||
// Reload filters select
|
||||
jQuery.post ("<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
{
|
||||
"page" : "include/ajax/module",
|
||||
"get_monitor_filters" : 1
|
||||
},
|
||||
function (data) {
|
||||
jQuery.each (data, function (i, val) {
|
||||
s = js_html_entity_decode(val);
|
||||
if (i == id_filter_update) {
|
||||
$('#filter_id').append ($('<option selected="selected"></option>').html (s).attr ("value", i));
|
||||
}
|
||||
else {
|
||||
$('#filter_id').append ($('<option></option>').html (s).attr ("value", i));
|
||||
}
|
||||
});
|
||||
},
|
||||
"json"
|
||||
);
|
||||
|
||||
// Close dialog
|
||||
$('.ui-dialog-titlebar-close').trigger('click');
|
||||
|
||||
// Update the info with the loaded filter
|
||||
$("#hidden-id_name").val($('#text-id_name').val());
|
||||
$('#filter_loaded_span').html($('#filter_loaded_text').html() + ': ' + name_filter_update);
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
show_save_filter();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -360,7 +360,7 @@ function process_user_login_remote($login, $pass, $api=false)
|
|||
}
|
||||
|
||||
$user_info = [
|
||||
'fullname' => $login,
|
||||
'fullname' => db_escape_string_sql($login),
|
||||
'comments' => 'Imported from '.$config['auth'],
|
||||
];
|
||||
|
||||
|
@ -398,7 +398,7 @@ function process_user_login_remote($login, $pass, $api=false)
|
|||
$config['auth_error'] = __('User not found in database or incorrect password');
|
||||
return false;
|
||||
} else {
|
||||
$user_info['fullname'] = $sr['cn'][0];
|
||||
$user_info['fullname'] = db_escape_string_sql($sr['cn'][0]);
|
||||
$user_info['email'] = $sr['mail'][0];
|
||||
|
||||
// Create the user.
|
||||
|
@ -1565,7 +1565,7 @@ function local_ldap_search(
|
|||
|
||||
$filter = '';
|
||||
if (!empty($access_attr) && !empty($user)) {
|
||||
$filter = " -s sub '(".$access_attr.'='.$user.")' ";
|
||||
$filter = ' -s sub '.escapeshellarg('('.$access_attr.'='.$user.')');
|
||||
}
|
||||
|
||||
$tls = '';
|
||||
|
@ -1591,7 +1591,7 @@ function local_ldap_search(
|
|||
$ldap_admin_pass = ' -w '.escapeshellarg($ldap_admin_pass);
|
||||
}
|
||||
|
||||
$dn = " -b '".$dn."'";
|
||||
$dn = ' -b '.escapeshellarg($dn);
|
||||
$ldapsearch_command = 'ldapsearch -LLL -o ldif-wrap=no -o nettimeout='.$ldap_search_time.' -x'.$ldap_host.$ldap_version.' -E pr=10000/noprompt '.$ldap_admin_user.$ldap_admin_pass.$dn.$filter.$tls.' | grep -v "^#\|^$" | sed "s/:\+ /=>/g"';
|
||||
$shell_ldap_search = explode("\n", shell_exec($ldapsearch_command));
|
||||
foreach ($shell_ldap_search as $line) {
|
||||
|
|
|
@ -843,6 +843,7 @@ class AgentWizard extends HTML
|
|||
html_print_div(
|
||||
[
|
||||
'class' => 'white_box',
|
||||
'style' => 'padding: 20px',
|
||||
'content' => $this->printForm(
|
||||
[
|
||||
'form' => $form,
|
||||
|
@ -2723,7 +2724,7 @@ class AgentWizard extends HTML
|
|||
'action' => $this->sectionUrl,
|
||||
'id' => 'form-filter-interfaces',
|
||||
'method' => 'POST',
|
||||
'class' => 'modal flex flex-row searchbox',
|
||||
'class' => 'modal searchbox',
|
||||
'extra' => '',
|
||||
];
|
||||
|
||||
|
@ -5476,6 +5477,19 @@ class AgentWizard extends HTML
|
|||
*/
|
||||
private function getInterfacesModulesx64(array $data=[])
|
||||
{
|
||||
$equivalencies_x86 = [
|
||||
'ifHCInOctets' => 'ifInOctets',
|
||||
'ifHCOutOctets' => 'ifOutOctets',
|
||||
'ifHCInUcastPkts' => 'ifInUcastPkts',
|
||||
'ifHCOutUcastPkts' => 'ifOutUcastPkts',
|
||||
'ifHCInNUcastPkts' => 'ifInNUcastPkts',
|
||||
'ifHCOutNUcastPkts' => 'ifOutNUcastPkts',
|
||||
];
|
||||
|
||||
foreach ($equivalencies_x86 as $key => $equivalencie) {
|
||||
$this->defaultSNMPValues[$key] = $this->defaultSNMPValues[$equivalencie];
|
||||
}
|
||||
|
||||
$moduleDescription = '';
|
||||
$name = '';
|
||||
$value = '1';
|
||||
|
|
|
@ -96,7 +96,10 @@ class AuditLog extends HTML
|
|||
// Datatables list.
|
||||
try {
|
||||
$columns = [
|
||||
'id_usuario',
|
||||
[
|
||||
'text' => 'id_usuario',
|
||||
'class' => 'w50px',
|
||||
],
|
||||
'accion',
|
||||
'fecha',
|
||||
'ip_origen',
|
||||
|
@ -116,11 +119,11 @@ class AuditLog extends HTML
|
|||
$columns,
|
||||
[
|
||||
'text' => 'security',
|
||||
'class' => 'w80px action_buttons show_security_info',
|
||||
'class' => 'w50px action_buttons show_security_info',
|
||||
],
|
||||
[
|
||||
'text' => 'action',
|
||||
'class' => 'w80px action_buttons show_extended_info',
|
||||
'class' => 'w50px action_buttons show_extended_info',
|
||||
]
|
||||
);
|
||||
|
||||
|
@ -199,16 +202,28 @@ class AuditLog extends HTML
|
|||
[
|
||||
'label' => __('Free search').ui_print_help_tip(__('Search filter by User, Action, Date, Source IP or Comments fields content'), true),
|
||||
'type' => 'text',
|
||||
'class' => 'w200px',
|
||||
'class' => 'w150px',
|
||||
'id' => 'filter_text',
|
||||
'name' => 'filter_text',
|
||||
],
|
||||
[
|
||||
'label' => __('Max. hours old'),
|
||||
'type' => 'text',
|
||||
'class' => 'w100px',
|
||||
'id' => 'filter_period',
|
||||
'name' => 'filter_period',
|
||||
'label' => __('Max. hours old'),
|
||||
'type' => 'select',
|
||||
'class' => 'w20px',
|
||||
'select2_enable' => true,
|
||||
'sort' => false,
|
||||
'selected' => 168,
|
||||
'fields' => [
|
||||
24 => __('1 day'),
|
||||
168 => __('7 days'),
|
||||
360 => __('15 days'),
|
||||
744 => __('1 month'),
|
||||
2160 => __('3 months'),
|
||||
4320 => __('6 months'),
|
||||
8760 => __('1 Year'),
|
||||
],
|
||||
'id' => 'filter_period',
|
||||
'name' => 'filter_period',
|
||||
],
|
||||
[
|
||||
'label' => __('IP'),
|
||||
|
@ -223,7 +238,7 @@ class AuditLog extends HTML
|
|||
'nothing' => __('All'),
|
||||
'nothing_value' => '-1',
|
||||
'sql' => 'SELECT DISTINCT(accion), accion AS text FROM tsesion',
|
||||
'class' => 'mw250px',
|
||||
'class' => 'mw200px',
|
||||
'id' => 'filter_type',
|
||||
'name' => 'filter_type',
|
||||
],
|
||||
|
@ -235,7 +250,7 @@ class AuditLog extends HTML
|
|||
'sql' => 'SELECT id_user, id_user AS text FROM tusuario UNION SELECT "SYSTEM"
|
||||
AS id_user, "SYSTEM" AS text UNION SELECT "N/A"
|
||||
AS id_user, "N/A" AS text',
|
||||
'class' => 'mw250px',
|
||||
'class' => 'mw200px',
|
||||
'id' => 'filter_user',
|
||||
'name' => 'filter_user',
|
||||
],
|
||||
|
@ -346,9 +361,12 @@ class AuditLog extends HTML
|
|||
).ui_print_timestamp($tmp->utimestamp, true);
|
||||
|
||||
if (enterprise_installed() === true) {
|
||||
$tmp->security = enterprise_hook('cell1EntepriseAudit', [$tmp->id_sesion]);
|
||||
$tmp->action = enterprise_hook('cell2EntepriseAudit', []);
|
||||
$tmp->extendedInfo = enterprise_hook('rowEnterpriseAudit', [$tmp->id_sesion]);
|
||||
$extendedInfo = enterprise_hook('rowEnterpriseAudit', [$tmp->id_sesion]);
|
||||
if (empty($extendedInfo) === false) {
|
||||
$tmp->security = enterprise_hook('cell1EntepriseAudit', [$tmp->id_sesion]);
|
||||
$tmp->action = enterprise_hook('cell2EntepriseAudit', []);
|
||||
$tmp->extendedInfo = $extendedInfo;
|
||||
}
|
||||
}
|
||||
|
||||
$carry[] = $tmp;
|
||||
|
|
|
@ -900,7 +900,7 @@ class CalendarManager
|
|||
$id_group = get_parameter('id_group', null);
|
||||
$day_code = get_parameter('day_code', null);
|
||||
$id_calendar = get_parameter('id_calendar', null);
|
||||
$description = get_parameter('description', null);
|
||||
$description = io_safe_input(get_parameter('description', null));
|
||||
$change = true;
|
||||
if ($new === false
|
||||
&& ($date === $specialDay->date()
|
||||
|
|
|
@ -248,6 +248,11 @@ class ConsoleSupervisor
|
|||
|
||||
$this->checkAuditLogOldLocation();
|
||||
|
||||
/*
|
||||
* Check if performance variables are corrects
|
||||
*/
|
||||
$this->checkPerformanceVariables();
|
||||
|
||||
/*
|
||||
* Checks if sync queue is longer than limits.
|
||||
* NOTIF.SYNCQUEUE.LENGTH
|
||||
|
@ -258,6 +263,21 @@ class ConsoleSupervisor
|
|||
$this->checkSyncQueueStatus();
|
||||
}
|
||||
|
||||
/*
|
||||
* Check number of agents is equals and more than 200.
|
||||
* NOTIF.ACCESSSTASTICS.PERFORMANCE
|
||||
*/
|
||||
|
||||
$this->checkAccessStatisticsPerformance();
|
||||
|
||||
/*
|
||||
* Checkc agent missing libraries.
|
||||
* NOTIF.AGENT.LIBRARY
|
||||
*/
|
||||
|
||||
if ((bool) enterprise_installed() === true) {
|
||||
$this->checkLibaryError();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -509,6 +529,11 @@ class ConsoleSupervisor
|
|||
|
||||
$this->checkAuditLogOldLocation();
|
||||
|
||||
/*
|
||||
* Check if performance variables are corrects
|
||||
*/
|
||||
$this->checkPerformanceVariables();
|
||||
|
||||
/*
|
||||
* Checks if sync queue is longer than limits.
|
||||
* NOTIF.SYNCQUEUE.LENGTH
|
||||
|
@ -518,6 +543,108 @@ class ConsoleSupervisor
|
|||
$this->checkSyncQueueLength();
|
||||
$this->checkSyncQueueStatus();
|
||||
}
|
||||
|
||||
/*
|
||||
* Check number of agents is equals and more than 200.
|
||||
* NOTIF.ACCESSSTASTICS.PERFORMANCE
|
||||
*/
|
||||
|
||||
$this->checkAccessStatisticsPerformance();
|
||||
|
||||
/*
|
||||
* Checkc agent missing libraries.
|
||||
* NOTIF.AGENT.LIBRARY
|
||||
*/
|
||||
|
||||
if ((bool) enterprise_installed() === true) {
|
||||
$this->checkLibaryError();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if performance variables are corrects
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function checkPerformanceVariables()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$names = [
|
||||
'event_purge' => 'Max. days before events are deleted',
|
||||
'trap_purge' => 'Max. days before traps are deleted',
|
||||
'audit_purge' => 'Max. days before audited events are deleted',
|
||||
'string_purge' => 'Max. days before string data is deleted',
|
||||
'gis_purge' => 'Max. days before GIS data is deleted',
|
||||
'days_purge' => 'Max. days before purge',
|
||||
'days_compact' => 'Max. days before data is compacted',
|
||||
'days_delete_unknown' => 'Max. days before unknown modules are deleted',
|
||||
'days_delete_not_initialized' => 'Max. days before delete not initialized modules',
|
||||
'days_autodisable_deletion' => 'Max. days before autodisabled agents are deleted',
|
||||
'delete_old_network_matrix' => 'Max. days before delete old network matrix data',
|
||||
'report_limit' => 'Item limit for real-time reports',
|
||||
'event_view_hr' => 'Default hours for event view',
|
||||
'big_operation_step_datos_purge' => 'Big Operation Step to purge old data',
|
||||
'small_operation_step_datos_purge' => 'Small Operation Step to purge old data',
|
||||
'row_limit_csv' => 'Row limit in csv log',
|
||||
'limit_parameters_massive' => 'Limit for bulk operations',
|
||||
'block_size' => 'Block size for pagination',
|
||||
'short_module_graph_data' => 'Data precision',
|
||||
'graph_precision' => 'Data precision in graphs',
|
||||
];
|
||||
|
||||
$variables = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
||||
foreach ($variables as $variable => $values) {
|
||||
if (empty($config[$variable]) === true || $config[$variable] === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$message = '';
|
||||
$limit_value = '';
|
||||
if ($config[$variable] > $values->max) {
|
||||
$message = 'Check the setting of %s, a value greater than %s is not recommended';
|
||||
$limit_value = $values->max;
|
||||
}
|
||||
|
||||
if ($config[$variable] < $values->min) {
|
||||
$message = 'Check the setting of %s, a value less than %s is not recommended';
|
||||
$limit_value = $values->min;
|
||||
}
|
||||
|
||||
if ($limit_value !== '' && $message !== '') {
|
||||
if (is_metaconsole() === true) {
|
||||
$this->notify(
|
||||
[
|
||||
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
|
||||
'title' => __('Incorrect config value'),
|
||||
'message' => __(
|
||||
$message,
|
||||
$names[$variable],
|
||||
$limit_value
|
||||
),
|
||||
'url' => '__url__index.php?sec=advanced&sec2=advanced/metasetup',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$this->notify(
|
||||
[
|
||||
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
|
||||
'title' => __('Incorrect config value'),
|
||||
'message' => __(
|
||||
$message,
|
||||
$names[$variable],
|
||||
$limit_value
|
||||
),
|
||||
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -532,6 +659,34 @@ class ConsoleSupervisor
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check number of agents and disable agentaccess token if number
|
||||
* is equals and more than 200.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function checkAccessStatisticsPerformance()
|
||||
{
|
||||
$total_agents = db_get_value('count(*)', 'tagente');
|
||||
|
||||
if ($total_agents >= 200) {
|
||||
db_process_sql_update('tconfig', ['value' => 0], ['token' => 'agentaccess']);
|
||||
$this->notify(
|
||||
[
|
||||
'type' => 'NOTIF.ACCESSSTASTICS.PERFORMANCE',
|
||||
'title' => __('Access statistics performance'),
|
||||
'message' => __(
|
||||
'Usage of agent access statistics IS NOT RECOMMENDED on systems with more than 200 agents due performance penalty'
|
||||
),
|
||||
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup§ion=perf',
|
||||
]
|
||||
);
|
||||
} else {
|
||||
$this->cleanNotifications('NOTIF.ACCESSSTASTICS.PERFORMANCE');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update targets for given notification using object targets.
|
||||
*
|
||||
|
@ -2379,7 +2534,7 @@ class ConsoleSupervisor
|
|||
if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') {
|
||||
$message_conf_cron .= __('Discovery relies on an appropriate cron setup.');
|
||||
$message_conf_cron .= '. '.__('Please, add the following line to your crontab file:');
|
||||
$message_conf_cron .= '<b><pre class=""ui-dialog>* * * * * <user> wget -q -O - --no-check-certificate ';
|
||||
$message_conf_cron .= '<b><pre class=""ui-dialog>* * * * * <user> wget -q -O - --no-check-certificate --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies ';
|
||||
$message_conf_cron .= str_replace(
|
||||
ENTERPRISE_DIR.'/meta/',
|
||||
'',
|
||||
|
@ -2806,4 +2961,30 @@ class ConsoleSupervisor
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Chechs if an agent has a dependency eror on omnishell
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function checkLibaryError()
|
||||
{
|
||||
$sql = 'SELECT COUNT(errorlevel) from tremote_command_target WHERE errorlevel = 2';
|
||||
|
||||
$error_dependecies = db_get_sql($sql);
|
||||
if ($error_dependecies > 0) {
|
||||
$this->notify(
|
||||
[
|
||||
'type' => 'NOTIF.AGENT.LIBRARY',
|
||||
'title' => __('Agent dependency error'),
|
||||
'message' => __(
|
||||
'There are omnishell agents with dependency errors',
|
||||
),
|
||||
|
||||
'url' => '__url__/index.php?sec=gextensions&sec2=enterprise/tools/omnishell',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -104,6 +104,7 @@ class Diagnostics extends Wizard
|
|||
'getChartAjax',
|
||||
'formFeedback',
|
||||
'createdScheduleFeedbackTask',
|
||||
'getSystemDate',
|
||||
];
|
||||
|
||||
|
||||
|
@ -209,6 +210,7 @@ class Diagnostics extends Wizard
|
|||
'getAttachmentFolder',
|
||||
'getInfoTagenteDatos',
|
||||
'getServerThreads',
|
||||
'getSystemDate',
|
||||
];
|
||||
|
||||
if ($this->pdf === true) {
|
||||
|
@ -278,6 +280,10 @@ class Diagnostics extends Wizard
|
|||
$title = __('SQL show engine innodb status');
|
||||
break;
|
||||
|
||||
case 'getSystemDate':
|
||||
$title = __('Date system');
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not possible.
|
||||
$title = '';
|
||||
|
@ -516,6 +522,27 @@ class Diagnostics extends Wizard
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Date system
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getSystemDate(): string
|
||||
{
|
||||
$result = [
|
||||
'error' => false,
|
||||
'data' => [
|
||||
'date' => [
|
||||
'name' => __('System Date (Console)'),
|
||||
'value' => date('H:i:s Y-m-d'),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return json_encode($result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Database size stats.
|
||||
*
|
||||
|
@ -619,7 +646,7 @@ class Diagnostics extends Wizard
|
|||
$currentTime = time();
|
||||
|
||||
$pandoraDbLastRun = __('Pandora DB has never been executed');
|
||||
if ($dateDbMantenaince !== false) {
|
||||
if ($dateDbMantenaince !== false && empty($dateDbMantenaince) === false) {
|
||||
$difference = ($currentTime - $dateDbMantenaince);
|
||||
$pandoraDbLastRun = human_time_description_raw(
|
||||
$difference,
|
||||
|
@ -659,15 +686,6 @@ class Diagnostics extends Wizard
|
|||
{
|
||||
global $config;
|
||||
|
||||
// Size BBDD.
|
||||
$dbSizeSql = db_get_value_sql(
|
||||
'SELECT ROUND(SUM(data_length+index_length)/1024/1024,3)
|
||||
FROM information_schema.TABLES'
|
||||
);
|
||||
|
||||
// Add unit size.
|
||||
$dbSize = $dbSizeSql.' M';
|
||||
|
||||
$result = [
|
||||
'error' => false,
|
||||
'data' => [
|
||||
|
@ -683,10 +701,6 @@ class Diagnostics extends Wizard
|
|||
'name' => __('DB Schema Build'),
|
||||
'value' => $config['db_scheme_build'],
|
||||
],
|
||||
'dbSize' => [
|
||||
'name' => __('DB Size'),
|
||||
'value' => $dbSize,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -782,7 +782,9 @@ class NetworkMap
|
|||
if ($this->network) {
|
||||
// Network map, based on direct network.
|
||||
$nodes = networkmap_get_nodes_from_ip_mask(
|
||||
$this->network
|
||||
$this->network,
|
||||
false,
|
||||
'
'
|
||||
);
|
||||
} else if ($this->mapOptions['map_filter']['empty_map']) {
|
||||
// Empty map returns no data.
|
||||
|
@ -792,17 +794,22 @@ class NetworkMap
|
|||
|| $this->mapOptions['map_filter']['dont_show_subgroups'] == 1
|
||||
) {
|
||||
// Show only current selected group.
|
||||
$filter['id_grupo'] = $this->idGroup;
|
||||
$filter['id_grupo'] = explode(',', $this->idGroup);
|
||||
} else {
|
||||
// Show current group and children.
|
||||
$childrens = groups_get_children($this->idGroup, null, true);
|
||||
if (!empty($childrens)) {
|
||||
$childrens = array_keys($childrens);
|
||||
foreach (explode(',', $this->idGroup) as $key => $group) {
|
||||
$childrens = groups_get_children($group, null, true);
|
||||
if (!empty($childrens)) {
|
||||
$childrens = array_keys($childrens);
|
||||
|
||||
$filter['id_grupo'] = $childrens;
|
||||
$filter['id_grupo'][] = $this->idGroup;
|
||||
} else {
|
||||
$filter['id_grupo'] = $this->idGroup;
|
||||
if (empty($filter['id_grupo']) === false) {
|
||||
$filter['id_grupo'] = array_merge($filter['id_grupo'], $childrens);
|
||||
} else {
|
||||
$filter['id_grupo'] = $childrens;
|
||||
}
|
||||
} else {
|
||||
$filter['id_grupo'][] = $group;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1189,6 +1196,10 @@ class NetworkMap
|
|||
$head .= 'overlap="scalexy";';
|
||||
}
|
||||
|
||||
if ($layout == 'spring1' || $layout == 'spring2') {
|
||||
$head .= 'sep="'.$node_sep.'";';
|
||||
}
|
||||
|
||||
if ($layout == 'flat') {
|
||||
$head .= 'ranksep="'.$rank_sep.'";';
|
||||
}
|
||||
|
@ -3498,6 +3509,7 @@ class NetworkMap
|
|||
url_background_grid: url_background_grid,
|
||||
refresh_time: '.$this->mapOptions['refresh_time'].',
|
||||
font_size: '.$this->mapOptions['font_size'].',
|
||||
method: '.$this->map['generation_method'].',
|
||||
base_url_homedir: "'.ui_get_full_url(false).'"
|
||||
});
|
||||
init_drag_and_drop();
|
||||
|
|
|
@ -84,6 +84,15 @@ class SatelliteCollection extends HTML
|
|||
return;
|
||||
}
|
||||
|
||||
if ((int) $config['license_nms'] === 0) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_NMS_VIOLATION,
|
||||
'Trying to access satellite collections'
|
||||
);
|
||||
include $config['homedir'].'/general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the ajax controller.
|
||||
$this->ajaxController = $ajaxController;
|
||||
// Capture all parameters before start.
|
||||
|
|
|
@ -413,73 +413,74 @@ class SnmpConsole extends HTML
|
|||
'class' => 'flex-row',
|
||||
'inputs' => [
|
||||
[
|
||||
'label' => __('Alert'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_alert',
|
||||
'name' => 'filter_alert',
|
||||
'class' => 'w200px',
|
||||
'fields' => $show_alerts,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_alert,
|
||||
'label' => __('Alert'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_alert',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_alert',
|
||||
'fields' => $show_alerts,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_alert,
|
||||
],
|
||||
[
|
||||
'label' => __('Severity'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_severity',
|
||||
'name' => 'filter_severity',
|
||||
'class' => 'w200px',
|
||||
'fields' => $severities,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_severity,
|
||||
'label' => __('Severity'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_severity',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_severity',
|
||||
'fields' => $severities,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_severity,
|
||||
],
|
||||
[
|
||||
'label' => __('Free search'),
|
||||
'type' => 'text',
|
||||
'class' => 'w400px',
|
||||
'id' => 'filter_free_search',
|
||||
'name' => 'filter_free_search',
|
||||
'value' => $this->filter_free_search,
|
||||
'label' => __('Free search'),
|
||||
'type' => 'text',
|
||||
'id' => 'filter_free_search',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_free_search',
|
||||
'value' => $this->filter_free_search,
|
||||
],
|
||||
[
|
||||
'label' => __('Status'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_status',
|
||||
'name' => 'filter_status',
|
||||
'class' => 'w200px',
|
||||
'fields' => $status_array,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_status,
|
||||
'label' => __('Status'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_status',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_status',
|
||||
'fields' => $status_array,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_status,
|
||||
],
|
||||
[
|
||||
'label' => __('Group by Enterprise String/IP'),
|
||||
'type' => 'select',
|
||||
'name' => 'filter_group_by',
|
||||
'selected' => $this->filter_group_by,
|
||||
'disabled' => false,
|
||||
'return' => true,
|
||||
'id' => 'filter_group_by',
|
||||
'fields' => [
|
||||
'label' => __('Group by Enterprise String/IP'),
|
||||
'type' => 'select',
|
||||
'name' => 'filter_group_by',
|
||||
'selected' => $this->filter_group_by,
|
||||
'disabled' => false,
|
||||
'return' => true,
|
||||
'id' => 'filter_group_by',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'fields' => [
|
||||
0 => __('No'),
|
||||
1 => __('Yes'),
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => __('Max. hours old'),
|
||||
'type' => 'text',
|
||||
'class' => 'w200px',
|
||||
'id' => 'filter_hours_ago',
|
||||
'name' => 'filter_hours_ago',
|
||||
'value' => $this->filter_hours_ago,
|
||||
'label' => __('Max. hours old'),
|
||||
'type' => 'text',
|
||||
'id' => 'filter_hours_ago',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_hours_ago',
|
||||
'value' => $this->filter_hours_ago,
|
||||
],
|
||||
[
|
||||
'label' => __('Trap type'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_trap_type',
|
||||
'name' => 'filter_trap_type',
|
||||
'class' => 'w200px',
|
||||
'fields' => $trap_types,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_trap_type,
|
||||
'label' => __('Trap type'),
|
||||
'type' => 'select',
|
||||
'id' => 'filter_trap_type',
|
||||
'input_class' => 'filter_input_datatable',
|
||||
'name' => 'filter_trap_type',
|
||||
'fields' => $trap_types,
|
||||
'return' => true,
|
||||
'selected' => $this->filter_trap_type,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC230131';
|
||||
$pandora_version = 'v7.0NG.768';
|
||||
$build_version = 'PC230302';
|
||||
$pandora_version = 'v7.0NG.769';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
$script_tz = @date_default_timezone_get();
|
||||
|
|
|
@ -6397,3 +6397,19 @@ function getBearerToken()
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check nms license on api.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function nms_check_api()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if ((int) $config['license_nms'] === 1) {
|
||||
returnError('license_error');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -198,6 +198,16 @@ function returnError($typeError, $returnType='string')
|
|||
);
|
||||
break;
|
||||
|
||||
case 'license_error':
|
||||
returnData(
|
||||
$returnType,
|
||||
[
|
||||
'type' => 'string',
|
||||
'data' => __('License not allowed for this operation.'),
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
returnData(
|
||||
$returnType,
|
||||
|
@ -11061,20 +11071,55 @@ function api_set_event_validate_filter($trash1, $trash2, $other, $trash3)
|
|||
|
||||
function api_set_validate_events($id_event, $trash1, $other, $return_type, $user_in_db)
|
||||
{
|
||||
$text = $other['data'];
|
||||
$node_int = 0;
|
||||
if ($other['type'] == 'string') {
|
||||
returnError('Parameter error.');
|
||||
return;
|
||||
} else if ($other['type'] == 'array') {
|
||||
$text = $other['data'][0];
|
||||
if (is_metaconsole() === true) {
|
||||
if (isset($other['data'][1]) === true
|
||||
&& empty($other['data'][1]) === false
|
||||
) {
|
||||
$node_int = $other['data'][1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set off the standby mode when close an event
|
||||
$event = events_get_event($id_event);
|
||||
alerts_agent_module_standby($event['id_alert_am'], 0);
|
||||
try {
|
||||
if (is_metaconsole() === true
|
||||
&& (int) $node_int > 0
|
||||
) {
|
||||
$node = new Node($node_int);
|
||||
$node->connect();
|
||||
}
|
||||
|
||||
$result = events_change_status($id_event, EVENT_VALIDATE);
|
||||
// Set off the standby mode when close an event
|
||||
$event = events_get_event($id_event);
|
||||
alerts_agent_module_standby($event['id_alert_am'], 0);
|
||||
$result = events_change_status($id_event, EVENT_VALIDATE);
|
||||
|
||||
if ($result) {
|
||||
if (!empty($text)) {
|
||||
// Set the comment for the validation
|
||||
events_comment($id_event, $text);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
if (is_metaconsole() === true
|
||||
&& $node_int > 0
|
||||
) {
|
||||
$node->disconnect();
|
||||
}
|
||||
|
||||
$result = false;
|
||||
} finally {
|
||||
if (is_metaconsole() === true
|
||||
&& $node_int > 0
|
||||
) {
|
||||
$node->disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
if ($result) {
|
||||
returnData(
|
||||
'string',
|
||||
[
|
||||
|
@ -12471,9 +12516,26 @@ function api_get_total_modules($id_group, $trash1, $trash2, $returnType)
|
|||
return;
|
||||
}
|
||||
|
||||
$partial = tactical_status_modules_agents($config['id_user'], false, 'AR');
|
||||
if ($id_group) {
|
||||
$groups_clause = '1 = 1';
|
||||
if (!users_is_admin($config['id_user'])) {
|
||||
$user_groups = implode(',', array_keys(users_get_groups()));
|
||||
$groups_clause = "(ta.id_grupo IN ($user_groups) OR tasg.id_group IN ($user_groups))";
|
||||
}
|
||||
|
||||
$total = (int) $partial['_monitor_total_'];
|
||||
$sql = "SELECT COUNT(DISTINCT(id_agente_modulo))
|
||||
FROM tagente_modulo tam, tagente ta
|
||||
LEFT JOIN tagent_secondary_group tasg
|
||||
ON ta.id_agente = tasg.id_agent
|
||||
WHERE tam.id_agente = ta.id_agente AND id_module_group = $id_group
|
||||
AND delete_pending = 0 AND $groups_clause";
|
||||
|
||||
$total = db_get_value_sql($sql);
|
||||
} else {
|
||||
$partial = tactical_status_modules_agents($config['id_user'], false, 'AR');
|
||||
|
||||
$total = (int) $partial['_monitor_total_'];
|
||||
}
|
||||
|
||||
$data = [
|
||||
'type' => 'string',
|
||||
|
|
|
@ -67,7 +67,7 @@ function config_create_value($token, $value)
|
|||
*
|
||||
* @return boolean True if success. False on failure.
|
||||
*/
|
||||
function config_update_value($token, $value, $noticed=false)
|
||||
function config_update_value($token, $value, $noticed=false, $password=false)
|
||||
{
|
||||
global $config;
|
||||
// Include functions_io to can call __() function.
|
||||
|
@ -91,7 +91,11 @@ function config_update_value($token, $value, $noticed=false)
|
|||
|
||||
if (isset($config[$token]) === false) {
|
||||
$config[$token] = $value;
|
||||
return (bool) config_create_value($token, io_safe_input($value));
|
||||
if (($password === false)) {
|
||||
return (bool) config_create_value($token, io_safe_input($value));
|
||||
} else {
|
||||
return (bool) config_create_value($token, io_input_password($value));
|
||||
}
|
||||
}
|
||||
|
||||
// If it has not changed.
|
||||
|
@ -104,7 +108,7 @@ function config_update_value($token, $value, $noticed=false)
|
|||
|
||||
$result = db_process_sql_update(
|
||||
'tconfig',
|
||||
['value' => io_safe_input($value)],
|
||||
['value' => ($password === false) ? io_safe_input($value) : io_input_password($value)],
|
||||
['token' => $token]
|
||||
);
|
||||
|
||||
|
@ -459,10 +463,6 @@ function config_update_config()
|
|||
if (config_update_value('ipam_ocuppied_warning_treshold', get_parameter('ipam_ocuppied_warning_treshold'), true) === false) {
|
||||
$error_update[] = __('Ipam Ocuppied Manager Warning');
|
||||
}
|
||||
|
||||
if (config_update_value('sap_license', get_parameter('sap_license'), true) === false) {
|
||||
$error_update[] = __('SAP/R3 Plugin Licence');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -844,6 +844,10 @@ function config_update_config()
|
|||
$error_update[] = __('Item limit for realtime reports)');
|
||||
}
|
||||
|
||||
if (config_update_value('events_per_query', (int) get_parameter('events_per_query'), true) === false) {
|
||||
$error_update[] = __('Limit of events per query');
|
||||
}
|
||||
|
||||
if (config_update_value('step_compact', (int) get_parameter('step_compact'), true) === false) {
|
||||
$error_update[] = __('Compact interpolation in hours (1 Fine-20 bad)');
|
||||
}
|
||||
|
@ -1982,6 +1986,10 @@ function config_process_config()
|
|||
config_update_value('report_limit', 100);
|
||||
}
|
||||
|
||||
if (!isset($config['events_per_query'])) {
|
||||
config_update_value('events_per_query', 5000);
|
||||
}
|
||||
|
||||
if (!isset($config['loginhash_pwd'])) {
|
||||
config_update_value('loginhash_pwd', io_input_password((rand(0, 1000) * rand(0, 1000)).'pandorahash'));
|
||||
}
|
||||
|
@ -2289,6 +2297,96 @@ function config_process_config()
|
|||
config_update_value('2Fa_auth', '');
|
||||
}
|
||||
|
||||
if (isset($config['performance_variables_control']) === false) {
|
||||
config_update_value(
|
||||
'performance_variables_control',
|
||||
json_encode(
|
||||
[
|
||||
'event_purge' => [
|
||||
'max' => 45,
|
||||
'min' => 1,
|
||||
],
|
||||
'trap_purge' => [
|
||||
'max' => 45,
|
||||
'min' => 1,
|
||||
],
|
||||
'audit_purge' => [
|
||||
'max' => 365,
|
||||
'min' => 7,
|
||||
],
|
||||
'string_purge' => [
|
||||
'max' => 365,
|
||||
'min' => 7,
|
||||
],
|
||||
'gis_purge' => [
|
||||
'max' => 365,
|
||||
'min' => 7,
|
||||
],
|
||||
'days_purge' => [
|
||||
'max' => 365,
|
||||
'min' => 7,
|
||||
],
|
||||
'days_compact' => [
|
||||
'max' => 365,
|
||||
'min' => 0,
|
||||
],
|
||||
'days_delete_unknown' => [
|
||||
'max' => 90,
|
||||
'min' => 0,
|
||||
],
|
||||
'days_delete_not_initialized' => [
|
||||
'max' => 90,
|
||||
'min' => 0,
|
||||
],
|
||||
'days_autodisable_deletion' => [
|
||||
'max' => 90,
|
||||
'min' => 0,
|
||||
],
|
||||
'delete_old_network_matrix' => [
|
||||
'max' => 30,
|
||||
'min' => 1,
|
||||
],
|
||||
'report_limit' => [
|
||||
'max' => 500,
|
||||
'min' => 1,
|
||||
],
|
||||
'event_view_hr' => [
|
||||
'max' => 360,
|
||||
'min' => 1,
|
||||
],
|
||||
'big_operation_step_datos_purge' => [
|
||||
'max' => 10000,
|
||||
'min' => 100,
|
||||
],
|
||||
'small_operation_step_datos_purge' => [
|
||||
'max' => 10000,
|
||||
'min' => 100,
|
||||
],
|
||||
'row_limit_csv' => [
|
||||
'max' => 1000000,
|
||||
'min' => 1,
|
||||
],
|
||||
'limit_parameters_massive' => [
|
||||
'max' => 2000,
|
||||
'min' => 100,
|
||||
],
|
||||
'block_size' => [
|
||||
'max' => 200,
|
||||
'min' => 10,
|
||||
],
|
||||
'short_module_graph_data' => [
|
||||
'max' => 20,
|
||||
'min' => 1,
|
||||
],
|
||||
'graph_precision' => [
|
||||
'max' => 5,
|
||||
'min' => 1,
|
||||
],
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($config['agent_wizard_defaults']) === false) {
|
||||
config_update_value(
|
||||
'agent_wizard_defaults',
|
||||
|
|
|
@ -2018,7 +2018,7 @@ function events_change_status(
|
|||
// Update ack info if the new status is validated.
|
||||
$ack_utimestamp = 0;
|
||||
$ack_user = $config['id_user'];
|
||||
if ((int) $new_status === EVENT_STATUS_VALIDATED) {
|
||||
if ((int) $new_status === EVENT_STATUS_VALIDATED || (int) $new_status === EVENT_STATUS_INPROCESS) {
|
||||
$ack_utimestamp = time();
|
||||
}
|
||||
|
||||
|
@ -4814,7 +4814,7 @@ function events_page_general($event)
|
|||
$data = [];
|
||||
$data[0] = __('Acknowledged by');
|
||||
|
||||
if ($event['estado'] == 1) {
|
||||
if ($event['estado'] == 1 || $event['estado'] == 2) {
|
||||
if (empty($event['id_usuario']) === true) {
|
||||
$user_ack = __('Autovalidated');
|
||||
} else {
|
||||
|
@ -4948,8 +4948,7 @@ function events_page_general_acknowledged($event_id)
|
|||
global $config;
|
||||
$Acknowledged = '';
|
||||
$event = db_get_row('tevento', 'id_evento', $event_id);
|
||||
hd($event['ack_utimestamp'], true);
|
||||
if ($event !== false && $event['estado'] == 1) {
|
||||
if ($event !== false && ($event['estado'] == 1 || $event['estado'] == 2)) {
|
||||
$user_ack = db_get_value(
|
||||
'fullname',
|
||||
'tusuario',
|
||||
|
@ -5827,3 +5826,58 @@ function get_events_get_response_target(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the count of events by criticity.
|
||||
*
|
||||
* @param integer $utimestamp Utimestamp to search.
|
||||
* @param integer $eventType Event type.
|
||||
* @param array $groupId Groups.
|
||||
* @param integer $eventStatus Event status.
|
||||
* @param array $criticityId Criticity to search.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function get_count_event_criticity(
|
||||
$utimestamp,
|
||||
$eventType,
|
||||
$groupId,
|
||||
$eventStatus,
|
||||
$criticityId
|
||||
) {
|
||||
$type = ' ';
|
||||
if ($eventType !== '0') {
|
||||
$type = 'AND event_type = "'.$eventType.'"';
|
||||
}
|
||||
|
||||
$groups = ' ';
|
||||
if ((int) $groupId !== 0) {
|
||||
$groups = 'AND id_grupo IN ('.$groupId.')';
|
||||
}
|
||||
|
||||
$status = ' ';
|
||||
if ((int) $eventStatus !== -1) {
|
||||
$status = 'AND estado = '.$eventStatus;
|
||||
}
|
||||
|
||||
$criticity = ' ';
|
||||
if (empty($criticityId) === false) {
|
||||
$criticity = 'AND criticity IN ('.$criticityId.')';
|
||||
}
|
||||
|
||||
$sql_meta = sprintf(
|
||||
'SELECT COUNT(id_evento) AS count,
|
||||
criticity
|
||||
FROM tevento
|
||||
WHERE utimestamp >= %d %s %s %s %s
|
||||
GROUP BY criticity',
|
||||
$utimestamp,
|
||||
$type,
|
||||
$groups,
|
||||
$status,
|
||||
$criticity
|
||||
);
|
||||
|
||||
return db_get_all_rows_sql($sql_meta);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Images File Manager functions.
|
||||
*
|
||||
|
@ -96,7 +97,7 @@ function upload_file($upload_file_or_zip, $default_real_directory, $destination_
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'AW')) {
|
||||
if (!check_acl($config['id_user'], 0, 'AW')) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access File manager'
|
||||
|
@ -223,7 +224,7 @@ function create_text_file($default_real_directory, $destination_directory)
|
|||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'AW')) {
|
||||
if (!check_acl($config['id_user'], 0, 'AW')) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access File manager'
|
||||
|
@ -293,7 +294,7 @@ if ($create_dir === true) {
|
|||
$testHash = md5($directory.$config['server_unique_identifier']);
|
||||
|
||||
if ($hash !== $testHash) {
|
||||
ui_print_error_message(__('Security error.'));
|
||||
ui_print_error_message(__('Security error.'));
|
||||
} else {
|
||||
$dirname = filemanager_safe_directory((string) get_parameter('dirname'));
|
||||
|
||||
|
@ -349,7 +350,7 @@ if ($delete_file === true) {
|
|||
}
|
||||
} else {
|
||||
if (unlink($filename) === true) {
|
||||
$config['filemanager']['delete'] = 1;
|
||||
$config['filemanager']['delete'] = 1;
|
||||
} else {
|
||||
$config['filemanager']['delete'] = 0;
|
||||
}
|
||||
|
@ -499,77 +500,116 @@ function filemanager_file_explorer(
|
|||
check_opened_dialog('create_folder');
|
||||
}
|
||||
<?php if ($allowCreateText === true) : ?>
|
||||
function show_create_text_file() {
|
||||
actions_dialog('create_text_file');
|
||||
$("#create_text_file").css("display", "block");
|
||||
check_opened_dialog('create_text_file');
|
||||
}
|
||||
function show_create_text_file() {
|
||||
actions_dialog('create_text_file');
|
||||
$("#create_text_file").css("display", "block");
|
||||
check_opened_dialog('create_text_file');
|
||||
}
|
||||
<?php endif ?>
|
||||
|
||||
function show_upload_file() {
|
||||
actions_dialog('upload_file');
|
||||
$("#upload_file").css("display", "block");
|
||||
check_opened_dialog('upload_file');
|
||||
}
|
||||
|
||||
function check_opened_dialog(check_opened){
|
||||
if(check_opened !== 'create_folder'){
|
||||
function check_opened_dialog(check_opened) {
|
||||
if (check_opened !== 'create_folder') {
|
||||
if (($("#create_folder").hasClass("ui-dialog-content") && $('#create_folder').dialog('isOpen') === true)) {
|
||||
$('#create_folder').dialog('close');
|
||||
}
|
||||
}
|
||||
<?php if ($allowCreateText === true) : ?>
|
||||
if(check_opened !== 'create_text_file'){
|
||||
if (($("#create_text_file").hasClass("ui-dialog-content") && $('#create_text_file').dialog('isOpen') === true)) {
|
||||
$('#create_text_file').dialog('close');
|
||||
if (check_opened !== 'create_text_file') {
|
||||
if (($("#create_text_file").hasClass("ui-dialog-content") && $('#create_text_file').dialog('isOpen') === true)) {
|
||||
$('#create_text_file').dialog('close');
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php endif ?>
|
||||
if(check_opened !== 'upload_file'){
|
||||
if (check_opened !== 'upload_file') {
|
||||
if (($("#upload_file").hasClass("ui-dialog-content") && $('#upload_file').dialog('isOpen')) === true) {
|
||||
$('#upload_file').dialog('close');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function actions_dialog(action){
|
||||
$('.'+action).addClass('file_table_modal_active');
|
||||
var title_action ='';
|
||||
function actions_dialog(action) {
|
||||
$('.' + action).addClass('file_table_modal_active');
|
||||
var title_action = '';
|
||||
switch (action) {
|
||||
case 'create_folder':
|
||||
title_action = "<?php echo __('Create a Directory'); ?>";
|
||||
title_action = "<?php echo __('Create a Directory'); ?>";
|
||||
break;
|
||||
<?php if ($allowCreateText === true) : ?>
|
||||
case 'create_text_file':
|
||||
title_action = "<?php echo __('Create a Text'); ?>";
|
||||
break;
|
||||
<?php endif ?>
|
||||
<?php if ($allowCreateText === true) : ?>
|
||||
case 'create_text_file':
|
||||
title_action = "<?php echo __('Create a Text'); ?>";
|
||||
break;
|
||||
<?php endif ?>
|
||||
case 'upload_file':
|
||||
title_action = "<?php echo __('Upload Files'); ?>";
|
||||
title_action = "<?php echo __('Upload Files'); ?>";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
$('#'+action)
|
||||
.dialog({
|
||||
title: title_action,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
},
|
||||
width: 500,
|
||||
minWidth: 500,
|
||||
minHeight: 210,
|
||||
maxWidth: 800,
|
||||
maxHeight: 300,
|
||||
close: function () {
|
||||
$('.'+action).removeClass('file_table_modal_active');
|
||||
}
|
||||
}).show();
|
||||
$('#' + action)
|
||||
.dialog({
|
||||
title: title_action,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
},
|
||||
width: 500,
|
||||
minWidth: 500,
|
||||
minHeight: 210,
|
||||
maxWidth: 800,
|
||||
maxHeight: 300,
|
||||
close: function() {
|
||||
$('.' + action).removeClass('file_table_modal_active');
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
function show_modal_real_path(path) {
|
||||
if (navigator.clipboard && window.isSecureContext) <?php $secure_con = true; ?>;
|
||||
else <?php $secure_con = false; ?>;
|
||||
$('#modal_real_path').addClass('file_table_modal_active');
|
||||
$('#real_path').empty();
|
||||
$('#real_path').html(path);
|
||||
title_action = "<?php echo __('Real path'); ?>";
|
||||
$('#modal_real_path')
|
||||
.dialog({
|
||||
title: title_action,
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
},
|
||||
width: 448,
|
||||
minWidth: 448,
|
||||
minHeight: 213,
|
||||
maxWidth: 800,
|
||||
maxHeight: 300,
|
||||
close: function() {
|
||||
$('#modal_real_path').removeClass('file_table_modal_active');
|
||||
}
|
||||
}).show();
|
||||
|
||||
$("#submit-submit").on("click", copyToClipboard);
|
||||
}
|
||||
|
||||
function copyToClipboard() {
|
||||
if (navigator.clipboard && window.isSecureContext) {
|
||||
window.navigator.clipboard.writeText($("#real_path").text()).then(function() {
|
||||
$('#modal_real_path').dialog('close');
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
@ -686,9 +726,9 @@ function filemanager_file_explorer(
|
|||
if (pathinfo($fileinfo['realpath'], PATHINFO_EXTENSION) === 'php'
|
||||
&& (is_readable($fileinfo['realpath']) === true || is_executable($fileinfo['realpath']) === true)
|
||||
) {
|
||||
$error_message = __('This file could be executed by any user');
|
||||
$error_message .= '. '.__('Make sure it can\'t perform dangerous tasks');
|
||||
$data[1] = '<span class="error forced_title" data-title="'.$error_message.'" data-use_title_for_force_title="1">'.$data[1].'</span>';
|
||||
$error_message = __('This file could be executed by any user');
|
||||
$error_message .= '. '.__('Make sure it can\'t perform dangerous tasks');
|
||||
$data[1] = '<span class="error forced_title" data-title="'.$error_message.'" data-use_title_for_force_title="1">'.$data[1].'</span>';
|
||||
}
|
||||
|
||||
$data[2] = ui_print_timestamp(
|
||||
|
@ -702,11 +742,11 @@ function filemanager_file_explorer(
|
|||
$data[3] = ui_format_filesize($fileinfo['size']);
|
||||
}
|
||||
|
||||
// Actions buttons
|
||||
// Delete button.
|
||||
$data[4] = '';
|
||||
$data[4] .= '<span style="display: flex">';
|
||||
$typefile = array_pop(explode('.', $fileinfo['name']));
|
||||
// Actions buttons
|
||||
// Delete button.
|
||||
$data[4] = '';
|
||||
$data[4] .= '<span style="display: flex">';
|
||||
$typefile = array_pop(explode('.', $fileinfo['name']));
|
||||
if (is_writable($fileinfo['realpath']) === true
|
||||
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
|
||||
&& ($readOnly === false)
|
||||
|
@ -747,9 +787,16 @@ function filemanager_file_explorer(
|
|||
$data[4] .= '</a>';
|
||||
}
|
||||
|
||||
$data[4] .= '</span>';
|
||||
if (is_writable($fileinfo['realpath']) === true
|
||||
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
|
||||
&& ($readOnly === false)
|
||||
) {
|
||||
$data[4] .= '<a href="javascript: show_modal_real_path(`'.$fileinfo['realpath'].'`);">'.html_print_image('images/book_edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Real path'), 'class' => 'invert_filter']).'</a>';
|
||||
}
|
||||
|
||||
array_push($table->data, $data);
|
||||
$data[4] .= '</span>';
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
} else {
|
||||
ui_print_info_message(
|
||||
|
@ -842,7 +889,7 @@ function filemanager_file_explorer(
|
|||
'content' => html_print_input_file(
|
||||
'file',
|
||||
true,
|
||||
[ 'style' => 'border:0; padding:0; width:100%' ]
|
||||
['style' => 'border:0; padding:0; width:100%']
|
||||
),
|
||||
],
|
||||
true
|
||||
|
@ -925,6 +972,22 @@ function filemanager_file_explorer(
|
|||
);
|
||||
echo '</a>';
|
||||
|
||||
// Show Modal Real Path
|
||||
$modal_real_path = "<div><b>Real path to plugin execution is:</b></div>
|
||||
<div id='real_path'></div>";
|
||||
|
||||
if (isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'on' || $_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
|
||||
$modal_real_path .= "<div style='float:right;margin: 5em 0 0 auto';>".html_print_submit_button(__('Copy'), 'submit', false, 'class="sub next"', true).'</div>';
|
||||
}
|
||||
|
||||
html_print_div(
|
||||
[
|
||||
'id' => 'modal_real_path',
|
||||
'class' => 'invisible',
|
||||
'content' => $modal_real_path,
|
||||
]
|
||||
);
|
||||
|
||||
echo '</div>';
|
||||
} else {
|
||||
echo "<div style='text-align: right; width: ".$table->width."; color:#AC4444; margin-bottom:10px;'>";
|
||||
|
@ -1071,4 +1134,4 @@ function filemanager_safe_directory(
|
|||
}
|
||||
|
||||
return $directory;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -508,6 +508,14 @@ function menu_add_extras(&$menu)
|
|||
$menu_extra['reporting']['sub']['enterprise/godmode/reporting/graph_template_wizard']['text'] = __('Graph template wizard');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=wizard&action=wizard']['text'] = __('Templates wizard');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=template&action=list_template']['text'] = __('Templates');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&action=edit']['text'] = __('Edit custom reports');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=list_items&action=edit']['text'] = __('List items');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=item_editor&action=new']['text'] = __('Edit item');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=wizard&action=edit']['text'] = __('Wizard');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=wizard_sla&action=edit']['text'] = __('Wizard sla');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=global&action=edit']['text'] = __('Global custom reports');
|
||||
$menu_extra['reporting']['sub']['godmode/reporting/reporting_builder&tab=advanced&action=edit']['text'] = __('Avanced options');
|
||||
|
||||
if ($config['activate_gis']) {
|
||||
$menu_extra['godgismaps']['sub']['godmode/gis_maps/configure_gis_map']['text'] = __('Manage GIS Maps');
|
||||
}
|
||||
|
@ -789,6 +797,7 @@ if (is_ajax()) {
|
|||
$db_fragmentation = json_decode($d->getTablesFragmentation());
|
||||
$sys_info = json_decode($d->getSystemInfo());
|
||||
$php_sys = json_decode($d->getPHPSetup());
|
||||
$system_date = json_decode($d->getSystemDate());
|
||||
|
||||
$fragmentation_status = '';
|
||||
if ($db_fragmentation->data->tablesFragmentationStatus->status === 1) {
|
||||
|
@ -1022,6 +1031,14 @@ if (is_ajax()) {
|
|||
<p>'.$sys_info->data->ipInfo->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 15%;">
|
||||
<p><span>'.$system_date->data->date->name.'</span></p>
|
||||
</th>
|
||||
<th style="width: 85%;">
|
||||
<p>'.$system_date->data->date->value.'</p>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -519,12 +519,13 @@ function modules_delete_agent_module($id_agent_module)
|
|||
'disabled' => 1,
|
||||
'delete_pending' => 1,
|
||||
];
|
||||
$result = db_process_sql_update(
|
||||
$id_agent = db_process_sql_update(
|
||||
'tagente_modulo',
|
||||
$values,
|
||||
['id_agente_modulo' => $id_borrar_modulo]
|
||||
);
|
||||
if ($result === false) {
|
||||
|
||||
if ($id_agent === false) {
|
||||
$error++;
|
||||
} else {
|
||||
// Set flag to update module status count.
|
||||
|
@ -562,7 +563,7 @@ function modules_delete_agent_module($id_agent_module)
|
|||
$result = db_process_delete_temp(
|
||||
'ttag_module',
|
||||
'id_agente_modulo',
|
||||
$id_borrar_modulo
|
||||
$id_agent
|
||||
);
|
||||
if ($result === false) {
|
||||
$error++;
|
||||
|
|
|
@ -1126,6 +1126,10 @@ function networkmap_open_graph(
|
|||
$head .= 'overlap="scalexy";';
|
||||
}
|
||||
|
||||
if ($layout == 'spring1' || $layout == 'spring2') {
|
||||
$head .= 'sep="'.$node_sep.'";';
|
||||
}
|
||||
|
||||
if ($layout === 'flat') {
|
||||
$head .= 'ranksep="'.$rank_sep.'";';
|
||||
} else if ($layout === 'spring2') {
|
||||
|
@ -1356,9 +1360,10 @@ function networkmap_get_types($strict_user=false)
|
|||
*/
|
||||
function networkmap_get_nodes_from_ip_mask(
|
||||
$ip_mask,
|
||||
$return_ids_only=false
|
||||
$return_ids_only=false,
|
||||
$separator=',',
|
||||
) {
|
||||
$list_ip_masks = explode(',', $ip_mask);
|
||||
$list_ip_masks = explode($separator, $ip_mask);
|
||||
|
||||
if (empty($list_ip_masks) === true) {
|
||||
return [];
|
||||
|
@ -1375,14 +1380,14 @@ function networkmap_get_nodes_from_ip_mask(
|
|||
$sql = sprintf(
|
||||
'SELECT *
|
||||
FROM `tagente`
|
||||
INNER JOIN
|
||||
(SELECT DISTINCT `id_agent` FROM
|
||||
INNER JOIN
|
||||
(SELECT DISTINCT `id_agent` FROM
|
||||
(SELECT `id_agente` AS "id_agent", `direccion` AS "ip"
|
||||
FROM `tagente`
|
||||
FROM `tagente`
|
||||
UNION
|
||||
SELECT ag.`id_agent`, a.`ip`
|
||||
FROM `taddress_agent` ag
|
||||
INNER JOIN `taddress` a
|
||||
FROM `taddress_agent` ag
|
||||
INNER JOIN `taddress` a
|
||||
ON ag.id_a=a.id_a
|
||||
) t_tmp
|
||||
WHERE (-1 << %d) & INET_ATON(t_tmp.ip) = INET_ATON("%s")
|
||||
|
|
|
@ -159,6 +159,8 @@ function notifications_get_subtypes(?string $source=null)
|
|||
'NOTIF.SERVER.STATUS',
|
||||
'NOTIF.SERVER.QUEUE',
|
||||
'NOTIF.SERVER.MASTER',
|
||||
'NOTIF.ACCESSSTASTICS.PERFORMANCE',
|
||||
'NOTIF.VARIABLES.PERFORMANCE',
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ define('REPORT_STATUS_IGNORED', 5);
|
|||
|
||||
// Clases.
|
||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||
use PandoraFMS\Enterprise\Metaconsole\Synchronizer;
|
||||
use PandoraFMS\Event;
|
||||
use PandoraFMS\Module;
|
||||
|
||||
|
@ -7421,6 +7422,14 @@ function reporting_text($report, $content)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build SQL report item.
|
||||
*
|
||||
* @param array $report Report info.
|
||||
* @param array $content Content info.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function reporting_sql($report, $content)
|
||||
{
|
||||
global $config;
|
||||
|
@ -7438,15 +7447,97 @@ function reporting_sql($report, $content)
|
|||
$return['description'] = $content['description'];
|
||||
$return['date'] = reporting_get_date_text();
|
||||
|
||||
if ($config['metaconsole'] && !empty($content['server_name'])) {
|
||||
$id_meta = metaconsole_get_id_server(
|
||||
if (is_metaconsole() === true
|
||||
&& empty($content['server_name']) === false
|
||||
&& $content['server_name'] !== 'all'
|
||||
) {
|
||||
$id_server = metaconsole_get_id_server(
|
||||
$content['server_name']
|
||||
);
|
||||
|
||||
$server = metaconsole_get_connection_by_id($id_meta);
|
||||
metaconsole_connect($server);
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true && $content['server_name'] === 'all') {
|
||||
$sync = new Synchronizer();
|
||||
$results = $sync->apply(
|
||||
function ($node) use ($report, $content) {
|
||||
try {
|
||||
$node->connect();
|
||||
$rs = reporting_sql_auxiliary($report, $content);
|
||||
$node->disconnect();
|
||||
} catch (Exception $e) {
|
||||
return [
|
||||
'error' => __(
|
||||
'Failed to connect to node %s',
|
||||
$node->server_name()
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
if ($rs === false) {
|
||||
return ['result' => []];
|
||||
}
|
||||
|
||||
return ['result' => $rs];
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$return['correct'] = 1;
|
||||
$return['error'] = '';
|
||||
|
||||
foreach ($results as $id_node => $items) {
|
||||
foreach ($items['result']['data'] as $key => $item) {
|
||||
$items['result']['data'][$key] = ['node_id' => $id_node] + $items['result']['data'][$key];
|
||||
}
|
||||
|
||||
if ((int) $items['result']['correct'] !== 1) {
|
||||
$return['correct'] = 0;
|
||||
}
|
||||
|
||||
if ($items['result']['error'] !== '') {
|
||||
$return['error'] = $items['result']['error'];
|
||||
}
|
||||
|
||||
$return['sql'] = $items['result']['sql'];
|
||||
|
||||
$data = array_merge($data, $items['result']['data']);
|
||||
}
|
||||
|
||||
$return['data'] = $data;
|
||||
} else {
|
||||
try {
|
||||
if (is_metaconsole() === true && $id_server > 0) {
|
||||
$node = new Node($id_server);
|
||||
$node->connect();
|
||||
}
|
||||
|
||||
$query_result = reporting_sql_auxiliary($report, $content);
|
||||
$return = array_merge($return, $query_result);
|
||||
|
||||
if (is_metaconsole() === true && $id_server > 0) {
|
||||
$node->disconnect();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
if (is_metaconsole() === true && $id_server > 0) {
|
||||
$node->disconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Auxiliary function for reporting_sql.
|
||||
*
|
||||
* @param array $report Report info.
|
||||
* @param array $content Content info.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function reporting_sql_auxiliary($report, $content) {
|
||||
if ($content['treport_custom_sql_id'] != 0) {
|
||||
$sql = io_safe_output(
|
||||
db_get_value_filter(
|
||||
|
@ -7459,7 +7550,7 @@ function reporting_sql($report, $content)
|
|||
$sql = $content['external_source'];
|
||||
}
|
||||
|
||||
// Check if exist sql macro.
|
||||
// Check if SQL macro exists.
|
||||
$sql = reporting_sql_macro($report, $sql);
|
||||
|
||||
// Do a security check on SQL coming from the user.
|
||||
|
@ -7514,11 +7605,7 @@ function reporting_sql($report, $content)
|
|||
$return['error'] = __('Illegal query: Due security restrictions, there are some tokens or words you cannot use: *, delete, drop, alter, modify, password, pass, insert or update.');
|
||||
}
|
||||
|
||||
if ($config['metaconsole'] && !empty($content['server_name'])) {
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue