Merge branch 'develop' into 'ent-10865-15337-15360-Macros-Custom-Fields-no-funcionan-en-modulos-SNMP'

# Conflicts:
#   pandora_console/extras/mr/64.sql
This commit is contained in:
Alejandro Campos 2023-05-17 07:41:02 +00:00
commit 097dc8ef12
460 changed files with 38617 additions and 33236 deletions
extras
pandora_agents
pandora_console

@ -1,73 +0,0 @@
Name: xprobe2
Version: 0.3
Release: 2
Summary: Tool to detect OS remotely by TCP/IP fingerprinting
License: GPLv2
Group: Network/Security
URL: http://xprobe.sourceforge.net/
Packager: Sancho Lerena <slerena@gmail.com>
Source: http://dl.sf.net/xprobe/xprobe2-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}
Provides: %{name}-%{version}
Requires: libpcap
BuildRequires: gcc-c++ libpcap-devel
#This is for SUSE build service, to avoid enforce FHS paths
#!BuildIgnore: post-build-checks
%description
Xprobe is an alternative to some tools which are heavily dependent upon the
usage of the TCP protocol for remote active operating system fingerprinting.
Xprobe I combines various remote active operating system fingerprinting methods
using the ICMP protocol, which were discovered during the "ICMP Usage in
Scanning" research project, into a simple, fast, efficient and a powerful way
to detect an underlying operating system a targeted host is using.
Xprobe2 is an active operating system fingerprinting tool with a different
approach to operating system fingerprinting. Xprobe2 rely on fuzzy signature
matching, probabilistic guesses, multiple matches simultaneously, and a
signature database.
%prep
%setup
%build
./configure --with-libpcap-libraries=/usr/lib --with-libpcap-includes=/usr/include/pcap --mandir=%{_mandir} --disable-schemas-install
make
%install
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%post
ln -s /usr/local/bin/xprobe2 /usr/bin
%preun
%postun
%files
%defattr(755,root,root)
/usr/local/etc
/usr/local/etc/xprobe2
%defattr(644,root,root)
%doc AUTHORS CHANGELOG COPYING CREDITS README TODO docs/*
%doc /usr/share/man/man1/xprobe2.1.gz
/usr/local/etc/xprobe2/xprobe2.conf
%defattr(755,root,root)
/usr/local/bin/xprobe2
%changelog
* Fri Dec 18 2009 Sancho Lerena <slerena@gmail.com> 3.2-2
- A lot of changes to be ready for all RPM plattforms available on build.opensuse.org
* Tue Dec 08 2009 Sancho Lerena <slerena@gmail.com> 3.2-1
- First RPM Spec for SUSE Systems, based on CentOS Spec from Dag Wieers

@ -1,62 +0,0 @@
Get the original xprobe2-0.3 from Sourceforge:
http://downloads.sourceforge.net/project/xprobe/xprobe2/Xprobe2%200.3/xprobe2-0.3.tar.gz
Uncompress it under, for example /tmp/xprobe2-0.3 directory
Copy the diff file at /tmp
Execute the patch command:
patch -p1 < ../xprobe2-0.3.diff.patch
This should look like:
patching file CHANGELOG
patching file config.status
patching file configure
patching file libs-external/USI++/src/config.h
patching file libs-external/USI++/src/config.log
patching file libs-external/USI++/src/config.status
patching file libs-external/USI++/src/ip.cc
patching file libs-external/USI++/src/Makefile
patching file libs-external/USI++/src/misc.cc
patching file libs-external/USI++/src/usi++/arp.h
patching file libs-external/USI++/src/usi++/config.h
patching file libs-external/USI++/src/usi++/datalink.h
patching file libs-external/USI++/src/usi++/icmp.h
patching file libs-external/USI++/src/usi++/if.h
patching file libs-external/USI++/src/usi++/ip.h
patching file libs-external/USI++/src/usi++/Layer2.h
patching file libs-external/USI++/src/usi++/README
patching file libs-external/USI++/src/usi++/RX.h
patching file libs-external/USI++/src/usi++/tcp.h
patching file libs-external/USI++/src/usi++/TX.h
patching file libs-external/USI++/src/usi++/TX_IP.h
patching file libs-external/USI++/src/usi++/udp.h
patching file libs-external/USI++/src/usi++/usi++
patching file libs-external/USI++/src/usi++/usi++.h
patching file libs-external/USI++/src/usi++/usi-structs.h
patching file libs-external/USI++/usi++/config.h
patching file libs-external/USI++/usi++/tcp.h
patching file Makefile
patching file src/config.h
patching file src/defines.h
patching file src/Makefile
patching file src/xplib/Makefile
patching file src/xpmodules/alive_probe/Makefile
patching file src/xpmodules/alive_probe/portscanner/Makefile
patching file src/xpmodules/alive_probe/ttl_calc/Makefile
patching file src/xpmodules/Makefile
patching file src/xpmodules/os_probe/icmp_addrmask/Makefile
patching file src/xpmodules/os_probe/icmp_echo_id/Makefile
patching file src/xpmodules/os_probe/icmp_inforeq/Makefile
patching file src/xpmodules/os_probe/icmp_port_unreach/Makefile
patching file src/xpmodules/os_probe/icmp_timestamp/Makefile
patching file src/xpmodules/os_probe/Makefile
patching file src/xpmodules/os_probe/smb/Makefile
patching file src/xpmodules/os_probe/snmp/Makefile
patching file src/xpmodules/os_probe/tcp_handshake/Makefile
patching file src/xpmodules/os_probe/tcp_rst/Makefile
Your patched code is now ready to be used.

@ -82,6 +82,10 @@ check_root_permissions () {
## Main
echo "Starting PandoraFMS External DB deployment EL8 ver. $S_VERSION"
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 grep is not detected on the system, grep 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"

@ -89,6 +89,9 @@ check_root_permissions () {
## Main
echo "Starting PandoraFMS External DB deployment Ubuntu 22.04 ver. $S_VERSION"
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 grep is not detected on the system, grep tool is needed for installation.'; exit -1 ;fi
# Ubuntu Version
if [ ! "$(grep -Ei 'Ubuntu' /etc/lsb-release)" ]; then
printf "\n ${red}Error this is not a Ubuntu system, this installer is compatible with Ubuntu systems only${reset}\n"

@ -1,12 +1,19 @@
#!/bin/bash
#export PANDORA_SERVER_IP='newdemos.artica.es' && curl -sSL http://firefly.artica.es/projects/pandora_deploy_agent.sh | bash
#export PANDORA_SERVER_IP='newdemos.artica.es' && curl -sSL http://firefly.pandorafms.com/projects/pandora_deploy_agent.sh | bash
# define variables
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022052301'
S_VERSION='2023050901'
LOGFILE="/tmp/pandora-agent-deploy-$(date +%F).log"
#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"
@ -49,7 +56,7 @@ check_cmd_status () {
}
check_repo_connection () {
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
execute_cmd "ping -c 2 firefly.pandorafms.com" "Checking Community repo"
}
check_root_permissions () {
@ -73,7 +80,7 @@ cd unix && ./pandora_agent_installer --install
install_autodiscover () {
local arch=$1
wget http://firefly.artica.es/projects/autodiscover-linux.zip
wget http://firefly.pandorafms.com/projects/autodiscover-linux.zip
unzip autodiscover-linux.zip
chmod +x $arch/autodiscover
mv -f $arch/autodiscover /etc/pandora/plugins/autodiscover
@ -84,6 +91,9 @@ echo "Starting PandoraFMS Agent deployment ver. $S_VERSION"
execute_cmd "[ $PANDORA_SERVER_IP ]" 'Check Server IP Address' 'Please define env variable PANDORA_SERVER_IP'
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
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
@ -148,7 +158,7 @@ if [[ $OS_RELEASE =~ 'rhel' ]] || [[ $OS_RELEASE =~ 'fedora' ]]; then
echo -e "${cyan}Installing agent dependencies...${reset}" ${green}OK${reset}
# Insatall pandora agent
$package_manager_cmd install -y http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm &>> $LOGFILE
$package_manager_cmd install -y http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm &>> $LOGFILE
echo -en "${cyan}Installing Pandora FMS agent...${reset}"
check_cmd_status 'Error installing Pandora FMS agent'
[[ $PANDORA_AGENT_SSL ]] && execute_cmd "$package_manager_cmd install -y perl-IO-Socket-SSL" "Installing SSL libraries for encrypted connection"
@ -158,7 +168,7 @@ fi
if [[ $OS_RELEASE == 'debian' ]]; then
execute_cmd "apt update" 'Updating repos'
execute_cmd "apt install -y perl wget curl unzip procps python3 python3-pip" 'Installing agent dependencies'
execute_cmd 'wget http://firefly.artica.es/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz' 'Downloading Pandora FMS agent package'
execute_cmd 'wget http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz' 'Downloading Pandora FMS agent package'
execute_cmd 'install_tarball pandorafms_agent_linux-7.0NG.tar.gz' 'Installing Pandora FMS agent'
[[ $PANDORA_AGENT_SSL ]] && execute_cmd 'apt install -y libio-socket-ssl-perl' "Installing SSL libraries for encrypted connection"
cd $HOME/pandora_deploy_tmp
@ -204,4 +214,4 @@ execute_cmd '/etc/init.d/pandora_agent_daemon restart' 'Starting Pandora Agent'
cd
execute_cmd 'rm -rf $HOME/pandora_deploy_tmp' 'Cleaning up temporay files'
echo -e "${green}PandoraFMS Agent installed and running, sending data to: $PANDORA_SERVER_IP${reset}"
echo -e "${green}PandoraFMS Agent installed and running, sending data to: $PANDORA_SERVER_IP${reset}"

@ -11,7 +11,7 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='202304111'
S_VERSION='2023050901'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
@ -31,6 +31,13 @@ LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
[ "$PANDORA_LTS" ] || PANDORA_LTS=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"
@ -85,7 +92,7 @@ check_pre_pandora () {
}
check_repo_connection () {
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
execute_cmd "ping -c 2 firefly.pandorafms.com" "Checking Community repo"
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
}
@ -105,6 +112,12 @@ check_root_permissions () {
## Main
echo "Starting PandoraFMS Community deployment 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 -i centos /etc/redhat-release)" ]; then
printf "${red}Error this is not a Centos Base system, this installer is compatible with Centos systems only${reset}\n"
@ -118,7 +131,7 @@ os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9])"$/\1/p' /etc/os-release) -eq '7' ]
[[ $(sed -nr 's/VERSION_ID+=\s*"([0-9])"$/\1/p' /etc/os-release) -eq '7' ]]
check_cmd_status 'Error OS version, Centos 7 is expected'
# initialice logfile
@ -273,7 +286,7 @@ console_dependencies=" \
libzstd \
openldap-clients \
chromium \
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
http://firefly.pandorafms.com/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
execute_cmd "yum install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
# Server dependencies
@ -300,9 +313,9 @@ server_dependencies=" \
bind-utils \
whois \
cpanminus \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
https://firefly.artica.es/centos7/pandorawmic-1.0.0-1.x86_64.rpm"
http://firefly.pandorafms.com/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.pandorafms.com/centos7/wmic-1.4-1.el7.x86_64.rpm \
https://firefly.pandorafms.com/centos7/pandorawmic-1.0.0-1.x86_64.rpm"
execute_cmd "yum install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
# install cpan dependencies
@ -311,13 +324,13 @@ execute_cmd "cpanm -i Thread::Semaphore" "Installing Thread::Semaphore"
# SDK VMware perl dependencies
vmware_dependencies=" \
http://firefly.artica.es/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm \
http://firefly.pandorafms.com/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm \
perl-JSON \
perl-Archive-Zip \
openssl-devel \
perl-Crypt-CBC \
perl-Digest-SHA \
http://firefly.artica.es/centos7/perl-Crypt-OpenSSL-AES-0.02-1.el7.x86_64.rpm"
http://firefly.pandorafms.com/centos7/perl-Crypt-OpenSSL-AES-0.02-1.el7.x86_64.rpm"
execute_cmd "yum install -y $vmware_dependencies" "Installing SDK VMware perl dependencies"
# Instant client Oracle
@ -328,7 +341,7 @@ execute_cmd "yum install -y $oracle_dependencies || yum reinstall -y $oracle_dep
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.pandorafms.com/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
perl(Sys::Syslog) \
perl(DBI) \
@ -451,20 +464,20 @@ export MYSQL_PWD=$DBPASS
#Define packages
#Define packages
if [ "$PANDORA_LTS" -eq '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_agent_linux-7.0NG.noarch.rpm"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_agent_linux-7.0NG.noarch.rpm"
elif [ "$PANDORA_LTS" -ne '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
fi
# if beta is enable
if [ "$PANDORA_BETA" -eq '1' ] ; then
PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_console-latest.noarch.rpm"
PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.noarch.rpm"
PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
@ -617,7 +630,16 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
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
@ -704,7 +726,7 @@ cat > /etc/issue.net << EOF_banner
Welcome to Pandora FMS appliance on CentOS
------------------------------------------
Go to Public http://$ipplublic/pandora_console$to to login web console
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
@ -725,4 +747,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

@ -14,7 +14,7 @@ PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='202304111'
S_VERSION='2023050901'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
@ -35,10 +35,18 @@ LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
[ "$PANDORA_LTS" ] || PANDORA_LTS=1
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
#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
@ -90,7 +98,7 @@ check_pre_pandora () {
}
check_repo_connection () {
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
execute_cmd "ping -c 2 firefly.pandorafms.com" "Checking Community repo"
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
}
@ -121,6 +129,12 @@ installing_docker () {
## 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"
@ -129,8 +143,8 @@ fi
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ]
check_cmd_status 'Error OS version, RHEL/Almalinux/Centos/Rockylinux 8+ is expected'
[[ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ]]
check_cmd_status 'Error OS version, RHEL/Almalinux/Centos/Rockylinux 8.x is expected'
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
@ -327,11 +341,11 @@ console_dependencies=" \
mod_ssl \
libzstd \
openldap-clients \
http://firefly.artica.es/centos8/chromium-110.0.5481.177-1.el7.x86_64.rpm \
http://firefly.artica.es/centos8/chromium-common-110.0.5481.177-1.el7.x86_64.rpm \
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
http://firefly.pandorafms.com/centos8/chromium-110.0.5481.177-1.el7.x86_64.rpm \
http://firefly.pandorafms.com/centos8/chromium-common-110.0.5481.177-1.el7.x86_64.rpm \
http://firefly.pandorafms.com/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
http://firefly.pandorafms.com/centos7/wmic-1.4-1.el7.x86_64.rpm \
http://firefly.pandorafms.com/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
execute_cmd "dnf install -y $console_dependencies" "Installing Pandora FMS Console dependencies"
# Server dependencies
@ -357,9 +371,9 @@ server_dependencies=" \
java \
bind-utils \
whois \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
https://firefly.artica.es/centos8/pandorawmic-1.0.0-1.x86_64.rpm"
http://firefly.pandorafms.com/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.pandorafms.com/centos7/wmic-1.4-1.el7.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"
# SDK VMware perl dependencies
@ -373,8 +387,8 @@ vmware_dependencies=" \
perl-Math-Random-ISAAC \
perl-JSON \
perl-Crypt-SSLeay \
http://firefly.artica.es/centos8/perl-Crypt-OpenSSL-AES-0.02-1.el8.x86_64.rpm \
http://firefly.artica.es/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm"
http://firefly.pandorafms.com/centos8/perl-Crypt-OpenSSL-AES-0.02-1.el8.x86_64.rpm \
http://firefly.pandorafms.com/centos8/VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.rpm"
execute_cmd "dnf install -y $vmware_dependencies" "Installing SDK VMware perl dependencies"
# Instant client Oracle
@ -385,7 +399,7 @@ execute_cmd "dnf install -y $oracle_dependencies" "Installing Oracle Instant cli
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.pandorafms.com/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
perl(Sys::Syslog) \
perl(DBI) \
@ -507,20 +521,20 @@ export MYSQL_PWD=$DBPASS
#Define packages
if [ "$PANDORA_LTS" -eq '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_agent_linux-7.0NG.noarch.rpm"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/LTS/pandorafms_agent_linux-7.0NG.noarch.rpm"
elif [ "$PANDORA_LTS" -ne '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
fi
# if beta is enable
if [ "$PANDORA_BETA" -eq '1' ] ; then
PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_console-latest.noarch.rpm"
PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.noarch.rpm"
PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/RHEL_CentOS/pandorafms_agent_linux-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
@ -654,6 +668,9 @@ EOF_ENV
# 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
@ -680,7 +697,17 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
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
@ -767,7 +794,7 @@ cat > /etc/issue.net << EOF_banner
Welcome to Pandora FMS appliance on RHEL/Rocky Linux 8
------------------------------------------
Go to Public http://$ipplublic/pandora_console$to to login web console
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
@ -788,4 +815,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

@ -17,7 +17,7 @@ PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
WORKDIR=/opt/pandora/deploy
S_VERSION='202304181'
S_VERSION='2023050901'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
rm -f $LOGFILE &> /dev/null # remove last log before start
@ -37,6 +37,12 @@ rm -f $LOGFILE &> /dev/null # remove last log before start
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
[ "$PANDORA_LTS" ] || PANDORA_LTS=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"
@ -90,7 +96,7 @@ check_pre_pandora () {
}
check_repo_connection () {
execute_cmd "ping -c 2 firefly.artica.es" "Checking Community repo"
execute_cmd "ping -c 2 firefly.pandorafms.com" "Checking Community repo"
execute_cmd "ping -c 2 support.pandorafms.com" "Checking Enterprise repo"
}
@ -125,6 +131,12 @@ installing_docker () {
## Main
echo "Starting PandoraFMS Community deployment Ubuntu 22.04 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
# Ubuntu Version
if [ ! "$(grep -Ei 'Ubuntu' /etc/lsb-release)" ]; then
printf "\n ${red}Error this is not a Ubuntu system, this installer is compatible with Ubuntu systems only${reset}\n"
@ -133,7 +145,7 @@ fi
echo -en "${cyan}Check Ubuntu Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9][0-9].[0-9][0-9])"$/\1/p' /etc/os-release) == "22.04" ]
[[ $(sed -nr 's/VERSION_ID+=\s*"([0-9][0-9].[0-9][0-9])"$/\1/p' /etc/os-release) == "22.04" ]]
check_cmd_status 'Error OS version, Ubuntu 22.04 is expected'
#Detect OS
@ -281,8 +293,8 @@ execute_cmd "apt install -y $server_dependencies" "Installing Pandora FMS Server
execute_cmd "installing_docker" "Installing Docker for debug"
# wmic and pandorawmic
execute_cmd "curl -O https://firefly.artica.es/pandorafms/utils/bin/wmic" "Downloading wmic"
execute_cmd "curl -O https://firefly.artica.es/pandorafms/utils/bin/pandorawmic" "Downloading pandorawmic"
execute_cmd "curl -O https://firefly.pandorafms.com/pandorafms/utils/bin/wmic" "Downloading wmic"
execute_cmd "curl -O https://firefly.pandorafms.com/pandorafms/utils/bin/pandorawmic" "Downloading pandorawmic"
echo -en "${cyan}Installing wmic and pandorawmic...${reset}"
chmod +x pandorawmic wmic &>> "$LOGFILE" && \
cp -a wmic /usr/bin/ &>> "$LOGFILE" && \
@ -293,7 +305,7 @@ check_cmd_status "Error Installing phanromjs"
echo -en "${cyan}Installing phantomjs...${reset}"
export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
export OPENSSL_CONF=/etc/ssl
curl -LSs -O "https://firefly.artica.es/pandorafms/utils/$PHANTOM_JS.tar.bz2" &>> "$LOGFILE" && \
curl -LSs -O "https://firefly.pandorafms.com/pandorafms/utils/$PHANTOM_JS.tar.bz2" &>> "$LOGFILE" && \
tar xvjf "$PHANTOM_JS.tar.bz2" &>> "$LOGFILE" && \
mv $PHANTOM_JS/bin/phantomjs /usr/bin &>> "$LOGFILE" && \
/usr/bin/phantomjs --version &>> "$LOGFILE"
@ -323,7 +335,7 @@ vmware_dependencies="\
libsoap-lite-perl \
libmodule-build-perl"
execute_cmd "apt install -y $vmware_dependencies" "Installing VMware SDK dependencies"
execute_cmd "wget https://firefly.artica.es/pandorafms/utils/VMware-vSphere-Perl-SDK-7.0.0-16453907.x86_64.tar.gz" "Downloading VMware SDK"
execute_cmd "wget https://firefly.pandorafms.com/pandorafms/utils/VMware-vSphere-Perl-SDK-7.0.0-16453907.x86_64.tar.gz" "Downloading VMware SDK"
echo -en "${cyan}Installing VMware SDK...${reset}"
tar xvzf VMware-vSphere-Perl-SDK-7.0.0-16453907.x86_64.tar.gz &>> "$LOGFILE"
cd vmware-vsphere-cli-distrib/ &>> "$LOGFILE"
@ -458,19 +470,19 @@ execute_cmd "systemctl restart mysql" "Configuring and restarting database engin
#Define packages
if [ "$PANDORA_LTS" -eq '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/LTS/pandorafms_server-7.0NG.tar.gz"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/LTS/pandorafms_console-7.0NG.tar.gz"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/LTS/pandorafms_agent_linux-7.0NG.tar.gz"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_server-7.0NG.tar.gz"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_console-7.0NG.tar.gz"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/LTS/pandorafms_agent_linux-7.0NG.tar.gz"
elif [ "$PANDORA_LTS" -ne '1' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/pandorafms_server-7.0NG.tar.gz"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/pandorafms_console-7.0NG.tar.gz"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz"
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_server-7.0NG.tar.gz"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_console-7.0NG.tar.gz"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz"
fi
if [ "$PANDORA_BETA" -eq '1' ] ; then
PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest_x86_64.tar.gz"
PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_console-latest.tar.gz"
PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz"
PANDORA_SERVER_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_server-latest_x86_64.tar.gz"
PANDORA_CONSOLE_PACKAGE="http://firefly.pandorafms.com/pandora_enterprise_nightlies/pandorafms_console-latest.tar.gz"
PANDORA_AGENT_PACKAGE="http://firefly.pandorafms.com/pandorafms/latest/Tarball/pandorafms_agent_linux-7.0NG.tar.gz"
fi
# Downloading Pandora Packages
@ -681,7 +693,16 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
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
@ -778,7 +799,7 @@ cat > /etc/issue.net << EOF_banner
Welcome to Pandora FMS appliance on Ubuntu
------------------------------------------
Go to Public http://$ipplublic/pandora_console$to to login web console
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
@ -799,4 +820,4 @@ execute_cmd "rm -rf $WORKDIR" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

@ -125,7 +125,6 @@ RUN dnf install -y --setopt=tsflags=nodocs \
bind-utils \
whois \
libnsl \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
https://firefly.artica.es/centos8/pandorawmic-1.0.0-1.x86_64.rpm ; dnf clean all
@ -136,7 +135,7 @@ RUN dnf install -y http://firefly.artica.es/centos8/perl-Crypt-OpenSSL-AES-0.02-
# Instant client Oracle
RUN dnf install -y https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm
# Install IPAM dependencies
RUN dnf install -y http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm "perl(NetAddr::IP)" "perl(Sys::Syslog)" "perl(DBI)" "perl(XML::Simple)" "perl(Geo::IP)" "perl(IO::Socket::INET6)" "perl(XML::Twig)" "perl(DBD::mysql)" --setopt=tsflags=nodocs
RUN dnf install -y "perl(NetAddr::IP)" "perl(Sys::Syslog)" "perl(DBI)" "perl(XML::Simple)" "perl(Geo::IP)" "perl(IO::Socket::INET6)" "perl(XML::Twig)" "perl(DBD::mysql)" --setopt=tsflags=nodocs
EXPOSE 80 443 41121 162/udp

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

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

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

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

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

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

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

@ -2018,7 +2018,7 @@ sub pandora_agent_run () {
$Xml = $xml_header . $Xml . "</agent_data>";
# Save XML data file
my $temp_file = $Conf{'temporal'} . '/' . $Conf{'agent_name'} . '.' . time () . '.data';
my $temp_file = $Conf{'temporal'} . '/' . md5($Conf{'agent_name'}) . '.' . time () . '.data';
if (-l $temp_file && !unlink($temp_file)) {
error ("File '$temp_file' already exists as a symlink and could not be removed: $!");
return 1;

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

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

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

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

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

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

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

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

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.770-230426
Version: 7.0NG.771-230517
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.770-230426"
pandora_version="7.0NG.771-230517"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

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

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

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

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

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

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

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

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

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

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

@ -1022,8 +1022,8 @@ my $Sem = undef;
# Semaphore used to control the number of threads
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.770';
use constant AGENT_BUILD => '230426';
use constant AGENT_VERSION => '7.0NG.771';
use constant AGENT_BUILD => '230517';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;
@ -4377,7 +4377,7 @@ while (1) {
$Xml = $xml_header . $Xml . "</agent_data>";
# Save XML data file
my $temp_file = $Conf{'temporal'} . '/' . $Conf{'agent_name'} . '.' . time () . '.data';
my $temp_file = $Conf{'temporal'} . '/' . md5($Conf{'agent_name'}) . '.' . time () . '.data';
error ("File '$temp_file' already exists as a symlink and could not be removed: $!") if (-l $temp_file && !unlink($temp_file));
open (TEMP_FILE, "> $temp_file") || error ("Could not write XML data file: $!");
print TEMP_FILE $Xml;

@ -3,8 +3,8 @@
#
%global __os_install_post %{nil}
%define name pandorafms_agent_linux
%define version 7.0NG.770
%define release 230426
%define version 7.0NG.771
%define release 230517
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

@ -3,8 +3,8 @@
#
%global __os_install_post %{nil}
%define name pandorafms_agent_linux
%define version 7.0NG.770
%define release 230426
%define version 7.0NG.771
%define release 230517
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

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

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

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

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.770 Build 230426")
#define PANDORA_VERSION ("7.0NG.771 Build 230517")
string pandora_path;
string pandora_dir;

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.770(Build 230426))"
VALUE "ProductVersion", "(7.0NG.771(Build 230517))"
VALUE "FileVersion", "1.0.0.0"
END
END

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.770-230426
Version: 7.0NG.771-230517
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.770-230426"
pandora_version="7.0NG.771-230517"
package_pear=0
package_pandora=1

@ -9,14 +9,14 @@
],
"config": {
"platform": {
"php": "8.0.0"
"php": "8.0.2"
}
},
"require": {
"mpdf/mpdf": "^8.0.15",
"swiftmailer/swiftmailer": "^6.0",
"amphp/parallel-functions": "^1.0",
"chrome-php/chrome": "^1.7.1",
"chrome-php/chrome": "^1.8.1",
"artica/phpchartjs": "^1.0",
"tinymce/tinymce": "^6.4"
},

File diff suppressed because it is too large Load Diff

@ -1,5 +1,8 @@
START TRANSACTION;
ALTER TABLE tpolicy_group_agents CONVERT TO CHARACTER SET UTF8MB4;
ALTER TABLE tevent_sound CONVERT TO CHARACTER SET UTF8MB4;
ALTER TABLE tsesion_filter CONVERT TO CHARACTER SET UTF8MB4;
CREATE TABLE IF NOT EXISTS `tsesion_filter` (
`id_filter` INT NOT NULL AUTO_INCREMENT,
`id_name` TEXT NULL,
@ -11,4 +14,30 @@ CREATE TABLE IF NOT EXISTS `tsesion_filter` (
PRIMARY KEY (`id_filter`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
CREATE TABLE IF NOT EXISTS `tsesion_filter_log_viewer` (
`id_filter` INT NOT NULL AUTO_INCREMENT,
`id_name` TEXT NULL,
`id_group_filter` TEXT NULL,
`id_search_mode` INT NULL,
`order` VARCHAR(45) NULL,
`search` VARCHAR(255) NULL,
`group_id` INT NULL,
`date_range` TINYINT NULL,
`start_date_defined` VARCHAR(45) NULL,
`start_date_time` VARCHAR(45) NULL,
`start_date_date` VARCHAR(45) NULL,
`start_date_date_range` VARCHAR(45) NULL,
`start_date_time_range` VARCHAR(45) NULL,
`end_date_date_range` VARCHAR(45) NULL,
`end_date_time_range` VARCHAR(45) NULL,
`agent` VARCHAR(255) NULL,
`source` VARCHAR(255) NULL,
`display_mode` INT NULL,
`capture_model` INT NULL,
`graph_type` INT NULL,
PRIMARY KEY (`id_filter`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
ALTER TABLE `talert_template_module_actions` ADD COLUMN `recovered` TINYINT NOT NULL DEFAULT 0;
COMMIT;

@ -2,4 +2,8 @@ START TRANSACTION;
ALTER TABLE `tnetwork_component` ADD COLUMN `target_ip` VARCHAR(255) NOT NULL DEFAULT '';
UPDATE tnetwork_component
SET module_enabled=1
WHERE name='Cisco&#x20;_nameOID_&#x20;power&#x20;state';
COMMIT;

Binary file not shown.

@ -202,22 +202,58 @@ if (!empty($news)) {
$output_news = '<div id="news_board" class="new">';
foreach ($news as $article) {
$image = false;
$default = false;
if ($article['text'] == '&amp;lt;p&#x20;style=&quot;text-align:&#x20;center;&#x20;font-size:&#x20;13px;&quot;&amp;gt;Hello,&#x20;congratulations,&#x20;if&#x20;you&apos;ve&#x20;arrived&#x20;here&#x20;you&#x20;already&#x20;have&#x20;an&#x20;operational&#x20;monitoring&#x20;console.&#x20;Remember&#x20;that&#x20;our&#x20;forums&#x20;and&#x20;online&#x20;documentation&#x20;are&#x20;available&#x20;24x7&#x20;to&#x20;get&#x20;you&#x20;out&#x20;of&#x20;any&#x20;trouble.&#x20;You&#x20;can&#x20;replace&#x20;this&#x20;message&#x20;with&#x20;a&#x20;personalized&#x20;one&#x20;at&#x20;Admin&#x20;tools&#x20;-&amp;amp;gt;&#x20;Site&#x20;news.&amp;lt;/p&amp;gt;&#x20;') {
$image = true;
$article['subject'] = __('Welcome to Pandora FMS Console');
$default = true;
}
$text_bbdd = io_safe_output($article['text']);
$text = html_entity_decode($text_bbdd);
$output_news .= '<span class="green_title">'.$article['subject'].'</span>';
$output_news .= '<div class="new-board">';
$output_news .= '<div class="new-board-header">';
$output_news .= '<span class="new-board-title">'.$article['subject'].'</span>';
$output_news .= '<span class="new-board-author">'.__('By').' '.$article['author'].' '.ui_print_timestamp($article['timestamp'], true).'</span>';
$output_news .= '</div>';
$output_news .= '<div class="new content">';
$output_news .= '<p>'.__('by').' <b>'.$article['author'].'</b> <i>'.ui_print_timestamp($article['timestamp'], true).'</i> '.$comparation_suffix.'</p>';
if ($image) {
$output_news .= '<center><img src="./images/welcome_image.png" alt="img colabora con nosotros - Support" width="191" height="207"></center>';
if ($default) {
$output_news .= '<div class="default-new">';
$output_news .= '<div class="default-image-new">';
$output_news .= '<img src="./images/welcome_image.svg" alt="img colabora con nosotros - Support">';
$output_news .= '</div><div class="default-text-new">';
$output_news .= '
<p>'.__('Welcome to our monitoring tool so grand,').'
<br>'.__('Where data insights are at your command.').'
<br>'.__('Sales, marketing, operations too,').'
<br>'.__("Customer support, we've got you.").'
</p>
<p>'.__('Our interface is user-friendly,').'
<br>'.__("Customize your dashboard, it's easy.").'
<br>'.__('Set up alerts and gain insights so keen,').'
<br>'.__("Optimize your data, like you've never seen.").'
</p>
<p>'.__('Unleash its power now, and join the pro league,').'
<br>'.__('Unlock the potential of your data to intrigue.').'
<br>'.__('Monitoring made simple, efficient and fun,').'
<br>'.__('Discover a whole new way to get things done.').'
</p>
<p>'.__('And take control of your IT once and for all.').'</p>
<span>'.__('You can replace this message with a personalized one at Admin tools -> Site news.').'</span>
';
$output_news .= '</div></div>';
} else {
$output_news .= nl2br($text);
}
$output_news .= nl2br($text);
$output_news .= '</div>';
$output_news .= '</div></div>';
}
$output_news .= '</div>';

@ -38,6 +38,11 @@ ui_require_css_file('maintenance');
<br>
<?php
html_print_image(
'images/pandora_tinylogo.png',
false,
['class' => 'responsive flex margn']
);
html_print_image(
'images/maintenance.png',
false,

@ -38,6 +38,11 @@ ui_require_css_file('maintenance');
<br>
<?php
html_print_image(
'images/pandora_tinylogo.png',
false,
['class' => 'responsive flex margn']
);
html_print_image(
'images/maintenance.png',
false,

@ -50,6 +50,11 @@ $data['check_php_version'] = phpversion();
<br>
<?php
html_print_image(
'images/pandora_tinylogo.png',
false,
['class' => 'responsive flex margn']
);
html_print_image(
'images/maintenance.png',
false,

@ -0,0 +1,71 @@
<?php
/**
* Agents deploy view.
*
* @category Agents deploy
* @package Pandora FMS
* @subpackage Opensource
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Begin.
global $config;
require_once $config['homedir'].'/include/class/AgentDeployWizard.class.php';
$ajaxPage = 'godmode/agentes/agent_deploy';
// Control call flow.
try {
// User access and validation is being processed on class constructor.
$adw = new AgentDeployWizard($ajaxPage);
} catch (Exception $e) {
if (is_ajax()) {
echo json_encode(['error' => '[AgentDeployWizard]'.$e->getMessage() ]);
exit;
} else {
echo '[AgentDeployWizard]'.$e->getMessage();
}
// Stop this execution, but continue 'globally'.
return;
}
// AJAX controller.
if (is_ajax()) {
$method = get_parameter('method');
if (method_exists($adw, $method) === true) {
if ($adw->ajaxMethod($method) === true) {
$adw->{$method}();
} else {
$adw->error('Unavailable method.');
}
} else {
$adw->error('Method not found. ['.$method.']');
}
// Stop any execution.
exit;
} else {
// Run.
$adw->run();
}

@ -229,7 +229,7 @@ if ($enable_agent > 0) {
);
}
if ($disable_agent > 0) {
if ($disable_agent > 0 && $agent_to_delete === 0) {
$result = db_process_sql_update('tagente', ['disabled' => 1], ['id_agente' => $disable_agent]);
$alias = io_safe_output(agents_get_alias($disable_agent));
@ -419,6 +419,9 @@ ui_toggle(
'filter-datatable-main box-flat white_table_graph fixed_filter_bar'
);
require_once 'godmode/agentes/agent_deploy.php';
// Data table.
$selected = true;
$selectNameUp = false;
@ -762,7 +765,9 @@ if ($agents !== false) {
}
if (empty($agent['alias']) === true) {
$agent['alias'] = $agent['nombre'];
$agent['alias'] = io_safe_output($agent['nombre']);
} else {
$agent['alias'] = io_safe_output($agent['alias']);
}
$additionalDataAgentName = [];
@ -1025,23 +1030,35 @@ if ($agents !== false) {
if ((bool) check_acl($config['id_user'], 0, 'AW') === true) {
// Create agent button.
echo '<form method="post" action="index.php?sec=gagente&amp;sec2=godmode/agentes/configurar_agente">';
echo '<form id="create-agent" method="post" action="index.php?sec=gagente&amp;sec2=godmode/agentes/configurar_agente"></form>';
$buttons = html_print_button(
__('Create agent'),
'crt-2',
false,
'',
[
'icon' => 'next',
'onClick' => "document.getElementById('create-agent').submit();",
],
true
).html_print_button(
__('Deploy agent'),
'modal_deploy_agent',
false,
'',
[],
true
);
html_print_action_buttons(
html_print_submit_button(
__('Create agent'),
'crt-2',
false,
[ 'icon' => 'next' ],
true
),
$buttons,
[
'type' => 'data_table',
'class' => 'fixed_action_buttons',
'right_content' => $tablePagination,
]
);
echo '</form>';
}
?>

@ -769,7 +769,17 @@ if ($modules !== false) {
}
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
$data[0] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'">';
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$linked = policies_is_module_linked($module['id_agente_modulo']);
$adopt = policies_is_module_adopt($module['id_agente_modulo']);
if ($linked !== false && $adopt === false) {
$data[0] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'&id_policy_module='.$module['id_policy_module'].'">';
} else {
$data[0] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'">';
}
} else {
$data[0] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'">';
}
}
if ((bool) $module['disabled'] === true) {
@ -872,6 +882,10 @@ if ($modules !== false) {
$title
);
if (strlen($module['ip_target']) !== 0) {
$title .= '<br/>IP: '.$module['ip_target'];
}
// This module is initialized ? (has real data).
if ($status === STATUS_MODULE_NO_DATA) {
$data[2] .= html_print_image(
@ -1091,7 +1105,7 @@ $createModuleTable->data[0][] = html_print_label_input_block(
false,
'',
false,
'max-width:300px;'
'width:250px;'
)
);

@ -524,6 +524,11 @@ $tableBasicThresholds->data['switch_warning_threshold'][0] .= html_print_div(
true
);
// CHANGE TO CRITICAL STATUS
$tableBasicThresholds->data['caption_warning_time'][0] .= __('Change to critical status after');
$tableBasicThresholds->data['warning_time'][0] .= html_print_input_text('warning_time', $warning_time, '', 5, 15, true);
$tableBasicThresholds->data['warning_time'][1] .= '&nbsp;&nbsp;<b>'.__('intervals in warning status.').'</b>';
// CRITICAL THRESHOLD.
$tableBasicThresholds->rowclass['caption_critical_threshold'] = 'field_half_width pdd_t_10px';
$tableBasicThresholds->rowclass['critical_threshold'] = 'field_half_width';
@ -607,7 +612,7 @@ $tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text(
$classdisabledBecauseInPolicy
);
$table_simple->rowstyle['thresholds_table'] = 'margin-top: 15px;height: 340px;width: 100%';
$table_simple->rowstyle['thresholds_table'] = 'margin-top: 15px;height: 400px;width: 100%';
$table_simple->cellclass['thresholds_table'][0] = 'table_section half_section_left';
$table_simple->data['thresholds_table'][0] = html_print_table($tableBasicThresholds, true);
if (modules_is_string_type($id_module_type) === false || (bool) $edit === true) {
@ -1938,7 +1943,7 @@ $(document).ready (function () {
var thisLabel = $(this).attr('for');
$('#'+thisLabel).prop('checked', true);
$('#'+thisLabel).siblings().prop('checked', false);
if ($('#radius-percentage_warning').prop('checked') === true || $('#radius-percentage_critical').prop('checked') === true) {
$("#svg_dinamic").hide();
} else {

@ -390,14 +390,16 @@ $data[1] = html_print_input_text(
$data[2] = __('Auth password').ui_print_help_tip(__('The pass length must be eight character minimum.'), true);
$data[3] = html_print_input_password(
'snmp3_auth_pass',
'',
$snmp3_auth_pass,
'',
15,
60,
true,
$disabledBecauseInPolicy,
false,
$largeclassdisabledBecauseInPolicy
$largeclassdisabledBecauseInPolicy,
'off',
true
);
$data[3] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_mmen', true);
if ($snmp_version != 3) {
@ -412,14 +414,16 @@ $data[1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_pr
$data[2] = __('Privacy pass').ui_print_help_tip(__('The pass length must be eight character minimum.'), true);
$data[3] = html_print_input_password(
'snmp3_privacy_pass',
'',
$snmp3_privacy_pass,
'',
15,
60,
true,
$disabledBecauseInPolicy,
false,
$largeclassdisabledBecauseInPolicy
$largeclassdisabledBecauseInPolicy,
'off',
true
);
if ($snmp_version != 3) {
@ -731,12 +735,6 @@ $(document).ready (function () {
$("#text-custom_ip_target").hide();
}
});
// Add input password values with js to hide it in browser inspector.
$('#password-snmp3_auth_pass').val('<?php echo $snmp3_auth_pass; ?>');
$('#password-snmp3_privacy_pass').val('<?php echo $snmp3_privacy_pass; ?>');
observerInputPassword();
});

@ -103,7 +103,19 @@ if (!empty($macros)) {
}
if ($m_hide) {
$data[1] = html_print_input_password($m['macro'], '', '', 100, 1024, true);
$data[1] = html_print_input_password(
$m['macro'],
io_output_password($m['value']),
'',
100,
1024,
true,
false,
false,
'',
'off',
true
);
array_push($password_fields, $m);
} else {
$data[1] = html_print_input_text(

@ -103,6 +103,9 @@ if (isset($id_agent_module) === true && $id_agent_module !== 0) {
if ($id_policy_module > 0) {
$module = enterprise_hook('policies_get_module', [$id_policy_module]);
$plugin_parameter = $module['plugin_parameter'];
} else if ($id_agent_module > 0) {
$module = modules_get_agentmodule($id_agent_module);
$plugin_parameter = $module['plugin_parameter'];
} else {
$plugin_parameter = '';
}

@ -148,7 +148,7 @@ $data[2] = html_print_label_input_block(
__('Password'),
html_print_input_password(
'plugin_pass',
'',
$plugin_pass,
'',
15,
60,

@ -1576,14 +1576,12 @@ function insert_downtime_agent($id_downtime, $user_groups_ad)
} else {
// If is selected 'Any', get all the agents.
if (count($agents) === 1 && (int) $agents[0] === -2) {
if ($recursion === true) {
$filter_group = groups_get_children_ids(
$filter_group,
false,
true,
'AW'
);
};
$filter_group = groups_get_children_ids(
$filter_group,
false,
true,
'AW'
);
$agents = db_get_all_rows_filter(
'tagente',

@ -98,16 +98,15 @@ if (count($groups) > 0) {
echo '<div id="tactic_view">';
echo '<table style="width: 100%;">';
echo '<tr>';
echo '<td class="tactical_group_left_column">';
echo '<div class="tactical_group_left_columns">';
echo '<div class="tactical_group_left_column">';
$table_col1 = new stdClass();
$table_col1->class = 'no-class';
$table_col1->data = [];
$table_col1->rowclass[] = '';
$table_col1->headstyle[0] = 'text-align:center;';
$table_col1->width = '100%';
$table_col1->data[0][0] = groups_get_heat_map_agents($id_groups, 450, 100);
$table_col1->data[0][0] = groups_get_heat_map_agents($id_groups, 330, 100);
$table_col1->data[1][0] = tactical_groups_get_agents_and_monitoring($id_groups);
$distribution_by_so = '<table cellpadding=0 cellspacing=0 class="databox pies graph-distribution-so" width=100%><tr><td style="width:50%;">';
@ -130,8 +129,8 @@ ui_toggle(
false
);
echo '</td>';
echo '<td class="tactical_group_left_column">';
echo '</div>';
echo '<div class="tactical_group_left_column">';
$table_col2 = new stdClass();
$table_col2->class = 'no-class';
$table_col2->data = [];
@ -158,8 +157,9 @@ ui_toggle(
false,
false
);
echo '</td>';
echo '<td class="tactical_group_right_column">';
echo '</div>';
echo '</div>';
echo '<div class="tactical_group_right_column">';
$table_col3 = new stdClass();
$table_col3->class = 'no-class';
$table_col3->data = [];
@ -179,7 +179,7 @@ try {
__('Alias'),
__('Status'),
__('Alerts'),
__('Ultimo contacto remoto'),
__('Last remote contact'),
];
// Load datatables user interface.
@ -216,9 +216,8 @@ ui_toggle(
false,
false
);
echo '</td>';
echo '</tr>';
echo '</table>';
echo '</div>';
echo '</div>';
echo '<div id="modal-info-agent"></div>'
?>

@ -74,8 +74,8 @@ if ($id) {
// Header Buttons.
$buttons = [];
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit">'.html_print_image('images/logs@svg.svg', true, ['title' => __('Filter list')]).'</a>'];
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit_form">'.html_print_image('images/plus@svg.svg', true, ['title' => __('Add filter')]).'</a>'];
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit">'.html_print_image('images/logs@svg.svg', true, ['title' => __('Filter list'), 'main_menu_icon' => true]).'</a>'];
$buttons[] = ['text' => '<a href="index.php?sec=netf&sec2=godmode/netflow/nf_edit_form">'.html_print_image('images/plus@svg.svg', true, ['title' => __('Add filter'), 'main_menu_icon' => true]).'</a>'];
// Header Caption.
$headerTitle = ($id) ? __('Update filter') : __('Create filter');

@ -208,7 +208,7 @@ $table->data[2][] = html_print_label_input_block(
if ($action === 'new') {
$backgroundColorInput = html_print_input_color(
'background_color',
'white',
'#FFFFFF',
'background_color',
false,
true

@ -389,9 +389,9 @@ if (empty($create) === false || empty($view) === false) {
$disabled = ($locked === true) ? 'readonly="readonly"' : '';
if (empty($create) === true) {
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&update_plugin='.$plugin_id.'&pure='.$config['pure'];
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab='.$tab.'&update_plugin='.$plugin_id.'&pure='.$config['pure'];
} else {
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create_plugin=1&pure='.$config['pure'];
$formAction = 'index.php?sec=gservers&sec2=godmode/servers/plugin&tab='.$tab.'&create_plugin=1&pure='.$config['pure'];
}
$formPluginType = [
@ -403,7 +403,7 @@ if (empty($create) === false || empty($view) === false) {
$table = new stdClass();
$table->id = 'table-form';
$table->class = 'filter-table-adv';
$table->class = 'databox filter-table-adv';
$table->style = [];
$table->data['plugin_name_captions'] = $data;
$table->size[0] = '50%';
@ -625,22 +625,14 @@ if (empty($create) === false || empty($view) === false) {
$datam = [];
$buttons = '';
if (!$locked) {
$datam[0] = '<a id="add_macro_btn" href="javascript:;">'.'<span class="bolder">'.__('Add macro').'</span>'.'&nbsp;'.html_print_image(
'images/add.png',
true,
['class' => 'invert_filter']
).'</a>';
$datam[0] .= '<div id="next_macro" class="invisible">'.$i.'</div>';
$datam[0] .= '<div id="next_row" class="invisible">'.$next_name_number.'</div>';
$buttons = html_print_anchor(
[
'id' => 'add_macro_btn',
'href' => 'javascript:;',
'content' => html_print_image(
'content' => '<span>'.__('Add macro').'</span>'.html_print_image(
'images/plus@svg.svg',
true,
['class' => 'invert_filter']
['class' => 'invert_filter main_menu_icon']
),
],
true
@ -660,10 +652,10 @@ if (empty($create) === false || empty($view) === false) {
'id' => 'delete_macro_button',
'style' => $delete_macro_style,
'href' => 'javascript:;',
'content' => html_print_image(
'content' => '<span>'.__('Remove macro').'</span>'.html_print_image(
'images/delete.svg',
true,
['class' => 'main_menu_icon invert_filter']
['class' => 'main_menu_icon invert_filter mrgn_right_10px']
),
],
true
@ -1097,7 +1089,7 @@ if (empty($create) === false || empty($view) === false) {
}
if ($management_allowed === true) {
echo '<form name="plugin" method="POST" action="index.php?sec=gservers&sec2=godmode/servers/plugin&tab=$tab&create=1&pure='.$config['pure'].'">';
echo '<form name="plugin" method="POST" action="index.php?sec=gservers&sec2=godmode/servers/plugin&tab='.$tab.'&create=1&pure='.$config['pure'].'">';
html_print_action_buttons(
html_print_submit_button(
@ -1207,7 +1199,7 @@ ui_require_javascript_file('pandora_modules');
delete_macro_form('table-form-plugin_');
update_preview();
}
$('div#delete_macro_button>a').click(delete_macro_click_event);
$('a#delete_macro_button').click(delete_macro_click_event);
update_preview();

@ -73,6 +73,8 @@ $table->headstyle[8] = 'text-align:right;width: 120px;';
$table->titleclass = 'tabletitle';
$table->titlestyle = 'text-transform:uppercase;';
$table->style[6] = 'display: flex;align-items: center;';
$table->head = [];
$table->head[0] = __('Name');
$table->head[1] = __('Status');
@ -166,8 +168,16 @@ foreach ($servers as $server) {
}
$data[6] = $server['threads'].' : '.$server['queued_modules'];
if ($server['queued_modules'] > 200) {
$data[6] .= clippy_context_help('server_queued_modules');
if ($server['queued_modules'] > 500) {
$data[6] .= '&nbsp;&nbsp;<div class="inline"><a onclick="show_dialog();" >'.html_print_image(
'images/info-warning.svg',
true,
[
'width' => 16,
'heght' => 16,
'class' => 'pulsate clickable',
]
).'</a></div>';
}
$data[7] = ui_print_timestamp($server['keepalive'], true);
@ -306,3 +316,26 @@ if ($tiny) {
} else {
html_print_table($table);
}
?>
<script type="text/javascript">
function show_dialog() {
confirmDialog({
title: "<?php echo __('Excesive Queued.'); ?>",
message: "<?php echo __('You have too many items in the processing queue. This can happen if your server is overloaded and/or improperly configured. This could be something temporary, or a bottleneck. If it is associated with a delay in monitoring, with modules going to unknown, try increasing the number of threads.'); ?>",
strOKButton: "<?php echo __('Close'); ?>",
hideCancelButton: true,
size: 675,
});
}
function runIt() {
$('.pulsate').animate({
opacity: '1'
}, 1000);
$('.pulsate').animate({
opacity: '0.6'
}, 1000, runIt);
}
runIt();
</script>

@ -147,6 +147,10 @@ if ((isset($_GET['form_add'])) || (isset($_GET['form_edit']))) {
$result = db_get_row('tnews', 'id_news', $id_news);
if ($result['text'] == '&amp;lt;p&#x20;style=&quot;text-align:&#x20;center;&#x20;font-size:&#x20;13px;&quot;&amp;gt;Hello,&#x20;congratulations,&#x20;if&#x20;you&apos;ve&#x20;arrived&#x20;here&#x20;you&#x20;already&#x20;have&#x20;an&#x20;operational&#x20;monitoring&#x20;console.&#x20;Remember&#x20;that&#x20;our&#x20;forums&#x20;and&#x20;online&#x20;documentation&#x20;are&#x20;available&#x20;24x7&#x20;to&#x20;get&#x20;you&#x20;out&#x20;of&#x20;any&#x20;trouble.&#x20;You&#x20;can&#x20;replace&#x20;this&#x20;message&#x20;with&#x20;a&#x20;personalized&#x20;one&#x20;at&#x20;Admin&#x20;tools&#x20;-&amp;amp;gt;&#x20;Site&#x20;news.&amp;lt;/p&amp;gt;&#x20;') {
header('Location: '.ui_get_full_url('index.php?sec=gextensions&sec2=godmode/setup/news'));
}
if ($result !== false) {
$subject = $result['subject'];
$text = $result['text'];
@ -355,42 +359,37 @@ if ((isset($_GET['form_add'])) || (isset($_GET['form_edit']))) {
echo '</tr></thead>';
$color = 1;
foreach ($rows as $row) {
if ($color == 1) {
$tdcolor = 'datos';
$color = 0;
if ($row['text'] == '&amp;lt;p&#x20;style=&quot;text-align:&#x20;center;&#x20;font-size:&#x20;13px;&quot;&amp;gt;Hello,&#x20;congratulations,&#x20;if&#x20;you&apos;ve&#x20;arrived&#x20;here&#x20;you&#x20;already&#x20;have&#x20;an&#x20;operational&#x20;monitoring&#x20;console.&#x20;Remember&#x20;that&#x20;our&#x20;forums&#x20;and&#x20;online&#x20;documentation&#x20;are&#x20;available&#x20;24x7&#x20;to&#x20;get&#x20;you&#x20;out&#x20;of&#x20;any&#x20;trouble.&#x20;You&#x20;can&#x20;replace&#x20;this&#x20;message&#x20;with&#x20;a&#x20;personalized&#x20;one&#x20;at&#x20;Admin&#x20;tools&#x20;-&amp;amp;gt;&#x20;Site&#x20;news.&amp;lt;/p&amp;gt;&#x20;') {
echo '<tr><td><b>'.__('Welcome to Pandora FMS Console').'</b></td>';
} else {
$tdcolor = 'datos2';
$color = 1;
echo "<tr><td><b><a href='index.php?sec=gsetup&sec2=godmode/setup/news&form_edit=1&id_news=".$row['id_news']."'>".$row['subject'].'</a></b></td>';
}
echo "<tr><td class='$tdcolor'><b><a href='index.php?sec=gsetup&sec2=godmode/setup/news&form_edit=1&id_news=".$row['id_news']."'>".$row['subject'].'</a></b></td>';
if ($row['modal']) {
echo "<td class='$tdcolor'>".__('Modal').'</b></td>';
echo '<td>'.__('Modal').'</b></td>';
} else {
echo "<td class='$tdcolor'>".__('Board').'</b></td>';
echo '<td>'.__('Board').'</b></td>';
}
echo "<td class='$tdcolor'>".$row['author'].'</b></td>';
echo '<td>'.$row['author'].'</b></td>';
$utimestamp = time_w_fixed_tz($row['timestamp']);
echo "<td class='$tdcolor'>".date($config['date_format'], $utimestamp).'</b></td>';
echo '<td>'.date($config['date_format'], $utimestamp).'</b></td>';
if ($row['expire']) {
$expire_utimestamp = time_w_fixed_tz($row['expire_timestamp']);
$expire_in_secs = ($expire_utimestamp - $utimestamp);
if ($expire_in_secs <= 0) {
echo "<td class='$tdcolor'>".__('Expired').'</b></td>';
echo '<td>'.__('Expired').'</b></td>';
} else {
$expire_in = human_time_description_raw($expire_in_secs, false, 'large');
echo "<td class='$tdcolor'>".$expire_in.'</b></td>';
echo '<td>'.$expire_in.'</b></td>';
}
} else {
echo "<td class='$tdcolor'>".__('No').'</b></td>';
echo '<td>'.__('No').'</b></td>';
}
echo '<td class="'.$tdcolor.' table_action_buttons"><a href="index.php?sec=gsetup&sec2=godmode/setup/news&id_news='.$row['id_news'].'&borrar='.$row['id_news'].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/delete.svg', true, ['border' => '0', 'class' => 'invert_filter']).'</a></td></tr>';
echo '<td class="'.$tdcolor.' table_action_buttons"><a href="index.php?sec=gsetup&sec2=godmode/setup/news&id_news='.$row['id_news'].'&borrar='.$row['id_news'].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/delete.svg', true, ['border' => '0', 'class' => 'invert_filter main_menu_icon']).'</a></td></tr>';
}
echo '</table>';

@ -132,13 +132,13 @@ $table_remote->data['ehorus_req_timeout'] = $row;
// Test.
$row = [];
$test_start = '<span id="test-ehorus-spinner" class="invisible">&nbsp;'.html_print_image('images/spinner.gif', true).'</span>';
$test_start .= '<span id="test-ehorus-success" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_normal.png', true).'</span>';
$test_start .= '<span id="test-ehorus-failure" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_critical.png', true).'</span>';
$test_start .= '<span id="test-ehorus-success" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_normal.png', true).'&nbsp;'.__('Connection its OK').'</span>';
$test_start .= '<span id="test-ehorus-failure" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_critical.png', true).'&nbsp;'.__('Connection failed').'</span>';
$test_start .= '&nbsp;<span id="test-ehorus-message" class="invisible"></span>';
$row['ehorus_test'] = html_print_label_input_block(
__('Test'),
__('Test connection'),
html_print_button(
__('Start'),
__('Test'),
'test-ehorus',
false,
'',

@ -704,7 +704,7 @@ $table->data[$i][] = html_print_label_input_block(
)
);
$table->data[$i][] = html_print_label_input_block(
$table->data[$i++][] = html_print_label_input_block(
__('Check conexion interval'),
html_print_input_number(
[
@ -715,6 +715,21 @@ $table->data[$i][] = html_print_label_input_block(
)
);
$help_tip = ui_print_help_tip(
__('If there are any &#x22;In process&#x22; events with a specific Extra ID and a New event with that Extra ID is received, it will be created as &#x22;In process&#x22; instead.'),
true
);
$table->data[$i][] = html_print_label_input_block(
__('Keep In process status for new events with extra ID').$help_tip,
html_print_checkbox_switch(
'keep_in_process_status_extra_id',
1,
$config['keep_in_process_status_extra_id'],
true
)
);
echo '<form class="max_floating_element_size" id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&amp;section=general&amp;pure='.$config['pure'].'">';
echo '<fieldset class="margin-bottom-10">';

@ -649,9 +649,9 @@ $table_cr_settings->data[3] = $row;
// Test.
$row = [];
$row['control'] = __('Test');
$row['control'] = __('Test connection');
$row['control'] .= html_print_button(
__('Start'),
__('Test'),
'test-integria',
false,
'',
@ -662,8 +662,8 @@ $row['control'] .= html_print_button(
true
);
$row['control'] .= '<span id="test-integria-spinner" class="invisible">&nbsp;'.html_print_image('images/spinner.gif', true).'</span>';
$row['control'] .= '<span id="test-integria-success" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_normal.png', true).'</span>';
$row['control'] .= '<span id="test-integria-failure" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_critical.png', true).'</span>';
$row['control'] .= '<span id="test-integria-success" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_normal.png', true).'&nbsp;'.__('Connection its OK').'</span>';
$row['control'] .= '<span id="test-integria-failure" class="invisible">&nbsp;'.html_print_image('images/status_sets/default/severity_critical.png', true).'&nbsp;'.__('Connection failed').'</span>';
$row['control'] .= '&nbsp;<span id="test-integria-message" class="invisible"></span>';
$table_remote->data['integria_test'] = $row;

@ -80,6 +80,30 @@ $t->data[1][] = html_print_label_input_block(
);
html_print_input_hidden('update_config', 1);
// Test.
$row = [];
$test_start = '<span id="test-gotty-spinner" class="invisible">&nbsp;'.html_print_image('images/spinner.gif', true).'</span>';
$test_start .= '&nbsp;<span id="test-gotty-message" class="invisible"></span>';
$row['gotty_test'] = html_print_label_input_block(
__('Test connection'),
html_print_button(
__('Test'),
'test-gotty',
false,
'handleTest()',
[
'icon' => 'cog',
'mode' => 'secondary mini',
'style' => 'width: 115px;',
],
true
).$test_start,
['div_class' => 'inline_flex row']
);
$t->data['gotty_test'] = $row;
html_print_table($t);
echo '</fieldset>';
@ -99,3 +123,73 @@ html_print_action_buttons(
);
echo '</form>';
echo '<script>';
echo 'var server_addr = "'.$_SERVER['SERVER_ADDR'].'";';
$handle_test_js = "var handleTest = function (event) {
var ws_proxy_url = $('input#text-ws_proxy_url').val();
var ws_port = $('input#text-ws_port').val();
var httpsEnabled = window.location.protocol == 'https' ? true : false;
if (ws_proxy_url == '') {
ws_url = (httpsEnabled ? 'wss://' : 'ws://') + window.location.host + ':' + ws_port;
} else {
ws_url = ws_proxy_url;
}
var showLoadingImage = function () {
$('#button-test-gotty').children('div').attr('class', 'subIcon cog rotation secondary mini');
}
var showSuccessImage = function () {
$('#button-test-gotty').children('div').attr('class', 'subIcon tick secondary mini');
}
var showFailureImage = function () {
$('#button-test-gotty').children('div').attr('class', 'subIcon fail secondary mini');
}
var hideMessage = function () {
$('span#test-gotty-message').hide();
}
var showMessage = function () {
$('span#test-gotty-message').show();
}
var changeTestMessage = function (message) {
$('span#test-gotty-message').text(message);
}
var errorMessage = '".__('WebService engine has not been started, please check documentation.')."';
hideMessage();
showLoadingImage();
var ws = new WebSocket(ws_url);
// Catch errors.
ws.onerror = () => {
showFailureImage();
changeTestMessage(errorMessage);
showMessage();
ws.close();
};
ws.onopen = () => {
showSuccessImage();
hideMessage();
ws.close();
};
ws.onclose = (event) => {
changeTestMessage(errorMessage);
hideLoadingImage();
showMessage();
};
}
$('#button-test-ehorus').click(handleTest);";
echo $handle_test_js;
echo '</script>';

@ -212,7 +212,8 @@ $filter['limit'] = (int) $config['block_size'];
// Statements for pagination.
$url = 'index.php?sec=gusuarios&sec2=godmode/tag/tag';
$total_tags = tags_get_tag_count($filter);
$offset_delete = ($offset >= ($total_tags - 1)) ? ($offset - $config['block_size']) : $offset;
$offset_delete = ($offset >= $total_tags ) ? ($offset - $config['block_size']) : 0;
$result = tags_search_tag(false, $filter);
// Filter form.

@ -54,6 +54,18 @@ if ($enterprise_include === true) {
enterprise_include_once('meta/include/functions_users_meta.php');
}
$homeScreenValues = [
HOME_SCREEN_DEFAULT => __('Default'),
HOME_SCREEN_VISUAL_CONSOLE => __('Visual console'),
HOME_SCREEN_EVENT_LIST => __('Event list'),
HOME_SCREEN_GROUP_VIEW => __('Group view'),
HOME_SCREEN_TACTICAL_VIEW => __('Tactical view'),
HOME_SCREEN_ALERT_DETAIL => __('Alert detail'),
HOME_SCREEN_EXTERNAL_LINK => __('External link'),
HOME_SCREEN_OTHER => __('Other'),
HOME_SCREEN_DASHBOARD => __('Dashboard'),
];
// This defines the working user. Beware with this, old code get confusses
// and operates with current logged user (dangerous).
$id = get_parameter('id', get_parameter('id_user', ''));
@ -79,92 +91,6 @@ if (is_ajax() === true) {
$delete_profile = (bool) get_parameter('delete_profile');
$get_user_profile = (bool) get_parameter('get_user_profile');
if ($delete_profile === true) {
$id2 = (string) get_parameter('id_user');
$id_up = (int) get_parameter('id_user_profile');
$perfilUser = db_get_row('tusuario_perfil', 'id_up', $id_up);
$id_perfil = $perfilUser['id_perfil'];
$perfil = db_get_row('tperfil', 'id_perfil', $id_perfil);
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
'Deleted profile for user '.io_safe_output($id2),
false,
false,
'The profile with id '.$id_perfil.' in the group '.$perfilUser['id_grupo']
);
$return = profile_delete_user_profile($id2, $id_up);
ui_print_result_message(
$return,
__('Successfully deleted'),
__('Could not be deleted')
);
$has_profile = db_get_row('tusuario_perfil', 'id_usuario', $id2);
$user_is_global_admin = users_is_admin($id2);
if ($has_profile === false && $user_is_global_admin === false) {
$result = delete_user($id2);
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__('Deleted user %s', io_safe_output($id_user))
);
}
ui_print_result_message(
$result,
__('Successfully deleted'),
__('There was a problem deleting the user')
);
// Delete the user in all the consoles.
if (is_metaconsole() === true) {
$servers = metaconsole_get_servers();
foreach ($servers as $server) {
// Connect to the remote console.
metaconsole_connect($server);
// Delete the user.
$result = delete_user($id_user);
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__('Deleted user %s from metaconsole', io_safe_output($id_user))
);
}
// Restore the db connection.
metaconsole_restore_db();
// Log to the metaconsole too.
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__(
'Deleted user %s from %s',
io_safe_input($id_user),
io_safe_input($server['server_name'])
)
);
}
ui_print_result_message(
$result,
__('Successfully deleted from %s', io_safe_input($server['server_name'])),
__('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
);
}
}
}
return;
}
if ($get_user_profile === true) {
$profile_id = (int) get_parameter('profile_id');
$group_id = (int) get_parameter('group_id', -1);
@ -296,7 +222,7 @@ if ((bool) $config['user_can_update_info'] === true) {
$view_mode = true;
}
$delete_profile = (is_ajax() === true) ? (bool) get_parameter('delete_profile') : false;
$delete_profile = (bool) get_parameter('delete_profile');
$new_user = (bool) get_parameter('new_user');
$create_user = (bool) get_parameter('create_user');
$add_profile = (bool) get_parameter('add_profile');
@ -414,6 +340,8 @@ if ($create_user === true) {
$values['data_section'] = get_parameter('data_section');
}
$values['section'] = $homeScreenValues[$values['section']];
if (enterprise_installed() === true) {
$values['force_change_pass'] = 1;
$values['last_pass_change'] = date('Y/m/d H:i:s', get_system_time());
@ -696,6 +624,8 @@ if ($update_user) {
$values['data_section'] = get_parameter('data_section');
}
$values['section'] = $homeScreenValues[$values['section']];
if (enterprise_installed() === true && is_metaconsole() === true) {
$values['metaconsole_access'] = get_parameter('metaconsole_access');
$values['metaconsole_agents_manager'] = get_parameter('metaconsole_agents_manager', '0');
@ -885,6 +815,89 @@ if ($update_user) {
$user_info = $values;
}
if ($delete_profile) {
$id2 = (string) get_parameter('id_user');
$id_up = (int) get_parameter('id_user_profile');
$perfilUser = db_get_row('tusuario_perfil', 'id_up', $id_up);
$id_perfil = $perfilUser['id_perfil'];
$perfil = db_get_row('tperfil', 'id_perfil', $id_perfil);
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
'Deleted profile for user '.io_safe_output($id2),
false,
false,
'The profile with id '.$id_perfil.' in the group '.$perfilUser['id_grupo']
);
$return = profile_delete_user_profile($id2, $id_up);
ui_print_result_message(
$return,
__('Successfully deleted'),
__('Could not be deleted')
);
$has_profile = db_get_row('tusuario_perfil', 'id_usuario', $id2);
$user_is_global_admin = users_is_admin($id2);
if ($has_profile === false && $user_is_global_admin === false) {
$result = delete_user($id2);
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__('Deleted user %s', io_safe_output($id_user))
);
}
ui_print_result_message(
$result,
__('Successfully deleted'),
__('There was a problem deleting the user')
);
// Delete the user in all the consoles.
if (is_metaconsole() === true) {
$servers = metaconsole_get_servers();
foreach ($servers as $server) {
// Connect to the remote console.
metaconsole_connect($server);
// Delete the user.
$result = delete_user($id_user);
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__('Deleted user %s from metaconsole', io_safe_output($id_user))
);
}
// Restore the db connection.
metaconsole_restore_db();
// Log to the metaconsole too.
if ($result === true) {
db_pandora_audit(
AUDIT_LOG_USER_MANAGEMENT,
__(
'Deleted user %s from %s',
io_safe_input($id_user),
io_safe_input($server['server_name'])
)
);
}
ui_print_result_message(
$result,
__('Successfully deleted from %s', io_safe_input($server['server_name'])),
__('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
);
}
}
}
}
if ((int) $status !== -1) {
ui_print_result_message(
$status,

@ -608,41 +608,41 @@ $userManagementTable->data['fields_blocksize_eventfilter'][1] = html_print_selec
false,
false
);
if (is_metaconsole() === false) {
// Home screen table.
$homeScreenTable = new stdClass();
$homeScreenTable->class = 'w100p full_section';
$homeScreenTable->id = 'home_screen_table';
$homeScreenTable->style = [];
$homeScreenTable->rowclass = [];
$homeScreenTable->data = [];
// Home screen.
$homeScreenTable->data['captions_homescreen'][0] = __('Home screen');
$homeScreenTable->colspan['captions_homescreen'][0] = 2;
$homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width';
$homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex';
$homeScreenTable->data['fields_homescreen'][0] = html_print_select(
$homeScreenValues,
'section',
io_safe_output($user_info['section']),
'show_data_section();',
'',
-1,
true,
false,
false
);
$homeScreenTable->data['fields_homescreen'][1] = html_print_div(
[
'class' => 'w100p',
'content' => $customHomeScreenDataField,
],
true
);
$userManagementTable->rowclass['homescreen_table'] = 'w100p';
$userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true);
}
// Home screen table.
$homeScreenTable = new stdClass();
$homeScreenTable->class = 'w100p full_section';
$homeScreenTable->id = 'home_screen_table';
$homeScreenTable->style = [];
$homeScreenTable->rowclass = [];
$homeScreenTable->data = [];
// Home screen.
$homeScreenTable->data['captions_homescreen'][0] = __('Home screen');
$homeScreenTable->colspan['captions_homescreen'][0] = 2;
$homeScreenTable->rowclass['captions_homescreen'] = 'field_half_width';
$homeScreenTable->rowclass['fields_homescreen'] = 'field_half_width flex';
$homeScreenTable->data['fields_homescreen'][0] = html_print_select(
$homeScreenValues,
'section',
array_search($user_info['section'], $homeScreenValues),
'show_data_section();',
'',
-1,
true,
false,
false
);
$homeScreenTable->data['fields_homescreen'][1] = html_print_div(
[
'class' => 'w100p',
'content' => $customHomeScreenDataField,
],
true
);
$userManagementTable->rowclass['homescreen_table'] = 'w100p';
$userManagementTable->data['homescreen_table'] = html_print_table($homeScreenTable, true);
if (is_metaconsole() === true && users_is_admin() === true) {
$userManagementTable->rowclass['search_custom1_looknfeel'] = 'field_half_width';

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="20px" viewBox="0 0 18 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>apple-grey@svg</title>
<desc>Created with Sketch.</desc>
<g id="Mockups" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Deploy-agents---1-Default" transform="translate(-1075.000000, -276.000000)" fill="#95A3BF">
<g id="Popup" transform="translate(640.000000, 90.000000)">
<g id="Content" transform="translate(0.000000, 13.000000)">
<g id="OS" transform="translate(20.000000, 133.000000)">
<g transform="translate(400.000000, 26.000000)" id="Icons/Dark/20/apple-grey">
<g transform="translate(14.000000, 14.000000)">
<path d="M11.0828122,4.66404762 C10.7880362,4.75190476 10.3713494,4.8197619 9.83853445,4.86785714 C9.86251847,3.67395238 10.1724148,2.64414286 10.7728685,1.77985714 C11.3622782,0.921142857 12.3579468,0.327809524 13.7615808,0 C13.7703023,0.022952381 13.7815833,0.0689047619 13.7923903,0.132714286 C13.8032922,0.19652381 13.8141466,0.240285714 13.8229629,0.264380952 C13.8229629,0.296095238 13.8250958,0.336619048 13.8294565,0.384714286 C13.8316843,0.433238095 13.8338173,0.472619048 13.8338173,0.505761905 C13.8338173,0.994428571 13.7180209,1.53852381 13.4868548,2.13947619 C13.2487683,2.74042857 12.8774426,3.2932381 12.3753897,3.79795238 C11.9452415,4.22971429 11.512913,4.5192381 11.0828122,4.66404762 Z M16.4425298,13.0888571 C15.8926037,12.2968095 15.6174985,11.4019048 15.6174985,10.4085714 C15.6174985,9.5027619 15.8752556,8.67347619 16.3946566,7.9212381 C16.6741226,7.511 17.1282548,7.03942857 17.759044,6.50233333 C17.3442058,5.98890476 16.9296519,5.58995238 16.5148137,5.30038095 C15.7637252,4.78038095 14.9144254,4.51928571 13.9648762,4.51928571 C13.3993084,4.51928571 12.7092701,4.65528571 11.8972735,4.92733333 C11.1158495,5.20157143 10.5436931,5.33614286 10.1855444,5.33614286 C9.91475245,5.33614286 9.36477894,5.21690476 8.53500766,4.97585714 C7.69689412,4.73519048 6.99164067,4.61590476 6.41739875,4.61590476 C5.04419506,4.61590476 3.91320154,5.19242857 3.0180667,6.3462381 C2.11643815,7.51538095 1.66666667,9.01561905 1.66666667,10.840381 C1.66666667,12.7818571 2.25399078,14.7951429 3.42641124,16.8875714 C4.61414166,18.9625238 5.81485948,20 7.02647912,20 C7.4326433,20 7.96081314,19.8639524 8.60511116,19.5919524 C9.25121034,19.3268571 9.81886376,19.1948095 10.3056067,19.1948095 C10.8233013,19.1948095 11.4257932,19.3231429 12.1111389,19.5787619 C12.8360157,19.8355238 13.394995,19.9635238 13.785944,19.9635238 C14.8077297,19.9635238 15.8313165,19.1787619 16.8618236,17.6081429 C17.5300582,16.6067619 18.0211619,15.6057619 18.3333333,14.604381 C17.6214914,14.3870952 16.9928825,13.8827143 16.4425298,13.0888571 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

(image error) Size: 3.1 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

After

(image error) Size: 87 KiB

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Dark / 14 / info@svg</title>
<desc>Created with Sketch.</desc>
<g id="Dark-/-14-/-info" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Icons/Elements/Help-mini" fill="#f3b200">
<path d="M7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 Z M7,6 C6.44771525,6 6,6.44771525 6,7 L6,7 L6,10 C6,10.5522847 6.44771525,11 7,11 C7.55228475,11 8,10.5522847 8,10 L8,10 L8,7 C8,6.44771525 7.55228475,6 7,6 Z M7,3 C6.44771525,3 6,3.44771525 6,4 C6,4.55228475 6.44771525,5 7,5 C7.55228475,5 8,4.55228475 8,4 C8,3.44771525 7.55228475,3 7,3 Z" id="Elements-/-Help-mini"></path>
</g>
</g>
</svg>

After

(image error) Size: 959 B

@ -0,0 +1,21 @@
<?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">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>linux-grey@svg</title>
<desc>Created with Sketch.</desc>
<g id="Mockups" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Deploy-agents---1-Default" transform="translate(-874.000000, -276.000000)" fill="#95A3BF">
<g id="Popup" transform="translate(640.000000, 90.000000)">
<g id="Content" transform="translate(0.000000, 13.000000)">
<g id="OS" transform="translate(20.000000, 133.000000)">
<g transform="translate(200.000000, 26.000000)" id="Icons/Dark/20/linux-grey">
<g transform="translate(14.000000, 14.000000)">
<path d="M6.05225389,3.20954057 C6.42861474,1.34333636 8.08089847,0 9.99996946,0 C11.9190404,0 13.5713642,1.34333636 13.9476317,3.20954057 L14.397366,5.43926559 C14.6324332,6.60521489 15.0956343,7.71417739 15.7607024,8.70352628 L16.5345709,9.85472888 C17.0175053,10.5730638 17.3332393,11.3846923 17.4639063,12.2310009 C18.2329747,12.2955877 18.9071095,12.7847088 19.1973769,13.5044304 L19.8529783,15.1299008 C20.1835124,15.9493693 19.9444452,16.8867047 19.2607103,17.4516393 L16.7485713,19.5277773 C16.017103,20.132312 14.9625673,20.1591121 14.2008323,19.5925775 L13.1892566,18.8401758 C13.1758833,18.8303091 13.1626566,18.8201757 13.1495766,18.8099091 C12.6530021,18.943376 12.1306009,19.0147095 11.5914264,19.0147095 L8.40851254,19.0147095 C7.86936465,19.0147095 7.34699014,18.9435094 6.85044236,18.8099091 C6.83737566,18.8201757 6.8241623,18.8303091 6.81078894,18.8401758 L5.79923999,19.5925775 C5.03749161,20.1591121 3.98300923,20.132312 3.25151425,19.5277773 L0.739281919,17.4516393 C0.0556237114,16.8867047 -0.183466827,15.9493693 0.147041917,15.1299008 L0.802702062,13.5044304 C1.09295605,12.7847488 1.7670309,12.2956277 2.5359793,12.2310142 C2.66667293,11.3846923 2.98240697,10.5730638 3.4653014,9.85472888 L4.23918314,8.70352628 C4.90425131,7.71417739 5.36743902,6.60521489 5.60258621,5.43926559 L6.05225389,3.20954057 Z M14.4593662,12.6344951 C14.1793655,12.8439356 13.9522984,13.1251229 13.8081647,13.4584303 L12.7840157,15.8284357 C12.2670412,16.1305697 11.6694799,16.2983034 11.0462251,16.2983034 L8.95375377,16.2983034 C8.33053903,16.2983034 7.73301768,16.1305697 7.21605652,15.828569 L6.19182754,13.4584303 C6.04776055,13.1250962 5.8207067,12.8438956 5.54062607,12.6344551 C5.57495948,12.2047608 5.69187975,11.7800665 5.89138686,11.3843723 L7.56905731,8.05680482 L7.579124,8.06677818 C8.91622035,9.3927945 11.0840786,9.3927945 12.4211616,8.06677818 L12.4310149,8.05700483 L14.1085654,11.384359 C14.3081658,11.7800799 14.4249661,12.2047875 14.4593662,12.6344951 Z M12.0542674,5.69209283 L12.0542674,4.07456918 L10.684731,4.07456918 L10.684731,5.14285159 C10.9753717,5.20165172 11.2601056,5.29829194 11.5313329,5.43278558 L12.0542674,5.69209283 Z M9.31519458,5.14291826 L9.31519458,4.07456918 L7.94565816,4.07456918 L7.94565816,5.69226616 L8.46895267,5.43278558 C8.74007328,5.29834527 9.02468726,5.20173172 9.31519458,5.14291826 Z M2.71007303,13.5818973 C2.4300724,13.5818973 2.17827183,13.7509643 2.07428493,14.0088316 L1.41863012,15.6343019 C1.3084552,15.9075025 1.38815005,16.2199032 1.61604389,16.4083036 L4.12827622,18.4844417 C4.37210344,18.6859088 4.72359757,18.6948421 4.97751814,18.5060417 L5.98906708,17.75364 C6.24174765,17.5657729 6.33202786,17.2307055 6.20761424,16.9428382 L4.9330247,13.9934982 C4.82513113,13.7437643 4.57755724,13.5818973 4.30362329,13.5818973 L2.71007303,13.5818973 Z M17.925774,14.0088316 C17.8217738,13.7509643 17.5700399,13.5818973 17.2899059,13.5818973 L15.6964356,13.5818973 C15.422435,13.5818973 15.1749678,13.7437643 15.0669675,13.9934982 L13.7924313,16.9428382 C13.6680311,17.2307055 13.7582979,17.5657729 14.0109652,17.75364 L15.0225674,18.5060417 C15.2764347,18.6948421 15.6279021,18.6859088 15.8717694,18.4844417 L18.3840417,16.4083036 C18.6119089,16.2199032 18.6916424,15.9075025 18.5813755,15.6343019 L17.925774,14.0088316 Z M9.08143405,6.64758832 C9.65976869,6.36081434 10.3405169,6.36081434 10.9188515,6.64758832 L11.583213,6.97701572 L11.4527594,7.10638935 C10.6505043,7.90200448 9.34978132,7.90200448 8.54752618,7.10638935 L8.41707256,6.97701572 L9.08143405,6.64758832 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

(image error) Size: 4.5 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

After

(image error) Size: 87 KiB

File diff suppressed because one or more lines are too long

After

(image error) Size: 60 KiB

Binary file not shown.

After

(image error) Size: 204 KiB

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="460px" height="414.288672px" viewBox="0 0 460 414.288672" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>9C390E1A-9FE4-4604-9F9A-D60ED1281F4D</title>
<defs>
<linearGradient x1="0%" y1="9.5%" x2="100%" y2="90.5%" id="linearGradient-1">
<stop stop-color="#D0FAD4" offset="0%"></stop>
<stop stop-color="#C5E9FF" offset="52.0871463%"></stop>
<stop stop-color="#DFD4FE" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="49.8604439%" x2="50%" y2="50.731762%" id="linearGradient-2">
<stop stop-color="#000000" stop-opacity="0.07" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="75.2845534%" id="linearGradient-3">
<stop stop-color="#222222" offset="0%"></stop>
<stop stop-color="#222222" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<path d="M152.546053,35.3107345 L152.546053,0 L87.8813872,0 L87.8813872,35.3107345 C87.8813872,43.4322034 81.3232477,50 73.2137203,50 L167.21372,50 C159.174711,50 152.546053,43.4322034 152.546053,35.3107345 Z" id="path-4"></path>
<path d="M0,39 L36.1774744,0 C46.9053653,10.0936464 52.9966323,24.2151535 53,39 L53,39 L0,39 Z" id="path-5"></path>
<path d="M0,0 L53,0.378540773 C52.8892672,16.7302141 45.1662555,32.1052881 32.0932377,42 L0,0 Z" id="path-7"></path>
<path d="M0,53 L5.2208186,0 C16.7028189,1.12919445 27.5059639,5.96173317 36,13.7683596 L0,53 Z" id="path-9"></path>
<linearGradient x1="50%" y1="50%" x2="52.9793104%" y2="52.3544862%" id="linearGradient-11">
<stop stop-color="#FFFFFF" stop-opacity="0.7" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<path d="M93.68,170.68 L191.91,170.68 C194.119139,170.68 195.91,168.889139 195.91,166.68 L195.91,4 C195.91,1.790861 194.119139,-4.05812251e-16 191.91,0 L4,0 C1.790861,4.05812251e-16 -2.705415e-16,1.790861 0,4 L0,166.68 C1.5523329e-14,168.889139 1.790861,170.68 4,170.68 L47.56,170.68 L93.68,170.68 L93.68,170.68 Z" id="path-12"></path>
<linearGradient x1="56.4362504%" y1="50%" x2="0%" y2="50%" id="linearGradient-13">
<stop stop-color="#5E9FE1" offset="0%"></stop>
<stop stop-color="#E12D81" offset="100%"></stop>
</linearGradient>
<rect id="path-14" x="0" y="0" width="11.59" height="81.23" rx="3"></rect>
</defs>
<g id="Mockups" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Pantalla-bienvenida---Mensaje-bienvenida" transform="translate(-846.000000, -284.000000)">
<g id="Welcome-image" transform="translate(846.000000, 284.000000)">
<rect id="BG" fill="url(#linearGradient-1)" x="0" y="0" width="460" height="414" rx="6"></rect>
<g id="Welcome" transform="translate(40.000000, 40.000000)">
<g id="Mac" transform="translate(15.000000, 84.000000)">
<g id="Group" transform="translate(53.786280, 240.000000)" stroke-linejoin="round">
<g id="Path">
<use fill="#FFFFFF" xlink:href="#path-4"></use>
<use stroke="url(#linearGradient-3)" stroke-width="1.4" fill="url(#linearGradient-2)" xlink:href="#path-4"></use>
</g>
</g>
<path d="M335.224274,-0.7 C339.502123,-0.7 343.370554,1.02376203 346.169675,3.81257674 C348.969732,6.60232361 350.7,10.4579204 350.7,14.7213211 L350.7,225.278679 C350.7,229.54208 348.969732,233.397676 346.169675,236.187423 C343.370554,238.976238 339.502123,240.7 335.224274,240.7 L14.7757256,240.7 C10.4978772,240.7 6.62944618,238.976238 3.83032506,236.187423 C1.03026834,233.397676 -0.7,229.54208 -0.7,225.278679 L-0.7,14.7213211 C-0.7,10.4579204 1.03026834,6.60232361 3.83032506,3.81257674 C6.62944618,1.02376203 10.4978772,-0.7 14.7757256,-0.7 L335.224274,-0.7 Z" id="Path" stroke="#222222" stroke-width="1.4" fill="#FFFFFF" stroke-linejoin="round"></path>
<path d="M175.018401,214.00002 C179.989839,214.010307 184.010268,218.047143 184.00002,223.017956 C183.989859,227.989276 179.952696,232.010268 174.981258,232.00002 C170.010073,231.989859 165.989771,227.952135 166.00002,222.980815 C166.010307,218.010002 170.047216,213.989772 175.018401,214.00002 Z M178.591434,217.033788 C177.65815,216.932742 176.493946,217.065968 175.64737,217.333297 C175.425926,217.403666 175.209284,217.468777 175.001729,217.534388 C174.791837,217.599123 174.603363,217.703925 174.409048,217.787067 C173.251074,218.27527 172.204732,218.948412 171.316359,219.704194 C170.027804,220.797299 168.941481,222.085234 168.00002,223.509025 C168.047008,225.2034 168.658251,226.748772 169.647481,228.00002 C170.082321,226.67139 170.608413,225.406244 171.304807,224.206834 C171.930328,223.129506 172.715507,222.080726 173.564809,221.24869 C174.407231,220.421161 175.474991,219.60177 176.717207,219.105804 C177.305345,218.869278 177.987071,218.648027 178.810152,218.552365 C179.390761,218.486002 179.939699,218.547857 180.540038,218.561005 C180.715921,218.564511 180.92815,218.551864 180.986172,218.417887 C181.032901,218.307575 180.951125,218.121384 180.892843,218.040497 C180.792375,217.900885 180.604031,217.773168 180.44658,217.65647 C179.983832,217.307879 179.289255,217.112923 178.591434,217.033788 Z M179.436118,219.019535 C179.190484,218.888132 177.11413,219.446686 176.340003,219.904207 C176.808464,219.999729 177.212043,220.181341 177.604874,220.362831 C177.99102,220.538443 178.375069,220.72422 178.72032,220.963635 C178.938559,221.114999 179.15457,221.320369 179.354328,221.512391 C179.937348,222.070578 180.470953,222.903448 180.481308,223.923075 C180.49127,224.886736 179.950456,225.57804 179.304519,226.05883 C178.638529,226.556274 177.700296,226.882026 176.689579,226.931746 C174.693705,227.035717 173.188574,226.387398 172.036952,225.63572 C171.870487,225.527953 171.496399,225.25388 171.285762,225.048632 C171.159669,225.314744 171.122968,225.413572 171.00002,225.684093 C172.07208,226.668205 173.665948,227.718081 175.441355,227.939861 C176.384044,228.05865 177.373658,227.9995 178.254742,227.780292 C179.041977,227.584596 179.773112,227.20643 180.328082,226.764951 C181.411152,225.906731 182.257108,224.501468 181.928111,222.579166 C181.792842,221.800669 181.419672,221.108386 180.976771,220.509787 C180.667303,220.095127 180.306192,219.64777 179.88269,219.329978 C179.755154,219.232375 179.589607,219.101463 179.436118,219.019535 Z" id="Fill-3" fill="#E5E9ED"></path>
<path d="M335.153237,0 L14.7757256,0 C6.60645423,0 0,6.61534714 0,14.7956151 L0,205.787089 L350,205.787089 L350,14.8667479 C350,6.6864799 343.322509,0 335.153237,0 Z" id="Path" fill="#57576D" fill-rule="nonzero"></path>
<g id="Group" transform="translate(18.000000, 9.000000)">
<g id="Ventana-1">
<rect id="Rectangle" stroke="#222222" stroke-width="1.4" fill="#FFFFFF" stroke-linejoin="round" x="0" y="0" width="315" height="188" rx="4"></rect>
<line x1="0" y1="14.043869" x2="315" y2="14.043869" id="Path-10" stroke="#222222" stroke-linecap="round" stroke-linejoin="round"></line>
<g id="Content-2" transform="translate(156.500000, 101.000000) scale(-1, 1) translate(-156.500000, -101.000000) translate(12.000000, 27.000000)">
<line x1="3" y1="1" x2="15" y2="1" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="3" y1="9" x2="15" y2="9" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="8" y1="16" x2="15" y2="16" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="26" y1="1" x2="38" y2="1" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="26" y1="9" x2="38" y2="9" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="31" y1="16" x2="38" y2="16" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="110" y1="1" x2="122" y2="1" id="Path" stroke="#161628" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="110" y1="9" x2="122" y2="9" id="Path" stroke="#161628" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="115" y1="16" x2="122" y2="16" id="Path" stroke="#161628" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<path d="M54.0901195,79 L86,121.356546 C67.5338303,135.222978 42.2046264,135.571717 23.3624732,122.218953 C4.52032006,108.86619 -3.5066561,84.8791143 3.51226651,62.9004251 C10.5311891,40.921736 30.9837328,26 54.0901195,26 C55.7943972,26 57.4986749,26 59.2029526,26.2353142 L54.0901195,79 Z" id="Path" fill="#F6F7FB" fill-rule="nonzero"></path>
<path d="M66,83 L119,83.3785408 C118.889267,99.7302141 111.166256,115.105288 98.0932377,125 L66,83 Z" id="Path" fill="#DFF3FA" fill-rule="nonzero"></path>
<path d="M73,75 L109.177474,36 C119.905365,46.0936464 125.996632,60.2151535 126,75 L126,75 L73,75 Z" id="Path" fill="#DFF3FA" fill-rule="nonzero"></path>
<path d="M62,75 L67.2208186,22 C78.7028189,23.1291945 89.5059639,27.9617332 98,35.7683596 L62,75 Z" id="Path" fill="#DFF3FA" fill-rule="nonzero"></path>
<path d="M53.9060052,80 L58.9869452,27.2353142 C57.2689295,27.0724044 55.5509138,27 53.8328982,27 C52.1148825,27 50.5613577,27 48.9530026,27.2353142 L49.154047,27.2353142 L44,80 L76.1671018,122.356555 C68.2383958,128.25732 58.81042,131.860663 48.9347258,132.764683 C50.5430809,132.909491 52.1879896,133 53.8328982,133 C65.4374759,133.003953 76.7282401,129.268068 86,122.356555 L53.9060052,80 Z" id="Path" fill="#E5E9ED" fill-rule="nonzero"></path>
<path d="M101.034941,121.737339 L71.2455709,83 L65,83 L97.2839567,125 C98.934299,123.759314 100.509064,122.423075 102,120.998283 L101.034941,121.737339 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M113,39.6431574 C111.854545,38.3498365 110.672727,37.0929472 109.363636,36 L73,75 L80.0545455,75 L113,39.6431574 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M69,100.909528 L53.4447892,80.0000548 L55.9170211,54.1095294 C55.2132471,54.1095294 54.4914276,54 53.769608,54 C42.5971011,53.9767742 32.6880818,61.2503875 29.249773,71.9985873 C25.8114643,82.7467872 29.6306873,94.50996 38.7004275,101.106519 C47.7701676,107.703078 60.0149095,107.623469 69,100.909528 L69,100.909528 Z" id="Path" fill="#E5E9ED" fill-rule="nonzero"></path>
<path d="M72.2923913,23.3822924 C74.5487465,23.6024237 76.7889623,23.9608175 79,24.4553878 C75.2039142,23.218832 71.2815905,22.395455 67.3032609,22 L62,75 L67.7467391,68.8342485 L72.2923913,23.3822924 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M54.0901195,80 L86,122.356546 C67.5338303,136.222978 42.2046264,136.571717 23.3624732,123.218953 C4.52032006,109.86619 -3.5066561,85.8791143 3.51226651,63.9004251 C10.5311891,41.921736 30.9837328,27 54.0901195,27 C55.7943972,27 57.4986749,27 59.2029526,27.2353142 L54.0901195,80 Z" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M9.11764706,145.245315 L9.11764706,139.735945 L4.56777996,137 L0,139.735945 L0,145.245315 L4.56777996,148 L9.11764706,145.245315 L9.11764706,145.245315 Z M20.0588235,145.245315 L20.0588235,139.735945 L15.5089564,137 L10.9411765,139.735945 L10.9411765,145.245315 L15.5089564,148 L20.0588235,145.245315 L20.0588235,145.245315 Z M31,145.245315 L31,139.735945 L26.43222,137 L21.8823529,139.735945 L21.8823529,145.245315 L26.43222,148 L31,145.245315 L31,145.245315 Z" id="Path-11" fill="#8A96A6" fill-rule="nonzero"></path>
<g id="Clipped" transform="translate(73.000000, 36.000000)">
<mask id="mask-6" fill="white">
<use xlink:href="#path-5"></use>
</mask>
<g id="Path"></g>
<g id="Group" mask="url(#mask-6)" stroke="#B2DBF7" stroke-linecap="round" stroke-linejoin="round" stroke-width="0.99">
<g transform="translate(-85.975768, -25.556749)" id="Path">
<line x1="104.733788" y1="0" x2="0" y2="77.8542737"></line>
<line x1="109.00273" y1="4.31714152" x2="4.26894198" y2="82.1531994"></line>
<line x1="113.271672" y1="8.61606726" x2="8.53788396" y2="86.4521252"></line>
<line x1="117.540614" y1="12.914993" x2="12.8249147" y2="90.7510509"></line>
<line x1="121.809556" y1="17.2139187" x2="17.0938567" y2="95.0499766"></line>
<line x1="126.096587" y1="21.5128445" x2="21.3627986" y2="99.3489024"></line>
<line x1="130.365529" y1="25.8117702" x2="25.6317406" y2="103.666044"></line>
<line x1="134.634471" y1="30.1106959" x2="29.9006826" y2="107.96497"></line>
<line x1="138.903413" y1="34.4278375" x2="34.1696246" y2="112.263895"></line>
<line x1="143.172355" y1="38.7267632" x2="38.4385666" y2="116.562821"></line>
<line x1="147.441297" y1="43.0256889" x2="42.7255973" y2="120.861747"></line>
<line x1="151.710239" y1="47.3246147" x2="46.9945392" y2="125.160673"></line>
<line x1="155.99727" y1="51.6235404" x2="51.2634812" y2="129.459598"></line>
<line x1="160.266212" y1="55.9224661" x2="55.5324232" y2="133.77674"></line>
<line x1="164.535154" y1="60.2213919" x2="59.8013652" y2="138.075666"></line>
<line x1="168.804096" y1="64.5385334" x2="64.0703072" y2="142.374591"></line>
<line x1="173.073038" y1="68.8374591" x2="68.3392491" y2="146.673517"></line>
</g>
</g>
</g>
<g id="Clipped" transform="translate(66.000000, 83.000000)">
<mask id="mask-8" fill="white">
<use xlink:href="#path-7"></use>
</mask>
<use id="Path" fill="#ED474A" xlink:href="#path-7"></use>
<g id="Group" mask="url(#mask-8)" stroke="#9C1414" stroke-linecap="round" stroke-linejoin="round" stroke-width="0.99">
<g transform="translate(-78.305328, -72.157082)" id="Path">
<line x1="104.805328" y1="0" x2="0" y2="77.0420601"></line>
<line x1="109.077186" y1="4.272103" x2="4.27185792" y2="81.2961373"></line>
<line x1="113.349044" y1="8.52618026" x2="8.54371585" y2="85.5502146"></line>
<line x1="117.620902" y1="12.7802575" x2="12.8336749" y2="89.8042918"></line>
<line x1="121.89276" y1="17.0343348" x2="17.1055328" y2="94.0583691"></line>
<line x1="126.182719" y1="21.288412" x2="21.3773907" y2="98.3124464"></line>
<line x1="130.454577" y1="25.5424893" x2="25.6492486" y2="102.584549"></line>
<line x1="134.726434" y1="29.7965665" x2="29.9211066" y2="106.838627"></line>
<line x1="138.998292" y1="34.0686695" x2="34.1929645" y2="111.092704"></line>
<line x1="143.27015" y1="38.3227468" x2="38.4648224" y2="115.346781"></line>
<line x1="147.542008" y1="42.576824" x2="42.7547814" y2="119.600858"></line>
<line x1="151.813866" y1="46.8309013" x2="47.0266393" y2="123.854936"></line>
<line x1="156.103825" y1="51.0849785" x2="51.2984973" y2="128.109013"></line>
<line x1="160.375683" y1="55.3390558" x2="55.5703552" y2="132.381116"></line>
<line x1="164.647541" y1="59.593133" x2="59.8422131" y2="136.635193"></line>
<line x1="168.919399" y1="63.8652361" x2="64.114071" y2="140.88927"></line>
<line x1="173.191257" y1="68.1193133" x2="68.385929" y2="145.143348"></line>
</g>
</g>
</g>
<g id="Clipped" transform="translate(62.000000, 22.000000)">
<mask id="mask-10" fill="white">
<use xlink:href="#path-9"></use>
</mask>
<use id="Path" fill="#1D7873" xlink:href="#path-9"></use>
<g id="Group" mask="url(#mask-10)" stroke="#2AD0CF" stroke-linecap="round" stroke-linejoin="round" stroke-width="0.99">
<g transform="translate(-75.092471, -11.513040)" id="Path">
<line x1="105.325922" y1="0" x2="0" y2="77.7357584"></line>
<line x1="109.618999" y1="4.31056966" x2="4.29307731" y2="82.02814"></line>
<line x1="113.912077" y1="8.60295127" x2="8.58615462" y2="86.3205216"></line>
<line x1="118.205154" y1="12.8953329" x2="12.8974229" y2="90.6129032"></line>
<line x1="122.498231" y1="17.1877145" x2="17.1905003" y2="94.9052848"></line>
<line x1="126.8095" y1="21.4800961" x2="21.4835776" y2="99.1976664"></line>
<line x1="131.102577" y1="25.7724777" x2="25.7766549" y2="103.508236"></line>
<line x1="135.395654" y1="30.0648593" x2="30.0697322" y2="107.800618"></line>
<line x1="139.688732" y1="34.375429" x2="34.3628095" y2="112.092999"></line>
<line x1="143.981809" y1="38.6678106" x2="38.6558868" y2="116.385381"></line>
<line x1="148.274886" y1="42.9601922" x2="42.9671551" y2="120.677763"></line>
<line x1="152.567964" y1="47.2525738" x2="47.2602324" y2="124.970144"></line>
<line x1="156.879232" y1="51.5449554" x2="51.5533098" y2="129.262526"></line>
<line x1="161.172309" y1="55.837337" x2="55.8463871" y2="133.573095"></line>
<line x1="165.465387" y1="60.1297186" x2="60.1394644" y2="137.865477"></line>
<line x1="169.758464" y1="64.4402883" x2="64.4325417" y2="142.157859"></line>
<line x1="174.051541" y1="68.7326699" x2="68.725619" y2="146.45024"></line>
</g>
</g>
</g>
<path d="M66,83 L119,83.3785408 C118.889267,99.7302141 111.166256,115.105288 98.0932377,125 L66,83 Z" id="Path" stroke="#9C1414" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M73,75 L109.177474,36 C119.905365,46.0936464 125.996632,60.2151535 126,75 L126,75 L73,75 Z" id="Path" stroke="#B2DBF7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M62,75 L67.2208186,22 C78.7028189,23.1291945 89.5059639,27.9617332 98,35.7683596 L62,75 Z" id="Path" stroke="#14524F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
<g id="Group-5" transform="translate(23.000000, 91.000000)">
<g id="1">
<line x1="0.118553327" y1="46.1425683" x2="53.158873" y2="46.1425683" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1,4"></line>
<line x1="0.118553327" y1="55.2692624" x2="53.158873" y2="55.2692624" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="0.118553327" y1="64.4672589" x2="53.158873" y2="64.4672589" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4,4"></line>
<line x1="0.118553327" y1="73.5939531" x2="53.158873" y2="73.5939531" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2,4"></line>
<line x1="0.118553327" y1="82.7206472" x2="26.6031156" y2="82.7206472" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<path d="M50,0 C52.209139,-4.33003142e-15 54,1.790861 54,4 L54,30 C54,32.209139 52.209139,34 50,34 L47,34 L47,29 L39,29 L39,34 L36,34 L36,22 L28,22 L28,34 L25,34 L25,8 L17,8 L17,34 L14,34 L14,17 L6,17 L6,34 L4,34 C1.790861,34 2.705415e-16,32.209139 0,30 L0,4 C-2.705415e-16,1.790861 1.790861,4.05812251e-16 4,0 L50,0 Z" id="Rectangle-3" fill="#C0CCDC" fill-rule="nonzero"></path>
</g>
<g id="3" transform="translate(74.000000, 1.079516)">
<line x1="53.0403197" y1="0.356511491" x2="0" y2="0.356511491" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="53.0403197" y1="9.55450796" x2="0" y2="9.55450796" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="53.0403197" y1="18.6812021" x2="0" y2="18.6812021" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="53.0403197" y1="27.3565115" x2="0" y2="27.3565115" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="26.4845623" y1="37.3565115" x2="0" y2="37.3565115" id="Path" stroke="#8A96A6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<g id="Group-4" transform="translate(0.000000, 54.688863)" fill-rule="nonzero">
<g id="User">
<path d="M4,0 L19.3519797,0 C21.5611187,-4.05812251e-16 23.3519797,1.790861 23.3519797,4 L23.3519797,27.9505009 L23.3519797,27.9505009 L0,27.9505009 L0,4 C-2.705415e-16,1.790861 1.790861,4.05812251e-16 4,0 Z" id="Rectangle" stroke="#E5E9ED"></path>
<path d="M17.86996,19.6794343 L16.9444243,19.6794343 C15.5917181,19.6794343 14.5237922,18.6098998 14.5237922,17.2551562 L14.5237922,16.8986447 C15.5205231,16.3282263 16.2324737,15.3299941 16.2324737,14.117855 L16.2324737,10.1962286 C16.2324737,8.41367118 14.8085725,6.98762522 13.028696,6.98762522 L10.4656738,6.98762522 C8.68579731,6.98762522 7.26189611,8.41367118 7.26189611,10.1962286 L7.26189611,14.117855 C7.26189611,15.3299941 7.90265165,16.3995286 8.89938249,16.8986447 L8.89938249,17.2551562 C8.89938249,18.6098998 7.83145659,19.6794343 6.47875045,19.6794343 L5.55321467,19.6794343 C3.34616782,19.6794343 1.56629132,21.4619918 1.56629132,23.672363 L1.56629132,26.4531526 L21.7856883,26.4531526 L21.7856883,23.672363 C21.7856883,21.4619918 20.0770069,19.6794343 17.86996,19.6794343 Z" id="Path" fill="#8A96A6"></path>
</g>
<g id="User" transform="translate(29.688340, 0.000000)">
<path d="M4,0 L19.3519797,0 C21.5611187,-4.05812251e-16 23.3519797,1.790861 23.3519797,4 L23.3519797,27.9505009 L23.3519797,27.9505009 L0,27.9505009 L0,4 C-2.705415e-16,1.790861 1.790861,4.05812251e-16 4,0 Z" id="Rectangle" stroke="#E5E9ED"></path>
<path d="M17.86996,19.6794343 L16.9444243,19.6794343 C15.5917181,19.6794343 14.5237922,18.6098998 14.5237922,17.2551562 L14.5237922,16.8986447 C15.5205231,16.3282263 16.2324737,15.3299941 16.2324737,14.117855 L16.2324737,10.1962286 C16.2324737,8.41367118 14.8085725,6.98762522 13.028696,6.98762522 L10.4656738,6.98762522 C8.68579731,6.98762522 7.26189611,8.41367118 7.26189611,10.1962286 L7.26189611,14.117855 C7.26189611,15.3299941 7.90265165,16.3995286 8.89938249,16.8986447 L8.89938249,17.2551562 C8.89938249,18.6098998 7.83145659,19.6794343 6.47875045,19.6794343 L5.55321467,19.6794343 C3.34616782,19.6794343 1.56629132,21.4619918 1.56629132,23.672363 L1.56629132,26.4531526 L21.7856883,26.4531526 L21.7856883,23.672363 C21.7856883,21.4619918 20.0058118,19.6794343 17.86996,19.6794343 Z" id="Path" fill="#8A96A6"></path>
</g>
</g>
</g>
</g>
</g>
<g transform="translate(0.000000, 0.071133)"></g>
</g>
</g>
<g id="statistics" transform="translate(-0.000000, 0.000000)">
<g id="Path">
<use fill="#D0E7FD" xlink:href="#path-12"></use>
<path stroke="#222222" stroke-width="1.4" d="M191.91,-0.7 C193.207869,-0.7 194.382869,-0.173934581 195.233402,0.676598128 C196.083935,1.52713084 196.61,2.70213084 196.61,4 L196.61,166.68 C196.61,167.977869 196.083935,169.152869 195.233402,170.003402 C194.382869,170.853935 193.207869,171.38 191.91,171.38 L4,171.38 C2.70213084,171.38 1.52713084,170.853935 0.676598128,170.003402 C-0.173934581,169.152869 -0.7,167.977869 -0.7,166.68 L-0.7,4 C-0.7,2.70213084 -0.173934581,1.52713084 0.676598128,0.676598128 C1.52713084,-0.173934581 2.70213084,-0.7 4,-0.7 L191.91,-0.7 Z" fill="url(#linearGradient-11)"></path>
</g>
<path d="M4,0 L191.9,0 C194.109139,-4.05812251e-16 195.9,1.790861 195.9,4 L195.9,26.48 L195.9,26.48 L0,26.48 L0,4 C-2.705415e-16,1.790861 1.790861,4.05812251e-16 4,0 Z" id="Rectangle" fill="#161628" fill-rule="nonzero"></path>
<circle id="Oval" stroke="#FFFFFF" fill-rule="nonzero" cx="40.75" cy="13.24" r="4.3"></circle>
<circle id="Oval" stroke="#FFFFFF" fill-rule="nonzero" cx="29.74" cy="13.24" r="4.3"></circle>
<circle id="Oval" stroke="#FFFFFF" fill-rule="nonzero" cx="18.73" cy="13.24" r="4.3"></circle>
<line x1="59.67" y1="13.89" x2="181.48" y2="13.89" id="Path" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round"></line>
<rect id="Rectangle" fill="#C0CCDC" fill-rule="nonzero" x="18.87" y="136.87" width="157.34" height="25.58" rx="4"></rect>
<polygon id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round" points="38.2 151.95 38.2 145.35 32.48 142.05 26.77 145.35 26.77 151.95 32.48 155.26"></polygon>
<line x1="54.85" y1="144.48" x2="42.46" y2="144.48" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="54.85" y1="148.65" x2="42.46" y2="148.65" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="49.92" y1="152.82" x2="42.46" y2="152.82" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<polygon id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round" points="76.3 151.95 76.3 145.35 70.58 142.05 64.87 145.35 64.87 151.95 70.58 155.26"></polygon>
<line x1="92.95" y1="144.48" x2="80.55" y2="144.48" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="92.95" y1="148.65" x2="80.55" y2="148.65" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="88.02" y1="152.82" x2="80.55" y2="152.82" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<polygon id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round" points="114.4 151.95 114.4 145.35 108.68 142.05 102.97 145.35 102.97 151.95 108.68 155.26"></polygon>
<line x1="131.04" y1="144.48" x2="118.65" y2="144.48" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="131.04" y1="148.65" x2="118.65" y2="148.65" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="126.12" y1="152.82" x2="118.65" y2="152.82" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<polygon id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round" points="152.5 151.95 152.5 145.35 146.78 142.05 141.06 145.35 141.06 151.95 146.78 155.26"></polygon>
<line x1="169.14" y1="144.48" x2="156.75" y2="144.48" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="169.14" y1="148.65" x2="156.75" y2="148.65" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="164.22" y1="152.82" x2="156.75" y2="152.82" id="Path" stroke="#FFFFFF" stroke-width="0.99" stroke-linecap="round" stroke-linejoin="round"></line>
<g id="Group-2" transform="translate(181.750000, 149.380000)">
<path d="M2.50310812,-1.58525677 L32.0668922,28.4854583 L18.7987954,29.2918067 L22.8374745,40.3785687 L13.9015261,43.6269384 L9.86308336,32.5310228 L-0.819024498,40.4483498 L2.50310812,-1.58525677 Z" id="Path" stroke="#222222" stroke-width="1.4" fill="#FFFFFF" stroke-linejoin="round"></path>
<polygon id="Path" fill-opacity="0.1" fill="#000000" fill-rule="nonzero" points="23.3 28.31 30.49 27.88 3.08 0"></polygon>
</g>
<circle id="Oval" fill-opacity="0.05" fill="#000000" fill-rule="nonzero" cx="97.96" cy="85.15" r="41.57"></circle>
<path d="M116.44,81.5 L122.03,81.5 C123.686854,81.5 125.03,82.8431458 125.03,84.5 L125.03,128.98 C125.03,130.636854 123.686854,131.98 122.03,131.98 L116.44,131.98 C114.783146,131.98 113.44,130.636854 113.44,128.98 L113.44,84.5 C113.44,82.8431458 114.783146,81.5 116.44,81.5 Z M55.62,107.8 L61.21,107.8 C62.8668542,107.8 64.21,109.143146 64.21,110.8 L64.21,128.98 C64.21,130.636854 62.8668542,131.98 61.21,131.98 L55.62,131.98 C53.9631458,131.98 52.62,130.636854 52.62,128.98 L52.62,110.8 C52.62,109.143146 53.9631458,107.8 55.62,107.8 Z M75.89,97.2 L81.48,97.2 C83.1368542,97.2 84.48,98.5431458 84.48,100.2 L84.48,128.98 C84.48,130.636854 83.1368542,131.98 81.48,131.98 L75.89,131.98 C74.2331458,131.98 72.89,130.636854 72.89,128.98 L72.89,100.2 C72.89,98.5431458 74.2331458,97.2 75.89,97.2 Z M96.16,88.34 L101.75,88.34 C103.406854,88.34 104.75,89.6831458 104.75,91.34 L104.75,128.98 C104.75,130.636854 103.406854,131.98 101.75,131.98 L96.16,131.98 C94.5031458,131.98 93.16,130.636854 93.16,128.98 L93.16,91.34 C93.16,89.6831458 94.5031458,88.34 96.16,88.34 Z" id="Rectangle-4" fill="url(#linearGradient-13)" fill-rule="nonzero"></path>
<rect id="Rectangle" fill="#91C0DB" fill-rule="nonzero" x="133.71" y="50.75" width="11.59" height="81.23"></rect>
<rect id="Rectangle" fill="#7AB2CE" fill-rule="nonzero" x="142.41" y="50.75" width="2.88" height="81.23"></rect>
<g id="Clipped" transform="translate(133.710000, 50.750000)">
<mask id="mask-15" fill="white">
<use xlink:href="#path-14"></use>
</mask>
<rect stroke="#222222" stroke-width="1.4" x="-0.7" y="-0.7" width="12.99" height="82.63" rx="3"></rect>
<g id="Group" mask="url(#mask-15)" stroke="#A5D956" stroke-linecap="round" stroke-linejoin="round" stroke-width="0.99">
<g transform="translate(-43.280000, -5.280000)" id="Path">
<line x1="67.3" y1="0" x2="0" y2="25.47"></line>
<line x1="68.93" y1="2.91" x2="1.63" y2="28.39"></line>
<line x1="70.57" y1="5.82" x2="3.27" y2="31.3"></line>
<line x1="72.2" y1="8.74" x2="4.9" y2="34.21"></line>
<line x1="73.83" y1="11.65" x2="6.54" y2="37.12"></line>
<line x1="75.47" y1="14.56" x2="8.17" y2="40.03"></line>
<line x1="77.1" y1="17.47" x2="9.8" y2="42.95"></line>
<line x1="78.74" y1="20.38" x2="11.44" y2="45.86"></line>
<line x1="80.37" y1="23.3" x2="13.07" y2="48.77"></line>
<line x1="82.01" y1="26.21" x2="14.71" y2="51.68"></line>
<line x1="83.64" y1="29.12" x2="16.34" y2="54.6"></line>
<line x1="85.28" y1="32.03" x2="17.98" y2="57.51"></line>
<line x1="86.91" y1="34.95" x2="19.61" y2="60.42"></line>
<line x1="88.54" y1="37.86" x2="21.25" y2="63.33"></line>
<line x1="90.18" y1="40.77" x2="22.88" y2="66.25"></line>
<line x1="91.81" y1="43.68" x2="24.51" y2="69.16"></line>
<line x1="93.45" y1="46.59" x2="26.15" y2="72.07"></line>
<line x1="82.68" y1="50.47" x2="15.38" y2="75.95"></line>
<line x1="84.31" y1="53.39" x2="17.01" y2="78.86"></line>
<line x1="85.95" y1="56.3" x2="18.65" y2="81.77"></line>
<line x1="87.58" y1="59.21" x2="20.28" y2="84.69"></line>
<line x1="89.22" y1="62.12" x2="21.92" y2="87.6"></line>
<line x1="90.85" y1="65.04" x2="23.55" y2="90.51"></line>
<line x1="92.49" y1="67.95" x2="25.19" y2="93.42"></line>
<line x1="94.12" y1="70.86" x2="26.82" y2="96.34"></line>
<line x1="95.75" y1="73.77" x2="28.46" y2="99.25"></line>
<line x1="97.39" y1="76.69" x2="30.09" y2="102.16"></line>
<line x1="99.02" y1="79.6" x2="31.72" y2="105.07"></line>
<line x1="100.66" y1="82.51" x2="33.36" y2="107.98"></line>
<line x1="102.29" y1="85.42" x2="34.99" y2="110.9"></line>
<line x1="103.93" y1="88.33" x2="36.63" y2="113.81"></line>
<line x1="105.56" y1="91.25" x2="38.26" y2="116.72"></line>
<line x1="107.2" y1="94.16" x2="39.9" y2="119.63"></line>
<line x1="108.83" y1="97.07" x2="41.53" y2="122.55"></line>
</g>
</g>
</g>
<path d="M118.908504,42.5973796 L125.359095,46.9384196 C105.950359,76.2027853 80.5320959,90.784865 49.89,90.3118276 L49.89,82.5334907 C63.1815485,82.9086095 76.3169975,79.6374119 87.8718471,73.0827196 C99.4129083,66.4662473 109.855027,56.2071021 118.908504,42.5973796 Z" id="Path" stroke="#222222" stroke-width="1.4" fill="#95A3BF" stroke-linejoin="round"></path>
<path d="M119.17,43.57 L118.41,44.67 L121.34,46.67 C102.88,74.1 79.1,88.37 50.62,89.13 L50.62,89.64 C80.49,89.88 105.33,75.58 124.46,47.15 L119.17,43.57 Z" id="Path" fill-opacity="0.2" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M129.354784,34.163995 L128.062473,54.6936046 L110.922346,43.3121976 L129.354784,34.163995 Z" id="Path" stroke="#222222" stroke-width="1.4" fill="#95A3BF" stroke-linejoin="round"></path>
<polygon id="Path" fill-opacity="0.2" fill="#FFFFFF" fill-rule="nonzero" points="123.28 50.74 127.41 53.48 128.55 35.37 124.11 37.57"></polygon>
<line x1="23.08" y1="43.24" x2="29.81" y2="43.24" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="23.08" y1="47.42" x2="29.81" y2="47.42" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="23.08" y1="51.59" x2="26.78" y2="51.59" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="23.08" y1="60.33" x2="29.81" y2="60.33" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="23.08" y1="64.5" x2="29.81" y2="64.5" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="23.08" y1="68.68" x2="26.78" y2="68.68" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="35.49" y1="43.24" x2="42.22" y2="43.24" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="35.49" y1="47.42" x2="42.22" y2="47.42" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="35.49" y1="51.59" x2="39.19" y2="51.59" id="Path" stroke="#91C0DB" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="165.78" y1="43.24" x2="172.51" y2="43.24" id="Path" stroke="#4194D8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="165.78" y1="47.42" x2="172.51" y2="47.42" id="Path" stroke="#4194D8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<line x1="165.78" y1="51.59" x2="169.48" y2="51.59" id="Path" stroke="#4194D8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></line>
<polygon id="Path" fill="#B2DBF7" fill-rule="nonzero" points="27.87 129.58 27.87 126.64 25.32 125.17 22.78 126.64 22.78 129.58 25.32 131.05"></polygon>
<polygon id="Path" fill="#B2DBF7" fill-rule="nonzero" points="34.08 129.58 34.08 126.64 31.53 125.17 28.99 126.64 28.99 129.58 31.53 131.05"></polygon>
</g>
</g>
</g>
</g>
</g>
</svg>

After

(image error) Size: 42 KiB

@ -0,0 +1,21 @@
<?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">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>windows-grey@svg</title>
<desc>Created with Sketch.</desc>
<g id="Mockups" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Deploy-agents---1-Default" transform="translate(-674.000000, -276.000000)" fill="#95A3BF">
<g id="Popup" transform="translate(640.000000, 90.000000)">
<g id="Content" transform="translate(0.000000, 13.000000)">
<g id="OS" transform="translate(20.000000, 133.000000)">
<g transform="translate(0.000000, 26.000000)" id="Icons/Dark/20/windows-grey">
<g transform="translate(14.000000, 14.000000)">
<path d="M0,0 L9.16666667,0 L9.16666667,9.16666667 L0,9.16666667 L0,0 Z M10.8333333,0 L10.8333333,9.16666667 L20,9.16666667 L20,0 L10.8333333,0 Z M0,10.8333333 L0,20 L9.16666667,20 L9.16666667,10.8333333 L0,10.8333333 Z M10.8333333,10.8333333 L10.8333333,20 L20,20 L20,10.8333333 L10.8333333,10.8333333 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

(image error) Size: 1.4 KiB

@ -2406,7 +2406,7 @@ if ($drawConsoleSound === true) {
'Star_Trek_emergency_simulation.wav' => 'StarTrek emergency simulation',
];
$eventsounds = mysql_db_get_all_rows_sql('SELECT * FROM tevent_sound WHERE active = 1');
$eventsounds = db_get_all_rows_sql('SELECT * FROM tevent_sound WHERE active = 1');
foreach ($eventsounds as $key => $row) {
$sounds[$row['sound']] = $row['name'];
}

@ -364,26 +364,26 @@ if (is_ajax() === true) {
break;
case AGENT_MODULE_STATUS_CRITICAL_BAD:
$status = ui_print_status_image('module_critical.png', $data_module, false);
$status = ui_print_status_image('module_critical.png', $data_module, true);
break;
case AGENT_MODULE_STATUS_WARNING:
$status = ui_print_status_image('module_warning.png', $data_module, false);
$status = ui_print_status_image('module_warning.png', $data_module, true);
break;
case AGENT_MODULE_STATUS_NORMAL_ALERT:
case AGENT_MODULE_STATUS_WARNING_ALERT:
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
$status = ui_print_status_image('module_alertsfired.png', $data_module, false);
$status = ui_print_status_image('module_alertsfired.png', $data_module, true);
break;
case 4:
$status = ui_print_status_image('module_no_data.png', $data_module, false);
case AGENT_MODULE_STATUS_NO_DATA:
$status = ui_print_status_image('module_no_data.png', $data_module, true);
break;
default:
case AGENT_MODULE_STATUS_UNKNOWN:
$status = ui_print_status_image('module_unknown.png', $data_module, false);
$status = ui_print_status_image('module_unknown.png', $data_module, true);
break;
}

@ -1152,6 +1152,10 @@ if (check_login()) {
$title
);
if (strlen($module['ip_target']) !== 0) {
$title .= '<br/>IP: '.$module['ip_target'];
}
$last_status_change_text = __('Time elapsed since last status change: ');
$last_status_change_text .= (empty($module['last_status_change']) === false) ? human_time_comparation($module['last_status_change']) : __('N/A');

@ -402,8 +402,8 @@ function process_user_login_remote($login, $pass, $api=false)
$config['auth_error'] = __('User not found in database or incorrect password');
return false;
} else {
$user_info['fullname'] = db_escape_string_sql($sr['cn'][0]);
$user_info['email'] = $sr['mail'][0];
$user_info['fullname'] = db_escape_string_sql(io_safe_input($sr['cn'][0]));
$user_info['email'] = io_safe_input($sr['mail'][0]);
// Create the user.
$create_user = create_user_and_permisions_ldap(

@ -0,0 +1,782 @@
<?php
/**
* Agent deploy wizard
*
* @category Class
* @package Pandora FMS
* @subpackage Agent deploy wizard
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
global $config;
/**
* Provides functionality for agent deploy wizard.
*/
class AgentDeployWizard
{
/**
* Url of controller.
*
* @var string
*/
public $ajaxController;
/**
* References datatables object identifier.
*
* @var string
*/
public $tableId;
/**
* Allowed methods to be called using AJAX request.
*
* @var array
*/
public $AJAXMethods = ['loadModal'];
/**
* Checks if target method is available to be called using AJAX.
*
* @param string $method Target method.
*
* @return boolean True allowed, false not.
*/
public function ajaxMethod($method)
{
return in_array($method, $this->AJAXMethods);
}
/**
* Generates a JSON error.
*
* @param string $msg Error message.
*
* @return void
*/
public function error($msg)
{
echo json_encode(
['error' => $msg]
);
}
/**
* Minor function to dump json message as ajax response.
*
* @param string $type Type: result || error.
* @param string $msg Message.
* @param boolean $delete Deletion messages.
*
* @return void
*/
private function ajaxMsg($type, $msg, $delete=false)
{
if ($type === 'error') {
$msg_title = ($delete === true) ? 'Failed while removing' : 'Failed while saving';
} else {
$msg_title = ($delete === true) ? 'Successfully deleted' : 'Successfully saved into keystore';
}
echo json_encode(
[ $type => __($msg_title).':<br>'.$msg ]
);
exit;
}
/**
* Initializes object and validates user access.
*
* @param string $ajax_controller Path of ajaxController, is the 'page'
* variable sent in ajax calls.
*
* @return object
*/
public function __construct($ajax_controller)
{
global $config;
// Check access.
check_login();
if ((bool) check_acl($config['id_user'], 0, 'AR') === false) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent deploy wizard'
);
if (is_ajax()) {
echo json_encode(['error' => 'noaccess']);
} else {
include 'general/noaccess.php';
}
exit;
}
$this->ajaxController = $ajax_controller;
return $this;
}
/**
* Prints inputs for modal "Deploy agents".
*
* @return void
*/
public function loadModal()
{
ob_start();
echo '<div id="wizard-modal-content">';
echo $this->getModalContent();
echo '</div>';
echo ob_get_clean();
}
/**
* Run AgentDeployWizard.
*
* @return void
*/
public function run()
{
global $config;
if (check_acl($config['id_user'], 0, 'AR') === false) {
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access agent deploy.'
);
include 'general/noaccess.php';
return;
}
ui_require_css_file('agent_deploy_wizard');
// Auxiliar div for agent deploy modal.
echo '<div id="agent_deploy_modal" class="invisible"></div>';
echo $this->loadJS();
}
/**
* Generates content of modal.
*
* @return string Modal content.
*/
public function getModalContent()
{
global $config;
ob_start();
$inputs = [];
// Container div for stepper.
$stepper_container = html_print_div(
[
'id' => 'stepper_container',
'class' => 'stepper',
],
true
);
html_print_div(
[
'id' => 'modal_header',
'class' => 'margin-bottom-10',
'content' => $stepper_container,
]
);
// Deploy configuration.
$tableConfiguration = new stdClass();
$tableConfiguration->class = 'filter-table-adv w100p';
$tableConfiguration->data = [];
$tableConfiguration->style = [];
$tableConfiguration->cellclass = [];
$tableConfiguration->colspan = [];
$tableConfiguration->rowclass['os'] = 'margin-bottom-5';
$tableConfiguration->rowstyle['block2'] = 'display: flex; justify-content: space-between;';
$tableConfiguration->rowspan = [];
$windows_label_img = html_print_image(
'/images/windows-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon']
);
$windows_label = html_print_div(
[
'style' => 'display: flex;align-items: center; margin-top: 5px;margin-bottom: 5px;',
'content' => $windows_label_img.'Windows',
],
true
);
$linux_label_img = html_print_image(
'/images/linux-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon']
);
$linux_label = html_print_div(
[
'style' => 'display: flex;align-items: center; margin-top: 5px;margin-bottom: 5px;',
'content' => $linux_label_img.'Unix / Linux',
],
true
);
$mac_label_img = html_print_image(
'/images/apple-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon']
);
$mac_label = html_print_div(
[
'style' => 'display: flex;align-items: center; margin-top: 5px;margin-bottom: 5px;',
'content' => $mac_label_img.'Mac OS',
],
true
);
// Operating System switch buttons.
$switchButtons = [];
$switchButtons[] = html_print_radio_button_extended(
'os',
0,
$windows_label,
0,
false,
'',
'',
true
);
$switchButtons[] = html_print_radio_button_extended(
'os',
1,
$linux_label,
0,
false,
'',
'',
true
);
$switchButtons[] = html_print_radio_button_extended(
'os',
2,
$mac_label,
0,
false,
'',
'',
true
);
$sub_tip = '<span class="input_sub_placeholder_normal">'.__('Please note that all OS must be 64-bit based architecture').'</span>';
$tableConfiguration->data['os'][] = html_print_label_input_block(
__('Choose your OS'),
html_print_div(
[
'id' => 'os_selector',
'class' => 'switch_radio_button custom-switch-radio-button',
'content' => implode('', $switchButtons),
],
true
).$sub_tip
);
$server_add_help_tip = ui_print_help_tip(
__('Use your %s Data Server IP address here. It must be possible to establish a connection from the agent to port 41121/tcp of this address.', get_product_name()),
true
);
$tableConfiguration->data['block2'][0] = html_print_label_input_block(
__('Server address').$server_add_help_tip,
html_print_input_text(
'server_addr',
$_SERVER['SERVER_ADDR'],
'',
16,
100,
true,
false,
true,
'',
'w260px'
)
);
$tableConfiguration->data['block2'][1] = html_print_label_input_block(
__('Group'),
html_print_select_groups(
false,
'AR',
false,
'group',
$group,
'',
'',
0,
true,
false,
true,
'w260px',
false,
'',
'',
false,
'id_grupo',
false,
false,
false,
'260px',
false,
true,
)
);
echo '<div id="config_page">';
echo '<form id="form_generate_installer" method="post" action="index.php?sec=gagente&amp;sec2=godmode/agentes/agent_deploy">';
if ($config['language'] === 'es') {
$instructions_url = 'https://pandorafms.com/manual/es/documentation/02_installation/05_configuration_agents';
} else {
$instructions_url = 'https://pandorafms.com/manual/en/documentation/02_installation/05_configuration_agents';
}
$instructions_link = '<a class="green-link" style="font-size: 15px;" href="'.$instructions_url.'" target="_blank">'.__('view the following instructions').'</a>';
$more_info_link = html_print_div(
[
'id' => 'config_form_more_info',
'class' => 'warn-box',
'content' => __('If you need more information regarding agents').', '.$instructions_link,
],
true
);
$table_config = html_print_div(
[
'style' => 'flex: 1;',
'content' => html_print_table($tableConfiguration, true),
],
true
);
html_print_div(
[
'id' => 'config_form',
'class' => 'white_table_flex agent_details_col modal-content',
'content' => $table_config.$more_info_link,
]
);
html_print_div(
['id' => 'footer_separator']
);
html_print_div(
[
'id' => 'config_buttonset',
'class' => 'ui-dialog-buttonset',
'content' => html_print_submit_button(
__('Generate installer'),
'generate_installer',
false,
[],
true,
),
]
);
echo '</form>';
echo '</div>';
echo '<div id="installer_page">';
echo '<div id="installer_data" class="white_table_flex agent_details_col modal-content">';
// Start of Unix / Linux installer section.
$title = html_print_image(
'/images/linux-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon svg-brightness-0']
);
$title .= '<span class="header_title">'.__('Linux agent').'</span>';
$content = html_print_div(
[
'class' => 'installer-title',
'content' => $title,
],
true
);
$content .= '<span>'.__('Run the following command in the shell of your Linux server to perform the installation of the generated agent:').'</span>';
$content .= html_print_code_picker('run_command_box_linux', '', 'installer-code-fragment', false, true);
$content .= '<span>'.__('Once installed, you must run the following command to start the software agent service:').'</span>';
$content .= html_print_code_picker('start_service_box_linux', '', 'installer-code-fragment', true, true);
if ($config['language'] === 'es') {
$linux_dependencies_url = 'https://pandorafms.com/manual/es/documentation/02_installation/01_installing#requisitos_para_el_agente';
} else {
$linux_dependencies_url = 'https://pandorafms.com/manual/en/documentation/02_installation/01_installing#agent_requirements';
}
$linux_dependencies_link = '<a class="green-link" href="'.$linux_dependencies_url.'" target="_blank">'.__('dependencies').'</a>';
$content .= '<span>'.__('For the correct operation of the Linux agent it is necessary that the server has installed the following ').$linux_dependencies_link.'</span>';
html_print_div(
[
'id' => 'linux_installer',
'class' => 'white_table_flex agent_details_col',
'style' => 'margin-bottom: 20px',
'content' => $content,
]
);
// Start of Windows installer section.
$title = html_print_image(
'/images/windows-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon svg-brightness-0']
);
$title .= '<span class="header_title">'.__('Windows agent').'</span>';
$content = html_print_div(
[
'class' => 'installer-title',
'content' => $title,
],
true
);
$content .= '<span>'.__('Run the following command in cmd.exe as an administrator:').'</span>';
$content .= html_print_code_picker('run_command_box_windows', '', 'installer-code-fragment', false, true);
$content .= '<span>'.__('Once installed, you must run the following command to start the software agent service:').'</span>';
$content .= html_print_code_picker('start_service_box_windows', '', 'installer-code-fragment', true, true);
html_print_div(
[
'id' => 'win_installer',
'class' => 'white_table_flex agent_details_col',
'style' => 'margin-bottom: 20px',
'content' => $content,
]
);
// Start of MacOS installer section.
$title = html_print_image(
'/images/apple-grey@svg.svg',
true,
['class' => 'installer-title-icon main_menu_icon svg-brightness-0']
);
$title .= '<span class="header_title">'.__('Mac agent').'</span>';
$content = html_print_div(
[
'class' => 'installer-title',
'content' => $title,
],
true
);
$mac_warn_box = html_print_div(
[
'id' => 'warn_box_mac',
'class' => 'warn-box',
'content' => __('To complete the installation process, please perform a manual installation and configure the server address to XXX and specify the group as XXX. Thank you for your cooperation.'),
],
true
);
html_print_div(
[
'id' => 'mac_installer',
'class' => 'white_table_flex agent_details_col',
'style' => 'margin-bottom: 20px',
'content' => $content.$mac_warn_box,
]
);
// Footer.
html_print_div(['id' => 'footer_separator']);
echo '</div>';
html_print_div(
[
'id' => 'installer_buttonset',
'class' => 'flex-row',
'style' => '',
'content' => html_print_button(
__('Change configuration'),
'change_configuration',
false,
'',
['class' => 'secondary'],
true,
).html_print_button(
__('Done'),
'done',
false,
'',
['style' => 'min-width: 0;'],
true
),
]
);
echo '</div>';
return ob_get_clean();
}
/**
* Loads JS content.
*
* @return string JS content.
*/
public function loadJS()
{
ob_start();
ui_require_javascript_file('stepper', 'include/javascript/', true);
// Javascript content.
?>
<script type="text/javascript">
/**
* Cleanup current dom entries.
*/
function cleanupDOM() {
$('#div-identifier').empty();
$('#div-product').empty();
$('#div-username').empty();
$('#div-password').empty();
$('#div-extra_1').empty();
$('#div-extra_2').empty();
}
/**
* Process ajax responses and shows a dialog with results.
*/
function showMsg(data) {
var title = "<?php echo __('Success'); ?>";
var text = '';
var failed = 0;
try {
data = JSON.parse(data);
text = data['result'];
} catch (err) {
title = "<?php echo __('Failed'); ?>";
text = err.message;
failed = 1;
}
if (!failed && data['error'] != undefined) {
title = "<?php echo __('Failed'); ?>";
text = data['error'];
failed = 1;
}
if (data['report'] != undefined) {
data['report'].forEach(function (item){
text += '<br>'+item;
});
}
$('#msg').empty();
$('#msg').html(text);
$('#msg').dialog({
width: 450,
position: {
my: 'center',
at: 'center',
of: window,
collision: 'fit'
},
title: title,
buttons: [
{
class: "ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: 'OK',
click: function(e) {
if (!failed) {
$(".ui-dialog-content").dialog("close");
$('.info').hide();
cleanupDOM();
dt_keystore.draw(false);
} else {
$(this).dialog('close');
}
}
}
]
});
}
function generate_installer() {
$('#config_page').hide();
$('#installer_page').show();
var os_val = $('input[name="os"]:checked').val();
var server_addr_val = $('input[name="server_addr"]').val();
var group_val = $('[name="group"] option:selected').text();
var win_installer_command = `Invoke-WebRequest -Uri https://firefly.pandorafms.com/pandorafms/latest/Windows/Pandora%20FMS%20Windows%20Agent%20v7.0NG.x86_64.exe -OutFile \$\{env:tmp\}\\\pandora-agent-windows.exe; & \$\{env:tmp\}\\\pandora-agent-windows.exe /S --ip ${server_addr_val} --group \"${group_val}\" --remote_config 1`;
var linux_installer_command = `export PANDORA_SERVER_IP='${server_addr_val}' && \\ \nexport PANDORA_REMOTE_CONFIG=1 && \\ \nexport PANDORA_GROUP='${group_val}' && \\ \ncurl -Ls https://pfms.me/agent-deploy | bash`;
var mac_installer_text = `To complete the installation process, please perform a manual installation and configure the server IP to ${server_addr_val} and specify the group as ${group_val}. Thank you for your cooperation`;
var linux_service_start = "/etc/init.d/pandora_agent_daemon start";
var win_service_start = "NET START PandoraFMSAgent";
switch (os_val) {
case '0':
$('#run_command_box_windows').text(win_installer_command);
$('#start_service_box_windows').text(win_service_start);
$('#linux_installer').hide();
$('#mac_installer').hide();
$('#win_installer').show();
break;
case '1':
$('#run_command_box_linux').text(linux_installer_command);
$('#start_service_box_linux').text(linux_service_start);
$('#win_installer').hide();
$('#mac_installer').hide();
$('#linux_installer').show();
break;
case '2':
$('#warn_box_mac').text(mac_installer_text);
$('#win_installer').hide();
$('#linux_installer').hide();
$('#mac_installer').show();
break;
}
}
function display_deploy_configuration() {
$('#installer_page').hide();
$('#config_page').show();
}
/**
* Loads modal from AJAX.
*/
function show_agent_install_modal() {
var title = '<?php echo __('Deploy agent'); ?>';
var method = '';
load_modal({
target: $('#agent_deploy_modal'),
form: 'modal_form',
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
ajax_callback: showMsg,
cleanup: cleanupDOM,
modal: {
title: title,
},
extradata: [
{
name: 'identifier',
}
],
onload: function() {
display_deploy_configuration();
var stepper_step_names = [];
stepper_step_names.push('<?php echo __('Configuration'); ?>');
stepper_step_names.push('<?php echo __('Installer'); ?>');
var stepper_container = $('#stepper_container');
var stepper = new Stepper(stepper_container, stepper_step_names);
stepper.render();
// Initial step: 1.
stepper.selectStep(1);
$("#form_generate_installer").on('submit', function(e) {
// We only want the form to be submitted for field validation.
e.preventDefault();
generate_installer();
stepper.selectStep(2);
});
$("#button-change_configuration").on('click', function() {
display_deploy_configuration();
stepper.selectStep(1);
});
$("#button-done").on('click', function() {
$(".ui-dialog-content").dialog("close");
$('.info').hide();
cleanupDOM();
dt_keystore.draw(false);
});
},
onshow: {
page: '<?php echo $this->ajaxController; ?>',
method: 'loadModal'
},
onsubmit: {
page: '<?php echo $this->ajaxController; ?>',
method: method
}
});
}
$(document).ready(function() {
var page = 0;
$("#button-modal_deploy_agent").on('click', function() {
show_agent_install_modal();
});
});
</script>
<?php
// EOF Javascript content.
return ob_get_clean();
}
}

