Merge branch 'develop' into ent-13011-opciones-avanzadas-de-filtros-de-eventos-en-meta-no-tiene-borde
This commit is contained in:
commit
ea29220d4b
|
@ -0,0 +1,782 @@
|
|||
#!/bin/bash
|
||||
#######################################################
|
||||
# PandoraFMS Community online installation script
|
||||
#######################################################
|
||||
## Tested versions ##
|
||||
# Rockylinux 9.3
|
||||
# RHEL 9.3
|
||||
|
||||
#Constants
|
||||
PANDORA_CONSOLE=/var/www/html/pandora_console
|
||||
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
|
||||
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
|
||||
|
||||
|
||||
S_VERSION='2024021301'
|
||||
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
|
||||
|
||||
# define default variables
|
||||
[ "$TZ" ] || TZ="Europe/Madrid"
|
||||
[ "$MYVER" ] || MYVER=80
|
||||
[ "$PHPVER" ] || PHPVER=8
|
||||
[ "$DBHOST" ] || DBHOST=127.0.0.1
|
||||
[ "$DBNAME" ] || DBNAME=pandora
|
||||
[ "$DBUSER" ] || DBUSER=pandora
|
||||
[ "$DBPASS" ] || DBPASS='Pandor4!'
|
||||
[ "$DBPORT" ] || DBPORT=3306
|
||||
[ "$DBROOTUSER" ] || DBROOTUSER=root
|
||||
[ "$DBROOTPASS" ] || DBROOTPASS='Pandor4!'
|
||||
[ "$SKIP_PRECHECK" ] || SKIP_PRECHECK=0
|
||||
[ "$SKIP_DATABASE_INSTALL" ] || SKIP_DATABASE_INSTALL=0
|
||||
[ "$SKIP_KERNEL_OPTIMIZATIONS" ] || SKIP_KERNEL_OPTIMIZATIONS=0
|
||||
[ "$POOL_SIZE" ] || POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
|
||||
[ "$PANDORA_LTS" ] || PANDORA_LTS=1
|
||||
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
|
||||
[ "$RHEL_CHECK_SUBSCRIPTION" ] || RHEL_CHECK_SUBSCRIPTION=1
|
||||
|
||||
#Check if possible to get os version
|
||||
if [ ! -e /etc/os-release ]; then
|
||||
echo ' > Imposible to determinate the OS version for this machine, please make sure you are intalling in a compatible OS'
|
||||
echo ' > More info: https://pandorafms.com/manual/en/documentation/02_installation/01_installing#minimum_software_requirements'
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Ansi color code variables
|
||||
red="\e[0;91m"
|
||||
green="\e[0;92m"
|
||||
cyan="\e[0;36m"
|
||||
yellow="\e[33m"
|
||||
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_pre_pandora () {
|
||||
|
||||
echo -en "${cyan}Checking environment ... ${reset}"
|
||||
rpm -qa | grep 'pandorafms_' | grep -v pandorafms_agent_* | grep -v "pandorawmic" | grep -v "pandorafms_made" &>> /dev/null && local fail=true
|
||||
[ -d "$PANDORA_CONSOLE" ] && local fail=true
|
||||
[ -f /usr/bin/pandora_server ] && local fail=true
|
||||
|
||||
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ]; then
|
||||
export MYSQL_PWD=$DBPASS
|
||||
echo "use $DBNAME" | mysql -u$DBUSER -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
|
||||
fi
|
||||
|
||||
[ ! $fail ]
|
||||
check_cmd_status 'Error there is a current Pandora FMS installation on this node, please remove it to execute a clean install'
|
||||
}
|
||||
|
||||
check_repo_connection () {
|
||||
execute_cmd "ping -c 2 firefly.pandorafms.com" "Checking Community repo"
|
||||
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
# Function to check if a password meets the MySQL secure password requirements
|
||||
is_mysql_secure_password() {
|
||||
local password=$1
|
||||
|
||||
# Check password length (at least 8 characters)
|
||||
if [[ ${#password} -lt 8 ]]; then
|
||||
echo "Password length should be at least 8 characters."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if password contains at least one uppercase letter
|
||||
if [[ $password == ${password,,} ]]; then
|
||||
echo "Password should contain at least one uppercase letter."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if password contains at least one lowercase letter
|
||||
if [[ $password == ${password^^} ]]; then
|
||||
echo "Password should contain at least one lowercase letter."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if password contains at least one digit
|
||||
if ! [[ $password =~ [0-9] ]]; then
|
||||
echo "Password should contain at least one digit."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if password contains at least one special character
|
||||
if ! [[ $password =~ [[:punct:]] ]]; then
|
||||
echo "Password should contain at least one special character."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if password is not a common pattern (e.g., "password", "123456")
|
||||
local common_patterns=("password" "123456" "qwerty")
|
||||
for pattern in "${common_patterns[@]}"; do
|
||||
if [[ $password == *"$pattern"* ]]; then
|
||||
echo "Password should not contain common patterns."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
# If all checks pass, the password is MySQL secure compliant
|
||||
return 0
|
||||
}
|
||||
|
||||
## Main
|
||||
echo "Starting PandoraFMS Community deployment EL8 ver. $S_VERSION"
|
||||
|
||||
#check tools
|
||||
if ! grep --version &>> $LOGFILE ; then echo 'Error grep is not detected on the system, grep tool is needed for installation.'; exit -1 ;fi
|
||||
if ! sed --version &>> $LOGFILE ; then echo 'Error sed is not detected on the system, sed tool is needed for installation.'; exit -1 ;fi
|
||||
if ! curl --version &>> $LOGFILE ; then echo 'Error curl is not detected on the system, curl tool is needed for installation.'; exit -1 ;fi
|
||||
if ! ping -V &>> $LOGFILE ; then echo 'Error ping is not detected on the system, ping tool is needed for installation.'; exit -1 ;fi
|
||||
|
||||
# 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 '9' ]]
|
||||
check_cmd_status 'Error OS version, RHEL/Almalinux/Centos/Rockylinux 8.x 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
|
||||
|
||||
# Pre installed pandora
|
||||
[ "$SKIP_PRECHECK" == 1 ] || check_pre_pandora
|
||||
|
||||
#advicing BETA PROGRAM
|
||||
INSTALLING_VER="${green}RRR version enable using RRR PandoraFMS packages${reset}"
|
||||
[ "$PANDORA_LTS" -ne '0' ] && INSTALLING_VER="${green}LTS version enable using LTS PandoraFMS packages${reset}"
|
||||
[ "$PANDORA_BETA" -ne '0' ] && INSTALLING_VER="${red}BETA version enable using nightly PandoraFMS packages${reset}"
|
||||
echo -e $INSTALLING_VER
|
||||
|
||||
# Connectivity
|
||||
check_repo_connection
|
||||
|
||||
# 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'
|
||||
|
||||
#Check mysql pass
|
||||
execute_cmd "is_mysql_secure_password $DBROOTPASS" "Checking DBROOTPASS password match policy" 'This password do not match minimum MySQL policy requirements, more info in: https://dev.mysql.com/doc/refman/8.0/en/validate-password.html'
|
||||
execute_cmd "is_mysql_secure_password $DBPASS" "Checking DBPASS password match policy" 'This password do not match minimum MySQL policy requirements, more info in: https://dev.mysql.com/doc/refman/8.0/en/validate-password.html'
|
||||
|
||||
# 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
|
||||
if [ "$RHEL_CHECK_SUBSCRIPTION" -eq '1' ] ; then
|
||||
|
||||
# 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-9-for-x86_64-baseos-rpms' &>> "$LOGFILE"
|
||||
check_cmd_status 'Error checking repositories status, could try a subscription-manager attach command or contact sysadmin'
|
||||
fi
|
||||
#install extra repos
|
||||
extra_repos=" \
|
||||
tar \
|
||||
dnf-utils \
|
||||
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
|
||||
https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm \
|
||||
https://rpms.remirepo.net/enterprise/remi-release-9.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-9-x86_64-rpms" "Enabling subscription to codeready-builder"
|
||||
else
|
||||
# For alma/rocky/centos
|
||||
extra_repos=" \
|
||||
tar \
|
||||
dnf-utils \
|
||||
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
|
||||
https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm \
|
||||
https://rpms.remirepo.net/enterprise/remi-release-9.rpm \
|
||||
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
|
||||
|
||||
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
|
||||
execute_cmd "dnf config-manager --enable crb" "Configuring crb"
|
||||
fi
|
||||
|
||||
execute_cmd "installing_docker" "Installing Docker for debug"
|
||||
|
||||
#Installing wget
|
||||
execute_cmd "dnf install -y wget" "Installing wget"
|
||||
|
||||
#Installing php
|
||||
execute_cmd "dnf module reset -y php " "Disabling standard PHP module"
|
||||
|
||||
if [ "$PHPVER" -eq '8' ] ; then
|
||||
PHPVER=8.2
|
||||
fi
|
||||
execute_cmd "dnf module install -y php:remi-$PHPVER" "Configuring PHP $PHPVER"
|
||||
|
||||
|
||||
|
||||
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-80" "Installing Percona Server 80"
|
||||
fi
|
||||
|
||||
# Console dependencies
|
||||
console_dependencies=" \
|
||||
php \
|
||||
postfix \
|
||||
php-mcrypt \
|
||||
php-cli \
|
||||
php-gd \
|
||||
php-curl \
|
||||
php-session \
|
||||
php-mysqlnd \
|
||||
php-ldap \
|
||||
php-zip \
|
||||
php-zlib \
|
||||
php-fileinfo \
|
||||
php-gettext \
|
||||
php-snmp \
|
||||
php-mbstring \
|
||||
php-pecl-zip \
|
||||
php-xmlrpc \
|
||||
libxslt \
|
||||
wget \
|
||||
php-xml \
|
||||
httpd \
|
||||
mod_php \
|
||||
atk \
|
||||
avahi-libs \
|
||||
cairo \
|
||||
cups-libs \
|
||||
fribidi \
|
||||
gd \
|
||||
gdk-pixbuf2 \
|
||||
ghostscript \
|
||||
graphite2 \
|
||||
graphviz \
|
||||
gtk2 \
|
||||
harfbuzz \
|
||||
hicolor-icon-theme \
|
||||
hwdata \
|
||||
jasper-libs \
|
||||
lcms2 \
|
||||
libICE \
|
||||
libSM \
|
||||
libXaw \
|
||||
libXcomposite \
|
||||
libXcursor \
|
||||
libXdamage \
|
||||
libXext \
|
||||
libXfixes \
|
||||
libXft \
|
||||
libXi \
|
||||
libXinerama \
|
||||
libXmu \
|
||||
libXrandr \
|
||||
libXrender \
|
||||
libXt \
|
||||
libXxf86vm \
|
||||
libdrm \
|
||||
libfontenc \
|
||||
libglvnd \
|
||||
libglvnd-egl \
|
||||
libglvnd-glx \
|
||||
libpciaccess \
|
||||
librsvg2 \
|
||||
libthai \
|
||||
libtool-ltdl \
|
||||
libwayland-client \
|
||||
libwayland-server \
|
||||
libxshmfence \
|
||||
mesa-libEGL \
|
||||
mesa-libGL \
|
||||
mesa-libgbm \
|
||||
mesa-libglapi \
|
||||
pango \
|
||||
pixman \
|
||||
xorg-x11-fonts-75dpi \
|
||||
xorg-x11-fonts-misc \
|
||||
poppler-data \
|
||||
php-yaml \
|
||||
mod_ssl \
|
||||
libzstd \
|
||||
openldap-clients \
|
||||
https://firefly.pandorafms.com/centos8/chromium-110.0.5481.177-1.el7.x86_64.rpm \
|
||||
https://firefly.pandorafms.com/centos8/chromium-common-110.0.5481.177-1.el7.x86_64.rpm \
|
||||
https://firefly.pandorafms.com/centos8/pandora_gotty-1.0-1.el8.x86_64.rpm \
|
||||
https://firefly.pandorafms.com/centos8/pandorafms_made-0.1.0-1.el8.x86_64.rpm "
|
||||
execute_cmd "dnf install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
|
||||
|
||||
# Server dependencies
|
||||
server_dependencies=" \
|
||||
perl \
|
||||
vim \
|
||||
fping \
|
||||
perl-IO-Compress \
|
||||
nmap \
|
||||
sudo \
|
||||
perl-Time-HiRes \
|
||||
nfdump \
|
||||
net-snmp-utils \
|
||||
perl(NetAddr::IP) \
|
||||
perl(Sys::Syslog) \
|
||||
perl(DBI) \
|
||||
perl(XML::Simple) \
|
||||
perl(IO::Socket::INET6) \
|
||||
perl(XML::Twig) \
|
||||
perl-JSON \
|
||||
expect \
|
||||
openssh-clients \
|
||||
java \
|
||||
bind-utils \
|
||||
whois \
|
||||
libnsl \
|
||||
libxcrypt-compat \
|
||||
https://firefly.pandorafms.com/pandorafms-el9/perl-Geo-IP-1.51-1.el9.x86_64.rpm \
|
||||
https://firefly.pandorafms.com/centos8/pandorawmic-1.0.0-1.x86_64.rpm"
|
||||
execute_cmd "dnf install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
|
||||
|
||||
#ipam dependencies
|
||||
ipam_dependencies=" \
|
||||
perl(NetAddr::IP) \
|
||||
perl(Sys::Syslog) \
|
||||
perl(DBI) \
|
||||
perl(XML::Simple) \
|
||||
perl(IO::Socket::INET6) \
|
||||
perl(XML::Twig)"
|
||||
execute_cmd "dnf install -y $ipam_dependencies" "Installing IPAM Instant client"
|
||||
|
||||
# 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!';
|
||||
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!');
|
||||
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 https://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=""
|
||||
|
||||
[mysqld_safe]
|
||||
log-error=/var/log/mysqld.log
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
||||
|
||||
EO_CONFIG_F
|
||||
|
||||
execute_cmd "systemctl restart mysqld" "Configuring database engine"
|
||||
execute_cmd "systemctl enable mysqld --now" "Enabling Database service"
|
||||
fi
|
||||
export MYSQL_PWD=$DBPASS
|
||||
|
||||
#Define packages
|
||||
if [ "$PANDORA_LTS" -eq '1' ] ; then
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_server-7.0NG.noarch.rpm"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_console-7.0NG.noarch.rpm"
|
||||
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux_bin-7.0NG.x86_64.rpm"
|
||||
elif [ "$PANDORA_LTS" -ne '1' ] ; then
|
||||
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.x86_64.rpm"
|
||||
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.x86_64.rpm"
|
||||
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux_bin-7.0NG.x86_64.rpm"
|
||||
fi
|
||||
|
||||
# if beta is enable
|
||||
if [ "$PANDORA_BETA" -eq '1' ] ; then
|
||||
PANDORA_SERVER_PACKAGE="https://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
|
||||
PANDORA_CONSOLE_PACKAGE="https://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.x86_64.rpm"
|
||||
PANDORA_AGENT_PACKAGE="https://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux_bin-7.0NG.x86_64.rpm"
|
||||
fi
|
||||
|
||||
# Downloading Pandora Packages
|
||||
execute_cmd "curl -LSs --output pandorafms_server-7.0NG.noarch.rpm ${PANDORA_SERVER_PACKAGE}" "Downloading Pandora FMS Server community"
|
||||
execute_cmd "curl -LSs --output pandorafms_console-7.0NG.noarch.rpm ${PANDORA_CONSOLE_PACKAGE}" "Downloading Pandora FMS Console community"
|
||||
execute_cmd "curl -LSs --output pandorafms_agent_linux-7.0NG.noarch.rpm ${PANDORA_AGENT_PACKAGE}" "Downloading Pandora FMS Agent community"
|
||||
|
||||
# Install Pandora
|
||||
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms_console*.rpm $HOME/pandora_deploy_tmp/pandorafms_agent*.rpm" "Installing Pandora FMS packages"
|
||||
execute_cmd "rpm -i --nodeps $HOME/pandora_deploy_tmp/pandorafms_server-7.0NG.noarch.rpm " "Installing Pandora FMS Server package"
|
||||
|
||||
# Enable Services
|
||||
execute_cmd "systemctl enable httpd --now" "Enabling HTTPD service"
|
||||
execute_cmd "systemctl enable php-fpm --now" "Enabling PHP-FPM service"
|
||||
|
||||
# Populate Database
|
||||
echo -en "${cyan}Loading pandoradb.sql to $DBNAME database...${reset}"
|
||||
mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb.sql &>> "$LOGFILE"
|
||||
check_cmd_status 'Error Loading database schema'
|
||||
|
||||
echo -en "${cyan}Loading pandoradb_data.sql to $DBNAME database...${reset}"
|
||||
mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sql &>> "$LOGFILE"
|
||||
check_cmd_status 'Error Loading database schema data'
|
||||
|
||||
# Configure console
|
||||
cat > $PANDORA_CONSOLE/include/config.php << EO_CONFIG_F
|
||||
<?php
|
||||
\$config["dbtype"] = "mysql";
|
||||
\$config["dbname"]="$DBNAME";
|
||||
\$config["dbuser"]="$DBUSER";
|
||||
\$config["dbpass"]="$DBPASS";
|
||||
\$config["dbhost"]="$DBHOST";
|
||||
\$config["homedir"]="$PANDORA_CONSOLE";
|
||||
\$config["homeurl"]="/pandora_console";
|
||||
error_reporting(0);
|
||||
\$ownDir = dirname(__FILE__) . '/';
|
||||
include (\$ownDir . "config_process.php");
|
||||
|
||||
EO_CONFIG_F
|
||||
|
||||
cat > /etc/httpd/conf.d/pandora.conf << EO_CONFIG_F
|
||||
<Directory "/var/www/html">
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
EO_CONFIG_F
|
||||
|
||||
# Temporal quitar htaccess
|
||||
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
|
||||
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess
|
||||
|
||||
# Fixing console permissions
|
||||
chmod 600 $PANDORA_CONSOLE/include/config.php
|
||||
chown apache. $PANDORA_CONSOLE/include/config.php
|
||||
mv $PANDORA_CONSOLE/install.php $PANDORA_CONSOLE/install.done &>> "$LOGFILE"
|
||||
|
||||
# Prepare php.ini
|
||||
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
|
||||
sed -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
|
||||
sed -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
|
||||
sed -i -e "s/^memory_limit.*/memory_limit = 800M/g" /etc/php.ini
|
||||
sed -i -e "s/.*post_max_size =.*/post_max_size = 800M/" /etc/php.ini
|
||||
|
||||
#adding 900s to httpd timeout and 300 to ProxyTimeout
|
||||
echo 'TimeOut 900' > /etc/httpd/conf.d/timeout.conf
|
||||
echo 'ProxyTimeout 300' >> /etc/httpd/conf.d/timeout.conf
|
||||
|
||||
cat > /var/www/html/index.html << EOF_INDEX
|
||||
<meta HTTP-EQUIV="REFRESH" content="0; url=/pandora_console/">
|
||||
EOF_INDEX
|
||||
|
||||
execute_cmd "systemctl restart httpd" "Restarting httpd after configuration"
|
||||
execute_cmd "systemctl restart php-fpm" "Restarting php-fpm after configuration"
|
||||
|
||||
# prepare snmptrapd
|
||||
cat > /etc/snmp/snmptrapd.conf << EOF
|
||||
authCommunity log public
|
||||
disableAuthorization yes
|
||||
EOF
|
||||
|
||||
# Prepare Server conf
|
||||
sed -i -e "s/^dbhost.*/dbhost $DBHOST/g" $PANDORA_SERVER_CONF
|
||||
sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
|
||||
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
|
||||
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
|
||||
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
|
||||
sed -i -e "s/^#.mssql_driver.*/mssql_driver $MS_ID/g" $PANDORA_SERVER_CONF
|
||||
|
||||
#check fping
|
||||
fping_bin=$(which fping)
|
||||
execute_cmd "[ $fping_bin ]" "Check fping location: $fping_bin"
|
||||
if [ "$fping_bin" != "" ]; then
|
||||
sed -i -e "s|^fping.*|fping $fping_bin|g" $PANDORA_SERVER_CONF
|
||||
fi
|
||||
|
||||
# Enable agent remote config
|
||||
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF
|
||||
|
||||
# Kernel optimization
|
||||
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
|
||||
|
||||
old_sysctl_file=$(cat /etc/sysctl.conf)
|
||||
|
||||
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
|
||||
|
||||
echo -en "${cyan}Applying Kernel optimization... ${reset}"
|
||||
sysctl --system &>> $LOGFILE
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${red}Fail${reset}"
|
||||
echo -e "${yellow}Your kernel could not be optimized, you may be running this script in a virtualized environment with no support for accessing the kernel.${reset}"
|
||||
echo -e "${yellow}This system can be used for testing but is not recommended for a production environment.${reset}"
|
||||
echo "$old_sysctl_file" > old_sysctl_file
|
||||
else
|
||||
echo -e "${green}OK${reset}"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Fix pandora_server.{log,error} permissions to allow Console check them
|
||||
chown pandora:apache /var/log/pandora
|
||||
chmod g+s /var/log/pandora
|
||||
|
||||
cat > /etc/logrotate.d/pandora_server <<EO_LR
|
||||
/var/log/pandora/pandora_server.log
|
||||
/var/log/pandora/web_socket.log
|
||||
/var/log/pandora/pandora_server.error {
|
||||
su root apache
|
||||
weekly
|
||||
missingok
|
||||
size 300000
|
||||
rotate 3
|
||||
maxage 90
|
||||
compress
|
||||
notifempty
|
||||
copytruncate
|
||||
create 660 pandora apache
|
||||
}
|
||||
|
||||
/var/log/pandora/pandora_snmptrap.log {
|
||||
su root apache
|
||||
weekly
|
||||
missingok
|
||||
size 500000
|
||||
rotate 1
|
||||
maxage 30
|
||||
notifempty
|
||||
copytruncate
|
||||
create 660 pandora apache
|
||||
}
|
||||
|
||||
EO_LR
|
||||
|
||||
cat > /etc/logrotate.d/pandora_agent <<EO_LRA
|
||||
/var/log/pandora/pandora_agent.log {
|
||||
su root apache
|
||||
weekly
|
||||
missingok
|
||||
size 300000
|
||||
rotate 3
|
||||
maxage 90
|
||||
compress
|
||||
notifempty
|
||||
copytruncate
|
||||
}
|
||||
|
||||
EO_LRA
|
||||
|
||||
chmod 0644 /etc/logrotate.d/pandora_server
|
||||
chmod 0644 /etc/logrotate.d/pandora_agent
|
||||
|
||||
# Enable pandora ha service
|
||||
systemctl enable pandora_server --now &>> "$LOGFILE"
|
||||
execute_cmd "/etc/init.d/pandora_server start" "Starting Pandora FMS Server"
|
||||
|
||||
# starting tentacle server
|
||||
systemctl enable tentacle_serverd &>> "$LOGFILE"
|
||||
execute_cmd "service tentacle_serverd start" "Starting Tentacle Server"
|
||||
|
||||
# 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/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/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"
|
||||
|
||||
# Enable postfix
|
||||
systemctl enable postfix --now &>> "$LOGFILE"
|
||||
|
||||
#SSH banner
|
||||
[ "$(curl -s ifconfig.me)" ] && ipplublic=$(curl -s ifconfig.me)
|
||||
|
||||
cat > /etc/issue.net << EOF_banner
|
||||
|
||||
Welcome to Pandora FMS appliance on RHEL/Rocky Linux 8
|
||||
------------------------------------------
|
||||
Go to Public http://$ipplublic/pandora_console 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"}')
|
||||
|
||||
You can find more information at http://pandorafms.com
|
||||
|
||||
EOF_banner
|
||||
|
||||
rm -f /etc/issue
|
||||
ln -s /etc/issue.net /etc/issue
|
||||
|
||||
echo 'Banner /etc/issue.net' >> /etc/ssh/sshd_config
|
||||
|
||||
# Remove temporary files
|
||||
execute_cmd "echo done" "Pandora FMS Community installed"
|
||||
cd
|
||||
execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
|
||||
|
||||
# Print nice finish message
|
||||
GREEN='\033[01;32m'
|
||||
NONE='\033[0m'
|
||||
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
|
||||
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240326
|
||||
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.776-240318"
|
||||
pandora_version="7.0NG.776-240326"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1039,7 +1039,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.776';
|
||||
use constant AGENT_BUILD => '240318';
|
||||
use constant AGENT_BUILD => '240326';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.776"
|
||||
PI_BUILD="240318"
|
||||
PI_BUILD="240326"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{240318}
|
||||
{240326}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240318")
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240326")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240318))"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240326))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240326
|
||||
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.776-240318"
|
||||
pandora_version="7.0NG.776-240326"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -299,7 +299,7 @@ function agents_modules_load_js()
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
function mainAgentsModules()
|
||||
function mainAgentsModules($params=[], $post_data=[])
|
||||
{
|
||||
global $config;
|
||||
|
||||
|
@ -352,29 +352,39 @@ function mainAgentsModules()
|
|||
|
||||
$updated_time = $updated_info;
|
||||
|
||||
$modulegroup = get_parameter('modulegroup', 0);
|
||||
if ($post_data === []) {
|
||||
$show_type = (int) get_parameter('show_type', 0);
|
||||
$group_id = (int) get_parameter('group_id', 0);
|
||||
$recursion = get_parameter('recursion', 0);
|
||||
$modulegroup = get_parameter('modulegroup', 0);
|
||||
if (get_parameter('modulegroup') != null) {
|
||||
$agents_id = (array) get_parameter('id_agents2', null);
|
||||
}
|
||||
|
||||
$selection_a_m = (int) get_parameter('selection_agent_module');
|
||||
$modules_selected = (array) get_parameter('module', 0);
|
||||
} else {
|
||||
$show_type = (int) ($post_data['show_type'] ?? 0);
|
||||
$group_id = (int) ($post_data['group_id'] ?? 0);
|
||||
$recursion = ($post_data['recursion'] ?? 0);
|
||||
$modulegroup = ($post_data['modulegroup'] ?? 0);
|
||||
if ($modulegroup !== 0) {
|
||||
$agents_id = (array) ($post_data['id_agents2'] ?? []);
|
||||
}
|
||||
|
||||
$selection_a_m = ($post_data['selection_agent_module'] ?? '');
|
||||
$modules_selected = ($post_data['module'] ?? []);
|
||||
}
|
||||
|
||||
$refr = (int) get_parameter('refresh', 0);
|
||||
// By default 30 seconds.
|
||||
$recursion = get_parameter('recursion', 0);
|
||||
$group_id = (int) get_parameter('group_id', 0);
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
$hor_offset = (int) get_parameter('hor_offset', 0);
|
||||
$block = $config['block_size'];
|
||||
if (intval($block) > 15) {
|
||||
$block = '15';
|
||||
}
|
||||
|
||||
if (get_parameter('modulegroup') != null) {
|
||||
$agents_id = (array) get_parameter('id_agents2', null);
|
||||
}
|
||||
|
||||
$selection_a_m = (int) get_parameter('selection_agent_module');
|
||||
$modules_selected = (array) get_parameter('module', 0);
|
||||
$block = (string) ($params['block_size'] ?? $hor_offset);
|
||||
$update_item = (string) get_parameter('edit_item', '');
|
||||
$save_serialize = (int) get_parameter('save_serialize', 0);
|
||||
$full_modules_selected = explode(';', get_parameter('full_modules_selected', 0));
|
||||
$full_agents_id = explode(';', get_parameter('full_agents_id', 0));
|
||||
$show_type = (int) get_parameter('show_type', 0);
|
||||
|
||||
// In full screen there is no pagination neither filters.
|
||||
if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) {
|
||||
|
@ -572,6 +582,7 @@ function mainAgentsModules()
|
|||
*/
|
||||
|
||||
if ($config['pure'] == 0) {
|
||||
include_once 'include/class/HTML.class.php';
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__('Agents/Modules'),
|
||||
|
@ -895,7 +906,9 @@ function mainAgentsModules()
|
|||
return;
|
||||
}
|
||||
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="info_table mrgn_btn_20px" id="agents_modules_table">';
|
||||
echo '<div id="div-agents-modules-table">';
|
||||
echo '<div id="agents-modules-spinner" class="spinner-fixed"><span></span><span></span><span></span><span></span></div>';
|
||||
echo '<table cellpadding="4" cellspacing="4" border="0" class="info_table mrgn_btn_20px invisible" id="agents_modules_table">';
|
||||
|
||||
echo '<tr>';
|
||||
|
||||
|
@ -1084,6 +1097,7 @@ function mainAgentsModules()
|
|||
}
|
||||
|
||||
echo '</table>';
|
||||
echo '</div>';
|
||||
|
||||
if ($show_type === 0) {
|
||||
$show_legend = "<div class='legend_white'>";
|
||||
|
@ -1114,4 +1128,66 @@ function mainAgentsModules()
|
|||
|
||||
|
||||
extensions_add_operation_menu_option(__('Agents/Modules view'), 'estado', 'agents_modules/icon_menu.png', 'v1r1', 'view');
|
||||
extensions_add_main_function('mainAgentsModules');
|
||||
|
||||
$pure = (int) get_parameter('pure', 0);
|
||||
$hor_offset = (int) get_parameter('hor_offset', 0);
|
||||
$offset = (int) get_parameter('offset', 0);
|
||||
|
||||
$sec2 = get_parameter('sec2');
|
||||
|
||||
if ($pure !== 0) {
|
||||
extensions_add_main_function('mainAgentsModules');
|
||||
if ($sec2 === 'extensions/agents_modules') {
|
||||
echo '<script>
|
||||
$(document).ready(function () {
|
||||
$("#agents-modules-spinner").hide();
|
||||
$("#agents_modules_table").show();
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($pure === 0) {
|
||||
if (is_ajax()) {
|
||||
$params = [];
|
||||
$post_data = get_parameter('post_data', []);
|
||||
$items_offset = get_parameter('items_offset', 15);
|
||||
$params['block_size'] = $items_offset;
|
||||
$params['offset'] = $offset;
|
||||
$params['hor_offset'] = $hor_offset;
|
||||
mainAgentsModules($params, $post_data);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($sec2 === 'extensions/agents_modules') {
|
||||
echo '<script>
|
||||
$(document).ready(function () {
|
||||
// Calc items per page.
|
||||
const mainWidth = $("#page #main").width();
|
||||
const itemsOffset = Math.floor((mainWidth - 240) / 46);
|
||||
|
||||
$.ajax({
|
||||
url: "ajax.php",
|
||||
data: {
|
||||
page: "extensions/agents_modules",
|
||||
post_data: '.json_encode($_POST).',
|
||||
items_offset: itemsOffset,
|
||||
offset: '.$offset.',
|
||||
hor_offset: '.$hor_offset.',
|
||||
},
|
||||
dataType: "html",
|
||||
success: function (data) {
|
||||
$("#page > #main").html(data);
|
||||
$("#agents-modules-spinner").hide();
|
||||
$("#agents_modules_table").show();
|
||||
menuActionButtonResizing();
|
||||
},
|
||||
error: function (error) {
|
||||
console.error(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
}
|
|
@ -196,6 +196,15 @@ function pandora_realtime_graphs()
|
|||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => html_print_submit_button(
|
||||
__('Filter'),
|
||||
'filterbutton',
|
||||
false,
|
||||
[
|
||||
'icon' => 'search',
|
||||
'mode' => 'mini',
|
||||
],
|
||||
true
|
||||
).html_print_submit_button(
|
||||
__('Clear graph'),
|
||||
'srcbutton',
|
||||
false,
|
||||
|
|
|
@ -160,10 +160,6 @@
|
|||
return +(Math.round(num + "e+2") + "e-2");
|
||||
}
|
||||
|
||||
$("#graph").change(function() {
|
||||
$("form#realgraph").submit();
|
||||
});
|
||||
|
||||
$("#refresh").change(function() {
|
||||
refresh = parseInt($("#refresh").val());
|
||||
resetDataPooling();
|
||||
|
|
|
@ -1738,3 +1738,12 @@ extensions/files_repo/sql/files_repo.sql
|
|||
extensions/files_repo
|
||||
extensions/resource_exportation.php
|
||||
extensions/resource_registration.php
|
||||
enterprise/include/class/Aws.cloud.php
|
||||
enterprise/include/class/Azure.cloud.php
|
||||
enterprise/include/class/DB2.app.php
|
||||
enterprise/include/class/Google.cloud.php
|
||||
enterprise/include/class/MicrosoftSQLServer.app.php
|
||||
enterprise/include/class/MySQL.app.php
|
||||
enterprise/include/class/Oracle.app.php
|
||||
enterprise/include/class/SAP.app.php
|
||||
enterprise/include/class/VMware.app.php
|
||||
|
|
|
@ -53,7 +53,7 @@ refresh[2]="0"
|
|||
source[2]="0"
|
||||
source_data[2]="{\"tagente\":{\"nombre\":\"freebsd-1\"}}"
|
||||
options[2]=""
|
||||
style[2]="{\"shape\":\"circle\",\"image\":\"images/networkmap/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-1\"}"
|
||||
style[2]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-1\"}"
|
||||
|
||||
id[3]="3"
|
||||
id_map[3]="2"
|
||||
|
@ -66,7 +66,7 @@ refresh[3]="0"
|
|||
source[3]="0"
|
||||
source_data[3]="{\"tagente\":{\"nombre\":\"macos-1\"}}"
|
||||
options[3]=""
|
||||
style[3]="{\"shape\":\"circle\",\"image\":\"images/networkmap/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-1\"}"
|
||||
style[3]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-1\"}"
|
||||
|
||||
id[4]="4"
|
||||
id_map[4]="2"
|
||||
|
@ -79,7 +79,7 @@ refresh[4]="0"
|
|||
source[4]="0"
|
||||
source_data[4]="{\"tagente\":{\"nombre\":\"windows-1\"}}"
|
||||
options[4]=""
|
||||
style[4]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-1\"}"
|
||||
style[4]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-1\"}"
|
||||
|
||||
id[5]="5"
|
||||
id_map[5]="2"
|
||||
|
@ -92,7 +92,7 @@ refresh[5]="0"
|
|||
source[5]="0"
|
||||
source_data[5]="{\"tagente\":{\"nombre\":\"windows-2\"}}"
|
||||
options[5]=""
|
||||
style[5]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-2\"}"
|
||||
style[5]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-2\"}"
|
||||
|
||||
id[6]="6"
|
||||
id_map[6]="2"
|
||||
|
@ -105,7 +105,7 @@ refresh[6]="0"
|
|||
source[6]="0"
|
||||
source_data[6]="{\"tagente\":{\"nombre\":\"linux-1\"}}"
|
||||
options[6]=""
|
||||
style[6]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-1\"}"
|
||||
style[6]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-1\"}"
|
||||
|
||||
id[7]="7"
|
||||
id_map[7]="2"
|
||||
|
@ -118,7 +118,7 @@ refresh[7]="0"
|
|||
source[7]="0"
|
||||
source_data[7]="{\"tagente\":{\"nombre\":\"linux-2\"}}"
|
||||
options[7]=""
|
||||
style[7]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-2\"}"
|
||||
style[7]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-2\"}"
|
||||
|
||||
id[8]="8"
|
||||
id_map[8]="2"
|
||||
|
@ -131,7 +131,7 @@ refresh[8]="0"
|
|||
source[8]="0"
|
||||
source_data[8]="{\"tagente\":{\"nombre\":\"linux-3\"}}"
|
||||
options[8]=""
|
||||
style[8]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-3\"}"
|
||||
style[8]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-3\"}"
|
||||
|
||||
id[9]="9"
|
||||
id_map[9]="2"
|
||||
|
@ -144,7 +144,7 @@ refresh[9]="0"
|
|||
source[9]="0"
|
||||
source_data[9]="{\"tagente\":{\"nombre\":\"linux-4\"}}"
|
||||
options[9]=""
|
||||
style[9]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-4\"}"
|
||||
style[9]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-4\"}"
|
||||
|
||||
id[10]="10"
|
||||
id_map[10]="2"
|
||||
|
@ -157,7 +157,7 @@ refresh[10]="0"
|
|||
source[10]="0"
|
||||
source_data[10]="{\"tagente\":{\"nombre\":\"cisco-2\"}}"
|
||||
options[10]=""
|
||||
style[10]="{\"shape\":\"circle\",\"image\":\"images/networkmap/cisco@os.svg\",\"width\":null,\"height\":null,\"label\":\"cisco-2\"}"
|
||||
style[10]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/cisco@os.svg\",\"width\":null,\"height\":null,\"label\":\"cisco-2\"}"
|
||||
|
||||
id[11]="11"
|
||||
id_map[11]="2"
|
||||
|
@ -170,7 +170,7 @@ refresh[11]="0"
|
|||
source[11]="0"
|
||||
source_data[11]="{\"tagente\":{\"nombre\":\"freebsd-2\"}}"
|
||||
options[11]=""
|
||||
style[11]="{\"shape\":\"circle\",\"image\":\"images/networkmap/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-2\"}"
|
||||
style[11]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-2\"}"
|
||||
|
||||
id[12]="12"
|
||||
id_map[12]="2"
|
||||
|
@ -183,7 +183,7 @@ refresh[12]="0"
|
|||
source[12]="0"
|
||||
source_data[12]="{\"tagente\":{\"nombre\":\"macos-2\"}}"
|
||||
options[12]=""
|
||||
style[12]="{\"shape\":\"circle\",\"image\":\"images/networkmap/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-2\"}"
|
||||
style[12]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-2\"}"
|
||||
|
||||
id[13]="13"
|
||||
id_map[13]="2"
|
||||
|
@ -196,7 +196,7 @@ refresh[13]="0"
|
|||
source[13]="0"
|
||||
source_data[13]="{\"tagente\":{\"nombre\":\"windows-3\"}}"
|
||||
options[13]=""
|
||||
style[13]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-3\"}"
|
||||
style[13]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-3\"}"
|
||||
|
||||
id[14]="14"
|
||||
id_map[14]="2"
|
||||
|
@ -209,7 +209,7 @@ refresh[14]="0"
|
|||
source[14]="0"
|
||||
source_data[14]="{\"tagente\":{\"nombre\":\"windows-4\"}}"
|
||||
options[14]=""
|
||||
style[14]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-4\"}"
|
||||
style[14]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-4\"}"
|
||||
|
||||
id[15]="15"
|
||||
id_map[15]="2"
|
||||
|
@ -222,7 +222,7 @@ refresh[15]="0"
|
|||
source[15]="0"
|
||||
source_data[15]="{\"tagente\":{\"nombre\":\"linux-5\"}}"
|
||||
options[15]=""
|
||||
style[15]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-5\"}"
|
||||
style[15]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-5\"}"
|
||||
|
||||
id[16]="16"
|
||||
id_map[16]="2"
|
||||
|
@ -235,7 +235,7 @@ refresh[16]="0"
|
|||
source[16]="0"
|
||||
source_data[16]="{\"tagente\":{\"nombre\":\"linux-6\"}}"
|
||||
options[16]=""
|
||||
style[16]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-6\"}"
|
||||
style[16]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-6\"}"
|
||||
|
||||
id[17]="17"
|
||||
id_map[17]="2"
|
||||
|
@ -248,7 +248,7 @@ refresh[17]="0"
|
|||
source[17]="0"
|
||||
source_data[17]="{\"tagente\":{\"nombre\":\"linux-7\"}}"
|
||||
options[17]=""
|
||||
style[17]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-7\"}"
|
||||
style[17]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-7\"}"
|
||||
|
||||
id[18]="18"
|
||||
id_map[18]="2"
|
||||
|
@ -261,7 +261,7 @@ refresh[18]="0"
|
|||
source[18]="0"
|
||||
source_data[18]="{\"tagente\":{\"nombre\":\"linux-8\"}}"
|
||||
options[18]=""
|
||||
style[18]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-8\"}"
|
||||
style[18]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-8\"}"
|
||||
|
||||
id[19]="19"
|
||||
id_map[19]="2"
|
||||
|
@ -274,7 +274,7 @@ refresh[19]="0"
|
|||
source[19]="0"
|
||||
source_data[19]="{\"tagente\":{\"nombre\":\"cisco-3\"}}"
|
||||
options[19]=""
|
||||
style[19]="{\"shape\":\"circle\",\"image\":\"images/networkmap/cisco@os.svg\",\"width\":null,\"height\":null,\"label\":\"cisco-3\"}"
|
||||
style[19]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/cisco@os.svg\",\"width\":null,\"height\":null,\"label\":\"cisco-3\"}"
|
||||
|
||||
id[20]="20"
|
||||
id_map[20]="2"
|
||||
|
@ -287,7 +287,7 @@ refresh[20]="0"
|
|||
source[20]="0"
|
||||
source_data[20]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
options[20]=""
|
||||
style[20]="{\"shape\":\"circle\",\"image\":\"images/networkmap/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-3\"}"
|
||||
style[20]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/freebsd@os.svg\",\"width\":null,\"height\":null,\"label\":\"freebsd-3\"}"
|
||||
|
||||
id[21]="21"
|
||||
id_map[21]="2"
|
||||
|
@ -300,7 +300,7 @@ refresh[21]="0"
|
|||
source[21]="0"
|
||||
source_data[21]="{\"tagente\":{\"nombre\":\"macos-3\"}}"
|
||||
options[21]=""
|
||||
style[21]="{\"shape\":\"circle\",\"image\":\"images/networkmap/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-3\"}"
|
||||
style[21]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/apple@os.svg\",\"width\":null,\"height\":null,\"label\":\"macos-3\"}"
|
||||
|
||||
id[22]="22"
|
||||
id_map[22]="2"
|
||||
|
@ -313,7 +313,7 @@ refresh[22]="0"
|
|||
source[22]="0"
|
||||
source_data[22]="{\"tagente\":{\"nombre\":\"windows-5\"}}"
|
||||
options[22]=""
|
||||
style[22]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-5\"}"
|
||||
style[22]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-5\"}"
|
||||
|
||||
id[23]="23"
|
||||
id_map[23]="2"
|
||||
|
@ -326,7 +326,7 @@ refresh[23]="0"
|
|||
source[23]="0"
|
||||
source_data[23]="{\"tagente\":{\"nombre\":\"windows-6\"}}"
|
||||
options[23]=""
|
||||
style[23]="{\"shape\":\"circle\",\"image\":\"images/networkmap/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-6\"}"
|
||||
style[23]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/windows@os.svg\",\"width\":null,\"height\":null,\"label\":\"windows-6\"}"
|
||||
|
||||
id[24]="24"
|
||||
id_map[24]="2"
|
||||
|
@ -339,7 +339,7 @@ refresh[24]="0"
|
|||
source[24]="0"
|
||||
source_data[24]="{\"tagente\":{\"nombre\":\"linux-9\"}}"
|
||||
options[24]=""
|
||||
style[24]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-9\"}"
|
||||
style[24]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-9\"}"
|
||||
|
||||
id[25]="25"
|
||||
id_map[25]="2"
|
||||
|
@ -352,7 +352,7 @@ refresh[25]="0"
|
|||
source[25]="0"
|
||||
source_data[25]="{\"tagente\":{\"nombre\":\"linux-10\"}}"
|
||||
options[25]=""
|
||||
style[25]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-10\"}"
|
||||
style[25]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-10\"}"
|
||||
|
||||
id[26]="26"
|
||||
id_map[26]="2"
|
||||
|
@ -365,7 +365,7 @@ refresh[26]="0"
|
|||
source[26]="0"
|
||||
source_data[26]="{\"tagente\":{\"nombre\":\"linux-11\"}}"
|
||||
options[26]=""
|
||||
style[26]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-11\"}"
|
||||
style[26]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-11\"}"
|
||||
|
||||
id[27]="27"
|
||||
id_map[27]="2"
|
||||
|
@ -378,13 +378,13 @@ refresh[27]="0"
|
|||
source[27]="0"
|
||||
source_data[27]="{\"tagente\":{\"nombre\":\"linux-12\"}}"
|
||||
options[27]=""
|
||||
style[27]="{\"shape\":\"circle\",\"image\":\"images/networkmap/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-12\"}"
|
||||
style[27]="{\"shape\":\"circle\",\"image\":\"images\/networkmap\/linux@os.svg\",\"width\":null,\"height\":null,\"label\":\"linux-12\"}"
|
||||
|
||||
[trel_item]
|
||||
|
||||
id[1]="1"
|
||||
id_parent[1]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[1]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"11\",\"x\":\"1184\",\"y\":\"-25\",\"z\":\"0\"}}"
|
||||
id_parent[1]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[1]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-1\"}},\"x\":\"1184\",\"y\":\"-25\",\"z\":\"0\"}}"
|
||||
id_map[1]="2"
|
||||
id_parent_source_data[1]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[1]="{\"tagente\":{\"nombre\":\"freebsd-1\"}}"
|
||||
|
@ -394,8 +394,8 @@ id_item[1]="0"
|
|||
deleted[1]="0"
|
||||
|
||||
id[2]="2"
|
||||
id_parent[2]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[2]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"10\",\"x\":\"1268\",\"y\":\"235\",\"z\":\"0\"}}"
|
||||
id_parent[2]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[2]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"macos-1\"}},\"x\":\"1268\",\"y\":\"235\",\"z\":\"0\"}}"
|
||||
id_map[2]="2"
|
||||
id_parent_source_data[2]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[2]="{\"tagente\":{\"nombre\":\"macos-1\"}}"
|
||||
|
@ -405,8 +405,8 @@ id_item[2]="0"
|
|||
deleted[2]="0"
|
||||
|
||||
id[3]="3"
|
||||
id_parent[3]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[3]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"8\",\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_parent[3]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[3]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-1\"}},\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_map[3]="2"
|
||||
id_parent_source_data[3]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[3]="{\"tagente\":{\"nombre\":\"windows-1\"}}"
|
||||
|
@ -416,8 +416,8 @@ id_item[3]="0"
|
|||
deleted[3]="0"
|
||||
|
||||
id[4]="4"
|
||||
id_parent[4]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[4]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"9\",\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_parent[4]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[4]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-2\"}},\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_map[4]="2"
|
||||
id_parent_source_data[4]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[4]="{\"tagente\":{\"nombre\":\"windows-2\"}}"
|
||||
|
@ -427,8 +427,8 @@ id_item[4]="0"
|
|||
deleted[4]="0"
|
||||
|
||||
id[5]="5"
|
||||
id_parent[5]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"8\",\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_child[5]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"4\",\"x\":\"342\",\"y\":\"-273\",\"z\":\"0\"}}"
|
||||
id_parent[5]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-1\"}},\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_child[5]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-1\"}},\"x\":\"342\",\"y\":\"-273\",\"z\":\"0\"}}"
|
||||
id_map[5]="2"
|
||||
id_parent_source_data[5]="{\"tagente\":{\"nombre\":\"windows-1\"}}"
|
||||
id_child_source_data[5]="{\"tagente\":{\"nombre\":\"linux-1\"}}"
|
||||
|
@ -438,8 +438,8 @@ id_item[5]="0"
|
|||
deleted[5]="0"
|
||||
|
||||
id[6]="6"
|
||||
id_parent[6]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"8\",\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_child[6]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"5\",\"x\":\"240\",\"y\":\"-7\",\"z\":\"0\"}}"
|
||||
id_parent[6]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-1\"}},\"x\":\"528\",\"y\":\"-37\",\"z\":\"0\"}}"
|
||||
id_child[6]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-2\"}},\"x\":\"240\",\"y\":\"-7\",\"z\":\"0\"}}"
|
||||
id_map[6]="2"
|
||||
id_parent_source_data[6]="{\"tagente\":{\"nombre\":\"windows-1\"}}"
|
||||
id_child_source_data[6]="{\"tagente\":{\"nombre\":\"linux-2\"}}"
|
||||
|
@ -449,8 +449,8 @@ id_item[6]="0"
|
|||
deleted[6]="0"
|
||||
|
||||
id[7]="7"
|
||||
id_parent[7]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"9\",\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_child[7]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"6\",\"x\":\"214\",\"y\":\"275\",\"z\":\"0\"}}"
|
||||
id_parent[7]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-2\"}},\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_child[7]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-3\"}},\"x\":\"214\",\"y\":\"275\",\"z\":\"0\"}}"
|
||||
id_map[7]="2"
|
||||
id_parent_source_data[7]="{\"tagente\":{\"nombre\":\"windows-2\"}}"
|
||||
id_child_source_data[7]="{\"tagente\":{\"nombre\":\"linux-3\"}}"
|
||||
|
@ -460,8 +460,8 @@ id_item[7]="0"
|
|||
deleted[7]="0"
|
||||
|
||||
id[8]="8"
|
||||
id_parent[8]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"9\",\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_child[8]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"7\",\"x\":\"226\",\"y\":\"595\",\"z\":\"0\"}}"
|
||||
id_parent[8]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-2\"}},\"x\":\"514\",\"y\":\"389\",\"z\":\"0\"}}"
|
||||
id_child[8]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-4\"}},\"x\":\"226\",\"y\":\"595\",\"z\":\"0\"}}"
|
||||
id_map[8]="2"
|
||||
id_parent_source_data[8]="{\"tagente\":{\"nombre\":\"windows-2\"}}"
|
||||
id_child_source_data[8]="{\"tagente\":{\"nombre\":\"linux-4\"}}"
|
||||
|
@ -471,8 +471,8 @@ id_item[8]="0"
|
|||
deleted[8]="0"
|
||||
|
||||
id[9]="9"
|
||||
id_parent[9]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[9]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"22\",\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_parent[9]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[9]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-2\"}},\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_map[9]="2"
|
||||
id_parent_source_data[9]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[9]="{\"tagente\":{\"nombre\":\"cisco-2\"}}"
|
||||
|
@ -482,8 +482,8 @@ id_item[9]="0"
|
|||
deleted[9]="0"
|
||||
|
||||
id[10]="10"
|
||||
id_parent[10]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[10]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"21\",\"x\":\"892\",\"y\":\"-47\",\"z\":\"0\"}}"
|
||||
id_parent[10]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[10]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-2\"}},\"x\":\"892\",\"y\":\"-47\",\"z\":\"0\"}}"
|
||||
id_map[10]="2"
|
||||
id_parent_source_data[10]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[10]="{\"tagente\":{\"nombre\":\"freebsd-2\"}}"
|
||||
|
@ -493,8 +493,8 @@ id_item[10]="0"
|
|||
deleted[10]="0"
|
||||
|
||||
id[11]="11"
|
||||
id_parent[11]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"12\",\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[11]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"20\",\"x\":\"1150\",\"y\":\"409\",\"z\":\"0\"}}"
|
||||
id_parent[11]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-1\"}},\"x\":\"854\",\"y\":\"221\",\"z\":\"0\"}}"
|
||||
id_child[11]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"macos-2\"}},\"x\":\"1150\",\"y\":\"409\",\"z\":\"0\"}}"
|
||||
id_map[11]="2"
|
||||
id_parent_source_data[11]="{\"tagente\":{\"nombre\":\"cisco-1\"}}"
|
||||
id_child_source_data[11]="{\"tagente\":{\"nombre\":\"macos-2\"}}"
|
||||
|
@ -504,8 +504,8 @@ id_item[11]="0"
|
|||
deleted[11]="0"
|
||||
|
||||
id[12]="12"
|
||||
id_parent[12]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"22\",\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_child[12]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"18\",\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_parent[12]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-2\"}},\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_child[12]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-3\"}},\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_map[12]="2"
|
||||
id_parent_source_data[12]="{\"tagente\":{\"nombre\":\"cisco-2\"}}"
|
||||
id_child_source_data[12]="{\"tagente\":{\"nombre\":\"windows-3\"}}"
|
||||
|
@ -515,8 +515,8 @@ id_item[12]="0"
|
|||
deleted[12]="0"
|
||||
|
||||
id[13]="13"
|
||||
id_parent[13]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"22\",\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_child[13]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"19\",\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_parent[13]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-2\"}},\"x\":\"1036\",\"y\":\"711\",\"z\":\"0\"}}"
|
||||
id_child[13]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-4\"}},\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_map[13]="2"
|
||||
id_parent_source_data[13]="{\"tagente\":{\"nombre\":\"cisco-2\"}}"
|
||||
id_child_source_data[13]="{\"tagente\":{\"nombre\":\"windows-4\"}}"
|
||||
|
@ -526,8 +526,8 @@ id_item[13]="0"
|
|||
deleted[13]="0"
|
||||
|
||||
id[14]="14"
|
||||
id_parent[14]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"18\",\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_child[14]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"14\",\"x\":\"314\",\"y\":\"845\",\"z\":\"0\"}}"
|
||||
id_parent[14]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-3\"}},\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_child[14]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-5\"}},\"x\":\"314\",\"y\":\"845\",\"z\":\"0\"}}"
|
||||
id_map[14]="2"
|
||||
id_parent_source_data[14]="{\"tagente\":{\"nombre\":\"windows-3\"}}"
|
||||
id_child_source_data[14]="{\"tagente\":{\"nombre\":\"linux-5\"}}"
|
||||
|
@ -537,8 +537,8 @@ id_item[14]="0"
|
|||
deleted[14]="0"
|
||||
|
||||
id[15]="15"
|
||||
id_parent[15]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"18\",\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_child[15]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"15\",\"x\":\"474\",\"y\":\"1043\",\"z\":\"0\"}}"
|
||||
id_parent[15]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-3\"}},\"x\":\"686\",\"y\":\"875\",\"z\":\"0\"}}"
|
||||
id_child[15]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-6\"}},\"x\":\"474\",\"y\":\"1043\",\"z\":\"0\"}}"
|
||||
id_map[15]="2"
|
||||
id_parent_source_data[15]="{\"tagente\":{\"nombre\":\"windows-3\"}}"
|
||||
id_child_source_data[15]="{\"tagente\":{\"nombre\":\"linux-6\"}}"
|
||||
|
@ -548,8 +548,8 @@ id_item[15]="0"
|
|||
deleted[15]="0"
|
||||
|
||||
id[16]="16"
|
||||
id_parent[16]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"19\",\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_child[16]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"16\",\"x\":\"1812\",\"y\":\"1011\",\"z\":\"0\"}}"
|
||||
id_parent[16]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-4\"}},\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_child[16]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-7\"}},\"x\":\"1812\",\"y\":\"1011\",\"z\":\"0\"}}"
|
||||
id_map[16]="2"
|
||||
id_parent_source_data[16]="{\"tagente\":{\"nombre\":\"windows-4\"}}"
|
||||
id_child_source_data[16]="{\"tagente\":{\"nombre\":\"linux-7\"}}"
|
||||
|
@ -559,8 +559,8 @@ id_item[16]="0"
|
|||
deleted[16]="0"
|
||||
|
||||
id[17]="17"
|
||||
id_parent[17]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"19\",\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_child[17]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"17\",\"x\":\"1828\",\"y\":\"723\",\"z\":\"0\"}}"
|
||||
id_parent[17]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-4\"}},\"x\":\"1452\",\"y\":\"847\",\"z\":\"0\"}}"
|
||||
id_child[17]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-8\"}},\"x\":\"1828\",\"y\":\"723\",\"z\":\"0\"}}"
|
||||
id_map[17]="2"
|
||||
id_parent_source_data[17]="{\"tagente\":{\"nombre\":\"windows-4\"}}"
|
||||
id_child_source_data[17]="{\"tagente\":{\"nombre\":\"linux-8\"}}"
|
||||
|
@ -570,8 +570,8 @@ id_item[17]="0"
|
|||
deleted[17]="0"
|
||||
|
||||
id[18]="18"
|
||||
id_parent[18]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"10\",\"x\":\"1268\",\"y\":\"235\",\"z\":\"0\"}}"
|
||||
id_child[18]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"32\",\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_parent[18]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"macos-1\"}},\"x\":\"1268\",\"y\":\"235\",\"z\":\"0\"}}"
|
||||
id_child[18]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-3\"}},\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_map[18]="2"
|
||||
id_parent_source_data[18]="{\"tagente\":{\"nombre\":\"macos-1\"}}"
|
||||
id_child_source_data[18]="{\"tagente\":{\"nombre\":\"cisco-3\"}}"
|
||||
|
@ -581,8 +581,8 @@ id_item[18]="0"
|
|||
deleted[18]="0"
|
||||
|
||||
id[19]="19"
|
||||
id_parent[19]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"7\",\"x\":\"226\",\"y\":\"595\",\"z\":\"0\"}}"
|
||||
id_child[19]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_parent[19]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-4\"}},\"x\":\"226\",\"y\":\"595\",\"z\":\"0\"}}"
|
||||
id_child[19]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_map[19]="2"
|
||||
id_parent_source_data[19]="{\"tagente\":{\"nombre\":\"linux-4\"}}"
|
||||
id_child_source_data[19]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
|
@ -592,8 +592,8 @@ id_item[19]="0"
|
|||
deleted[19]="0"
|
||||
|
||||
id[20]="20"
|
||||
id_parent[20]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[20]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"30\",\"x\":\"-140\",\"y\":\"299\",\"z\":\"0\"}}"
|
||||
id_parent[20]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[20]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"macos-3\"}},\"x\":\"-140\",\"y\":\"299\",\"z\":\"0\"}}"
|
||||
id_map[20]="2"
|
||||
id_parent_source_data[20]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
id_child_source_data[20]="{\"tagente\":{\"nombre\":\"macos-3\"}}"
|
||||
|
@ -603,8 +603,8 @@ id_item[20]="0"
|
|||
deleted[20]="0"
|
||||
|
||||
id[21]="21"
|
||||
id_parent[21]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[21]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"28\",\"x\":\"-390\",\"y\":\"385\",\"z\":\"0\"}}"
|
||||
id_parent[21]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[21]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-5\"}},\"x\":\"-390\",\"y\":\"385\",\"z\":\"0\"}}"
|
||||
id_map[21]="2"
|
||||
id_parent_source_data[21]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
id_child_source_data[21]="{\"tagente\":{\"nombre\":\"windows-5\"}}"
|
||||
|
@ -614,8 +614,8 @@ id_item[21]="0"
|
|||
deleted[21]="0"
|
||||
|
||||
id[22]="22"
|
||||
id_parent[22]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[22]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"29\",\"x\":\"-470\",\"y\":\"671\",\"z\":\"0\"}}"
|
||||
id_parent[22]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[22]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"windows-6\"}},\"x\":\"-470\",\"y\":\"671\",\"z\":\"0\"}}"
|
||||
id_map[22]="2"
|
||||
id_parent_source_data[22]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
id_child_source_data[22]="{\"tagente\":{\"nombre\":\"windows-6\"}}"
|
||||
|
@ -625,8 +625,8 @@ id_item[22]="0"
|
|||
deleted[22]="0"
|
||||
|
||||
id[23]="23"
|
||||
id_parent[23]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[23]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"24\",\"x\":\"-296\",\"y\":\"899\",\"z\":\"0\"}}"
|
||||
id_parent[23]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[23]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-9\"}},\"x\":\"-296\",\"y\":\"899\",\"z\":\"0\"}}"
|
||||
id_map[23]="2"
|
||||
id_parent_source_data[23]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
id_child_source_data[23]="{\"tagente\":{\"nombre\":\"linux-9\"}}"
|
||||
|
@ -636,8 +636,8 @@ id_item[23]="0"
|
|||
deleted[23]="0"
|
||||
|
||||
id[24]="24"
|
||||
id_parent[24]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"31\",\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[24]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"25\",\"x\":\"-25\",\"y\":\"961\",\"z\":\"0\"}}"
|
||||
id_parent[24]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"freebsd-3\"}},\"x\":\"-82\",\"y\":\"583\",\"z\":\"0\"}}"
|
||||
id_child[24]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-10\"}},\"x\":\"-25\",\"y\":\"961\",\"z\":\"0\"}}"
|
||||
id_map[24]="2"
|
||||
id_parent_source_data[24]="{\"tagente\":{\"nombre\":\"freebsd-3\"}}"
|
||||
id_child_source_data[24]="{\"tagente\":{\"nombre\":\"linux-10\"}}"
|
||||
|
@ -647,8 +647,8 @@ id_item[24]="0"
|
|||
deleted[24]="0"
|
||||
|
||||
id[25]="25"
|
||||
id_parent[25]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"32\",\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_child[25]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"26\",\"x\":\"1683\",\"y\":\"13\",\"z\":\"0\"}}"
|
||||
id_parent[25]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-3\"}},\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_child[25]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-11\"}},\"x\":\"1683\",\"y\":\"13\",\"z\":\"0\"}}"
|
||||
id_map[25]="2"
|
||||
id_parent_source_data[25]="{\"tagente\":{\"nombre\":\"cisco-3\"}}"
|
||||
id_child_source_data[25]="{\"tagente\":{\"nombre\":\"linux-11\"}}"
|
||||
|
@ -658,8 +658,8 @@ id_item[25]="0"
|
|||
deleted[25]="0"
|
||||
|
||||
id[26]="26"
|
||||
id_parent[26]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"32\",\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_child[26]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":\"27\",\"x\":\"2135\",\"y\":\"51\",\"z\":\"0\"}}"
|
||||
id_parent[26]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"cisco-3\"}},\"x\":\"1824\",\"y\":\"285\",\"z\":\"0\"}}"
|
||||
id_child[26]="{\"titem\":{\"id_map\":\"2\",\"type\":\"0\",\"source_data\":{\"tagente\":{\"nombre\":\"linux-12\"}},\"x\":\"2135\",\"y\":\"51\",\"z\":\"0\"}}"
|
||||
id_map[26]="2"
|
||||
id_parent_source_data[26]="{\"tagente\":{\"nombre\":\"cisco-3\"}}"
|
||||
id_child_source_data[26]="{\"tagente\":{\"nombre\":\"linux-12\"}}"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
pandorafms.vmware=a272ee00a9b5f201bb708bef72bbe276
|
||||
pandorafms.mysql=fadb4750d18285c0eca34f47c6aa3cfe
|
||||
pandorafms.mysql=33d470c7492214d4b384ed307e81adf4
|
||||
pandorafms.vmware=1deafce1d55d3574645d8b136104e9ad
|
||||
pandorafms.mysql=ca7dd8b80a1a03a25eb0fb077818ad63
|
||||
pandorafms.mssql=1cc215409741d19080269ffba112810e
|
||||
|
@ -10,4 +10,4 @@ pandorafms.gcp.ce=6743d39452f8e1ad85d0d56a30843973
|
|||
pandorafms.aws.ec2=07416081f11d92a7d5d9441dabb5c5cb
|
||||
pandorafms.aws.s3=eff053a212ea112e2a37efd9debbe6a0
|
||||
pandorafms.aws.rds=47d7b02019329e1698f96db4959f9516
|
||||
pandorafms.azure.mc=04a1072d1ece8583645ad88204fbeed3
|
||||
pandorafms.azure.mc=04a1072d1ece8583645ad88204fbeed3
|
|
@ -125,7 +125,7 @@ UPDATE `tncm_agent_data_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FRO
|
|||
-- Update version for plugin oracle
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.oracle';
|
||||
-- Update version for plugin mysql
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.1' WHERE `short_name` = 'pandorafms.mysql';
|
||||
UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.mysql';
|
||||
|
||||
|
||||
SET @widget_id = NULL;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1514,6 +1514,7 @@ if ($update_module === true || $create_module === true) {
|
|||
$old_configuration_data = (string) get_parameter('old_configuration_data');
|
||||
$new_configuration_data = '';
|
||||
|
||||
|
||||
$custom_string_1_default = '';
|
||||
$custom_string_2_default = '';
|
||||
$custom_string_3_default = '';
|
||||
|
@ -1979,6 +1980,19 @@ if ($update_module) {
|
|||
}
|
||||
}
|
||||
|
||||
$def_msg = __('There was a problem updating module. Processing error');
|
||||
|
||||
if (preg_match('/module_type\s+([^\\n]+)/', io_safe_output($configuration_data), $matches)) {
|
||||
$config_module_type = $matches[1];
|
||||
|
||||
$type_id = (int) db_get_value('id_tipo', 'ttipo_modulo', 'nombre', $config_module_type);
|
||||
|
||||
if ($type_id !== $id_module_type) {
|
||||
$def_msg = __('There was a problem updating module: module type cannot be edited');
|
||||
$result = ERR_GENERIC;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_error($result) === true) {
|
||||
switch ($result) {
|
||||
case ERR_EXIST:
|
||||
|
@ -1996,7 +2010,7 @@ if ($update_module) {
|
|||
case ERR_DB:
|
||||
case ERR_GENERIC:
|
||||
default:
|
||||
$msg = __('There was a problem updating module. Processing error');
|
||||
$msg = $def_msg;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -318,7 +318,7 @@ $filterTable->data[0][0] = html_print_label_input_block(
|
|||
$return_all_group,
|
||||
'ag_group',
|
||||
$ag_group,
|
||||
'this.form.submit();',
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
|
@ -337,7 +337,7 @@ $filterTable->data[0][1] = html_print_label_input_block(
|
|||
$recursion,
|
||||
true,
|
||||
false,
|
||||
'this.form.submit()'
|
||||
''
|
||||
).'</div>'
|
||||
);
|
||||
|
||||
|
@ -347,7 +347,7 @@ $filterTable->data[0][2] = html_print_label_input_block(
|
|||
$showAgentFields,
|
||||
'disabled',
|
||||
$disabled,
|
||||
'this.form.submit()',
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
|
@ -365,7 +365,7 @@ $filterTable->data[0][3] = html_print_label_input_block(
|
|||
$fields,
|
||||
'os',
|
||||
$os,
|
||||
'this.form.submit()',
|
||||
'',
|
||||
'All',
|
||||
0,
|
||||
true,
|
||||
|
|
|
@ -1053,7 +1053,7 @@ if ($modules !== false) {
|
|||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gagente&tab=module&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&duplicate_module='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/copy.svg',
|
||||
'title' => __('Duplicate'),
|
||||
],
|
||||
|
@ -1064,8 +1064,8 @@ if ($modules !== false) {
|
|||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&fix_module='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'image' => 'images/module-graph.svg',
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/normalization@svg.svg',
|
||||
'title' => __('Normalize'),
|
||||
'disabled' => (isset($numericModules[$type]) === false || $numericModules[$type] === false),
|
||||
'disabled_title' => ' ('.__('Disabled').')',
|
||||
|
@ -1077,7 +1077,7 @@ if ($modules !== false) {
|
|||
$data[8] .= html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=gmodules&sec2=godmode/modules/manage_network_components&create_network_from_module=1&id_agente='.$id_agente.'&create_module_from='.$module['id_agente_modulo'],
|
||||
'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;",
|
||||
'onClick' => "if (!confirm('".__('Are you sure?')."')) return false;",
|
||||
'image' => 'images/cluster@os.svg',
|
||||
'title' => __('Create network component'),
|
||||
'disabled' => ((is_user_admin($config['id_user']) === true) && (int) $module['id_modulo'] === MODULE_NETWORK) === false,
|
||||
|
|
|
@ -58,7 +58,6 @@ if ($id_group > 0) {
|
|||
$alerts_disabled = $group['disabled'];
|
||||
$custom_id = $group['custom_id'];
|
||||
$propagate = $group['propagate'];
|
||||
$skin = $group['id_skin'];
|
||||
$contact = $group['contact'];
|
||||
$other = $group['other'];
|
||||
$description = $group['description'];
|
||||
|
@ -80,7 +79,6 @@ if ($id_group > 0) {
|
|||
$alerts_disabled = 0;
|
||||
$custom_id = '';
|
||||
$propagate = 0;
|
||||
$skin = 0;
|
||||
$contact = '';
|
||||
$other = '';
|
||||
$description = '';
|
||||
|
|
|
@ -439,7 +439,6 @@ if ($is_management_allowed === true
|
|||
$group_pass = (string) get_parameter('group_pass');
|
||||
$alerts_disabled = (bool) get_parameter('alerts_disabled');
|
||||
$custom_id = (string) get_parameter('custom_id');
|
||||
$skin = (string) get_parameter('skin');
|
||||
$description = (string) get_parameter('description');
|
||||
$contact = (string) get_parameter('contact');
|
||||
$other = (string) get_parameter('other');
|
||||
|
@ -462,7 +461,6 @@ if ($is_management_allowed === true
|
|||
'parent' => $id_parent,
|
||||
'disabled' => $alerts_disabled,
|
||||
'custom_id' => $custom_id,
|
||||
'id_skin' => $skin,
|
||||
'description' => $description,
|
||||
'contact' => $contact,
|
||||
'propagate' => $propagate,
|
||||
|
@ -498,7 +496,6 @@ if ($is_management_allowed === true && $update_group === true) {
|
|||
$alerts_enabled = (bool) get_parameter('alerts_enabled');
|
||||
$custom_id = (string) get_parameter('custom_id');
|
||||
$propagate = (bool) get_parameter('propagate');
|
||||
$skin = (string) get_parameter('skin');
|
||||
$description = (string) get_parameter('description');
|
||||
$contact = (string) get_parameter('contact');
|
||||
$other = (string) get_parameter('other');
|
||||
|
@ -530,7 +527,6 @@ if ($is_management_allowed === true && $update_group === true) {
|
|||
'parent' => ($id_parent == -1) ? 0 : $id_parent,
|
||||
'disabled' => !$alerts_enabled,
|
||||
'custom_id' => $custom_id,
|
||||
'id_skin' => $skin,
|
||||
'description' => $description,
|
||||
'contact' => $contact,
|
||||
'propagate' => $propagate,
|
||||
|
|
|
@ -81,16 +81,6 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
|
|||
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
|
||||
// Applications.
|
||||
$sub2 = [];
|
||||
// Check if app has been migrated.
|
||||
if (enterprise_installed() === true) {
|
||||
(ManageExtensions::isMigrated('pandorafms.mssql') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=MicrosoftSQLServer']['text'] = __('Microsoft SQL Server (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.mysql') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=mysql']['text'] = __('Mysql (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.oracle') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=oracle']['text'] = __('Oracle (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.vmware') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=vmware']['text'] = __('VMware (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.sap.desert') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=SAP']['text'] = __('SAP (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.db2') === true) ?: ($sub2['godmode/servers/discovery&wiz=app&mode=DB2']['text'] = __('DB2 (legacy)'));
|
||||
}
|
||||
|
||||
$extensions = ManageExtensions::getExtensionBySection('app');
|
||||
if ($extensions !== false) {
|
||||
foreach ($extensions as $key => $extension) {
|
||||
|
@ -112,13 +102,6 @@ if ((bool) check_acl($config['id_user'], 0, 'AR') === true
|
|||
|
||||
// Cloud.
|
||||
$sub2 = [];
|
||||
if (enterprise_installed() === true) {
|
||||
(ManageExtensions::isMigrated('pandorafms.aws.ec2') === true) ?: (ManageExtensions::isMigrated('pandorafms.aws.s3') === true) ?: (ManageExtensions::isMigrated('pandorafms.aws.rds') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=amazonws']['text'] = __('Amazon Web Services (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.azure.mc') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=azure']['text'] = __('Microsoft Azure (legacy)'));
|
||||
(ManageExtensions::isMigrated('pandorafms.azure.gcp.ce') === true) ?: ($sub2['godmode/servers/discovery&wiz=cloud&mode=gcp']['text'] = __('Google Compute Platform (legacy)'));
|
||||
}
|
||||
|
||||
|
||||
$extensions = ManageExtensions::getExtensionBySection('cloud');
|
||||
if ($extensions !== false) {
|
||||
foreach ($extensions as $key => $extension) {
|
||||
|
@ -517,8 +500,6 @@ if ($access_console_node === true) {
|
|||
$sub['godmode/setup/license']['text'] = __('License');
|
||||
$sub['godmode/setup/license']['id'] = 'license';
|
||||
|
||||
enterprise_hook('skins_submenu');
|
||||
|
||||
enterprise_hook('translate_string_submenu');
|
||||
|
||||
$menu_godmode['gsetup']['sub'] = $sub;
|
||||
|
|
|
@ -366,12 +366,12 @@ $filterTable->data[0][] = html_print_label_input_block(
|
|||
|
||||
$filterTable->data[0][] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(false, 'AR', $return_all_group, 'ag_group', $ag_group, 'this.form.submit();', '', 0, true, false, true, '', false)
|
||||
html_print_select_groups(false, 'AR', $return_all_group, 'ag_group', $ag_group, '', '', 0, true, false, true, '', false)
|
||||
);
|
||||
|
||||
$filterTable->data[0][] = html_print_label_input_block(
|
||||
__('Group Recursion'),
|
||||
html_print_checkbox_switch('recursion', 1, $recursion, true, false, 'this.form.submit()')
|
||||
html_print_checkbox_switch('recursion', 1, $recursion, true, false, '')
|
||||
);
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
|
@ -553,6 +553,10 @@ if (!$maps && is_metaconsole() === false) {
|
|||
['class' => 'main_menu_icon invert_filter']
|
||||
).'</a>';
|
||||
} else {
|
||||
$table->cellclass[] = [
|
||||
3 => 'table_action_buttons',
|
||||
4 => 'table_action_buttons',
|
||||
];
|
||||
$data[3] = '<a class="copy_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&copy_layout=1">'.html_print_image(
|
||||
'images/copy.svg',
|
||||
true,
|
||||
|
|
|
@ -157,7 +157,7 @@ if ((bool) users_is_admin() === false) {
|
|||
$where = sprintf(' AND id_usuario = "%s"', $config['id_user']);
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tuser_task_scheduled WHERE id_user_task IN (1,2,3,4) '.$where;
|
||||
$sql = 'SELECT * FROM tuser_task_scheduled WHERE id_user_task IN (1,2,3) '.$where;
|
||||
$reports = db_get_all_rows_sql($sql);
|
||||
if ($reports !== false) {
|
||||
$table = new stdClass();
|
||||
|
|
|
@ -643,6 +643,7 @@ foreach ($layoutDatas as $layoutData) {
|
|||
default:
|
||||
if ($layoutData['id_layout_linked'] != 0) {
|
||||
// It is a item that links with other visualmap
|
||||
$table->data[($i + 2)][1] = '';
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -756,7 +757,7 @@ foreach ($layoutDatas as $layoutData) {
|
|||
$layoutData['id_layout_linked'],
|
||||
'',
|
||||
'None',
|
||||
'',
|
||||
'0',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
|
|
|
@ -145,6 +145,11 @@ $table->data['all_0'][0] = html_print_label_input_block(
|
|||
|
||||
$table->rowstyle['staticgraph'] = 'display: none;';
|
||||
$table->colspan['staticgraph'][0] = 2;
|
||||
$src = $config['homeurl'].'/images/console/icons/appliance_ok.png';
|
||||
if (is_metaconsole() === true) {
|
||||
$src = $config['homeurl'].'../../images/console/icons/appliance_ok.png';
|
||||
}
|
||||
|
||||
$table->data['staticgraph'][0] = html_print_label_input_block(
|
||||
__('Image'),
|
||||
'<div class="flex">'.html_print_select(
|
||||
|
@ -160,7 +165,7 @@ $table->data['staticgraph'][0] = html_print_label_input_block(
|
|||
'',
|
||||
false,
|
||||
'width: 49%'
|
||||
).'<span id="image_prev" class="mrgn_lft_10px mrgn_top-10px"><img src="'.$config['homeurl'].'/images/console/icons/appliance_ok.png"></span></div>'
|
||||
).'<span id="image_prev" class="mrgn_lft_10px mrgn_top-10px"><img src="'.$src.'"></span></div>'
|
||||
);
|
||||
|
||||
$table->rowstyle['all_1'] = 'display: none;';
|
||||
|
@ -902,10 +907,15 @@ function findInSelect(selectid, find){
|
|||
})
|
||||
}
|
||||
|
||||
$('#image').on('change', function(){
|
||||
$('#image').on('change', function() {
|
||||
var img = $(this).val();
|
||||
$('#image_prev').html('<img src="<?php echo $config['homeurl']; ?>/images/console/icons/'+img+'.png">');
|
||||
})
|
||||
var src = "<?php echo $config['homeurl']; ?>"+`/images/console/icons/${img}.png`;
|
||||
if (metaconsole_enabled) {
|
||||
src = "<?php echo $config['homeurl']; ?>"+`../../images/console/icons/${img}.png`;
|
||||
}
|
||||
|
||||
$('#image_prev').html(`<img src="${src}">`);
|
||||
});
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
|
|
|
@ -632,7 +632,7 @@ if (empty($create) === false || empty($view) === false) {
|
|||
|
||||
$datam[1] = html_print_label_input_block(
|
||||
__('Default value').'<span class="normal_weight">('.$macro_name.')</span>',
|
||||
html_print_input_text_extended($macro_value_name, $macro_value_value, 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true)
|
||||
html_print_input_text_extended($macro_value_name, io_safe_input($macro_value_value), 'text-'.$macro_value_name, '', 30, 255, false, '', "class='command_component command_macro text_input'", true)
|
||||
);
|
||||
|
||||
$table->data['plugin_'.$next_name_number] = $datam;
|
||||
|
|
|
@ -42,7 +42,7 @@ $table->border = 0;
|
|||
$table->data = [];
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Data storage path'),
|
||||
__('Data storage path').ui_print_help_tip(__('The Netflow data will be saved in the directory specified here, which will be located in the path defined by the "General Network path" parameter (this parameter is found in the General Settings).'), true),
|
||||
html_print_input_text('netflow_name_dir', $config['netflow_name_dir'], false, 50, 200, true)
|
||||
);
|
||||
|
||||
|
|
|
@ -148,7 +148,6 @@ $table_behaviour->data[$row][] = html_print_label_input_block(
|
|||
__('Display text when proc modules have state critical'),
|
||||
html_print_input_text('render_proc_fail', $config['render_proc_fail'], '', 25, 25, true)
|
||||
);
|
||||
$row++;
|
||||
|
||||
if (enterprise_installed() === true) {
|
||||
$row++;
|
||||
|
@ -162,6 +161,29 @@ if (enterprise_installed() === true) {
|
|||
);
|
||||
}
|
||||
|
||||
$row++;
|
||||
// Tabs menus.
|
||||
$tabs_menu_options = [];
|
||||
$tabs_menu_options['both'] = __('Show both (tabs and menu)');
|
||||
$tabs_menu_options['icons'] = __('Show only icons');
|
||||
$tabs_menu_options['menu'] = __('Show only menu');
|
||||
$table_behaviour->data[$row][] = html_print_label_input_block(
|
||||
__('Tabs menu'),
|
||||
html_print_select(
|
||||
$tabs_menu_options,
|
||||
'tabs_menu',
|
||||
$config['tabs_menu'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------
|
||||
|
|
|
@ -40,8 +40,6 @@ require_once $config['homedir'].'/include/functions_visual_map.php';
|
|||
require_once $config['homedir'].'/include/functions_custom_fields.php';
|
||||
enterprise_include_once('include/functions_profile.php');
|
||||
|
||||
$isFunctionSkins = enterprise_include_once('include/functions_skins.php');
|
||||
|
||||
// Add the columns for the enterprise Pandora edition.
|
||||
$enterprise_include = false;
|
||||
if (ENTERPRISE_NOT_HOOK !== enterprise_include('include/functions_policies.php')) {
|
||||
|
@ -1306,12 +1304,12 @@ if ($new_user) {
|
|||
|
||||
if (is_metaconsole() === false) {
|
||||
// User only can change skins if has more than one group.
|
||||
if (function_exists('skins_print_select')) {
|
||||
if (count($usr_groups) > 1) {
|
||||
if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) {
|
||||
$skin = '<div class="label_select"><p class="edit_user_labels">'.__('Skin').'</p>';
|
||||
$skin .= skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true).'</div>';
|
||||
}
|
||||
if (count($usr_groups) > 1) {
|
||||
if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) {
|
||||
$skin = '<div class="label_select"><p class="edit_user_labels">'.__('Skin').'</p>';
|
||||
$skins[DEFAULT_THEME] = __('Default theme');
|
||||
$skins[BLACK_THEME] = __('Black theme');
|
||||
$skin .= html_print_select($skins, 'skin', $user_info['id_skin'], '', __('None'), 0, true).'</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -720,10 +720,10 @@ if (is_metaconsole() === true) {
|
|||
$userManagementTable->data['line2_looknfeel'][1] = $outputMetaAccess[1];
|
||||
}
|
||||
} else {
|
||||
if (function_exists('skins_print_select')) {
|
||||
$userManagementTable->data['line1_looknfeel'][1] = __('User color scheme').$hin_change_theme;
|
||||
$userManagementTable->data['line2_looknfeel'][1] = skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true);
|
||||
}
|
||||
$userManagementTable->data['line1_looknfeel'][1] = __('User color scheme').$hin_change_theme;
|
||||
$skins[DEFAULT_THEME] = __('Default theme');
|
||||
$skins[BLACK_THEME] = __('Black theme');
|
||||
$userManagementTable->data['line2_looknfeel'][1] = html_print_select($skins, 'skin', $user_info['id_skin'], '', __('None'), 0, true);
|
||||
}
|
||||
|
||||
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
|
||||
|
|
|
@ -82,9 +82,6 @@ class Applications extends Wizard
|
|||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=app'
|
||||
);
|
||||
|
||||
// Print Warning Message.
|
||||
$this->printWarningMessage();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
@ -108,148 +105,71 @@ class Applications extends Wizard
|
|||
);
|
||||
|
||||
$mode = get_parameter('mode', null);
|
||||
|
||||
// Load application wizards.
|
||||
$enterprise_classes = glob(
|
||||
$config['homedir'].'/'.ENTERPRISE_DIR.'/include/class/*.app.php'
|
||||
);
|
||||
$extensions = new ExtensionsDiscovery('app', $mode);
|
||||
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
enterprise_include_once(
|
||||
'include/class/'.basename($classpath)
|
||||
);
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($mode) {
|
||||
case 'DB2':
|
||||
$classname_selected = 'DB2';
|
||||
break;
|
||||
|
||||
case 'SAP':
|
||||
$classname_selected = 'SAP';
|
||||
break;
|
||||
|
||||
case 'vmware':
|
||||
$classname_selected = 'VMware';
|
||||
break;
|
||||
|
||||
case 'mysql':
|
||||
$classname_selected = 'MySQL';
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$classname_selected = 'Oracle';
|
||||
break;
|
||||
|
||||
case 'MicrosoftSQLServer':
|
||||
$classname_selected = 'MicrosoftSQLServer';
|
||||
break;
|
||||
|
||||
default:
|
||||
$classname_selected = null;
|
||||
break;
|
||||
}
|
||||
|
||||
// Else: class not found pseudo exception.
|
||||
if ($classname_selected !== null) {
|
||||
$wiz = new $classname_selected($this->page);
|
||||
// Check if app has been migrated.
|
||||
if (method_exists($wiz, 'isMigrated') === true) {
|
||||
if ($wiz->isMigrated() === true) {
|
||||
ui_print_info_message(__('This legacy app has been migrated to new discovery 2.0 system'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$result = $wiz->run();
|
||||
if (is_array($result) === true) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if ($classname_selected === null) {
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
return;
|
||||
}
|
||||
|
||||
// Load classes and print selector.
|
||||
$wiz_data = [];
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
$classname = basename($classpath, '.app.php');
|
||||
$obj = new $classname();
|
||||
|
||||
if (method_exists($obj, 'isMigrated') === true) {
|
||||
if ($obj->isMigrated() === true) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$wiz_data[] = $obj->load();
|
||||
}
|
||||
|
||||
$wiz_data = array_merge($wiz_data, $extensions->loadExtensions());
|
||||
|
||||
$this->prepareBreadcrum(
|
||||
$this->prepareBreadcrum(
|
||||
[
|
||||
[
|
||||
[
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
'label' => __('Discovery'),
|
||||
],
|
||||
[
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=app'
|
||||
),
|
||||
'label' => __('Applications'),
|
||||
'selected' => true,
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
// Header.
|
||||
ui_print_page_header(
|
||||
__('Applications'),
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
GENERIC_SIZE_TEXT,
|
||||
'',
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
$output = html_print_div(
|
||||
[
|
||||
'class' => 'agent_details_line',
|
||||
'content' => ui_toggle(
|
||||
Wizard::printBigButtonsList($not_defined_extensions, true),
|
||||
'<span class="subsection_header_title">'.__('Not installed').'</span>',
|
||||
'not_defined_apps',
|
||||
'not_defined_apps',
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
'',
|
||||
'box-flat white_table_graph w100p'
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
'label' => __('Discovery'),
|
||||
],
|
||||
);
|
||||
[
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=app'
|
||||
),
|
||||
'label' => __('Applications'),
|
||||
'selected' => true,
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
echo $output;
|
||||
// Header.
|
||||
ui_print_page_header(
|
||||
__('Applications'),
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
GENERIC_SIZE_TEXT,
|
||||
'',
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
}
|
||||
Wizard::printBigButtonsList($extensions->loadExtensions());
|
||||
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
$output = html_print_div(
|
||||
[
|
||||
'class' => 'agent_details_line',
|
||||
'content' => ui_toggle(
|
||||
Wizard::printBigButtonsList($not_defined_extensions, true),
|
||||
'<span class="subsection_header_title">'.__('Not installed').'</span>',
|
||||
'not_defined_apps',
|
||||
'not_defined_apps',
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
'',
|
||||
'box-flat white_table_graph w100p'
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
echo $output;
|
||||
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -114,8 +114,6 @@ class Cloud extends Wizard
|
|||
*/
|
||||
public function run()
|
||||
{
|
||||
global $config;
|
||||
|
||||
// Load styles.
|
||||
parent::run();
|
||||
|
||||
|
@ -127,139 +125,71 @@ class Cloud extends Wizard
|
|||
|
||||
$mode = get_parameter('mode', null);
|
||||
|
||||
// Load cloud wizards.
|
||||
$enterprise_classes = glob(
|
||||
$config['homedir'].'/'.ENTERPRISE_DIR.'/include/class/*.cloud.php'
|
||||
);
|
||||
$extensions = new ExtensionsDiscovery('cloud', $mode);
|
||||
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
enterprise_include_once(
|
||||
'include/class/'.basename($classpath)
|
||||
);
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($mode) {
|
||||
case 'amazonws':
|
||||
$classname_selected = 'Aws';
|
||||
break;
|
||||
|
||||
case 'azure':
|
||||
$classname_selected = 'Azure';
|
||||
break;
|
||||
|
||||
case 'gcp':
|
||||
$classname_selected = 'Google';
|
||||
break;
|
||||
|
||||
default:
|
||||
$classname_selected = null;
|
||||
break;
|
||||
}
|
||||
|
||||
// Else: class not found pseudo exception.
|
||||
if ($classname_selected !== null) {
|
||||
$wiz = new $classname_selected($this->page);
|
||||
// Check if app has been migrated.
|
||||
if (method_exists($wiz, 'isMigrated') === true) {
|
||||
if ($wiz->isMigrated() === true) {
|
||||
ui_print_info_message(__('This legacy app has been migrated to new discovery 2.0 system'));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$result = $wiz->run();
|
||||
if (is_array($result) === true) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if ($classname_selected === null) {
|
||||
if ($mode !== null) {
|
||||
// Load extension if exist.
|
||||
$extensions->run();
|
||||
return;
|
||||
}
|
||||
|
||||
// Load classes and print selector.
|
||||
$wiz_data = [];
|
||||
foreach ($enterprise_classes as $classpath) {
|
||||
$classname = basename($classpath, '.cloud.php');
|
||||
$obj = new $classname();
|
||||
// Check if legacy has been migrated.
|
||||
if (method_exists($obj, 'isMigrated') === true) {
|
||||
if ($obj->isMigrated() === true) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$wiz_data[] = $obj->load();
|
||||
}
|
||||
|
||||
$wiz_data = array_merge($wiz_data, $extensions->loadExtensions());
|
||||
|
||||
$this->prepareBreadcrum(
|
||||
// Load classes and print selector.
|
||||
$this->prepareBreadcrum(
|
||||
[
|
||||
[
|
||||
[
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
'label' => __('Discovery'),
|
||||
],
|
||||
[
|
||||
'link' => $this->url,
|
||||
'label' => __('Cloud'),
|
||||
'selected' => true,
|
||||
],
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
// Header.
|
||||
ui_print_page_header(
|
||||
__('Cloud'),
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
GENERIC_SIZE_TEXT,
|
||||
'',
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
$output = html_print_div(
|
||||
[
|
||||
'class' => 'agent_details_line',
|
||||
'content' => ui_toggle(
|
||||
Wizard::printBigButtonsList($not_defined_extensions, true),
|
||||
'<span class="subsection_header_title">'.__('Not installed').'</span>',
|
||||
'not_defined_apps',
|
||||
'not_defined_apps',
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
'',
|
||||
'box-flat white_table_graph w100p'
|
||||
'link' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
'label' => __('Discovery'),
|
||||
],
|
||||
);
|
||||
[
|
||||
'link' => $this->url,
|
||||
'label' => __('Cloud'),
|
||||
'selected' => true,
|
||||
],
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
echo $output;
|
||||
// Header.
|
||||
ui_print_page_header(
|
||||
__('Cloud'),
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
GENERIC_SIZE_TEXT,
|
||||
'',
|
||||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
}
|
||||
Wizard::printBigButtonsList($extensions->loadExtensions());
|
||||
|
||||
// Print Warning Message.
|
||||
$this->printWarningMessage();
|
||||
$not_defined_extensions = $extensions->loadExtensions(true);
|
||||
|
||||
return $result;
|
||||
$output = html_print_div(
|
||||
[
|
||||
'class' => 'agent_details_line',
|
||||
'content' => ui_toggle(
|
||||
Wizard::printBigButtonsList($not_defined_extensions, true),
|
||||
'<span class="subsection_header_title">'.__('Not installed').'</span>',
|
||||
'not_defined_apps',
|
||||
'not_defined_apps',
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
'',
|
||||
'box-flat white_table_graph w100p'
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
echo $output;
|
||||
|
||||
echo '<div class="app_mssg"><i>*'.__('All company names used here are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.').'</i></div>';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -124,6 +124,14 @@ class DiscoveryTaskList extends HTML
|
|||
$this->printHeader(true)
|
||||
);
|
||||
|
||||
// Div neccesary for modal map task.
|
||||
echo '<div id="map_task" class="invisible"></div>';
|
||||
echo '<div id="task_review" class="invisible"></div>';
|
||||
echo '<div id="msg" class="invisible"></div>';
|
||||
echo '<input type="hidden" id="ajax-url" value="'.ui_get_full_url('ajax.php').'"/>';
|
||||
echo '<input type="hidden" id="success-str" value="'.__('Success').'"/>';
|
||||
echo '<input type="hidden" id="failed-str" value="'.__('Failed').'"/>';
|
||||
|
||||
// Show redirected messages from discovery.php.
|
||||
if ($status === 0) {
|
||||
ui_print_success_message($message);
|
||||
|
@ -222,10 +230,6 @@ class DiscoveryTaskList extends HTML
|
|||
html_print_action_buttons($this->printForm($form, true));
|
||||
}
|
||||
|
||||
// Warning Message.
|
||||
$wizar_main = new Wizard();
|
||||
$wizar_main->printWarningMessage();
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
@ -1149,14 +1153,6 @@ class DiscoveryTaskList extends HTML
|
|||
|
||||
ui_toggle($content, $titleTable, '', '', false);
|
||||
|
||||
// Div neccesary for modal map task.
|
||||
echo '<div id="map_task" class="invisible"></div>';
|
||||
echo '<div id="task_review" class="invisible"></div>';
|
||||
echo '<div id="msg" class="invisible"></div>';
|
||||
echo '<input type="hidden" id="ajax-url" value="'.ui_get_full_url('ajax.php').'"/>';
|
||||
echo '<input type="hidden" id="success-str" value="'.__('Success').'"/>';
|
||||
echo '<input type="hidden" id="failed-str" value="'.__('Failed').'"/>';
|
||||
|
||||
unset($table);
|
||||
|
||||
ui_require_javascript_file('pandora_ui');
|
||||
|
|
|
@ -767,24 +767,6 @@ class ManageExtensions extends HTML
|
|||
],
|
||||
);
|
||||
}
|
||||
|
||||
$migrationHash = $this->canMigrate($row['short_name']);
|
||||
if ($migrationHash !== false && empty($migrationHash) !== true) {
|
||||
// Migrate button.
|
||||
$data[$key]['actions'] .= html_print_input_image(
|
||||
'button_migrate-'.$row['short_name'],
|
||||
'images/reset.png',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
[
|
||||
'onclick' => 'show_migration_form(\''.$row['short_name'].'\',\''.$migrationHash.'\')',
|
||||
'title' => __('Migrate old discovery tasks.'),
|
||||
'alt' => __('Migrate old discovery tasks.'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($data) === true) {
|
||||
|
@ -1123,386 +1105,6 @@ class ManageExtensions extends HTML
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the discovery app can be migrated to .disco system.
|
||||
* If app is migrated or is not in .ini file, it cannot be migrated.
|
||||
*
|
||||
* @param string $shortName Short name of the discovery app.
|
||||
*
|
||||
* @return string App hash, false in case hash doesnt exist on ini file, or is already migraeted..
|
||||
*/
|
||||
private function canMigrate(string $shortName='')
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (empty($shortName) === true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1. Check if app is already migrated:
|
||||
// Get migrated Discovery Apps from config.
|
||||
$migratedAppsJson = db_get_value('value', 'tconfig', 'token', 'migrated_discovery_apps');
|
||||
|
||||
if ($migratedAppsJson === false || empty($migratedAppsJson) === true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Decode JSON migrated apps.
|
||||
$migrateApps = json_decode(io_safe_output($migratedAppsJson), true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check app migrated.
|
||||
if (array_key_exists($shortName, $migrateApps)) {
|
||||
if (empty($migrateApps[$shortName]) === false && (bool) $migrateApps[$shortName] === true) {
|
||||
// Already migrated.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. If app not migrated yet, check DiscoveryApplicationsMigrateCodes.ini
|
||||
// Path to the INI file
|
||||
$filePath = $config['homedir'].'/extras/discovery/DiscoveryApplicationsMigrateCodes.ini';
|
||||
|
||||
// Parse the INI file.
|
||||
$migrationCodes = parse_ini_file($filePath, true);
|
||||
|
||||
if ($migrationCodes === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check shortname in ini file.
|
||||
if (array_key_exists($shortName, $migrationCodes) === false) {
|
||||
return false;
|
||||
} else {
|
||||
return $migrationCodes[$shortName];
|
||||
}
|
||||
|
||||
// All checks ok, discovery app can be migrated.
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prints html for migrate modal
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function loadMigrateModal()
|
||||
{
|
||||
$shortname = get_parameter('shortname', null);
|
||||
$hash = get_parameter('hash', null);
|
||||
|
||||
$form = [
|
||||
'action' => '#',
|
||||
'id' => 'modal_migrate_form',
|
||||
'onsubmit' => 'return false;',
|
||||
'class' => 'modal',
|
||||
'name' => 'migrate_form',
|
||||
];
|
||||
|
||||
$inputs = [];
|
||||
$migrateMessage = __(
|
||||
'All ‘legacy‘ tasks for this application will be migrated to the new ‘.disco’ package system. All configurations and executions will be managed with the new system. This process will not be reversible.</br></br>'
|
||||
);
|
||||
$migrateMessage .= _('Please check the migration code for the application before proceeding.');
|
||||
|
||||
$inputs[] = [
|
||||
'wrapper' => 'div',
|
||||
'block_id' => 'div_migrate_message',
|
||||
'class' => 'hole flex-row flex-items-center w98p',
|
||||
'direct' => 1,
|
||||
'block_content' => [
|
||||
[
|
||||
'label' => $migrateMessage,
|
||||
'arguments' => [
|
||||
'class' => 'first_lbl w98p',
|
||||
'name' => 'lbl_migrate_message',
|
||||
'id' => 'lbl_migrate_message',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$inputs[] = [
|
||||
'label' => __('Applicattion hash'),
|
||||
'id' => 'div-hash',
|
||||
'arguments' => [
|
||||
'name' => 'hash',
|
||||
'type' => 'text',
|
||||
'value' => $hash,
|
||||
'return' => true,
|
||||
],
|
||||
];
|
||||
|
||||
$inputs[] = [
|
||||
'block_id' => 'migrate_buttons',
|
||||
'class' => 'flex-row flex-items-center w98p',
|
||||
'direct' => 1,
|
||||
'block_content' => [
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'cancel',
|
||||
'label' => __('Cancel'),
|
||||
'type' => 'button',
|
||||
'attributes' => [
|
||||
'icon' => 'left',
|
||||
'mode' => 'secondary',
|
||||
'class' => 'sub cancel float-left',
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'migrate',
|
||||
'label' => __('Migrate'),
|
||||
'type' => 'submit',
|
||||
'attributes' => [
|
||||
'icon' => 'wand',
|
||||
'class' => 'sub wand float-right',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$spinner = '<div id="migration-spinner" class="invisible spinner-fixed"></div>';
|
||||
|
||||
$migration_form = $this->printForm(
|
||||
[
|
||||
'form' => $form,
|
||||
'inputs' => $inputs,
|
||||
],
|
||||
true,
|
||||
);
|
||||
|
||||
echo $migration_form.$spinner;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Migrate app to new .disco system
|
||||
*
|
||||
* @return true if success, false in case of error.
|
||||
*/
|
||||
public function migrateApp()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$hash = get_parameter('hash', false);
|
||||
$shortName = get_parameter('shortName', false);
|
||||
|
||||
if ($hash === false || $shortName === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1. Gets md5
|
||||
try {
|
||||
$console_md5 = $this->calculateDirectoryMD5($shortName, false);
|
||||
$server_md5 = $this->calculateDirectoryMD5($shortName, true);
|
||||
} catch (Exception $e) {
|
||||
$return = [
|
||||
'error' => $e->getMessage(),
|
||||
];
|
||||
echo json_encode($return);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($console_md5 === false || $server_md5 === false) {
|
||||
$return = [
|
||||
'error' => __('Error calculating app MD5'),
|
||||
];
|
||||
echo json_encode($return);
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. Checks MD5
|
||||
if ($hash === $console_md5 && $hash === $server_md5) {
|
||||
// Init migration script.
|
||||
$return = $this->executeMigrationScript($shortName);
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('App hash does not match.'),
|
||||
];
|
||||
}
|
||||
|
||||
// Add shotrname to return for showing messages.
|
||||
$return['shortname'] = $shortName;
|
||||
|
||||
echo \json_encode($return);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculates directory MD% and saves it into array
|
||||
*
|
||||
* @param string $shortName Shorname of app.
|
||||
* @param boolean $server If true, perform checks into server folder.
|
||||
*
|
||||
* @return $md5 Array of md5 of filess.
|
||||
*/
|
||||
private function calculateDirectoryMD5($shortName, $server)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$md5List = [];
|
||||
|
||||
$serverPath = $config['remote_config'].'/discovery/'.$shortName;
|
||||
$consolePath = $config['homedir'].'/'.$this->path.'/'.$shortName;
|
||||
|
||||
if ($server === true) {
|
||||
$directory = $serverPath;
|
||||
} else {
|
||||
$directory = $consolePath;
|
||||
}
|
||||
|
||||
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
|
||||
|
||||
foreach ($iterator as $file) {
|
||||
if ($file->isFile()) {
|
||||
$md5List[] = md5_file($file->getPathname());
|
||||
}
|
||||
}
|
||||
|
||||
if ($server === true) {
|
||||
$console_ini = $consolePath.'/discovery_definition.ini';
|
||||
$logo = $consolePath.'/logo.png';
|
||||
|
||||
if (file_exists($console_ini)) {
|
||||
$md5List[] = md5_file($console_ini);
|
||||
}
|
||||
|
||||
if (file_exists($logo)) {
|
||||
$md5List[] = md5_file($logo);
|
||||
}
|
||||
}
|
||||
|
||||
sort($md5List);
|
||||
$concatenatedChecksums = implode('', $md5List);
|
||||
return md5($concatenatedChecksums);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executed migration script for app
|
||||
*
|
||||
* @param string $shortName Shortname of the app.
|
||||
*
|
||||
* @return true on success, false in case of error.
|
||||
*/
|
||||
private function executeMigrationScript(string $shortName)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$dblock = db_get_lock('migrate-working');
|
||||
// Try to get a lock from DB.
|
||||
if ($dblock !== 1) {
|
||||
// Locked!
|
||||
return false;
|
||||
}
|
||||
|
||||
$scriptName = preg_replace('/^pandorafms\.(\w+\.?\w*)$/m', 'migrate.$1.sql', $shortName);
|
||||
|
||||
$script_path = $config['homedir'].'/extras/discovery/migration_scripts/'.$scriptName;
|
||||
if (file_exists($script_path) === false) {
|
||||
$return = [
|
||||
'error' => __('Migration script '.$scriptName.' could not be found'),
|
||||
];
|
||||
} else {
|
||||
try {
|
||||
$res = db_process_file($script_path, false);
|
||||
} catch (\Exception $e) {
|
||||
$return = [
|
||||
'error' => $e->getMessage(),
|
||||
];
|
||||
} finally {
|
||||
db_release_lock('migrate_working');
|
||||
}
|
||||
|
||||
if ($res === true) {
|
||||
$migrateAppsJson = io_safe_output(
|
||||
db_get_value(
|
||||
'value',
|
||||
'tconfig',
|
||||
'token',
|
||||
'migrated_discovery_apps'
|
||||
)
|
||||
);
|
||||
|
||||
$migrateApps = json_decode(
|
||||
$migrateAppsJson,
|
||||
true
|
||||
);
|
||||
|
||||
$migrateApps[$shortName] = 1;
|
||||
|
||||
$migratedAppsJson = json_encode($migrateApps);
|
||||
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
config_update_value(
|
||||
'migrated_discovery_apps',
|
||||
$migratedAppsJson
|
||||
);
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('Error decoding migrated apps json.'),
|
||||
];
|
||||
}
|
||||
|
||||
$return = [
|
||||
'result' => __('App migrated successfully'),
|
||||
'shortName' => $shortName,
|
||||
];
|
||||
} else {
|
||||
$return = [
|
||||
'error' => __('Error migrating app'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if legacy app has been migrated.
|
||||
*
|
||||
* @param string $shortName Shorn name of the app.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
static public function isMigrated($shortName)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$migrateAppsJson = io_safe_output(
|
||||
db_get_value(
|
||||
'value',
|
||||
'tconfig',
|
||||
'token',
|
||||
'migrated_discovery_apps'
|
||||
)
|
||||
);
|
||||
|
||||
$migratedApps = json_decode($migrateAppsJson, true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (array_key_exists($shortName, $migratedApps) === true && empty($migratedApps[$shortName] === false)) {
|
||||
return (bool) $migratedApps[$shortName];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read metadata CSV from system and store data structure in memory.
|
||||
*
|
||||
|
|
|
@ -584,28 +584,4 @@ class Wizard
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates warning message.
|
||||
*
|
||||
* @return void Warning message.
|
||||
*/
|
||||
public function printWarningMessage()
|
||||
{
|
||||
return ui_print_warning_message(
|
||||
__(
|
||||
'Starting with version 773, the new modular system of discovery 2.0 has been implemented. The current
|
||||
discovery (1.0) and its defined tasks will continue to function normally until the next LTS version,
|
||||
in which migration to the new system will be mandatory.
|
||||
The tasks of the current discovery (1.0) will be marked as legacy although it will not affect their
|
||||
operation, it will only be a visual indicator to identify and differentiate the tasks of discovery 1.0
|
||||
from those of the new version 2.0.
|
||||
In the intermediate versions between the 773 and the next LTS version, more applications of the new
|
||||
discovery 2.0 will be added. Both new and those that will come to replace the applications of the
|
||||
current discovery 1.0. In addition, an automatic migration tool for legacy (1.0) tasks to the new 2.0
|
||||
model will be included.'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>normalizar extremos</title>
|
||||
<g id="normalizar-extremos" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group" transform="translate(0, -0)" fill="#3F3F3F">
|
||||
<path d="M10,1 C10.5522847,1 11,0.55228475 11,0 C11,-0.55228475 10.5522847,-1 10,-1 C9.44771525,-1 9,-0.55228475 9,0 C9,0.55228475 9.44771525,1 10,1 Z M10,-2 C10.5522847,-2 11,-2.44771525 11,-3 C11,-3.55228475 10.5522847,-4 10,-4 C9.44771525,-4 9,-3.55228475 9,-3 C9,-2.44771525 9.44771525,-2 10,-2 Z M10,4 C10.5522847,4 11,3.55228475 11,3 C11,2.44771525 10.5522847,2 10,2 C9.44771525,2 9,2.44771525 9,3 C9,3.55228475 9.44771525,4 10,4 Z M10,5 C10.5522847,5 11,5.44771525 11,6 C11,6.18260372 10.9510565,6.35377607 10.8655723,6.5011143 C10.9512743,6.64698644 11,6.81780297 11,7 C11,7.55228475 10.5522847,8 10,8 C9.44771525,8 9,7.55228475 9,7 C9,6.81780297 9.04872573,6.64698644 9.13385712,6.4998705 C9.0489435,6.35377607 9,6.18260372 9,6 C9,5.44771525 9.44771525,5 10,5 Z M10,11 C10.5522847,11 11,10.5522847 11,10 C11,9.44771525 10.5522847,9 10,9 C9.44771525,9 9,9.44771525 9,10 C9,10.5522847 9.44771525,11 10,11 Z M10,15 C10.5522847,15 11,15.4477153 11,16 L9,16 L9.00672773,15.8833789 C9.06449284,15.3860402 9.48716416,15 10,15 Z" id="Oval-2" transform="translate(10, 6) rotate(90) translate(-10, -6)"></path>
|
||||
<path d="M10,9.00004336 C10.5522847,9.00004336 11,8.55232811 11,8.00004336 C11,7.44775861 10.5522847,7.00004336 10,7.00004336 C9.44771525,7.00004336 9,7.44775861 9,8.00004336 C9,8.55232811 9.44771525,9.00004336 10,9.00004336 Z M10,6.00004336 C10.5522847,6.00004336 11,5.55232811 11,5.00004336 C11,4.44775861 10.5522847,4.00004336 10,4.00004336 C9.44771525,4.00004336 9,4.44775861 9,5.00004336 C9,5.55232811 9.44771525,6.00004336 10,6.00004336 Z M10,12.0000434 C10.5522847,12.0000434 11,11.5523281 11,11.0000434 C11,10.4477586 10.5522847,10.0000434 10,10.0000434 C9.44771525,10.0000434 9,10.4477586 9,11.0000434 C9,11.5523281 9.44771525,12.0000434 10,12.0000434 Z M10,13.0000434 C10.5522847,13.0000434 11,13.4477586 11,14.0000434 C11,14.1826471 10.9510565,14.3538194 10.8655723,14.5011577 C10.9512743,14.6470298 11,14.8178463 11,15.0000434 C11,15.5523281 10.5522847,16.0000434 10,16.0000434 C9.44771525,16.0000434 9,15.5523281 9,15.0000434 C9,14.8178463 9.04872573,14.6470298 9.13385712,14.4999139 C9.0489435,14.3538194 9,14.1826471 9,14.0000434 C9,13.4477586 9.44771525,13.0000434 10,13.0000434 Z M10,19.0000434 C10.5522847,19.0000434 11,18.5523281 11,18.0000434 C11,17.4477586 10.5522847,17.0000434 10,17.0000434 C9.44771525,17.0000434 9,17.4477586 9,18.0000434 C9,18.5523281 9.44771525,19.0000434 10,19.0000434 Z M10,23.0000434 C10.5522847,23.0000434 11,23.4477586 11,24.0000434 L9,24.0000434 L9.00672773,23.8834222 C9.06449284,23.3860835 9.48716416,23.0000434 10,23.0000434 Z" id="Oval-2" transform="translate(10, 14) scale(-1, 1) rotate(90) translate(-10, -14)"></path>
|
||||
<path d="M11,5.00004336 L11,15.0000434 L9,15.0000434 L9,5.00004336 L11,5.00004336 Z M19,9.00004336 C19.5522847,9.00004336 20,9.44775861 20,10.0000434 C20,10.5523281 19.5522847,11.0000434 19,11.0000434 C18.4477153,11.0000434 18,11.4477586 18,12.0000434 L18,15.0000434 L16,15.0000434 L16,12.0000434 C16,10.3431891 17.3431458,9.00004336 19,9.00004336 Z M4,5.00004336 L4,8.00004336 C4,9.6568976 2.65685425,11.0000434 1,11.0000434 C0.44771525,11.0000434 0,10.5523281 0,10.0000434 C0,9.44775861 0.44771525,9.00004336 1,9.00004336 C1.55228475,9.00004336 2,8.55232811 2,8.00004336 L2,5.00004336 L4,5.00004336 Z" id="Path-95" fill-rule="nonzero"></path>
|
||||
<path d="M18,13.0000434 L18,15.5000434 C18,17.9853247 15.9852814,20.0000434 13.5,20.0000434 C11.0147186,20.0000434 9,17.9853247 9,15.5000434 L9,13.0000434 L11,13.0000434 L11,15.5000434 C11,16.8807552 12.1192881,18.0000434 13.5,18.0000434 C14.8807119,18.0000434 16,16.8807552 16,15.5000434 L16,13.0000434 L18,13.0000434 Z M6.5,4.3355222e-05 C8.98528137,4.3355222e-05 11,2.01476198 11,4.50004336 L11,7.00004336 L9,7.00004336 L9,4.50004336 C9,3.11933148 7.88071187,2.00004336 6.5,2.00004336 C5.11928813,2.00004336 4,3.11933148 4,4.50004336 L4,7.00004336 L2,7.00004336 L2,4.50004336 C2,2.01476198 4.01471863,4.3355222e-05 6.5,4.3355222e-05 Z" id="Path-95" fill-rule="nonzero" opacity="0.4"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
|
@ -789,7 +789,6 @@ if ($action === 'create_demo_data') {
|
|||
}
|
||||
|
||||
// Get last trap in database.
|
||||
|
||||
/*
|
||||
$id_trap_begin = db_get_value(
|
||||
'MAX(id_trap)',
|
||||
|
@ -1068,37 +1067,37 @@ if ($action === 'cleanup_demo_data') {
|
|||
|
||||
$demo_items = db_get_all_rows_in_table('tdemo_data');
|
||||
|
||||
$module_items = array_filter(
|
||||
$demo_items,
|
||||
$module_items = array_map(
|
||||
function ($item) {
|
||||
return ($item['table_name'] === 'tagente_modulo');
|
||||
}
|
||||
$json_data = json_decode($item['item_id'], true);
|
||||
return $json_data['id_agente_modulo'];
|
||||
},
|
||||
array_filter(
|
||||
$demo_items,
|
||||
function ($item) {
|
||||
return ($item['table_name'] === 'tagente_modulo');
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
$inventory_module_items = array_filter(
|
||||
$demo_items,
|
||||
$inventory_module_items = array_map(
|
||||
function ($item) {
|
||||
return ($item['table_name'] === 'tagent_module_inventory');
|
||||
}
|
||||
$json_data = json_decode($item['item_id'], true);
|
||||
return $json_data['id_agent_module_inventory'];
|
||||
},
|
||||
array_filter(
|
||||
$demo_items,
|
||||
function ($item) {
|
||||
return ($item['table_name'] === 'tagent_module_inventory');
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
$items_delete_id_bfr = [];
|
||||
|
||||
foreach ($inventory_module_items as $item) {
|
||||
$items_delete_id_bfr[] = $item['item_id'];
|
||||
}
|
||||
|
||||
$in_clause = implode(',', $items_delete_id_bfr);
|
||||
$in_clause = implode(',', $inventory_module_items);
|
||||
// Delete data from tagente_datos_inventory given inventory module id.
|
||||
db_process_sql('DELETE FROM tagente_datos_inventory where id_agent_module_inventory IN ('.$in_clause.')');
|
||||
|
||||
$items_delete_id_bfr = [];
|
||||
|
||||
foreach ($module_items as $item) {
|
||||
$items_delete_id_bfr[] = $item['item_id'];
|
||||
}
|
||||
|
||||
$in_clause = implode(',', $items_delete_id_bfr);
|
||||
$in_clause = implode(',', $module_items);
|
||||
// Delete data from tagente_datos give agent module id.
|
||||
db_process_sql('DELETE FROM tagente_datos where id_agente_modulo IN ('.$in_clause.')');
|
||||
|
||||
|
|
|
@ -166,7 +166,18 @@ if ($delete_event === true) {
|
|||
return;
|
||||
}
|
||||
|
||||
$name = events_get_description($id_evento);
|
||||
$r = events_delete($id_evento, $filter, false, true);
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_EVENT,
|
||||
sprintf(
|
||||
'ID event %s deleted by %s - %s',
|
||||
$id_evento,
|
||||
$config['id_user'],
|
||||
$name
|
||||
),
|
||||
$config['id_user']
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
// Unexistent agent.
|
||||
if (is_metaconsole() === true
|
||||
|
@ -224,6 +235,19 @@ if ($validate_event === true) {
|
|||
EVENT_VALIDATE,
|
||||
$filter
|
||||
);
|
||||
|
||||
$name = events_get_description($id_evento);
|
||||
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_EVENT,
|
||||
sprintf(
|
||||
'ID event %s validated by %s - %s',
|
||||
$id_evento,
|
||||
$config['id_user'],
|
||||
$name
|
||||
),
|
||||
$config['id_user']
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
// Unexistent agent.
|
||||
if (is_metaconsole() === true
|
||||
|
|
|
@ -780,7 +780,7 @@ class AgentsAlerts extends HTML
|
|||
'nothing' => false,
|
||||
'selected' => $this->groupId,
|
||||
'return' => true,
|
||||
'script' => 'this.form.submit()',
|
||||
'script' => '',
|
||||
'size' => '100%',
|
||||
],
|
||||
];
|
||||
|
|
|
@ -280,6 +280,13 @@ class Prd
|
|||
*/
|
||||
private $itemsReferences;
|
||||
|
||||
/**
|
||||
* Current prdData.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $currentPrdData;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -2282,12 +2289,37 @@ class Prd
|
|||
|
||||
$value = implode($csv_separator, $ref_arr);
|
||||
} else {
|
||||
$columns_ref = $this->getOneColumnRefs($ref['table']);
|
||||
|
||||
$value = $this->searchValue(
|
||||
$ref['columns'],
|
||||
$ref['table'],
|
||||
$ref['id'],
|
||||
$value
|
||||
);
|
||||
|
||||
// Get reference in value
|
||||
if ($columns_ref !== false) {
|
||||
foreach ($columns_ref as $col => $col_ref) {
|
||||
if (array_key_exists($col, $value[$ref['table']])) {
|
||||
$sql = sprintf(
|
||||
'SELECT * FROM %s WHERE %s = "%s"',
|
||||
$ref['table'],
|
||||
$col,
|
||||
$value[$ref['table']][$col],
|
||||
);
|
||||
$row = db_get_row_sql($sql);
|
||||
|
||||
$this->getReferenceFromValue(
|
||||
$ref['table'],
|
||||
$col,
|
||||
$col_ref,
|
||||
$row,
|
||||
$value[$ref['table']][$col]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2413,12 +2445,37 @@ class Prd
|
|||
|
||||
$value = implode($csv_separator, $ref_arr);
|
||||
} else {
|
||||
$columns_ref = $this->getOneColumnRefs($ref['table']);
|
||||
|
||||
$value = $this->searchValue(
|
||||
$ref['columns'],
|
||||
$ref['table'],
|
||||
$ref['id'],
|
||||
$value
|
||||
);
|
||||
|
||||
// Get reference in value
|
||||
if ($columns_ref !== false) {
|
||||
foreach ($columns_ref as $col => $col_ref) {
|
||||
if (array_key_exists($col, $value[$ref['table']])) {
|
||||
$sql = sprintf(
|
||||
'SELECT * FROM %s WHERE %s = "%s"',
|
||||
$ref['table'],
|
||||
$col,
|
||||
$value[$ref['table']][$col],
|
||||
);
|
||||
$row = db_get_row_sql($sql);
|
||||
|
||||
$this->getReferenceFromValue(
|
||||
$ref['table'],
|
||||
$col,
|
||||
$col_ref,
|
||||
$row,
|
||||
$value[$ref['table']][$col]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2435,7 +2492,7 @@ class Prd
|
|||
*
|
||||
* @return boolean
|
||||
*/
|
||||
private function getValueFromReference($table, $column, $reference, &$value)
|
||||
private function getValueFromReference($table, $column, $reference, $item, &$value)
|
||||
{
|
||||
if (isset($reference['conditional_refs']) === true) {
|
||||
// Conditional refs.
|
||||
|
@ -2445,8 +2502,8 @@ class Prd
|
|||
if (isset($condition['when']) === true
|
||||
&& isset($condition['ref']) === true
|
||||
) {
|
||||
if (isset($this->currentItem['parsed'][array_key_first($condition['when'])]) === true) {
|
||||
$compare_value = $this->currentItem['parsed'][array_key_first($condition['when'])];
|
||||
if (isset($item[array_key_first($condition['when'])]) === true) {
|
||||
$compare_value = $item[array_key_first($condition['when'])];
|
||||
|
||||
if ($this->evalConditionalRef($compare_value, $condition['when']) === true
|
||||
&& empty($value) === false
|
||||
|
@ -2656,6 +2713,7 @@ class Prd
|
|||
$result = '';
|
||||
|
||||
$prd_data = $this->getOnePrdData($type);
|
||||
$this->currentPrdData = $prd_data;
|
||||
if (empty($prd_data) === false) {
|
||||
$result .= '[prd_data]'.LINE_BREAK.LINE_BREAK;
|
||||
$result .= 'type="'.$type.'"'.LINE_BREAK;
|
||||
|
@ -2903,6 +2961,7 @@ class Prd
|
|||
unset($data_file['prd_data']);
|
||||
|
||||
$prd_data = $this->getOnePrdData($type);
|
||||
$this->currentPrdData = $prd_data;
|
||||
if ($prd_data !== false) {
|
||||
// Begin transaction.
|
||||
$db = $config['dbconnection'];
|
||||
|
@ -2941,6 +3000,7 @@ class Prd
|
|||
$table,
|
||||
$column,
|
||||
$column_refs[$column],
|
||||
$this->currentItem['parsed'],
|
||||
$value
|
||||
);
|
||||
|
||||
|
@ -2968,6 +3028,7 @@ class Prd
|
|||
$table,
|
||||
$column,
|
||||
$json_refs[$column][$json_key],
|
||||
$this->currentItem['parsed'],
|
||||
$json_value
|
||||
) === true
|
||||
) {
|
||||
|
@ -3064,8 +3125,42 @@ class Prd
|
|||
&& empty($array_value[$ref['table']]) === false
|
||||
) {
|
||||
$where = '';
|
||||
$columns_ref = $this->getOneColumnRefs($ref['table']);
|
||||
foreach ($ref['columns'] as $column_name) {
|
||||
if (isset($array_value[$ref['table']][$column_name])) {
|
||||
// Get value from crossed reference in current value
|
||||
if (isset($this->crossed_refs[$ref['table']]) === true
|
||||
&& empty($this->crossed_refs[$ref['table']]['ref']) === false
|
||||
&& in_array($column_name, $this->crossed_refs[$ref['table']]['ref'])
|
||||
) {
|
||||
$parent_table = $this->crossed_refs[$ref['table']]['parent_table'];
|
||||
foreach ($this->crossed_refs[$ref['table']]['ref'] as $k => $f) {
|
||||
$itemReference = $this->getItemReference(
|
||||
$parent_table,
|
||||
$this->crossed_refs[$parent_table]['value'][$k],
|
||||
$array_value[$ref['table']][$f]
|
||||
);
|
||||
|
||||
if ($itemReference !== false) {
|
||||
$array_value[$ref['table']][$column_name] = $itemReference;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($columns_ref !== false) {
|
||||
if (array_key_exists($column_name, $columns_ref)) {
|
||||
$temp_value = $array_value[$ref['table']][$column_name];
|
||||
$temp_value = (is_array($temp_value) ? json_encode($temp_value) : $temp_value);
|
||||
|
||||
// Get value from reference in current value
|
||||
$ref_value = $this->getValueFromReference($ref['table'], $column_name, $columns_ref[$column_name], $array_value[$ref['table']], $temp_value);
|
||||
|
||||
if ($ref_value === true) {
|
||||
$array_value[$ref['table']][$column_name] = $temp_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$where .= sprintf(
|
||||
"%s = '%s' AND ",
|
||||
$column_name,
|
||||
|
|
|
@ -22,7 +22,7 @@ use DI\ContainerBuilder;
|
|||
/*
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC240318';
|
||||
$build_version = 'PC240326';
|
||||
$pandora_version = 'v7.0NG.776';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -300,6 +300,10 @@ define('HEADER_LOGO_DEFAULT_COLLAPSED', 'logo-default-pandorafms-collapsed.png')
|
|||
define('HEADER_LOGO_BLACK_CLASSIC', 'logo-black-pandorafms.png');
|
||||
define('HEADER_LOGO_BLACK_COLLAPSED', 'logo-default-pandorafms-collapsed.png');
|
||||
|
||||
// Pandora Themes.
|
||||
define('DEFAULT_THEME', 1);
|
||||
define('BLACK_THEME', 2);
|
||||
|
||||
// Status images.
|
||||
// For modules.
|
||||
define('STATUS_MODULE_OK', 'module_ok.png');
|
||||
|
|
|
@ -1006,13 +1006,14 @@ function get_parameter($name, $default='')
|
|||
|
||||
function get_parameter_date($name, $default='', $date_format='Y/m/d')
|
||||
{
|
||||
// TODO: Configure default value.
|
||||
$date_end = get_parameter('date_end', 0);
|
||||
$time_end = get_parameter('time_end');
|
||||
$datetime_end = strtotime($date_end.' '.$time_end);
|
||||
|
||||
$custom_date = get_parameter('custom_date', 0);
|
||||
$range = get_parameter('range', SECONDS_1DAY);
|
||||
$date_text = get_parameter('range_text', SECONDS_1DAY);
|
||||
$range = get_parameter($name, SECONDS_1DAY);
|
||||
$date_text = get_parameter($name.'_text', SECONDS_1DAY);
|
||||
$date_init_less = (strtotime(date('Y/m/d')) - SECONDS_1DAY);
|
||||
$date_init = get_parameter('date_init', date(DATE_FORMAT, $date_init_less));
|
||||
$time_init = get_parameter('time_init', date(TIME_FORMAT, $date_init_less));
|
||||
|
@ -1026,7 +1027,7 @@ function get_parameter_date($name, $default='', $date_format='Y/m/d')
|
|||
$date_end = date('Y/m/d H:i:s', $datetime_end);
|
||||
$period = ($datetime_end - $datetime_init);
|
||||
} else if ($custom_date === '2') {
|
||||
$date_units = get_parameter('range_units');
|
||||
$date_units = get_parameter($name.'_units');
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$date_init = date('Y/m/d H:i:s', (strtotime($date_end) - ((int) $date_text * (int) $date_units)));
|
||||
$period = (strtotime($date_end) - strtotime($date_init));
|
||||
|
|
|
@ -13489,6 +13489,19 @@ function api_set_validate_event_by_id($id, $trash1=null, $trash2=null, $returnTy
|
|||
'estado' => 1,
|
||||
];
|
||||
|
||||
$name = events_get_description($id);
|
||||
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_EVENT,
|
||||
sprintf(
|
||||
'ID event %s validated by %s - %s',
|
||||
$id,
|
||||
$config['id_user'],
|
||||
$name
|
||||
),
|
||||
$config['id_user']
|
||||
);
|
||||
|
||||
$result = db_process_sql_update('tevento', $values, ['id_evento' => $id]);
|
||||
|
||||
if ($result === false) {
|
||||
|
|
|
@ -1443,6 +1443,10 @@ function config_update_config()
|
|||
);
|
||||
}
|
||||
|
||||
if (config_update_value('tabs_menu', get_parameter('tabs_menu', 'both'), true) === false) {
|
||||
$error_update[] = __('Tabs menu');
|
||||
}
|
||||
|
||||
// --------------------------------------------------
|
||||
// CUSTOM VALUES POST PROCESS
|
||||
// --------------------------------------------------
|
||||
|
@ -2806,7 +2810,7 @@ function config_process_config()
|
|||
}
|
||||
|
||||
if (!isset($config['custom_splash_login'])) {
|
||||
config_update_value('custom_splash_login', 'none.png');
|
||||
config_update_value('custom_splash_login', 'default');
|
||||
}
|
||||
|
||||
if (!isset($config['custom_docs_logo'])) {
|
||||
|
@ -3944,6 +3948,10 @@ function config_process_config()
|
|||
config_update_value('control_session_timeout', 'check_activity');
|
||||
}
|
||||
|
||||
if (isset($config['tabs_menu']) === false) {
|
||||
config_update_value('tabs_menu', 'both');
|
||||
}
|
||||
|
||||
// Finally, check if any value was overwritten in a form.
|
||||
config_update_config();
|
||||
}
|
||||
|
|
|
@ -805,7 +805,7 @@ function filemanager_file_explorer(
|
|||
|
||||
// Actions buttons
|
||||
// Delete button.
|
||||
$data[4] = '<div class="table_action_buttons flex">';
|
||||
$data[4] = '<div class="table_action_buttons flex flex-end">';
|
||||
$typefile = array_pop(explode('.', $fileinfo['name']));
|
||||
if (is_writable($fileinfo['realpath']) === true
|
||||
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
|
||||
|
@ -1069,7 +1069,7 @@ function filemanager_file_explorer(
|
|||
);
|
||||
|
||||
// Show Modal Real Path
|
||||
$modal_real_path = "<div><b>Real path to plugin execution is:</b></div>
|
||||
$modal_real_path = "<div><b>Real path is:</b></div>
|
||||
<div id='real_path'></div>";
|
||||
|
||||
if (isset($_SERVER['HTTPS']) === true) {
|
||||
|
|
|
@ -64,8 +64,6 @@ function menu_print_menu(&$menu)
|
|||
$sec2 = 'godmode/alerts/alert_actions';
|
||||
} else if ($sec2 === 'godmode/alerts/configure_alert_command') {
|
||||
$sec2 = 'godmode/alerts/alert_commands';
|
||||
} else if ($sec2 === 'enterprise/godmode/setup/edit_skin') {
|
||||
$sec2 = 'enterprise/godmode/setup/setup_skins';
|
||||
} else if ($sec2 === 'operation/agentes/networkmap.dinamic') {
|
||||
$sec2 = 'operation/agentes/pandora_networkmap';
|
||||
} else if ($sec2 === 'godmode/gis_maps/configure_gis_map') {
|
||||
|
|
|
@ -47,6 +47,10 @@ function themes_get_css($path=false)
|
|||
continue;
|
||||
}
|
||||
|
||||
if ($file === 'pandoraitsm.css') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Skip '..' and '.' entries and files not ended in '.css'.
|
||||
if ($path && ($file == '.' || $file == '..' || strtolower(substr($file, (strlen($file) - 4))) !== '.css')) {
|
||||
continue;
|
||||
|
|
|
@ -5419,6 +5419,18 @@ function ui_print_page_header(
|
|||
|
||||
if (is_array($options)) {
|
||||
$buffer .= '<div id="menu_tab"><ul class="mn">';
|
||||
|
||||
$menu_dots_class = 'menu-dots-hide';
|
||||
if (isset($dots) === true && $dots !== '' && $config['tabs_menu'] !== 'icons') {
|
||||
$menu_dots_class = 'menu-dots-show';
|
||||
}
|
||||
|
||||
if (isset($dots) === true && $dots !== '') {
|
||||
$buffer .= '<li class="nomn menu-dots-li '.$menu_dots_class.'">';
|
||||
$buffer .= '<div id="menu_dots">'.$dots.'</div>';
|
||||
$buffer .= '</li>';
|
||||
}
|
||||
|
||||
foreach ($options as $key => $option) {
|
||||
if (empty($option)) {
|
||||
continue;
|
||||
|
@ -5428,6 +5440,13 @@ function ui_print_page_header(
|
|||
// $buffer .= '</li>';
|
||||
} else {
|
||||
if (is_array($option)) {
|
||||
if ($config['tabs_menu'] === 'menu' && (isset($dots) === true && $dots !== '')) {
|
||||
$tabs_class = 'tabs-hide';
|
||||
if (isset($option['active']) === true && (bool) $option['active'] === true) {
|
||||
$tabs_class = 'tabs-show';
|
||||
}
|
||||
}
|
||||
|
||||
$class = 'nomn';
|
||||
if (isset($option['active'])) {
|
||||
if ($option['active']) {
|
||||
|
@ -5444,7 +5463,7 @@ function ui_print_page_header(
|
|||
$class .= ($godmode) ? ' tab_godmode' : ' tab_operation';
|
||||
}
|
||||
|
||||
$buffer .= '<li class="'.$class.' ">';
|
||||
$buffer .= '<li class="'.$class.' '.$tabs_class.'">';
|
||||
$buffer .= $option['text'];
|
||||
if (isset($option['sub_menu'])) {
|
||||
$buffer .= $option['sub_menu'];
|
||||
|
@ -5460,11 +5479,19 @@ function ui_print_page_header(
|
|||
}
|
||||
|
||||
$buffer .= '</ul>';
|
||||
if (isset($dots) === true) {
|
||||
$buffer .= '<div id="menu_dots">'.$dots.'</div>';
|
||||
}
|
||||
|
||||
$buffer .= '</div>';
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
$buffer .= '
|
||||
<script>
|
||||
menuTabsShowHide();
|
||||
|
||||
$(window).on("resize", function() {
|
||||
menuTabsShowHide();
|
||||
});
|
||||
</script>
|
||||
';
|
||||
}
|
||||
} else {
|
||||
if ($options != '') {
|
||||
$buffer .= '<div id="menu_tab"><ul class="mn"><li>';
|
||||
|
|
|
@ -2705,3 +2705,34 @@ function show_email_test(id) {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
function menuTabsShowHide() {
|
||||
const dotsLi = $(".menu-dots-li");
|
||||
if (dotsLi.length) {
|
||||
const tabsLi = $("#menu_tab .nomn:not(.menu-dots-li)");
|
||||
const menuTabWidth = $("#menu_tab_frame_view").width();
|
||||
const menuTabLeftWidth = $(".menu_tab_left_bc").width();
|
||||
const menuTabsRightCount = $("#menu_tab > ul.mn > li").length * 46;
|
||||
const margins = 50;
|
||||
|
||||
const menuTabFree = menuTabWidth - (menuTabLeftWidth + margins);
|
||||
|
||||
if (menuTabFree >= menuTabsRightCount) {
|
||||
// Big.
|
||||
if ($(dotsLi).hasClass("menu-dots-show") === true) {
|
||||
if ($(tabsLi).hasClass("tabs-hide") === false) {
|
||||
$(tabsLi).show();
|
||||
}
|
||||
} else {
|
||||
$(dotsLi).hide();
|
||||
if ($(tabsLi).hasClass("tabs-hide") === false) {
|
||||
$(tabsLi).show();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Small.
|
||||
$(dotsLi).show();
|
||||
$(tabsLi).hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1553,9 +1553,11 @@ function changePlugin() {
|
|||
var moduleProtocol = $("#module_protocol").val();
|
||||
var executionType = $("#execution_type").val();
|
||||
var pluginSelected = $("#server_plugin_" + moduleProtocol).val();
|
||||
var pluginAllData = JSON.parse(
|
||||
$("#hidden-server_plugin_data_" + pluginSelected).val()
|
||||
);
|
||||
var pluginAllDataSafe = $("#hidden-server_plugin_data_" + pluginSelected)
|
||||
.val()
|
||||
.replace(/(?:\r\n|\r|\n)/g, "<br>");
|
||||
|
||||
var pluginAllData = JSON.parse(pluginAllDataSafe);
|
||||
|
||||
var pluginDescription = pluginAllData.description;
|
||||
var pluginMacros = pluginAllData.macros;
|
||||
|
@ -1586,10 +1588,14 @@ function changePlugin() {
|
|||
let macro = this.macro;
|
||||
let value = this.value;
|
||||
|
||||
if (pluginMacrosElement["server_plugin"] == pluginSelected) {
|
||||
if (pluginMacrosElement[macro + "_" + moduleProtocol + "_field"]) {
|
||||
value = pluginMacrosElement[macro + "_" + moduleProtocol + "_field"];
|
||||
if (pluginMacrosElement !== null) {
|
||||
if (pluginMacrosElement["server_plugin"] == pluginSelected) {
|
||||
if (pluginMacrosElement[macro + "_" + moduleProtocol + "_field"]) {
|
||||
value = pluginMacrosElement[macro + "_" + moduleProtocol + "_field"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
value = "";
|
||||
}
|
||||
|
||||
if (
|
||||
|
|
|
@ -2416,10 +2416,10 @@ class Item extends CachedModel
|
|||
foreach ($fields as $k => $v) {
|
||||
if (isset($v['id']) === true && isset($v['name']) === true) {
|
||||
// Modern environments use id-name format.
|
||||
$rs[$v['id']] = $v;
|
||||
$rs[$v['id']] = io_safe_output($v);
|
||||
} else {
|
||||
// In MC environments is key-value.
|
||||
$rs[$k] = $v;
|
||||
$rs[$k] = io_safe_output($v);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -225,6 +225,7 @@ div.graphs-div-main {
|
|||
/* height: 20px; */
|
||||
margin-bottom: 5px;
|
||||
display: flex;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#droppable-graphs .droppable-zone {
|
||||
|
|
|
@ -265,7 +265,6 @@ div#welcome_modal_window .wizard #li-div_wizard_agent > div {
|
|||
}
|
||||
|
||||
div#welcome_modal_window .wizard #li-div_wizard_agent .select2-selection {
|
||||
background-color: #f6f7fb !important;
|
||||
border: 1px solid #c0ccdc !important;
|
||||
border-radius: 6px !important;
|
||||
width: 290px;
|
||||
|
|
|
@ -1956,7 +1956,7 @@ div.title_line {
|
|||
#menu_tab_frame_view_bc {
|
||||
position: sticky;
|
||||
top: 61px;
|
||||
z-index: 3;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: space-between;
|
||||
|
@ -1986,6 +1986,7 @@ div.title_line {
|
|||
justify-content: space-between;
|
||||
overflow: hidden;
|
||||
margin-left: 20px;
|
||||
min-width: fit-content;
|
||||
}
|
||||
|
||||
.breadcrumbs_container {
|
||||
|
@ -2025,6 +2026,11 @@ div.title_line {
|
|||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
#menu_tab > ul.mn {
|
||||
display: inline-flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
#menu_tab .mn li {
|
||||
float: right;
|
||||
position: relative;
|
||||
|
@ -4040,7 +4046,7 @@ div.div_groups_status {
|
|||
min-height: 53px;
|
||||
}
|
||||
|
||||
#menu_tab li:hover {
|
||||
#menu_tab li:hover:not(.menu-dots-li) {
|
||||
box-shadow: inset 0px 4px var(--primary-color);
|
||||
}
|
||||
|
||||
|
@ -4082,6 +4088,11 @@ div.div_groups_status {
|
|||
border: 1px solid #e2e2e2;
|
||||
}
|
||||
|
||||
#agents_modules_table th:nth-child(1),
|
||||
#agents_modules_table td:nth-child(1) {
|
||||
max-width: 215px;
|
||||
}
|
||||
|
||||
.dashboard {
|
||||
top: 23px;
|
||||
}
|
||||
|
@ -13727,6 +13738,12 @@ button.disabled {
|
|||
}
|
||||
|
||||
/* Dot tab */
|
||||
#menu_tab li.nomn.menu-dots-li:hover a {
|
||||
color: var(--text-color);
|
||||
padding: 5px 15px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#menu_dots {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
@ -13763,6 +13780,7 @@ button.disabled {
|
|||
top: 20px;
|
||||
right: -20px;
|
||||
padding: 0px 10px 10px 10px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dot-tab-menu {
|
||||
|
@ -13773,7 +13791,10 @@ button.disabled {
|
|||
min-height: 20px;
|
||||
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.13);
|
||||
padding: 10px 0px;
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
display: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dot-tab:hover .dot-tab-menu {
|
||||
|
@ -13786,6 +13807,7 @@ button.disabled {
|
|||
padding: 5px 15px;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dot-tab-menu a:hover {
|
||||
|
@ -13794,6 +13816,11 @@ button.disabled {
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
.dot-tab-menu .dot-tab-link {
|
||||
max-height: calc(100vh - (60px + 49px + 65px + 15px));
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.dot-tab-menu .dot-tab-link > a {
|
||||
font-weight: 900;
|
||||
color: black;
|
||||
|
@ -13805,6 +13832,22 @@ button.disabled {
|
|||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.menu-dots-hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu-dots-show {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
.tabs-hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabs-show {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
.white_table_graph > div {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
color: white !important;
|
||||
text-align: left;
|
||||
}
|
||||
.select2-container--default>.selection>.select2-selection--single {
|
||||
.select2-container--default > .selection > .select2-selection--single {
|
||||
border-color: #707070 !important;
|
||||
}
|
||||
.select2-container .select2-selection--single .select2-selection__clear {
|
||||
|
@ -76,7 +76,7 @@
|
|||
position: absolute;
|
||||
left: -100000px;
|
||||
width: 100%;
|
||||
z-index: 1051;
|
||||
z-index: 1118;
|
||||
}
|
||||
.select2-results {
|
||||
display: block;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -131,7 +131,7 @@
|
|||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.776';
|
||||
$build = '240318';
|
||||
$build = '240326';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
|
|
@ -333,7 +333,7 @@ $table->data['group'][0] = html_print_label_input_block(
|
|||
true,
|
||||
'group_id',
|
||||
$group_id,
|
||||
'this.form.submit()',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
|
@ -361,7 +361,7 @@ $table->data['group'][1] = html_print_label_input_block(
|
|||
$fields,
|
||||
'status',
|
||||
$status,
|
||||
'this.form.submit()',
|
||||
'',
|
||||
__('All'),
|
||||
AGENT_STATUS_ALL,
|
||||
true,
|
||||
|
@ -436,7 +436,7 @@ $table->data[2][1] = html_print_label_input_block(
|
|||
$fields,
|
||||
'policies',
|
||||
$policies,
|
||||
'this.form.submit()',
|
||||
'',
|
||||
__('All'),
|
||||
0,
|
||||
true,
|
||||
|
|
|
@ -1613,7 +1613,7 @@ if (empty($result) === false) {
|
|||
$table->align[11] = 'left';
|
||||
}
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'AR')) {
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
$actions_list = true;
|
||||
$table->head[12] = __('Actions');
|
||||
$table->align[12] = 'left';
|
||||
|
@ -2263,7 +2263,7 @@ if (empty($result) === false) {
|
|||
}
|
||||
|
||||
if (check_acl_one_of_groups($config['id_user'], $agent_groups, 'AW')) {
|
||||
$table->cellclass[][2] = 'action_buttons';
|
||||
$table->cellclass[][12] = 'table_action_buttons';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
echo "<form id='agent-edit-redirection-".$inc_id."' target='_blank' method='POST' action='".$row['server_url']."index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&edit_module=1'>";
|
||||
|
|
|
@ -43,82 +43,20 @@ if (!reporting_user_can_see_report($id_report)) {
|
|||
exit;
|
||||
}
|
||||
|
||||
// Calculations in order to modify init date of the report.
|
||||
$date_init_less = (strtotime(date('Y-m-j')) - SECONDS_1DAY);
|
||||
$date_init = get_parameter('date_init', date(DATE_FORMAT, $date_init_less));
|
||||
$time_init = get_parameter('time_init', date(TIME_FORMAT, $date_init_less));
|
||||
$datetime_init = strtotime($date_init.' '.$time_init);
|
||||
$pure = (int) get_parameter('pure', 0);
|
||||
$date_params = get_parameter_date('date', '', 'U');
|
||||
$date_end = date('Y/m/d', $date_params['date_end']);
|
||||
$time_end = date('H:i:s', $date_params['date_end']);
|
||||
|
||||
$period = null;
|
||||
// Get different date to search the report.
|
||||
$date_end = (string) get_parameter('date_end', date(DATE_FORMAT));
|
||||
$time_end = (string) get_parameter('time_end', date(TIME_FORMAT));
|
||||
$datetime_end = strtotime($date_end.' '.$time_end);
|
||||
$date_start = date('Y/m/d', $date_params['date_init']);
|
||||
$time_start = date('H:i:s', $date_params['date_init']);
|
||||
|
||||
// Calculate new inteval for all reports.
|
||||
$custom_date = get_parameter('custom_date', 0);
|
||||
$date = get_parameter('date', 'none');
|
||||
$date_text = get_parameter('date_text', SECONDS_1DAY);
|
||||
$date_init = date('Y/m/d', $date_params['date_init']);
|
||||
$time_init = date('H:i:s', $date_params['date_init']);
|
||||
|
||||
$custom_date_end = '';
|
||||
$filter_type = '';
|
||||
$custom_period = false;
|
||||
if ($custom_date === '1') {
|
||||
if ($date === 'chose_range') {
|
||||
$date_init = get_parameter('date_init', 0);
|
||||
$date_init = explode(' ', $date_init);
|
||||
$date_init = $date_init[0];
|
||||
$date_init .= ' '.get_parameter('time_init', '00:00:00');
|
||||
$custom_date_end = get_parameter('date_end', 0);
|
||||
$custom_date_end .= ' '.get_parameter('time_end', '00:00:00');
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$period = (strtotime($date_end) - strtotime($date_init));
|
||||
$custom_period = (strtotime($custom_date_end) - strtotime($date_init));
|
||||
$filter_type = 'chose_range';
|
||||
} else {
|
||||
if ($datetime_init >= $datetime_end) {
|
||||
$datetime_init = $date_init_less;
|
||||
}
|
||||
$custom_date_end = date('Y/m/d H:i:s', $date_params['date_end']);
|
||||
|
||||
$period = ($datetime_end - $datetime_init);
|
||||
}
|
||||
} else if ($custom_date === '2') {
|
||||
$date_units = get_parameter('date_units');
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$date_start = date('Y/m/d H:i:s', (strtotime($date_end) - ($date_text * $date_units)));
|
||||
$period = (strtotime($date_end) - strtotime($date_start));
|
||||
} else if (in_array($date, ['this_week', 'this_month', 'past_week', 'past_month'])) {
|
||||
if ($date === 'this_week') {
|
||||
// Last monday.
|
||||
$date_init = date('Y/m/d H:i:s', strtotime('last monday'));
|
||||
// $date_end = date('Y/m/d H:i:s', strtotime($date_init.' +6 days'));
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$period = (strtotime($date_end) - strtotime($date_init));
|
||||
$filter_type = 'this_week';
|
||||
} else if ($date === 'this_month') {
|
||||
// $date_end = date('Y/m/d', strtotime('last day of this month'));
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$first_of_month = date('Y/m/d', strtotime('first day of this month'));
|
||||
$period = (strtotime($date_end) - strtotime($first_of_month));
|
||||
$filter_type = 'this_month';
|
||||
} else if ($date === 'past_month') {
|
||||
$date_end = date('Y/m/d', strtotime('last day of previous month'));
|
||||
$first_of_month = date('Y/m/d', strtotime('first day of previous month'));
|
||||
$period = (strtotime($date_end) - strtotime($first_of_month));
|
||||
} else if ($date === 'past_week') {
|
||||
$date_end = date('Y-m-d', strtotime('sunday', strtotime('last week')));
|
||||
$first_of_week = date('Y-m-d', strtotime('monday', strtotime('last week')));
|
||||
$period = (strtotime($date_end) - strtotime($first_of_week));
|
||||
}
|
||||
} else if ($date === 'none') {
|
||||
// Prioritize the report item period based on the current local date/time.
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
} else {
|
||||
$date_end = date('Y/m/d H:i:s');
|
||||
$date_start = date('Y/m/d H:i:s', (strtotime($date_end) - $date));
|
||||
$period = (strtotime($date_end) - strtotime($date_start));
|
||||
}
|
||||
$period = $date_params['period'];
|
||||
$custom_period = $date_params['period'];
|
||||
|
||||
// Shchedule report email.
|
||||
$schedule_report = get_parameter('schbutton', '');
|
||||
|
@ -318,12 +256,12 @@ if ($html_menu_export === ENTERPRISE_NOT_HOOK) {
|
|||
if ((bool) is_metaconsole() === true) {
|
||||
$table2->data[0][2] = html_print_label_input_block(
|
||||
__('Date').' ',
|
||||
html_print_select_date_range('date', true, get_parameter('date', 'none'), $date_init, $time_init, date('Y/m/d'), date('H:i:s'), $date_text),
|
||||
html_print_select_date_range('date', true, get_parameter('date', 'none'), $date_init, $time_init, $date_end, $time_end, $date_text),
|
||||
);
|
||||
} else {
|
||||
$table2->data[0][2] = html_print_label_input_block(
|
||||
__('Date').' ',
|
||||
html_print_select_date_range('date', true, get_parameter('date', 'none'), $date_init, $time_init, date('Y/m/d'), date('H:i:s'), $date_text),
|
||||
html_print_select_date_range('date', true, get_parameter('date', 'none'), $date_init, $time_init, $date_end, $time_end, $date_text),
|
||||
['label_class' => 'filter_label_position_before']
|
||||
);
|
||||
}
|
||||
|
|
|
@ -516,11 +516,11 @@ $skin = '';
|
|||
$home_screen .= html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true, false);
|
||||
|
||||
// User only can change skins if has more than one group.
|
||||
if (function_exists('skins_print_select')) {
|
||||
if (count($usr_groups) > 1) {
|
||||
$skin = '<div class="label_select"><p class="edit_user_labels">'.__('Theme').': </p>';
|
||||
$skin .= skins_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true).'</div>';
|
||||
}
|
||||
if (count($usr_groups) > 1) {
|
||||
$skin = '<div class="label_select"><p class="edit_user_labels">'.__('Theme').': </p>';
|
||||
$skins[DEFAULT_THEME] = __('Default theme');
|
||||
$skins[BLACK_THEME] = __('Black theme');
|
||||
$skin .= html_print_select($id_usr, 'skin', $user_info['id_skin'], '', __('None'), 0, true).'</div>';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -2991,18 +2991,6 @@ CREATE TABLE IF NOT EXISTS `tsesion_extended` (
|
|||
KEY idx_session (id_sesion)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `tskin`
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `tskin` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` TEXT ,
|
||||
`relative_path` TEXT ,
|
||||
`description` TEXT ,
|
||||
`disabled` TINYINT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tpolicy_queue`
|
||||
-- ---------------------------------------------------------------------
|
||||
|
|
|
@ -1221,12 +1221,6 @@ INSERT INTO `tevent_response` VALUES (1,'Ping to host','Ping to&#
|
|||
|
||||
INSERT INTO `tupdate_settings` VALUES ('current_update', '412'), ('customer_key', 'PANDORA-FREE'), ('updating_binary_path', 'Path where the updated binary files will be stored'), ('updating_code_path', 'Path where the updated code is stored'), ('dbname', ''), ('dbhost', ''), ('dbpass', ''), ('dbuser', ''), ('dbport', ''), ('proxy', ''), ('proxy_port', ''), ('proxy_user', ''), ('proxy_pass', '');
|
||||
|
||||
--
|
||||
-- Dumping data for table `tskin`
|
||||
--
|
||||
INSERT INTO `tskin` VALUES (1,'Default theme', 'pandora.css', 'Default skin for Pandora FMS web console', 0);
|
||||
INSERT INTO `tskin` VALUES (2,'Black theme', 'pandora_black.css', 'Black theme', 0);
|
||||
|
||||
--
|
||||
-- Dumping data for table `tcollection`
|
||||
--
|
||||
|
@ -2885,7 +2879,7 @@ SET @short_name = 'pandorafms.mysql';
|
|||
SET @name = 'MySQL';
|
||||
SET @section = 'app';
|
||||
SET @description = 'Monitor MySQL databases';
|
||||
SET @version = '1.1';
|
||||
SET @version = '1.2';
|
||||
INSERT IGNORE INTO `tdiscovery_apps` (`id_app`, `short_name`, `name`, `section`, `description`, `version`) VALUES ('', @short_name, @name, @section, @description, @version);
|
||||
SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;
|
||||
|
||||
|
|
|
@ -1498,6 +1498,45 @@ class Client
|
|||
if ($filepath !== null) {
|
||||
include $filepath;
|
||||
|
||||
if ((bool) $config['history_db_enabled'] === true) {
|
||||
if (isset($config['history_db_connection']) === false
|
||||
|| $config['history_db_connection'] === false
|
||||
) {
|
||||
ob_start();
|
||||
$config['history_db_connection'] = db_connect(
|
||||
$config['history_db_host'],
|
||||
$config['history_db_name'],
|
||||
$config['history_db_user'],
|
||||
io_output_password($config['history_db_pass']),
|
||||
$config['history_db_port'],
|
||||
false
|
||||
);
|
||||
ob_get_clean();
|
||||
}
|
||||
|
||||
if ($config['history_db_connection'] !== false) {
|
||||
$curr_mysql_version_hist = @mysql_db_process_sql(
|
||||
'SELECT VERSION() AS version',
|
||||
'affected_rows',
|
||||
$config['history_db_connection'],
|
||||
false
|
||||
);
|
||||
|
||||
$curr_mysql_version_hist = $curr_mysql_version_hist[0]['version'];
|
||||
|
||||
if (is_string($curr_mysql_version_hist) === true
|
||||
&& empty($curr_mysql_version_hist) === false
|
||||
) {
|
||||
if (isset($mysql_version) === true
|
||||
&& is_string($mysql_version) === true
|
||||
&& $this->compareVersions($curr_mysql_version_hist, $mysql_version) < 0
|
||||
) {
|
||||
throw new \Exception('MySQL version (history database) >= '.$mysql_version.' is required');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$curr_php_version = phpversion();
|
||||
$curr_mysql_version = db_get_value_sql('SELECT VERSION() AS version');
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.776-240318
|
||||
Version: 7.0NG.776-240326
|
||||
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.776-240318"
|
||||
pandora_version="7.0NG.776-240326"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -161,7 +161,7 @@ sub pandora_startup () {
|
|||
|
||||
# Start the task execution thread.
|
||||
start_server_thread(\&pandora_server_tasks, [\%Config]);
|
||||
|
||||
|
||||
# Start the policy queue thread.
|
||||
start_server_thread(\&pandora_process_policy_queue, [\%Config]) if ($Config{'__enterprise_enabled'} == 1 && $Config{'policy_manager'} == 1);
|
||||
|
||||
|
@ -381,51 +381,53 @@ sub pandora_agent_autoconfiguration_scheduled($) {
|
|||
$pa_config{'dbuser'}, $pa_config{'dbpass'});
|
||||
|
||||
while ($THRRUN == 1) {
|
||||
eval {{
|
||||
local $SIG{__DIE__};
|
||||
eval {
|
||||
if (pandora_is_master($pa_config) == 1) {
|
||||
local $SIG{__DIE__};
|
||||
|
||||
my @autoconfig = get_db_rows (
|
||||
$dbh,
|
||||
'SELECT *, DATE_FORMAT(DATE_ADD(periodically_time_from, INTERVAL ' . $pa_config->{'autoconfigure_agents_threshold'} . ' SECOND), "%H:%i:%S") AS time_minutes
|
||||
FROM tautoconfig WHERE executed = 0 AND type_execution LIKE "scheduled" AND disabled = 0'
|
||||
);
|
||||
my @autoconfig = get_db_rows (
|
||||
$dbh,
|
||||
'SELECT *, DATE_FORMAT(DATE_ADD(periodically_time_from, INTERVAL ' . $pa_config->{'autoconfigure_agents_threshold'} . ' SECOND), "%H:%i:%S") AS time_minutes
|
||||
FROM tautoconfig WHERE executed = 0 AND type_execution LIKE "scheduled" AND disabled = 0'
|
||||
);
|
||||
|
||||
# Get current time.
|
||||
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
|
||||
my $time = sprintf ("%.2d:%.2d:%.2d", $hour, $min, $sec);
|
||||
# Get current time.
|
||||
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
|
||||
my $time = sprintf ("%.2d:%.2d:%.2d", $hour, $min, $sec);
|
||||
|
||||
foreach my $conf (@autoconfig) {
|
||||
if (($conf->{'type_periodicity'} eq 'daily') ||
|
||||
($conf->{'type_periodicity'} eq 'monthly' && $conf->{'periodically_day_from'} eq $mday) ||
|
||||
($conf->{'type_periodicity'} eq 'weekly' && (($conf->{'sunday'} eq 1 && $wday eq 0) ||
|
||||
($conf->{'monday'} eq 1 && $wday eq 1) || ($conf->{'tuesday'} eq 1 && $wday eq 2) ||
|
||||
($conf->{'wednesday'} eq 1 && $wday eq 3) || ($conf->{'thursday'} eq 1 && $wday eq 4) ||
|
||||
($conf->{'friday'} eq 1 && $wday eq 5) || ($conf->{'saturday'} eq 1 && $wday eq 6)))
|
||||
) {
|
||||
if ($time ge $conf->{'periodically_time_from'} && $time le $conf->{'time_minutes'}) {
|
||||
# Update executed.
|
||||
db_process_update ($dbh, 'tautoconfig', {'executed' => 1}, {'id' => $conf->{'id'}});
|
||||
# Get agents.
|
||||
my @agents = get_db_rows(
|
||||
$dbh,
|
||||
'SELECT id_agente, alias, id_grupo, id_os, os_version, direccion, nombre AS agent_name FROM tagente
|
||||
WHERE `disabled` = 0'
|
||||
);
|
||||
foreach my $conf (@autoconfig) {
|
||||
if (($conf->{'type_periodicity'} eq 'daily') ||
|
||||
($conf->{'type_periodicity'} eq 'monthly' && $conf->{'periodically_day_from'} eq $mday) ||
|
||||
($conf->{'type_periodicity'} eq 'weekly' && (($conf->{'sunday'} eq 1 && $wday eq 0) ||
|
||||
($conf->{'monday'} eq 1 && $wday eq 1) || ($conf->{'tuesday'} eq 1 && $wday eq 2) ||
|
||||
($conf->{'wednesday'} eq 1 && $wday eq 3) || ($conf->{'thursday'} eq 1 && $wday eq 4) ||
|
||||
($conf->{'friday'} eq 1 && $wday eq 5) || ($conf->{'saturday'} eq 1 && $wday eq 6)))
|
||||
) {
|
||||
if ($time ge $conf->{'periodically_time_from'} && $time le $conf->{'time_minutes'}) {
|
||||
# Update executed.
|
||||
db_process_update ($dbh, 'tautoconfig', {'executed' => 1}, {'id' => $conf->{'id'}});
|
||||
# Get agents.
|
||||
my @agents = get_db_rows(
|
||||
$dbh,
|
||||
'SELECT id_agente, alias, id_grupo, id_os, os_version, direccion, nombre AS agent_name FROM tagente
|
||||
WHERE `disabled` = 0'
|
||||
);
|
||||
|
||||
foreach my $agent (@agents) {
|
||||
# Check if the agent matches the rules.
|
||||
my $match = enterprise_hook('autoconf_evaluate_rules', [$pa_config, $dbh, $agent, $conf->{'id'}, $agent->{'id_agente'}, 1]);
|
||||
if (defined($match) && $match > 0) {
|
||||
enterprise_hook('autoconf_execute_actions', [$pa_config, $dbh, $agent->{'id_agente'}, $agent, $conf->{'id'}]);
|
||||
foreach my $agent (@agents) {
|
||||
# Check if the agent matches the rules.
|
||||
my $match = enterprise_hook('autoconf_evaluate_rules', [$pa_config, $dbh, $agent, $conf->{'id'}, $agent->{'id_agente'}, 1]);
|
||||
if (defined($match) && $match > 0) {
|
||||
enterprise_hook('autoconf_execute_actions', [$pa_config, $dbh, $agent->{'id_agente'}, $agent, $conf->{'id'}]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Update executed.
|
||||
db_process_update ($dbh, 'tautoconfig', {'executed' => 0}, {'id' => $conf->{'id'}});
|
||||
# Update executed.
|
||||
db_process_update ($dbh, 'tautoconfig', {'executed' => 0}, {'id' => $conf->{'id'}});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}};
|
||||
};
|
||||
|
||||
sleep ($pa_config->{'autoconfigure_agents_threshold'});
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.776";
|
||||
my $pandora_build = "240318";
|
||||
my $pandora_build = "240326";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.776";
|
||||
my $pandora_build = "240318";
|
||||
my $pandora_build = "240326";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
|
@ -24,6 +24,7 @@ use POSIX qw(setsid strftime);
|
|||
use POSIX;
|
||||
use HTML::Entities;
|
||||
use Encode;
|
||||
use Encode::MIME::Header;
|
||||
use Socket qw(inet_ntoa inet_aton);
|
||||
use Sys::Syslog;
|
||||
use Scalar::Util qw(looks_like_number);
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.776
|
||||
%define release 240318
|
||||
%define release 240326
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.776"
|
||||
PI_BUILD="240318"
|
||||
PI_BUILD="240326"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
|
|
@ -38,7 +38,7 @@ use PandoraFMS::Config;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.776 Build 240318";
|
||||
my $version = "7.0NG.776 Build 240326";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.776 Build 240318";
|
||||
my $version = "7.0NG.776 Build 240326";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
@ -1228,11 +1228,11 @@ sub param_error ($$) {
|
|||
}
|
||||
|
||||
###############################################################################
|
||||
# Print a 'not exists' error and exit the program.
|
||||
# Print a 'does not exist' error and exit the program.
|
||||
###############################################################################
|
||||
sub notexists_error ($$) {
|
||||
print (STDERR "[ERROR] Error: The $_[0] '$_[1]' not exists.\n\n");
|
||||
logger( $conf, "($progname) [ERROR] Error: The $_[0] '$_[1]' not exists.", 10);
|
||||
print (STDERR "[ERROR] Error: The $_[0] '$_[1]' does not exist.\n\n");
|
||||
logger( $conf, "($progname) [ERROR] Error: The $_[0] '$_[1]' does not exist.", 10);
|
||||
exit 1;
|
||||
}
|
||||
|
||||
|
@ -3459,6 +3459,10 @@ sub cli_agent_update() {
|
|||
$new_value = $id_parent;
|
||||
}
|
||||
elsif($field eq 'agent_name') {
|
||||
if (!$new_value) {
|
||||
print_log "[ERROR] Agent name cannot be empty\n\n";
|
||||
exit;
|
||||
}
|
||||
my $agent_exists = get_agent_id($dbh,$new_value);
|
||||
non_exist_check($agent_exists,'agent',$new_value);
|
||||
$field = 'nombre';
|
||||
|
@ -4104,7 +4108,7 @@ sub cli_exec_from_file() {
|
|||
elsif($c == 3) {
|
||||
$file = $opt;
|
||||
if(!(-e $file)) {
|
||||
print_log "[ERROR] File '$file' not exists or cannot be opened\n\n";
|
||||
print_log "[ERROR] File '$file' does not exist or cannot be opened\n\n";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
@ -4952,7 +4956,7 @@ sub cli_validate_alert() {
|
|||
if (defined $use_alias and $use_alias eq 'use_alias') {
|
||||
my @id_agents = get_agent_ids_from_alias($dbh,$agent_id);
|
||||
if(!@id_agents) {
|
||||
print (STDERR "[ERROR] Error: The agent '$agent_id' not exists.\n\n");
|
||||
print (STDERR "[ERROR] Error: The agent '$agent_id' does not exist.\n\n");
|
||||
}
|
||||
|
||||
foreach my $id (@id_agents) {
|
||||
|
@ -5946,7 +5950,7 @@ sub cli_get_bad_conf_files() {
|
|||
$missings++;
|
||||
}
|
||||
elsif ($result == -1) {
|
||||
print_log "[WARN] File not exists /conf/".$file."\n\n";
|
||||
print_log "[WARN] File does not exist /conf/".$file."\n\n";
|
||||
$bad_files++;
|
||||
last;
|
||||
}
|
||||
|
|
|
@ -1,83 +1,115 @@
|
|||
#!/bin/bash
|
||||
# DNS Plugin Pandora FMS Server plugin
|
||||
# (c) Antonio Delgado, Sancho Lerena 2010
|
||||
|
||||
# Hint: Use this DNS servers as reference:
|
||||
# Google: 8.8.8.8
|
||||
# Telefonica: 194.179.1.101
|
||||
|
||||
function help {
|
||||
echo -e "DNS Plugin for Pandora FMS Plugin server. http://pandorafms.com"
|
||||
echo " "
|
||||
echo "This plugin is used to check if a specific domain return a specific IP "
|
||||
echo -e "address, and to check how time (milisecs) takes the DNS to answer. \n"
|
||||
echo -e "Syntax:"
|
||||
echo -e "\t\t-d domain to check"
|
||||
echo -e "\t\t-i IP address to check with domain"
|
||||
echo -e "\t\t-s DNS Server to check"
|
||||
echo -e "\t\t-t Do a DNS time response check instead DNS resolve test"
|
||||
echo -e "Samples:"
|
||||
echo " ./dns_plugin.sh -d artica.es -i 69.163.176.17 -s 8.8.8.8"
|
||||
echo " ./dns_plugin.sh -d artica.es -t -s 8.8.8.8"
|
||||
echo ""
|
||||
exit
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
help
|
||||
fi
|
||||
|
||||
TIMEOUT_CHECK=0
|
||||
DOMAIN_CHECK=""
|
||||
# Default variables
|
||||
TIMEOUT_DURATION=15
|
||||
IP_CHECK=""
|
||||
DNS_CHECK=""
|
||||
DOMAIN_CHECK=""
|
||||
TIME_CHECK=0
|
||||
|
||||
# Main parsing code
|
||||
while getopts ":htd:i:s:" optname
|
||||
do
|
||||
case "$optname" in
|
||||
"h")
|
||||
help
|
||||
;;
|
||||
"d")
|
||||
DOMAIN_CHECK=$OPTARG
|
||||
;;
|
||||
"t")
|
||||
TIMEOUT_CHECK=1
|
||||
;;
|
||||
"i")
|
||||
# Regular expression to validate IP address
|
||||
IP_REGEX="^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$"
|
||||
|
||||
# Function to display help with command-line options
|
||||
function show_help {
|
||||
echo "DNS Plugin for Pandora FMS Plugin server. http://pandorafms.com"
|
||||
echo " "
|
||||
echo "This plugin is used to check if a specific domain returns a specific IP address,"
|
||||
echo "and to check how much time (in milliseconds) it takes the DNS to answer."
|
||||
echo " "
|
||||
echo "Syntax:"
|
||||
echo " -d domain to check"
|
||||
echo " -i IP address to check with the domain"
|
||||
echo " -s DNS Server to check"
|
||||
echo " -t Do a DNS time response check instead of a DNS resolve test"
|
||||
echo " "
|
||||
echo "Samples:"
|
||||
echo " ./dns_plugin.sh -d example.com -i 192.168.1.1 -s 8.8.8.8"
|
||||
echo " ./dns_plugin.sh -d example.com -t -s 8.8.8.8"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to perform DNS query and get IP addresses
|
||||
function do_dns_query {
|
||||
results=$(timeout "${TIMEOUT_DURATION}s" dig "@$DNS_CHECK" +nocmd "$DOMAIN_CHECK" +multiline +answer A)
|
||||
echo "$results"
|
||||
}
|
||||
|
||||
# Command-line argument processing with getopts
|
||||
while getopts ":htd:i:s:" opt; do
|
||||
case "$opt" in
|
||||
d)
|
||||
DOMAIN_CHECK=$OPTARG
|
||||
;;
|
||||
i)
|
||||
# Validate the provided IP address
|
||||
if [[ $OPTARG =~ $IP_REGEX ]]; then
|
||||
IP_CHECK=$OPTARG
|
||||
;;
|
||||
"s")
|
||||
else
|
||||
echo "The provided IP address is incorrect: $OPTARG" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
s)
|
||||
# Validate the DNS server IP address
|
||||
if [[ $OPTARG =~ $IP_REGEX ]]; then
|
||||
DNS_CHECK=$OPTARG
|
||||
;;
|
||||
|
||||
?)
|
||||
help
|
||||
;;
|
||||
default)
|
||||
help
|
||||
;;
|
||||
|
||||
else
|
||||
echo "The provided DNS server IP address is incorrect: $OPTARG" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
t)
|
||||
TIME_CHECK=1
|
||||
;;
|
||||
?)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$DNS_CHECK" ]
|
||||
then
|
||||
help
|
||||
# Check if all necessary values are provided
|
||||
if [ -z "$DOMAIN_CHECK" ] || ([ -z "$IP_CHECK" ] && [ $TIME_CHECK -eq 0 ]) || [ -z "$DNS_CHECK" ]; then
|
||||
echo "Missing or incomplete arguments." >&2
|
||||
echo "-1"
|
||||
show_help
|
||||
fi
|
||||
|
||||
# Check if time response check should be performed
|
||||
if [ $TIME_CHECK -eq 1 ]; then
|
||||
results=$(do_dns_query)
|
||||
RETURN_TIME=$(echo "$results" | awk '/Query time:/ {print $4}')
|
||||
echo "$RETURN_TIME"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
results=`dig @$DNS_CHECK +nocmd $DOMAIN_CHECK +multiline +noall +answer A`
|
||||
targets=`echo "$results"| awk '{print $5}'`
|
||||
# Check if IP address check should be performed
|
||||
if [ -n "$IP_CHECK" ]; then
|
||||
results=$(do_dns_query)
|
||||
targets=$(echo "$results" | awk '{print $5}')
|
||||
|
||||
for x in $targets; do
|
||||
found=0
|
||||
for x in $targets; do
|
||||
if [ "$x" == "$IP_CHECK" ]; then
|
||||
echo 1
|
||||
exit 0
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ "$found" -eq 0 ]; then
|
||||
echo "0"
|
||||
else
|
||||
echo "1"
|
||||
fi
|
||||
else
|
||||
# Show error if IP to check is not specified
|
||||
echo "No IP to check was specified for the domain: $DOMAIN_CHECK" >&2
|
||||
echo "-1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 0
|
||||
exit 0
|
||||
|
||||
|
|
|
@ -798,6 +798,33 @@ abstract class VisualConsoleItem<Props extends ItemProps> {
|
|||
return prevProps !== newProps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare object.
|
||||
* @param previousObject Object 1.
|
||||
* @param currentObject Object 2.
|
||||
* @return Returns true if these are equal.
|
||||
*/
|
||||
public compareObjects(
|
||||
previousObject: Record<string, any>,
|
||||
currentObject: Record<string, any>
|
||||
): boolean {
|
||||
for (let key in previousObject) {
|
||||
if (key === "ratio") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (currentObject.hasOwnProperty(key)) {
|
||||
if (previousObject[key] !== currentObject[key]) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* To recreate or update the HTMLElement which represents the item into the DOM.
|
||||
* @param prevProps If exists it will be used to only perform DOM updates instead of a full replace.
|
||||
|
@ -816,13 +843,11 @@ abstract class VisualConsoleItem<Props extends ItemProps> {
|
|||
this.elementRef.style.minHeight = "max-content";
|
||||
}
|
||||
|
||||
if (
|
||||
prevProps.type == ItemType.LINE_ITEM ||
|
||||
prevProps.type == ItemType.NETWORK_LINK
|
||||
) {
|
||||
if (this.compareObjects(prevProps, this.props) === true) {
|
||||
this.updateDomElement(this.childElementRef);
|
||||
}
|
||||
}
|
||||
|
||||
// Move box.
|
||||
if (!prevProps || this.positionChanged(prevProps, this.props)) {
|
||||
this.moveElement(this.props.x, this.props.y);
|
||||
|
|
Loading…
Reference in New Issue