@ -318,17 +318,29 @@ class AuditLog extends HTML
$count = (int) db_get_value_sql(sprintf('SELECT COUNT(*) as "total" FROM tsesion WHERE %s', $filter));
$sql = sprintf(
'SELECT *
FROM tsesion
WHERE %s
ORDER BY %s
LIMIT %d, %d',
$filter,
$order,
$start,
$length
);
if ($length !== '-1') {
$sql = sprintf(
'SELECT *
FROM tsesion
WHERE %s
ORDER BY %s
LIMIT %d, %d',
$filter,
$order,
$start,
$length
);
} else {
$sql = sprintf(
'SELECT *
FROM tsesion
WHERE %s
ORDER BY %s',
$filter,
$order
);
}
$data = db_get_all_rows_sql($sql);
if (empty($data) === false) {

@ -102,12 +102,26 @@ class Heatmap
protected $group = null;
/**
* Heatmap group.
* Heatmap dashboard.
*
* @var boolean
*/
protected $dashboard = null;
/**
* Public hash.
*
* @var boolean
*/
protected $hash = null;
/**
* Public user.
*
* @var boolean
*/
protected $publicUser = null;
/**
* Constructor function
@ -131,7 +145,9 @@ class Heatmap
int $height=0,
string $search=null,
int $group=1,
bool $dashboard=false
bool $dashboard=false,
string $hash='',
string $publicUser=''
) {
$this->type = $type;
$this->filter = $filter;
@ -142,6 +158,8 @@ class Heatmap
$this->search = $search;
$this->group = $group;
$this->dashboard = $dashboard;
$this->hash = $hash;
$this->publicUser = $publicUser;
}
@ -164,15 +182,18 @@ class Heatmap
false
),
'data' => [
'page' => 'operation/heatmap',
'method' => 'showHeatmap',
'randomId' => $this->randomId,
'type' => $this->type,
'filter' => $this->filter,
'refresh' => $this->refresh,
'search' => $this->search,
'group' => $this->group,
'dashboard' => (int) $this->dashboard,
'page' => 'operation/heatmap',
'method' => 'showHeatmap',
'randomId' => $this->randomId,
'type' => $this->type,
'filter' => $this->filter,
'refresh' => $this->refresh,
'search' => $this->search,
'group' => $this->group,
'dashboard' => (int) $this->dashboard,
'auth_hash' => $this->hash,
'auth_class' => 'PandoraFMS\Dashboard\Manager',
'id_user' => $this->publicUser,
],
];
@ -1090,6 +1111,7 @@ class Heatmap
case 3:
$status = 'unknown';
break;
case AGENT_MODULE_STATUS_NO_DATA:
case AGENT_MODULE_STATUS_NOT_INIT:
case 5:
$status = 'notinit';

@ -568,9 +568,9 @@ class TipsWindow
}
$sql = sprintf(
'SELECT id, name AS language, title, text, url, enable
'SELECT id, id_language AS language, title, text, url, enable
FROM twelcome_tip t
LEFT JOIN tlanguage l ON t.id_lang = l.id_language COLLATE utf8mb4_unicode_ci
LEFT JOIN tlanguage l ON t.id_lang COLLATE utf8mb4_unicode_ci = CONVERT(l.id_language USING utf8mb4) COLLATE utf8mb4_unicode_ci
%s %s %s',
$filter,
$order,
@ -582,7 +582,7 @@ class TipsWindow
$sqlCount = sprintf(
'SELECT count(*)
FROM twelcome_tip t
LEFT JOIN tlanguage l ON t.id_lang = l.id_language COLLATE utf8mb4_unicode_ci
LEFT JOIN tlanguage l ON t.id_lang COLLATE utf8mb4_unicode_ci = CONVERT(l.id_language USING utf8mb4) COLLATE utf8mb4_unicode_ci
%s',
$filter
);

@ -20,8 +20,8 @@
/**
* Pandora build version and version
*/
$build_version = 'PC230426';
$pandora_version = 'v7.0NG.770';
$build_version = 'PC230517';
$pandora_version = 'v7.0NG.771';
// Do not overwrite default timezone set if defined.
$script_tz = @date_default_timezone_get();
@ -220,7 +220,7 @@ if (!isset($config['inventory_changes_blacklist'])) {
if (!isset($config['url_update_manager'])) {
config_update_value(
'url_update_manager',
'https://licensing.artica.es/pandoraupdate7/server.php'
'https://licensing.pandorafms.com/pandoraupdate7/server.php'
);
}

@ -2149,8 +2149,9 @@ function get_group_alerts(
break;
}
// WHEN SELECT ALL TAGS TO FILTER ALERTS
$modules_tags = count(db_process_sql('select * from ttag'));
// WHEN SELECT ALL TAGS TO FILTER ALERTS.
$modules_tag_query = db_process_sql('select * from ttag');
$modules_tags = ($modules_tag_query !== false) ? (count($modules_tag_query)) : false;
$modules_user_tags = count(explode(',', $tag));

@ -13090,10 +13090,18 @@ function api_set_create_event($id, $trash1, $other, $returnType)
if ($other['data'][18] != '') {
$values['id_extra'] = $other['data'][18];
$sql_validation = 'SELECT id_evento FROM tevento where estado IN (0,2) and id_extra ="'.$other['data'][18].'";';
$sql_validation = 'SELECT id_evento,estado FROM tevento where estado IN (0,2) and id_extra ="'.$other['data'][18].'";';
$validation = db_get_all_rows_sql($sql_validation);
if ($validation) {
foreach ($validation as $val) {
if ((bool) $config['keep_in_process_status_extra_id'] === true
&& (int) $val['estado'] === EVENT_STATUS_INPROCESS
&& (int) $values['status'] === 0
) {
$values['status'] = 2;
}
api_set_validate_event_by_id($val['id_evento']);
}
}

@ -370,6 +370,10 @@ function config_update_config()
$error_update[] = __('alias_as_name');
}
if (config_update_value('keep_in_process_status_extra_id', get_parameter('keep_in_process_status_extra_id'), true) === false) {
$error_update[] = __('keep_in_process_status_extra_id');
}
if (config_update_value('console_log_enabled', get_parameter('console_log_enabled'), true) === false) {
$error_update[] = __('Console log enabled');
}
@ -2347,6 +2351,10 @@ function config_process_config()
config_update_value('alias_as_name', 0);
}
if (!isset($config['keep_in_process_status_extra_id'])) {
config_update_value('keep_in_process_status_extra_id', 0);
}
if (!isset($config['console_log_enabled'])) {
config_update_value('console_log_enabled', 0);
}
@ -3805,7 +3813,7 @@ function get_um_url()
$url = $config['url_update_manager'];
$url = substr($url, 0, (strlen($url) - strpos(strrev($url), '/')));
} else {
$url = 'https://licensing.artica.es/pandoraupdate7/';
$url = 'https://licensing.pandorafms.com/pandoraupdate7/';
config_update_value(
'url_update_manager',
$url.'/server.php'

@ -5241,7 +5241,7 @@ function graph_monitor_wheel($width=550, $height=600, $filter=false)
'name' => __('Main node'),
'type' => 'center_node',
'children' => iterate_group_array($data_groups, $data_agents),
'color' => '#3F3F3F',
'color' => ($config['style'] === 'pandora_black') ? '#111' : '#FFF',
];
if (empty($graph_data['children'])) {

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