Merge remote-tracking branch 'origin/develop' into ent-5822-prueba-concepto-modal-selector-de-grupos

This commit is contained in:
fbsanchez 2020-09-29 12:47:11 +02:00
commit 5f4893ef1a
161 changed files with 2694 additions and 1028 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
pandora_console/attachment/agents

View File

@ -24,7 +24,7 @@ cd $CODEHOME && tar zcvf $RPMHOME/SOURCES/pandorafms_server-$LOCAL_VERSION.tar.g
cd $CODEHOME/pandora_agents/shellscript && tar zcvf $RPMHOME/SOURCES/pandorafms_agent-$LOCAL_VERSION.tar.gz --exclude \.exe --exclude \.svn --exclude nohup linux || exit 1
# Unix agent
cd $CODEHOME/pandora_agents && tar zvcf $RPMHOME/SOURCES/pandorafms_agent_unix-$LOCAL_VERSION.tar.gz --exclude \.exe --exclude \.svn --exclude nohup --exclude NT4 unix || exit 1
cd $CODEHOME/pandora_agents && tar zvcf $RPMHOME/SOURCES/pandorafms_agent_unix-$LOCAL_VERSION.tar.gz --exclude \.exe --exclude \.svn --exclude nohup --exclude NT4 --exclude Darwin/dmg unix || exit 1
# Enterprise console
cd $PANDHOME_ENT/pandora_console && tar zcvf $RPMHOME/SOURCES/pandorafms_console_enterprise-$LOCAL_VERSION.tar.gz --exclude \.exe --exclude \.svn enterprise/* || exit 1

View File

@ -57,6 +57,9 @@ AGENT_UNIX_FILE="$CODEHOME/pandora_agents/unix/pandora_agent"
AGENT_WIN_FILE="$CODEHOME/pandora_agents/win32/pandora.cc"
AGENT_WIN_MPI_FILE="$CODEHOME/pandora_agents/win32/installer/pandora.mpi"
AGENT_WIN_RC_FILE="$CODEHOME/pandora_agents/win32/versioninfo.rc"
AGENT_DARWIN_BUILDER="$CODEHOME/pandora_agents/unix/Darwin/dmg/build_darwin_dmg.sh"
AGENT_DARWIN_DISTR="$CODEHOME/pandora_agents/unix/Darwin/dmg/extras/distribution.xml"
AGENT_DARWIN_PLIST="$CODEHOME/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Info.plist"
SATELLITE_FILE="$PANDHOME_ENT/satellite_server/satellite_server.pl"
PERL_PLUGIN_FILES="$PANDHOME_ENT/pandora_server/util/recon_script/vmware-plugin.pl \
$PANDHOME_ENT/pandora_server/util/recon_script/pcm_client.pl \
@ -138,6 +141,14 @@ for file in $INSTALLER_FILES; do
update_installer_version $file
done
# Darwin dmg installer files
echo "Updating DARWIN DMG files..."
sed -i -e "/VERSION/s/=.*/=\"$VERSION\"/" "$AGENT_DARWIN_BUILDER"
sed -i -r "s/(version=\").*(\"\s+onConclusion=)/\1$VERSION\2/g" "$AGENT_DARWIN_DISTR"
sed -i -r "s/(CFBundleVersion<\/key>\s*<string>).*(<\/string>)/\1$VERSION\2/g" "$AGENT_DARWIN_PLIST"
sed -i -r "s/(CFBundleShortVersionString<\/key>\s*<string>).*(<\/string>)/\1$VERSION\2/g" "$AGENT_DARWIN_PLIST"
sed -i -r "s/(CFBundleGetInfoString<\/key>\s*<string>).*( Pandora FMS)/\1$VERSION\2/g" "$AGENT_DARWIN_PLIST"
# Perl plugins files
for file in $PERL_PLUGIN_FILES; do
echo "Updating plugin file $file..."
@ -155,7 +166,7 @@ sed -i -e "s/my\s\s*\$version\s*=.*/my \$version = \"$VERSION PS$BUILD\";/" "$SE
sed -i -e "s/\s*\#\s*\Version.*/\# Version $VERSION/" "$SERVER_CONF_FILE"
sed -i -e "s/\s*\!define PRODUCT_VERSION.*/\!define PRODUCT_VERSION \"$VERSION\"/" "$SERVER_WIN_MPI_OPEN_FILE"
sed -i -e "s/\s*\!define PRODUCT_VERSION.*/\!define PRODUCT_VERSION \"$VERSION\"/" "$SERVER_WIN_MPI_ENT_FILE"
echo "Updateing Pandora PluginTools version..."
echo "Updating Pandora PluginTools version..."
sed -i -e "s/my\s\s*\$pandora_version\s*=.*/my \$pandora_version = \"$VERSION\";/" "$PLUGIN_LIB_FILE"
sed -i -e "s/my\s\s*\$pandora_build\s*=.*/my \$pandora_build = \"$BUILD\";/" "$PLUGIN_LIB_FILE"

View File

@ -1,53 +1,59 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Fandora FMS - Generate SSH keys step-by-step</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="author" content="Sancho Lerena, Raul Mateos and others">
<meta name="copyright" content="This is GPL software. Created by Sancho Lerena and others">
</head>
<body>
<center>
<img src="images/logo.png" alt="">
</center>
<head>
<title>Fandora FMS - Generate SSH keys step-by-step</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos and others" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2>Step-by-step generating SSH keys</h2>
<h2>Step-by-step generating SSH keys</h2>
From
<a href="http://www.openideas.info/wiki/index.php?title=Pandora:FAQ#How_to_generate_a_pair_of_SSH_keys_for_Pandora_Windows_agent_1.2_.3F">Pandora FMS FAQ</a>.
From
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ#How_to_generate_a_pair_of_SSH_keys_for_Pandora_Windows_agent.3F_.28SSH_Transfer_only.29"
>Pandora FMS FAQ</a
>.
<ol>
<li>
Go to <code>.\util</code> of your Pandora FMS agent for Windows
and run <code>puttygen.exe</code>.<br>
Generate keys, SSH-2_DSA, 1024:<br><br>
<img src="images/1.jpg"><br><br>
</li>
<li>
Press Generate<br>
Export key to OpenSSH key (Cygwin uses a port of OpenSSH)<br><br>
<img src="images/2.jpg"><br><br>
</li>
<li>
We have no chosen password, so press YES:<br><br>
<img src="images/3.jpg"><br><br>
</li>
<li>
Save it as <code>c:\pandora\keys\id_dsa:</code><br><br>
<img src="images/4.jpg"><br><br>
</li>
<li>
Now let's copy the public key to clipboard:<br><br>
<img src="images/5.jpg"><br><br>
</li>
<li>
and paste it as <code>c:\pandora_agent\keys\id_dsa.pub</code>,
and also to the <code>/home/pandora/.ssh/authorized_keys</code> file.
<br><br>
<img src="images/6.jpg"><br><br>
</li>
</ol>
</body>
</html>
<ol>
<li>
Go to <code>.\util</code> of your Pandora FMS agent for Windows and run
<code>puttygen.exe</code>.<br />
Generate keys, SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Press Generate<br />
Export key to OpenSSH key (Cygwin uses a port of OpenSSH)<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
We have no chosen password, so press YES:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Save it as <code>c:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Now let's copy the public key to clipboard:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
and paste it as <code>c:\pandora_agent\keys\id_dsa.pub</code>, and also
to the <code>/home/pandora/.ssh/authorized_keys</code> file.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

View File

@ -1,53 +1,62 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Pandora FMS - Generación de claves SSH en Windows paso por paso</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="author" content="Sancho Lerena, Raul Mateos y otros">
<meta name="copyright" content="This is GPL software. Created by Sancho Lerena and others">
</head>
<body>
<center>
<img src="images/logo.png" alt="">
</center>
<h2 class="print">Generación de claves SSH en Windows paso por paso</h2>
<head>
<title>
Pandora FMS - Generación de claves SSH en Windows paso por paso
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos y otros" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2 class="print">Generación de claves SSH en Windows paso por paso</h2>
Extraído de las
<a href="http://www.openideas.info/wiki/index.php?title=Pandora:FAQ_ES#.C2.BF_C.C3.B3mo_puedo_generar_un_par_de_claves_SHH_para_el_agente_para_Windows_1.2_.3F">
FAQ</a>.
Extraído de las
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ_ES#.C2.BFC.C3.B3mo_puedo_generar_un_par_de_claves_SHH_para_el_agente_para_Windows_.28SSH_Transfer.29_.3F"
>
FAQ</a
>.
<ol>
<li>
Desde el directorio <code>.\util</code> del agente Pandora FMS para
windows ejecutamos <code>puttygen.exe</code>.<br>
Generamos claves SSH-2_DSA, 1024:<br><br>
<img src="images/1.jpg"><br><br>
</li>
<li>
Pulsamos «Generate»
para generar la clave.<br>
Exportamos la clave a formato OpenSSH<br><br>
<img src="images/2.jpg"><br><br>
</li>
<li>
No elegimos contraseña, con lo cual pulsamos «Sí»:<br><br>
<img src="images/3.jpg"><br><br>
</li>
<li>
Guardamos la clave como <code>C:\pandora\keys\id_dsa:</code><br><br>
<img src="images/4.jpg"><br><br>
</li>
<li>
Ahora copiamos la clave pública al portapapeles:<br><br>
<img src="images/5.jpg"><br><br>
</li>
<li>
Pegamos la clave en un nuevo fichero <code>C:\pandora_agent\keys\id_dsa.pub</code>,
y debemos también añadirla al fichero <code>/home/pandora/.ssh/authorized_keys</code>.
<br><br>
<img src="images/6.jpg"><br><br>
</li>
</ol>
</body></html>
<ol>
<li>
Desde el directorio <code>.\util</code> del agente Pandora FMS para
windows ejecutamos <code>puttygen.exe</code>.<br />
Generamos claves SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Pulsamos «Generate» para generar la clave.<br />
Exportamos la clave a formato OpenSSH<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
No elegimos contraseña, con lo cual pulsamos «Sí»:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Guardamos la clave como <code>C:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Ahora copiamos la clave pública al portapapeles:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
Pegamos la clave en un nuevo fichero
<code>C:\pandora_agent\keys\id_dsa.pub</code>, y debemos también
añadirla al fichero <code>/home/pandora/.ssh/authorized_keys</code>.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

View File

@ -4,7 +4,7 @@
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2007-2008 Artica Soluciones Tecnologicas S.L.
#
# tentacle_client.pl Tentacle Client. See http://www.openideas.info/wiki for
# tentacle_client.pl Tentacle Client. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -155,7 +155,7 @@ my $t_zip = 0;
sub print_help {
print ("Usage: $0 [options] [file] [file] ...\n\n");
print ("Tentacle client v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle client v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a address\tServer address (default $t_address).\n");
print ("\t-b localaddress\tLocal address to bind.\n");
@ -1091,7 +1091,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<File::Basename>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -1,13 +1,13 @@
#!/usr/bin/perl
##########################################################################
# Tentacle Server
# See http://www.openideas.info/wiki for protocol description.
# See https://pandorafms.com/docs/ for protocol description.
# Tentacle have IANA assigned port tpc/41121 as official port.
##########################################################################
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2005-2010 Artica Soluciones Tecnologicas S.L
#
# tentacle_server.pl Tentacle Server. See http://www.openideas.info/wiki for
# tentacle_server.pl Tentacle Server. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -211,7 +211,7 @@ sub print_help {
$" = ',';
print ("Usage: $0 -s <storage directory> [options]\n\n");
print ("Tentacle server v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle server v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a ip_addresses\tIP addresses to listen on (default @t_addresses).\n");
print ("\t \t(Multiple addresses separated by comma can be defined.)\n");
@ -1859,7 +1859,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<Thread::Semaphore>, L<POSIX>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -4,7 +4,7 @@
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2007-2008 Artica Soluciones Tecnologicas S.L.
#
# tentacle_client.pl Tentacle Client. See http://www.openideas.info/wiki for
# tentacle_client.pl Tentacle Client. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -155,7 +155,7 @@ my $t_zip = 0;
sub print_help {
print ("Usage: $0 [options] [file] [file] ...\n\n");
print ("Tentacle client v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle client v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a address\tServer address (default $t_address).\n");
print ("\t-b localaddress\tLocal address to bind.\n");
@ -1091,7 +1091,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<File::Basename>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -4,7 +4,7 @@
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2007-2008 Artica Soluciones Tecnologicas S.L.
#
# tentacle_client.pl Tentacle Client. See http://www.openideas.info/wiki for
# tentacle_client.pl Tentacle Client. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -155,7 +155,7 @@ my $t_zip = 0;
sub print_help {
print ("Usage: $0 [options] [file] [file] ...\n\n");
print ("Tentacle client v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle client v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a address\tServer address (default $t_address).\n");
print ("\t-b localaddress\tLocal address to bind.\n");
@ -1091,7 +1091,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<File::Basename>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -99,6 +99,12 @@ transfer_mode tentacle
# Proxy timeout (by default 1s)
# proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# User the agent will run as
#pandora_user root

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.749-200914
Version: 7.0NG.749-200929
Architecture: all
Priority: optional
Section: admin

View File

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

View File

@ -6,13 +6,16 @@
<string>com.pandorafms.pandorafms</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/pandora_agent</string>
<string>/usr/local/bin/pandora_agent</string>
<string>/etc/pandora</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>PandoraFMS agent</string>
<key>UserName</key>
<string>root</string>
</dict>

View File

@ -0,0 +1,14 @@
### DMG Agent compilation for MacOS
1. Move to the dmg directory, where build_darwin_dmg.sh is located
# cd /<code-path>/pandorafms/pandora_agents/unix/Darwin/dmg/HOWTO.txt
2. Run the script. It has three optional arguments. In this order:
- DMG package name.
By default is "Pandora FMS MacOS agent"
- DMG package version.
It uses the current version by default (e.g. "7.NG.748")
- Build path, where temporary files and final .dmg will be created.
By default /root/code/pandorafms/pandora_agents/unix/Darwin/dmg (it creates "build" and "buildtmp" folders, deletes buildtmp when finished)
3. The script should return "SUCCESS: DMG file created at XXXX" when finished.

View File

@ -0,0 +1,105 @@
#!/usr/bin/env bash
# Restore the original working directory and exit.
function error {
popd >/dev/null 2>&1
exit 1
}
# Keeping this for future CICD integration
if [ "$CI_PROJECT_DIR" != "" ]; then
LOCALINST="$CODEHOME/pandora_agents/unix/Darwin/dmg"
else
LOCALINST="/root/code/pandorafms/pandora_agents/unix/Darwin/dmg"
fi
# DMG package name
if [ "$#" -ge 1 ]; then
DMGNAME="$1"
else
DMGNAME="Pandora FMS MacOS agent"
fi
# DMG package version
if [ "$#" -ge 2 ]; then
VERSION="7.0NG.749"
else
VERSION="7.0NG.749"
fi
# Path for the generated DMG file
if [ "$#" -ge 3 ]; then
BUILD_PATH="$3"
else
BUILD_PATH="/root/code/pandorafms/pandora_agents/unix/Darwin/dmg"
fi
BUILD_DMG="$BUILD_PATH/build"
BUILD_TMP="$BUILD_PATH/buildtmp"
FULLNAME="7.0NG.749"
echo "VERSION-"$VERSION" NAME-"$DMGNAME
pushd .
cd $LOCALINST
# Copy necessary files to installer
cp ../com.pandorafms.pandorafms.plist files/pandorafms/
cp ../../../../pandora_agents/unix/pandora* files/pandorafms/
cp ../../../../pandora_agents/unix/tentacle* files/pandorafms/
cp -R ../../../../pandora_agents/unix/plugins files/pandorafms/
cp -R ../../../../pandora_agents/unix/man files/pandorafms/
cp -R ../../../../pandora_agents/unix/Darwin/pandora_agent.conf files/pandorafms/
mkdir $BUILD_DMG
mkdir $BUILD_TMP
# Build pandorafms agent component
pkgbuild --root files/pandorafms/ \
--identifier com.pandorafms.pandorafms_src \
--version $VERSION \
--scripts scripts \
--install-location /usr/local/share/pandora_agent/ \
$BUILD_TMP/pandorafms_src.pdk || error
# Build pandorafms uninstaller app
pkgbuild --root files/pandorafms_uninstall/ \
--component-plist extras/pandorafms_uninstall.plist \
--install-location /Applications \
$BUILD_TMP/pandorafms_uninstall.pdk || error
# Put it together into a single pkg
productbuild --distribution extras/distribution.xml \
--package-path $BUILD_TMP \
--resources resources \
--scripts scripts \
--version "$VERSION" \
$BUILD_TMP/pandorafms_agent.pkg || error
# Clean and prepare dmg creation
rm $BUILD_TMP/pandorafms_src.pdk
rm $BUILD_TMP/pandorafms_uninstall.pdk
#Create dmg file
hdiutil create -volname "Pandora FMS agent installer" \
-srcfolder "$BUILD_TMP" \
-ov -format UDZO \
"$BUILD_DMG/$FULLNAME" || error
#Change the icon to dmg
sips -i extras/pandora_installer.png || error
DeRez -only icns extras/pandora_installer.png > tmpicns.rsrc || error
Rez -append tmpicns.rsrc -o "$BUILD_DMG/$FULLNAME" || error
SetFile -a C "$BUILD_DMG/$FULLNAME" || error
# Copy and clean folder
rm -Rf $BUILD_TMP
rm -Rf files/pandorafms/*pandora*
rm -Rf files/pandorafms/*tentacle*
rm -Rf files/pandorafms/plugins
rm -Rf files/pandorafms/man
rm -f files/pandorafms/README
rm -f tmpicns.rsrc
popd
printf "\nSUCCESS: DMG file created at \"$BUILD_DMG/$FULLNAME\"\n"

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<pkg-ref id="com.pandorafms.pandorafms_src"/>
<title>Pandora FMS Agent installer for MacOS</title>
<welcome file="text/welcome.html" />
<!-- <readme file="text/readme.html" /> -->
<license file="text/license.html" />
<conclusion file="text/conclusion.html" />
<background file="images/pfms_background_darwin.png" alignment="bottomleft" scaling="none" mime-type="image/png" uti="public.png" />
<options customize="never" allow-external-scripts="true" rootVolumeOnly="true"/>
<!-- <options customize="never" allow-external-scripts="true"/> -->
<choices-outline>
<line choice="default">
<line choice="com.pandorafms.pandorafms_src"/>
<line choice="com.pandorafms.pandorafms_uninstall"/>
</line>
</choices-outline>
<choice id="default"/>
<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.749" 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.749" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
<!-- <installation-check script="check()" />
<script>
<![CDATA[
]]>
</script>
-->
</installer-gui-script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>BundleHasStrictIdentifier</key>
<true/>
<key>BundleIsRelocatable</key>
<false/>
<key>BundleIsVersionChecked</key>
<true/>
<key>BundleOverwriteAction</key>
<string>upgrade</string>
<key>RootRelativeBundlePath</key>
<string>PandoraFMS agent uninstaller.app</string>
</dict>
</array>
</plist>

View File

@ -0,0 +1,22 @@
#!/usr/bin/osascript
set first_time to 1
set text_display to "Please set your Pandora FMS IP address:"
repeat
if (first_time = 1) then
set text_display to "You can set a specific group for this agent (must exist in Pandora):"
end if
set my_group to display dialog ¬
text_display with title ¬
"Target group" default answer "Servers" ¬
buttons {"Continue"} ¬
default button "Continue"
if ((text returned of my_group) = "") then
set first_time to 0
else
exit repeat
end if
end repeat
return (text returned of my_group)

View File

@ -0,0 +1,23 @@
#!/usr/bin/osascript
set first_time to 1
set text_display to "Enable remote config for this agent?"
repeat
if (first_time = 1) then
set text_display to "Enable remote config for this agent? (Enterprise only)"
end if
set my_remotecfg to display dialog ¬
text_display with title ¬
"Remote config" ¬
buttons {"No", "Yes"} ¬
default button "Yes"
if (button returned of my_remotecfg) is "Yes" then
set remote_config to "1"
else
set remote_config to "0"
end if
exit repeat
end repeat
return (remote_config)

View File

@ -0,0 +1,22 @@
#!/usr/bin/osascript
set first_time to 1
set text_display to "Please set your Pandora FMS IP address:"
repeat
if (first_time = 1) then
set text_display to "Please set your Pandora FMS IP address:"
end if
set my_serverip to display dialog ¬
text_display with title ¬
"Pandora FMS Server address" default answer "localhost" ¬
buttons {"Continue"} ¬
default button "Continue"
if ((text returned of my_serverip) = "") then
set first_time to 0
else
exit repeat
end if
end repeat
return (text returned of my_serverip)

View File

@ -0,0 +1,31 @@
#!/usr/bin/env perl
use strict;
my ($CONF_FILE, $token, $value) = @ARGV;
exit unless defined ($value);
exit unless -e $CONF_FILE;
open(my $fh, '<', $CONF_FILE) or die($!);
my @lines = <$fh>;
close ($fh);
# Set the new value for the configuration token.
my $found = 0;
for(my $i = 0; $i < $#lines; $i++) {
if ($lines[$i] =~ m/[#\s]*$token/) {
$lines[$i] = "$token $value\n";
$found = 1;
last;
}
}
# Append the token to the end if it was not found in the file.
if ($found == 0) {
push(@lines, "$token $value\n");
}
# Write the changes to the configuration file.
open($fh, '>', $CONF_FILE) or die($!);
print $fh @lines;
close($fh);

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>CFBundlePackageType</key><string>APPL</string><key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
<key>CFBundleName</key> <string>PandoraFMS agent uninstaller</string>
<key>CFBundleExecutable</key> <string>uninstall.sh</string>
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
<key>CFBundleVersion</key> <string>7.0NG.749</string>
<key>CFBundleGetInfoString</key> <string>7.0NG.749 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
<key>CFBundleShortVersionString</key> <string>7.0NG.749</string>
<key>NSPrincipalClass</key><string>NSApplication</string>
<key>NSMainNibFile</key><string>MainMenu</string>
</dict></plist>

View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
cd "$(dirname "$0")"
CONFIRM=`"$(dirname "$0")/../Resources/confirm_uninstall"`
if [ "$CONFIRM" -ne "1" ]
then
exit 0
fi
OUTPUT=`"$(dirname "$0")/../Resources/ask_root"`
ERROR="$?"
if [ "$?" -gt "0" ]
then
exit 0
fi
echo $OUTPUT | `sudo -S "$(dirname "$0")/../Resources/uninstall"`

View File

@ -0,0 +1,9 @@
#!/usr/bin/osascript
set my_password to display dialog "Please provide root password to uninstall Pandora FMS agent:" ¬
with title "Root confirmation" ¬
with icon caution ¬
default answer "" ¬
buttons {"Cancel", "OK"} default button 2 ¬
with hidden answer
return (text returned of my_password)

View File

@ -0,0 +1,23 @@
#!/usr/bin/osascript
set first_time to 1
set text_display to "Are you sure you want to uninstall Pandora FMS agent?"
repeat
if (first_time = 1) then
set text_display to "Are you sure you want to uninstall Pandora FMS agent?"
end if
set my_remotecfg to display dialog ¬
text_display with title ¬
"Confirm uninstall" ¬
buttons {"No", "Yes"} ¬
default button "No"
if (button returned of my_remotecfg) is "Yes" then
set confirm_uninstall to "1"
else
set confirm_uninstall to "0"
end if
exit repeat
end repeat
return (confirm_uninstall)

View File

@ -0,0 +1,33 @@
#!/usr/bin/env bash
# Stop the agent process
`launchctl stop com.pandorafms.pandorafms`
PFMSAGENT=`ps aux | grep pandora_agent | grep -v grep | wc -l`
if [ "$PFMSAGENT" -gt "0" ]
then
PIDAGENT=`ps aux | grep pandora_agent | grep -v grep | awk '{print $2}'`
kill $PIDAGENT
fi
# Remove local files
rm -Rf /etc/pandora
rm -Rf /usr/local/share/pandora_agent/
rm -f /usr/local/bin/pandora_agent
rm -f /usr/local/bin/pandora_agent_exec
rm -f /usr/local/bin/pandora_revent
rm -f /usr/local/bin/tentacle_client
rm -f /usr/local/share/man/man1/pandora_agent.1.gz
rm -f /usr/local/share/man/man1/tentacle_client.1.gz
rm -f /var/log/pandora/pandora_agent.*
rm -f /etc/newsyslog.d/pandora_agent.conf
# Remove everything related with Pandora FMS agent
`launchctl remove com.pandorafms.pandorafms`
rm -f /Library/LaunchDaemons/com.pandorafms.pandorafms.plist
# Remove all packages residual files
rm -f /private/var/db/receipts/com.pandorafms*
# Remove the uninstall app too
rm -Rf /Applications/PandoraFMS*

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,4 @@
Installation complete! Thank you for installing Pandora FMS agent for MacOS.
Agent's service has been automatically started. You can manage the service with:
sudo launchctl start com.pandorafms.pandorafms to start it, and sudo launchctl
stop com.pandorafms.pandorafms to stop it.

View File

@ -0,0 +1,237 @@
GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free
Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed. Preamble The licenses for most
software are designed to take away your freedom to share and change it. By
contrast, the GNU General Public License is intended to guarantee your freedom
to share and change free software--to make sure the software is free for all its
users. This General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to using it.
(Some other Free Software Foundation software is covered by the GNU Library
General Public License instead.) You can apply it to your programs, too. When we
speak of free software, we are referring to freedom, not price. Our General
Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that you know you can
do these things. To protect your rights, we need to make restrictions that
forbid anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it. For example, if you
distribute copies of such a program, whether gratis or for a fee, you must give
the recipients all the rights that you have. You must make sure that they, too,
receive or can get the source code. And you must show them these terms so they
know their rights. We protect your rights with two steps: (1) copyright the
software, and (2) offer you this license which gives you legal permission to
copy, distribute and/or modify the software. Also, for each author's protection
and ours, we want to make certain that everyone understands that there is no
warranty for this free software. If the software is modified by someone else and
passed on, we want its recipients to know that what they have is not the
original, so that any problems introduced by others will not reflect on the
original authors' reputations. Finally, any free program is threatened
constantly by software patents. We wish to avoid the danger that redistributors
of a free program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any patent must
be licensed for everyone's free use or not licensed at all. The precise terms
and conditions for copying, distribution and modification follow. GNU GENERAL
PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the terms of
this General Public License. The "Program", below, refers to any such program or
work, and a "work based on the Program" means either the Program or any
derivative work under copyright law: that is to say, a work containing the
Program or a portion of it, either verbatim or with modifications and/or
translated into another language. (Hereinafter, translation is included without
limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by
this License; they are outside its scope. The act of running the Program is not
restricted, and the output from the Program is covered only if its contents
constitute a work based on the Program (independent of having been made by
running the Program). Whether that is true depends on what the Program does. 1.
You may copy and distribute verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and appropriately
publish on each copy an appropriate copyright notice and disclaimer of warranty;
keep intact all the notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of this License
along with the Program. You may charge a fee for the physical act of
transferring a copy, and you may at your option offer warranty protection in
exchange for a fee. 2. You may modify your copy or copies of the Program or any
portion of it, thus forming a work based on the Program, and copy and distribute
such modifications or work under the terms of Section 1 above, provided that you
also meet all of these conditions: a) You must cause the modified files to carry
prominent notices stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or in
part contains or is derived from the Program or any part thereof, to be licensed
as a whole at no charge to all third parties under the terms of this License. c)
If the modified program normally reads commands interactively when run, you must
cause it, when started running for such interactive use in the most ordinary
way, to print or display an announcement including an appropriate copyright
notice and a notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under these conditions,
and telling the user how to view a copy of this License. (Exception: if the
Program itself is interactive but does not normally print such an announcement,
your work based on the Program is not required to print an announcement.) These
requirements apply to the modified work as a whole. If identifiable sections of
that work are not derived from the Program, and can be reasonably considered
independent and separate works in themselves, then this License, and its terms,
do not apply to those sections when you distribute them as separate works. But
when you distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of this
License, whose permissions for other licensees extend to the entire whole, and
thus to each and every part regardless of who wrote it. Thus, it is not the
intent of this section to claim rights or contest your rights to work written
entirely by you; rather, the intent is to exercise the right to control the
distribution of derivative or collective works based on the Program. In
addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License. 3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of Sections 1
and 2 above provided that you also do one of the following: a) Accompany it with
the complete corresponding machine-readable source code, which must be
distributed under the terms of Sections 1 and 2 above on a medium customarily
used for software interchange; or, b) Accompany it with a written offer, valid
for at least three years, to give any third party, for a charge no more than
your cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be distributed under
the terms of Sections 1 and 2 above on a medium customarily used for software
interchange; or, c) Accompany it with the information you received as to the
offer to distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program in object
code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all the
source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and installation
of the executable. However, as a special exception, the source code distributed
need not include anything that is normally distributed (in either source or
binary form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component itself
accompanies the executable. If distribution of executable or object code is made
by offering access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as distribution of the
source code, even though third parties are not compelled to copy the source
along with the object code. 4. You may not copy, modify, sublicense, or
distribute the Program except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense or distribute the Program is void,
and will automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this License will
not have their licenses terminated so long as such parties remain in full
compliance. 5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or distribute
the Program or its derivative works. These actions are prohibited by law if you
do not accept this License. Therefore, by modifying or distributing the Program
(or any work based on the Program), you indicate your acceptance of this License
to do so, and all its terms and conditions for copying, distributing or
modifying the Program or works based on it. 6. Each time you redistribute the
Program (or any work based on the Program), the recipient automatically receives
a license from the original licensor to copy, distribute or modify the Program
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein. You are
not responsible for enforcing compliance by third parties to this License. 7.
If, as a consequence of a court judgment or allegation of patent infringement or
for any other reason (not limited to patent issues), conditions are imposed on
you (whether by court order, agreement or otherwise) that contradict the
conditions of this License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy simultaneously your
obligations under this License and any other pertinent obligations, then as a
consequence you may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by all those
who receive copies directly or indirectly through you, then the only way you
could satisfy both it and this License would be to refrain entirely from
distribution of the Program. If any portion of this section is held invalid or
unenforceable under any particular circumstance, the balance of the section is
intended to apply and the section as a whole is intended to apply in other
circumstances. It is not the purpose of this section to induce you to infringe
any patents or other property right claims or to contest validity of any such
claims; this section has the sole purpose of protecting the integrity of the
free software distribution system, which is implemented by public license
practices. Many people have made generous contributions to the wide range of
software distributed through that system in reliance on consistent application
of that system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot impose
that choice. This section is intended to make thoroughly clear what is believed
to be a consequence of the rest of this License. 8. If the distribution and/or
use of the Program is restricted in certain countries either by patents or by
copyrighted interfaces, the original copyright holder who places the Program
under this License may add an explicit geographical distribution limitation
excluding those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License. 9. The Free Software
Foundation may publish revised and/or new versions of the General Public License
from time to time. Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or concerns. Each
version is given a distinguishing version number. If the Program specifies a
version number of this License which applies to it and "any later version", you
have the option of following the terms and conditions either of that version or
of any later version published by the Free Software Foundation. If the Program
does not specify a version number of this License, you may choose any version
ever published by the Free Software Foundation. 10. If you wish to incorporate
parts of the Program into other free programs whose distribution conditions are
different, write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free Software
Foundation; we sometimes make exceptions for this. Our decision will be guided
by the two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally. NO
WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE
THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO
EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND
CONDITIONS How to Apply These Terms to Your New Programs If you develop a new
program, and you want it to be of the greatest possible use to the public, the
best way to achieve this is to make it free software which everyone can
redistribute and change under these terms. To do so, attach the following
notices to the program. It is safest to attach them to the start of each source
file to most effectively convey the exclusion of warranty; and each file should
have at least the "copyright" line and a pointer to where the full notice is
found. <one line to give the program's name and a brief idea of what it does.>
Copyright (C)
<year>
<name of author>
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; either version 2 of the License, or (at your option)
any later version. 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. You should have received a copy of the GNU
General Public License along with this program; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when
it starts in an interactive mode: Gnomovision version 69, Copyright (C) year
name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. The hypothetical
commands `show w' and `show c' should show the appropriate parts of the
General Public License. Of course, the commands you use may be called
something other than `show w' and `show c'; they could even be mouse-clicks
or menu items--whatever suits your program. You should also get your
employer (if you work as a programmer) or your school, if any, to sign a
"copyright disclaimer" for the program, if necessary. Here is a sample;
alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in
the program `Gnomovision' (which makes passes at compilers) written by James
Hacker.
<signature of Ty Coon
>, 1 April 1989 Ty Coon, President of Vice This General Public License
does not permit incorporating your program into proprietary programs. If
your program is a subroutine library, you may consider it more useful to
permit linking proprietary applications with the library. If this is what
you want to do, use the GNU Library General Public License instead of this
License.
</signature></name
></year
>

View File

@ -0,0 +1 @@
README

View File

@ -0,0 +1,5 @@
Welcome to Pandora FMS agent for MacOS installer. This will install Pandora FMS
agent in the root disk of this system, specifically in:
/usr/local/share/pandora_agent/ /etc/pandora/ It will also create an Uninstaller
at your Applications folder. If you wish to perform a custom installation,
please use the Linux tarball installer instead.

View File

@ -0,0 +1,91 @@
#!/usr/bin/env bash
cd /usr/local/share/pandora_agent/
# Copy daemon file
mv com.pandorafms.pandorafms.plist /Library/LaunchDaemons/
if [ -f /etc/pandora/pandora_agent.conf ]
then
# Stop the agent process
`launchctl stop com.pandorafms.pandorafms`
PFMSAGENT=`ps aux | grep pandora_agent | grep -v postinstall | grep -v grep | wc -l`
if [ "$PFMSAGENT" -gt "0" ]
then
PIDAGENT=`ps aux | grep pandora_agent | grep -v postinstall | grep -v grep | awk '{print $2}'`
kill $PIDAGENT
fi
else
# Ask for user and password
SERVER=`/usr/local/share/pandora_agent/inst_utilities/get_serverip.scpt`
GROUP=`/usr/local/share/pandora_agent/inst_utilities/get_group.scpt`
REMOTECFG=`/usr/local/share/pandora_agent/inst_utilities/get_remotecfg.scpt`
# Write the conf file
`/usr/local/share/pandora_agent/inst_utilities/print_conf.pl /usr/local/share/pandora_agent/pandora_agent.conf server_ip $SERVER`
`/usr/local/share/pandora_agent/inst_utilities/print_conf.pl /usr/local/share/pandora_agent/pandora_agent.conf group $GROUP`
`/usr/local/share/pandora_agent/inst_utilities/print_conf.pl /usr/local/share/pandora_agent/pandora_agent.conf remote_config $REMOTECFG`
# Create agent directories and files
mkdir -p /usr/local/share/pandora_agent/collections
mkdir -p /usr/local/share/pandora_agent/commands
mkdir -p /etc/pandora/
mkdir -p /var/spool/pandora/data_out
mkdir -p /var/log/pandora
mv pandora_agent.conf /etc/pandora/
touch /var/log/pandora/pandora_agent.log
# Setting permissions to directories and files
chmod -R 700 /usr/local/share/pandora_agent/collections
chmod -R 700 /usr/local/share/pandora_agent/commands
chmod -R 755 /etc/pandora/
chmod -R 700 /var/spool/pandora/data_out
chmod -R 711 /var/log/pandora
chmod 640 /var/log/pandora/pandora_agent.log
chmod 640 /etc/pandora/pandora_agent.conf
fi
# Copying agent utilities to /usr/local/bin and securing them
cp -f pandora_agent /usr/local/bin/
chmod 755 /usr/local/bin/pandora_agent
chown root:wheel /usr/local/bin/pandora_agent
cp -f pandora_agent_exec /usr/local/bin/
chmod 755 /usr/local/bin/pandora_agent_exec
chown root:wheel /usr/local/bin/pandora_agent_exec
cp -f pandora_revent /usr/local/bin/
chmod 755 /usr/local/bin/pandora_revent
chown root:wheel /usr/local/bin/pandora_revent
# Copying tentacle_client to /usr/local/bin and securing it
cp -f tentacle_client /usr/local/bin/
chmod 755 /usr/local/bin/tentacle_client
chown root:wheel /usr/local/bin/tentacle_client
# Create symbolic links in /etc/pandora/
ln -s /usr/local/share/pandora_agent/plugins /etc/pandora/plugins
ln -s /usr/local/share/pandora_agent/commands /etc/pandora/commands
ln -s /usr/local/share/pandora_agent/collections /etc/pandora/collections
# Copy manuals
cp -f man/man1/pandora_agent.1.gz /usr/local/share/man/man1
chmod 644 /usr/local/share/man/man1/pandora_agent.1.gz
cp -f man/man1/tentacle_client.1.gz /usr/local/share/man/man1
chmod 644 /usr/local/share/man/man1/tentacle_client.1.gz
# Create newsyslog entry
# logfilename [owner:group] mode count size(KB) when flags [/pid_file] [sig_num]
echo "/var/log/pandora/pandora_agent.log : 640 5 2048 * Z" > /etc/newsyslog.d/pandora_agent.conf
# Install the daemon
`launchctl load -wF /Library/LaunchDaemons/com.pandorafms.pandorafms.plist`
# Launch the daemon
`launchctl start com.pandorafms.pandorafms`
# Clean all install utilites
rm -Rf inst_utilities
exit 0

View File

@ -0,0 +1,9 @@
#!/bin/bash
#Save the existing configuration file
#if [ -f /usr/local/share/pandora_agent/pandora_agent.conf ]
#then
# #mkdir -p /tmp/eh_restore
# cp /usr/local/share/pandora_agent/pandora_agent.conf /usr/local/share/pandora_agent/pandora_agent.bak
#fi
exit 0

View File

@ -129,6 +129,12 @@ transfer_mode tentacle
# Proxy timeout (by default 1s)
# proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# Number of threads to execute modules in parallel
#agent_threads 1

View File

@ -142,6 +142,12 @@ remote_config 0
# Proxy timeout (by default 1s)
#proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# Number of threads to execute modules in parallel
#agent_threads 1

View File

@ -101,6 +101,12 @@ transfer_mode tentacle
# Proxy timeout (by default 1s)
# proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# User the agent will run as
#pandora_user root

View File

@ -148,6 +148,12 @@ remote_config 0
# Proxy timeout (by default 1s)
# proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# Number of threads to execute modules in parallel
#agent_threads 1

View File

@ -110,6 +110,12 @@ transfer_mode tentacle
# Proxy timeout (by default 1s)
#proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# Number of threads to execute modules in parallel
#agent_threads 1

View File

@ -104,6 +104,12 @@ transfer_mode tentacle
# Proxy timeout (by default 1s)
#proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# User the agent will run as
#pandora_user root

View File

@ -55,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.749';
use constant AGENT_BUILD => '200914';
use constant AGENT_BUILD => '200929';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;
@ -192,6 +192,8 @@ my %DefaultConf = (
'udp_server_port' => 41122,
'udp_server_auth_address' => '0.0.0.0',
'udp_server' => 0,
'proxy_address' => '0.0.0.0',
'proxy_port' => 41121,
'proxy_mode' => 0,
'proxy_max_connection' => 10,
'proxy_timeout' => 1,
@ -1383,7 +1385,7 @@ sub launch_tentacle_proxy () {
if ($tentacle_pid == 0) {
#Execute tentacle server as a daemon
my $new_process = "tentacle_server -b ".$Conf{'server_ip'}." -g ".$Conf{'server_port'}." -c ".$Conf{'proxy_max_connection'}." -t ".$Conf{'proxy_timeout'};
my $new_process = "tentacle_server -a ".$Conf{'proxy_address'}." -p ".$Conf{'proxy_port'}." -b ".$Conf{'server_ip'}." -g ".$Conf{'server_port'}." -c ".$Conf{'proxy_max_connection'}." -t ".$Conf{'proxy_timeout'};
$new_process .= ' -C' if ($Conf{'server_ssl'} eq '1');

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.749
%define release 200914
%define release 200929
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_agent_unix
%define version 7.0NG.749
%define release 200914
%define release 200929
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -10,14 +10,14 @@
# **********************************************************************
PI_VERSION="7.0NG.749"
PI_BUILD="200914"
PI_BUILD="200929"
OS_NAME=`uname -s`
FORCE=0
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
PREFIX=/usr
if [ "$OS_NAME" = "FreeBSD" ] || [ "$OS_NAME" = "NetBSD" ]
if [ "$OS_NAME" = "FreeBSD" ] || [ "$OS_NAME" = "NetBSD" ] || [ "$OS_NAME" = "Darwin" ]
then
PREFIX=/usr/local
fi
@ -146,6 +146,7 @@ help () {
uninstall () {
if [ "$OS_NAME" = "Darwin" ]
then
launchctl stop com.pandorafms.pandorafms
launchctl remove com.pandorafms.pandorafms
rm /Library/LaunchDaemons/com.pandorafms.pandorafms.plist 2> /dev/null
fi
@ -162,6 +163,7 @@ uninstall () {
rm -Rf $PANDORA_BASE$PANDORA_EXEC_BIN 2> /dev/null
rm -Rf $PANDORA_BASE$PANDORA_REVENT_BIN 2> /dev/null
rm -f $DESTDIR/etc/logrotate.d/pandora_agent
rm -f $DESTDIR/etc/newsyslog.d/pandora_agent.conf
# Remove systemd service if exists
if [ `systemctl --v 2> /dev/null | grep systemd | wc -l` != 0 ]
@ -305,7 +307,7 @@ install () {
# Backup the configuration file
cp -f "$AGENT_CFG" "${AGENT_CFG}.bak"
if [ "$OS_NAME" = "FreeBSD" ] || [ "$OS_NAME" = "NetBSD" ]
if [ "$OS_NAME" = "FreeBSD" ] || [ "$OS_NAME" = "NetBSD" ] || [ "$OS_NAME" = "Darwin" ]
then
sed -e "\|^PATH=|s|=|=$PANDORA_BASE$PREFIX/bin:|" \
-e "s|/usr/local/etc/pandora|$PANDORA_BASE$PANDORA_CFG|g" \
@ -503,12 +505,16 @@ install () {
[ "$MSG" ] && echo "$MSG"
fi
if [ -d /etc/logrotate.d ]
if [ -d /etc/logrotate.d ] && [ "$OS_NAME" != "Darwin" ]
then
[ -d $DESTDIR/etc/logrotate.d ] && mkdir -p $DESTDIR/etc/logrotate.d
echo "Creating logrotate.d entry for Pandora FMS log management"
sed -e "s|^/var/log/pandora/pandora_agent.log|$PANDORA_BASE_REAL$PANDORA_LOG_DIR/$PANDORA_LOG|" pandora_agent_logrotate \
> $DESTDIR/etc/logrotate.d/pandora_agent
elif [ "$OS_NAME" = "Darwin" ]
then
echo "Creating newsyslog entry for Pandora FMS log management"
echo "/var/log/pandora/pandora_agent.log : 640 5 2048 * Z" > $DESTDIR/etc/newsyslog.d/pandora_agent.conf
else
echo "Please add a log rotation schedule manually to your log rotation daemon (if any)"
fi

View File

@ -4,7 +4,7 @@
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2007-2008 Artica Soluciones Tecnologicas S.L.
#
# tentacle_client.pl Tentacle Client. See http://www.openideas.info/wiki for
# tentacle_client.pl Tentacle Client. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -155,7 +155,7 @@ my $t_zip = 0;
sub print_help {
print ("Usage: $0 [options] [file] [file] ...\n\n");
print ("Tentacle client v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle client v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a address\tServer address (default $t_address).\n");
print ("\t-b localaddress\tLocal address to bind.\n");
@ -1091,7 +1091,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<File::Basename>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -1,13 +1,13 @@
#!/usr/bin/perl
##########################################################################
# Tentacle Server
# See http://www.openideas.info/wiki for protocol description.
# See https://pandorafms.com/docs/ for protocol description.
# Tentacle have IANA assigned port tpc/41121 as official port.
##########################################################################
# Copyright (c) 2007-2008 Ramon Novoa <rnovoa@artica.es>
# Copyright (c) 2005-2010 Artica Soluciones Tecnologicas S.L
#
# tentacle_server.pl Tentacle Server. See http://www.openideas.info/wiki for
# tentacle_server.pl Tentacle Server. See https://pandorafms.com/docs/ for
# protocol description.
#
# This program is free software; you can redistribute it and/or modify
@ -211,7 +211,7 @@ sub print_help {
$" = ',';
print ("Usage: $0 -s <storage directory> [options]\n\n");
print ("Tentacle server v$VERSION. See http://www.openideas.info/wiki for protocol description.\n\n");
print ("Tentacle server v$VERSION. See https://pandorafms.com/docs/ for protocol description.\n\n");
print ("Options:\n");
print ("\t-a ip_addresses\tIP addresses to listen on (default @t_addresses).\n");
print ("\t \t(Multiple addresses separated by comma can be defined.)\n");
@ -1859,7 +1859,7 @@ This is released under the GNU Lesser General Public License.
L<Getopt::Std>, L<IO::Select>, L<IO::Socket::INET>, L<Thread::Semaphore>, L<POSIX>
Protocol description and more info at: L<< http://openideas.info/wiki/index.php?title=Tentacle >>
Protocol description and more info at: L<< https://pandorafms.com/docs/index.php?title=Pandora:Documentation_en:Tentacle >>
=head1 COPYRIGHT

View File

@ -1,53 +1,59 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Fandora FMS - Generate SSH keys step-by-step</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="author" content="Sancho Lerena, Raul Mateos and others">
<meta name="copyright" content="This is GPL software. Created by Sancho Lerena and others">
</head>
<body>
<center>
<img src="images/logo.png" alt="">
</center>
<head>
<title>Fandora FMS - Generate SSH keys step-by-step</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos and others" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2>Step-by-step generating SSH keys</h2>
<h2>Step-by-step generating SSH keys</h2>
From
<a href="http://www.openideas.info/wiki/index.php?title=Pandora:FAQ#How_to_generate_a_pair_of_SSH_keys_for_Pandora_Windows_agent_1.2_.3F">Pandora FMS FAQ</a>.
From
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ#How_to_generate_a_pair_of_SSH_keys_for_Pandora_Windows_agent.3F_.28SSH_Transfer_only.29"
>Pandora FMS FAQ</a
>.
<ol>
<li>
Go to <code>.\util</code> of your Pandora FMS agent for Windows
and run <code>puttygen.exe</code>.<br>
Generate keys, SSH-2_DSA, 1024:<br><br>
<img src="images/1.jpg"><br><br>
</li>
<li>
Press Generate<br>
Export key to OpenSSH key (Cygwin uses a port of OpenSSH)<br><br>
<img src="images/2.jpg"><br><br>
</li>
<li>
We have no chosen password, so press YES:<br><br>
<img src="images/3.jpg"><br><br>
</li>
<li>
Save it as <code>c:\pandora\keys\id_dsa:</code><br><br>
<img src="images/4.jpg"><br><br>
</li>
<li>
Now let's copy the public key to clipboard:<br><br>
<img src="images/5.jpg"><br><br>
</li>
<li>
and paste it as <code>c:\pandora_agent\keys\id_dsa.pub</code>,
and also to the <code>/home/pandora/.ssh/authorized_keys</code> file.
<br><br>
<img src="images/6.jpg"><br><br>
</li>
</ol>
</body>
</html>
<ol>
<li>
Go to <code>.\util</code> of your Pandora FMS agent for Windows and run
<code>puttygen.exe</code>.<br />
Generate keys, SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Press Generate<br />
Export key to OpenSSH key (Cygwin uses a port of OpenSSH)<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
We have no chosen password, so press YES:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Save it as <code>c:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Now let's copy the public key to clipboard:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
and paste it as <code>c:\pandora_agent\keys\id_dsa.pub</code>, and also
to the <code>/home/pandora/.ssh/authorized_keys</code> file.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

View File

@ -1,53 +1,62 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Pandora FMS - Generación de claves SSH en Windows paso por paso</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="author" content="Sancho Lerena, Raul Mateos y otros">
<meta name="copyright" content="This is GPL software. Created by Sancho Lerena and others">
</head>
<body>
<center>
<img src="images/logo.png" alt="">
</center>
<h2 class="print">Generación de claves SSH en Windows paso por paso</h2>
<head>
<title>
Pandora FMS - Generación de claves SSH en Windows paso por paso
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos y otros" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2 class="print">Generación de claves SSH en Windows paso por paso</h2>
Extraído de las
<a href="http://www.openideas.info/wiki/index.php?title=Pandora:FAQ_ES#.C2.BF_C.C3.B3mo_puedo_generar_un_par_de_claves_SHH_para_el_agente_para_Windows_1.2_.3F">
FAQ</a>.
Extraído de las
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ_ES#.C2.BFC.C3.B3mo_puedo_generar_un_par_de_claves_SHH_para_el_agente_para_Windows_.28SSH_Transfer.29_.3F"
>
FAQ</a
>.
<ol>
<li>
Desde el directorio <code>.\util</code> del agente Pandora FMS para
windows ejecutamos <code>puttygen.exe</code>.<br>
Generamos claves SSH-2_DSA, 1024:<br><br>
<img src="images/1.jpg"><br><br>
</li>
<li>
Pulsamos «Generate»
para generar la clave.<br>
Exportamos la clave a formato OpenSSH<br><br>
<img src="images/2.jpg"><br><br>
</li>
<li>
No elegimos contraseña, con lo cual pulsamos «Sí»:<br><br>
<img src="images/3.jpg"><br><br>
</li>
<li>
Guardamos la clave como <code>C:\pandora\keys\id_dsa:</code><br><br>
<img src="images/4.jpg"><br><br>
</li>
<li>
Ahora copiamos la clave pública al portapapeles:<br><br>
<img src="images/5.jpg"><br><br>
</li>
<li>
Pegamos la clave en un nuevo fichero <code>C:\pandora_agent\keys\id_dsa.pub</code>,
y debemos también añadirla al fichero <code>/home/pandora/.ssh/authorized_keys</code>.
<br><br>
<img src="images/6.jpg"><br><br>
</li>
</ol>
</body></html>
<ol>
<li>
Desde el directorio <code>.\util</code> del agente Pandora FMS para
windows ejecutamos <code>puttygen.exe</code>.<br />
Generamos claves SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Pulsamos «Generate» para generar la clave.<br />
Exportamos la clave a formato OpenSSH<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
No elegimos contraseña, con lo cual pulsamos «Sí»:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Guardamos la clave como <code>C:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Ahora copiamos la clave pública al portapapeles:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
Pegamos la clave en un nuevo fichero
<code>C:\pandora_agent\keys\id_dsa.pub</code>, y debemos también
añadirla al fichero <code>/home/pandora/.ssh/authorized_keys</code>.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

View File

@ -99,6 +99,12 @@ server_port 41121
# Proxy timeout (by default 1s)
# proxy_timeout 1
# Address the proxy will listen on.
#proxy_address 0.0.0.0
# Port the proxy will listen on.
#proxy_port 41121
# Enable or disable XML buffer.
xml_buffer 1

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{200914}
{200929}
ViewReadme
{Yes}

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.749(Build 200914)")
#define PANDORA_VERSION ("7.0NG.749(Build 200929)")
string pandora_path;
string pandora_dir;

View File

@ -424,7 +424,7 @@ Pandora_Windows_Service::killTentacleProxy() {
int
Pandora_Windows_Service::launchTentacleProxy() {
string server_ip, server_port, proxy_max_connections, proxy_timeout, server_ssl;
string proxy_cmd;
string proxy_cmd, proxy_address, proxy_port;
PROCESS_INFORMATION pi;
STARTUPINFO si;
@ -460,7 +460,19 @@ Pandora_Windows_Service::launchTentacleProxy() {
proxy_cmd = "tentacle_server.exe";
}
proxy_cmd += " -b " + server_ip + " -g " + server_port + " -c " + proxy_max_connections + " -t " + proxy_timeout;
// Proxy address.
proxy_address = conf->getValue("proxy_address");
if (proxy_address == "") {
proxy_address = "0.0.0.0";
}
// Proxy port.
proxy_port = conf->getValue("proxy_port");
if (proxy_port == "") {
proxy_port = "41121";
}
proxy_cmd += " -b " + server_ip + " -g " + server_port + " -c " + proxy_max_connections + " -t " + proxy_timeout + " -a " + proxy_address + " -p " + proxy_port;
ZeroMemory (&si, sizeof (si));
ZeroMemory (&pi, sizeof (pi));

View File

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

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.749-200914
Version: 7.0NG.749-200929
Architecture: all
Priority: optional
Section: admin

View File

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

View File

@ -379,7 +379,7 @@ function get_name_xml_resource($hook_enterprise)
break;
}
$file = $name.'.ptr';
$file = io_safe_output($name).'.ptr';
return $file;
}

View File

@ -0,0 +1,25 @@
START TRANSACTION;
ALTER TABLE tmetaconsole_event ADD INDEX `tme_timestamp_idx` (`timestamp`);
ALTER TABLE tmetaconsole_event ADD INDEX `tme_module_status_idx` (`module_status`);
ALTER TABLE tmetaconsole_event ADD INDEX `tme_criticity_idx` (`criticity`);
ALTER TABLE tmetaconsole_event ADD INDEX `tme_agent_name_idx` (`agent_name`);
ALTER TABLE tmetaconsole_agent ADD INDEX `tma_id_os_idx` (`id_os`);
ALTER TABLE tmetaconsole_agent ADD INDEX `tma_server_name_idx` (`server_name`);
ALTER TABLE tmetaconsole_event_history ADD INDEX `tmeh_estado_idx` (`estado`);
ALTER TABLE tmetaconsole_event_history ADD INDEX `tmeh_timestamp_idx` (`timestamp`);
ALTER TABLE talert_actions ADD COLUMN `field16` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field17` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field18` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field19` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field20` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field16_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field17_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field18_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field19_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field20_recovery` TEXT NOT NULL DEFAULT "";
COMMIT;

View File

@ -978,6 +978,10 @@ CREATE TABLE IF NOT EXISTS `tmetaconsole_event` (
ALTER TABLE `tmetaconsole_event` ADD COLUMN `data` double(22,5) default NULL;
ALTER TABLE `tmetaconsole_event` ADD COLUMN `module_status` int(4) NOT NULL default '0';
ALTER TABLE `tmetaconsole_event` ADD INDEX `server_id` (`server_id`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_timestamp_idx` (`timestamp`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_module_status_idx` (`module_status`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_criticity_idx` (`criticity`);
ALTER TABLE `tmetaconsole_event` ADD INDEX `tme_agent_name_idx` (`agent_name`);
-- ---------------------------------------------------------------------
-- Table `tmetaconsole_event_history`
@ -1026,6 +1030,8 @@ CREATE TABLE IF NOT EXISTS `tmetaconsole_event_history` (
ALTER TABLE `tmetaconsole_event_history` ADD COLUMN `data` double(22,5) default NULL;
ALTER TABLE `tmetaconsole_event_history` ADD COLUMN `module_status` int(4) NOT NULL default '0';
ALTER TABLE `tmetaconsole_event_history` ADD INDEX `tmeh_estado_idx` (`estado`);
ALTER TABLE `tmetaconsole_event_history` ADD INDEX `tmeh_timestamp_idx` (`timestamp`);
-- ---------------------------------------------------------------------
-- Table `textension_translate_string`
-- ---------------------------------------------------------------------
@ -1119,7 +1125,9 @@ ALTER TABLE `tmetaconsole_agent` ADD COLUMN `remote` tinyint(1) NOT NULL DEFAULT
ADD COLUMN `alias` varchar(600) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
MODIFY COLUMN `update_secondary_groups` tinyint(1) NOT NULL DEFAULT '0',
MODIFY COLUMN `alias_as_name` tinyint(2) NOT NULL DEFAULT '0',
ADD INDEX `id_tagente_idx` (`id_tagente`);
ADD INDEX `id_tagente_idx` (`id_tagente`),
ADD INDEX `tma_id_os_idx` (`id_os`),
ADD INDEX `tma_server_name_idx` (`server_name`);
-- ---------------------------------------------------------------------
-- Table `ttransaction`
@ -1308,11 +1316,21 @@ ALTER TABLE talert_actions ADD COLUMN `field12` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field13` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field14` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field15` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field16` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field17` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field18` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field19` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field20` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field11_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field12_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field13_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field14_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field15_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field16_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field17_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field18_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field19_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE talert_actions ADD COLUMN `field20_recovery` TEXT NOT NULL DEFAULT "";
ALTER TABLE `talert_actions` ADD COLUMN `previous_name` text;
ALTER TABLE `talert_actions` MODIFY COLUMN `field11` text NOT NULL,

View File

@ -1,4 +1,5 @@
<?php
$stacked = db_get_sql('select stacked from tgraph where id_graph = '.$_GET['data']);
$num_items = db_get_sql('select count(*) from tgraph_source where id_graph = '.$_GET['data']);
$data = (int) get_parameter('data');
$stacked = db_get_sql('select stacked from tgraph where id_graph = '.$data);
$num_items = db_get_sql('select count(*) from tgraph_source where id_graph = '.$data);
echo "$stacked,$num_items";

View File

@ -86,7 +86,7 @@ $login_body_class = '';
// Overrides the default background with the defined by the user.
if (!empty($config['login_background'])) {
$background_url = 'images/backgrounds/'.$config['login_background'];
$login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\"";
$login_body_style = "style=\"background:linear-gradient(74deg, rgba(2, 2, 2, 0.333) 36%, transparent 36%), url('".$background_url."');\"";
}
// Support for Internet Explorer and Microsoft Edge browsers

View File

@ -1115,7 +1115,7 @@ if ($update_agent) {
ui_print_success_message(__('Successfully updated'));
db_pandora_audit(
'Agent management',
'Updated agent '.$alias,
'Updated agent '.io_safe_output($alias),
false,
false,
$info
@ -1650,7 +1650,7 @@ if ($update_module) {
db_pandora_audit(
'Agent management',
"Fail to try update module '".$name."' for agent ".$agent['alias']
"Fail to try update module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias'])
);
} else {
if ($prediction_module == 3) {
@ -1674,7 +1674,7 @@ if ($update_module) {
db_pandora_audit(
'Agent management',
"Updated module '".$name."' for agent ".$agent['alias'],
"Updated module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']),
false,
false,
io_json_mb_encode($values)
@ -1834,7 +1834,7 @@ if ($create_module) {
$moduletype = $id_module;
db_pandora_audit(
'Agent management',
"Fail to try added module '".$name."' for agent ".$agent['alias']
"Fail to try added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias'])
);
} else {
if ($prediction_module == 3) {
@ -1859,7 +1859,7 @@ if ($create_module) {
$agent = db_get_row('tagente', 'id_agente', $id_agente);
db_pandora_audit(
'Agent management',
"Added module '".$name."' for agent ".$agent['alias'],
"Added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']),
false,
true,
io_json_mb_encode($values)
@ -1894,12 +1894,12 @@ if ($enable_module) {
if ($result === NOERR) {
db_pandora_audit(
'Module management',
'Enable #'.$enable_module.' | '.$module_name.' | '.$agent['alias']
'Enable #'.$enable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
} else {
db_pandora_audit(
'Module management',
'Fail to enable #'.$enable_module.' | '.$module_name.' | '.$agent['alias']
'Fail to enable #'.$enable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
}
}
@ -1929,12 +1929,12 @@ if ($disable_module) {
if ($result === NOERR) {
db_pandora_audit(
'Module management',
'Disable #'.$disable_module.' | '.$module_name.' | '.$agent['alias']
'Disable #'.$disable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
} else {
db_pandora_audit(
'Module management',
'Fail to disable #'.$disable_module.' | '.$module_name.' | '.$agent['alias']
'Fail to disable #'.$disable_module.' | '.$module_name.' | '.io_safe_output($agent['alias'])
);
}
}
@ -2108,7 +2108,7 @@ if ($delete_module) {
$agent = db_get_row('tagente', 'id_agente', $id_agente);
db_pandora_audit(
'Agent management',
"Deleted module '".$module_data['nombre']."' for agent ".$agent['alias']
"Deleted module '".io_safe_output($module_data['nombre'])."' for agent ".io_safe_output($agent['alias'])
);
}
}
@ -2163,7 +2163,7 @@ if (!empty($duplicate_module)) {
if ($enable_module) {
$result = modules_change_disabled($enable_module, 0);
$modulo_nombre = db_get_row_sql('SELECT nombre FROM tagente_modulo WHERE id_agente_modulo = '.$enable_module.'');
$modulo_nombre = $modulo_nombre['nombre'];
$modulo_nombre = io_safe_output($modulo_nombre['nombre']);
if ($result === NOERR) {
enterprise_hook('config_agents_enable_module_conf', [$id_agente, $enable_module]);
@ -2182,7 +2182,7 @@ if ($enable_module) {
if ($disable_module) {
$result = modules_change_disabled($disable_module, 1);
$modulo_nombre = db_get_row_sql('SELECT nombre FROM tagente_modulo WHERE id_agente_modulo = '.$disable_module.'');
$modulo_nombre = $modulo_nombre['nombre'];
$modulo_nombre = io_safe_output($modulo_nombre['nombre']);
if ($result === NOERR) {
enterprise_hook('config_agents_disable_module_conf', [$id_agente, $disable_module]);

View File

@ -115,7 +115,7 @@ if ($agent_to_delete) {
if ($enable_agent) {
$result = db_process_sql_update('tagente', ['disabled' => 0], ['id_agente' => $enable_agent]);
$alias = agents_get_alias($enable_agent);
$alias = io_safe_output(agents_get_alias($enable_agent));
if ($result) {
// Update the agent from the metaconsole cache.
@ -137,7 +137,7 @@ if ($enable_agent) {
if ($disable_agent) {
$result = db_process_sql_update('tagente', ['disabled' => 1], ['id_agente' => $disable_agent]);
$alias = agents_get_alias($disable_agent);
$alias = io_safe_output(agents_get_alias($disable_agent));
if ($result) {
// Update the agent from the metaconsole cache.

View File

@ -382,7 +382,7 @@ if ($disabledBecauseInPolicy) {
);
}
$table_simple->data[2][0] = __('Warning status');
$table_simple->data[2][0] = __('Warning threshold');
if (!modules_is_string_type($id_module_type) || $edit) {
$table_simple->data[2][1] .= '<span id="minmax_warning"><em>'.__('Min. ').'</em>';
$table_simple->data[2][1] .= html_print_input_text(
@ -435,7 +435,7 @@ if (!modules_is_string_type($id_module_type) || $edit) {
$table_simple->data[2][2] = '<svg id="svg_dinamic" width="500" height="300"> </svg>';
}
$table_simple->data[3][0] = __('Critical status');
$table_simple->data[3][0] = __('Critical threshold');
if (!modules_is_string_type($id_module_type) || $edit) {
$table_simple->data[3][1] .= '<span id="minmax_critical"><em>'.__('Min. ').'</em>';
$table_simple->data[3][1] .= html_print_input_text(

View File

@ -208,18 +208,21 @@ if ($delete_alert) {
$agent_alias = agents_get_alias(
db_get_value('id_agente', 'tagente_modulo', 'id_agente_modulo', $id_agent_module)
);
$unsafe_alert_template_name = io_safe_output($alert_template_name);
$unsafe_module_name = io_safe_output($module_name);
$unsafe_agent_alias = io_safe_output($agent_alias);
$result = alerts_delete_alert_agent_module($id_alert_agent_module);
if ($result) {
db_pandora_audit(
'Alert management',
"Deleted alert '$alert_template_name' for module '$module_name' in agent '$agent_alias'"
"Deleted alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'"
);
} else {
db_pandora_audit(
'Alert management',
"Fail to deleted alert '$alert_template_name' for module '$module_name' in agent '$agent_alias'"
"Fail to deleted alert '$unsafe_alert_template_name' for module '$unsafe_module_name' in agent '$unsafe_agent_alias'"
);
}

View File

@ -116,7 +116,7 @@ if ($create_special_day) {
$same_day = (string) get_parameter('same_day');
$values = [];
$values['id_group'] = (string) get_parameter('id_group');
$values['description'] = (string) get_parameter('description');
$values['description'] = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$aviable_description = true;
if (preg_match('/script/i', $values['description'])) {
@ -180,7 +180,7 @@ if ($update_special_day) {
$date = (string) get_parameter('date');
$date_orig = (string) get_parameter('date_orig');
$same_day = (string) get_parameter('same_day');
$description = (string) get_parameter('description');
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$id_group = (string) get_parameter('id_group');
$id_group_orig = (string) get_parameter('id_group_orig');
@ -517,7 +517,11 @@ for ($month = 1; $month <= 12; $month++) {
break;
}
$cal_table->data[$cal_line][$week] .= ui_print_help_tip($special_day['description'], true);
// Only show description if is filled.
if (empty($special_day['description']) === false) {
$cal_table->data[$cal_line][$week] .= ui_print_help_tip($special_day['description'], true);
}
if ($special_day['id_group'] || ($can_manage_group_all && $special_day['id_group'] == 0)) {
$cal_table->data[$cal_line][$week] .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/configure_alert_special_days&id='.$special_day['id'].'" title=';
$cal_table->data[$cal_line][$week] .= __('Edit');

View File

@ -472,24 +472,16 @@ $(document).ready (function () {
$table_macros_field.show();
}
tinyMCE.init({
selector: 'textarea.tiny-mce-editor',
theme : "advanced",
plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resizing : true,
theme_advanced_statusbar_location : "bottom",
force_p_newlines : false,
forced_root_block : '',
inline_styles : true,
valid_children : "+body[style]",
element_format : "html"
});
var added_config = {
"selector": "textarea.tiny-mce-editor",
"plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
"theme_advanced_buttons1": "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
"theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
"valid_children": "+body[style]",
"width": "90%",
}
defineTinyMCE(added_config);
render_command_preview(original_command);
render_command_recovery_preview(original_command);

View File

@ -741,7 +741,10 @@ if ($step == 2) {
1,
$min_alerts_reset_counter,
true,
$is_central_policies_on_node
$is_central_policies_on_node,
'',
false,
$create_template == 1 ? 'checked=checked' : ''
);
$table->data[4][0] = __('Max. number of alerts');
@ -1507,23 +1510,19 @@ if ($step == 2) {
}
});
tinyMCE.init({
selector: 'textarea.tiny-mce-editor',
theme : "advanced",
plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resizing : true,
theme_advanced_statusbar_location : "bottom",
force_p_newlines : false,
forced_root_block : '',
inline_styles : true,
valid_children : "+body[style]",
element_format : "html"
});
var added_config = {
"selector": 'textarea.tiny-mce-editor',
"plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
"theme_advanced_buttons1": "bold,italic,underline,|,cut,copy,paste,|,justifyleft,justifycenter,justifyright,|,forecolor,backcolor,|,formatselect,fontselect,fontsizeselect",
"theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview",
"force_p_newlines" : false,
"forced_root_block" : '',
"inline_styles": true,
"valid_children": "+body[style]",
}
defineTinyMCE(added_config);
<?php
}
?>

View File

@ -135,7 +135,7 @@ if (is_ajax()) {
}
if ($search != '') {
$filter['string'] = $search;
$filter['aliasRegex'] = $search;
}
if ($status_agents != AGENT_STATUS_ALL) {
@ -170,6 +170,15 @@ if (is_ajax()) {
$force_serialized
);
$agents_aux = [];
foreach ($agents as $key => $value) {
if (preg_match('/'.$search.'/', io_safe_output($value))) {
$agents_aux[$key] = $value;
}
}
$agents = $agents_aux;
$agents_disabled = [];
// Add keys prefix.
if ($keys_prefix !== '') {

View File

@ -14,7 +14,8 @@
// Load global vars
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
if (!check_acl($config['id_user'], 0, 'UM')) {
db_pandora_audit(
'ACL Violation',
'Trying to access massive profile addition'
@ -108,24 +109,50 @@ $table->size[2] = '33%';
$data = [];
$data[0] = '<form method="post" id="form_profiles" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&tab=massive_users&option=add_profiles">';
$data[0] .= html_print_select(
profile_get_profiles(),
'profiles_id[]',
'',
'',
'',
'',
true,
true,
false,
'',
false,
'width: 100%'
);
$display_all_group = true;
if (check_acl($config['id_user'], 0, 'PM')) {
$data[0] .= html_print_select(
profile_get_profiles(),
'profiles_id[]',
'',
'',
'',
'',
true,
true,
false,
'',
false,
'width: 100%'
);
} else {
$display_all_group = false;
$data[0] .= html_print_select(
profile_get_profiles(
[
'pandora_management' => '<> 1',
'db_management' => '<> 1',
'user_management' => '<> 1',
]
),
'profiles_id[]',
'',
'',
'',
'',
true,
true,
false,
'',
false,
'width: 100%'
);
}
$data[1] = html_print_select_groups(
$config['id_user'],
'UM',
true,
$display_all_group,
'groups_id[]',
'',
'',
@ -146,8 +173,25 @@ $users_order = [
'field' => 'id_user',
'order' => 'ASC',
];
$info_users = [];
// Is admin or has group permissions all.
if (check_acl($config['id_user'], 0, 'PM') || isset($group_um[0])) {
$info_users = users_get_info($users_order, 'id_user');
} else {
$info = [];
$group_um = users_get_groups_UM($config['id_user']);
foreach ($group_um as $group => $value) {
$info = array_merge($info, users_get_users_by_group($group, $value));
}
foreach ($info as $key => $value) {
$info_users[$key] = $value['id_user'];
}
}
$data[2] .= html_print_select(
users_get_info($users_order, 'id_user'),
$info_users,
'users_id[]',
'',
'',
@ -161,7 +205,6 @@ $data[2] .= html_print_select(
'width: 100%'
);
array_push($table->data, $data);
html_print_table($table);

View File

@ -14,7 +14,7 @@
// Load global vars
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
if (! check_acl($config['id_user'], 0, 'UM')) {
db_pandora_audit(
'ACL Violation',
'Trying to access massive profile deletion'
@ -48,37 +48,27 @@ $delete_profiles = (int) get_parameter('delete_profiles');
if ($delete_profiles) {
$profiles_id = get_parameter('profiles_id', -1);
$groups_id = get_parameter('groups_id', -1);
$users_id = get_parameter('users_id', -1);
$users = get_parameter('users_id', -1);
if ($profiles_id == -1 || $groups_id == -1 || $users_id == -1) {
if ($profiles_id == -1 || $groups_id == -1 || $users == -1) {
$result = false;
} else {
foreach ($profiles_id as $profile) {
foreach ($groups_id as $group) {
foreach ($users_id as $id_up) {
if ($id_up == 0) {
ui_print_error_message(__('Not deleted. You must select an existing user'));
$result = '';
} else {
$user = (string) db_get_value_filter('id_usuario', 'tusuario_perfil', ['id_up' => $id_up]);
foreach ($users as $user) {
db_pandora_audit(
'User management',
'Deleted profile for user '.io_safe_input($user)
);
db_pandora_audit(
'User management',
'Deleted profile for user '.io_safe_input($user)
);
$result = profile_delete_user_profile($user, $id_up);
}
}
}
$result = profile_delete_user_profile_group($user, $profiles_id[0], $groups_id[0]);
}
}
$info = [
'Profiles' => implode(',', $profiles_id),
'Groups' => implode(',', $groups_id),
'Users' => implode(',', $users_id),
'Users' => implode(',', $users),
];
if ($result) {
db_pandora_audit('Massive management', 'Delete profile ', false, false, json_encode($info));
} else {
@ -115,24 +105,50 @@ $table->size[2] = '33%';
$data = [];
$data[0] = '<form method="post" id="form_profiles" action="index.php?sec=gmassive&sec2=godmode/massive/massive_operations&tab=massive_users&option=delete_profiles">';
$data[0] .= html_print_select(
profile_get_profiles(),
'profiles_id[]',
'',
'',
'',
'',
true,
false,
false,
'',
false,
'width: 100%'
);
$display_all_group = true;
if (check_acl($config['id_user'], 0, 'PM')) {
$data[0] .= html_print_select(
profile_get_profiles(),
'profiles_id[]',
'',
'',
'',
'',
true,
false,
false,
'',
false,
'width: 100%'
);
} else {
$display_all_group = false;
$data[0] .= html_print_select(
profile_get_profiles(
[
'pandora_management' => '<> 1',
'db_management' => '<> 1',
'user_management' => '<> 1',
]
),
'profiles_id[]',
'',
'',
'',
'',
true,
false,
false,
'',
false,
'width: 100%'
);
}
$data[1] = html_print_select_groups(
$config['id_user'],
'UM',
true,
$display_all_group,
'groups_id[]',
'',
'',
@ -153,8 +169,9 @@ $users_order = [
'field' => 'id_user',
'order' => 'ASC',
];
$data[2] .= html_print_select(
users_get_info($users_order, 'id_user'),
[],
'users_id[]',
'',
'',
@ -168,7 +185,6 @@ $data[2] .= html_print_select(
'width: 100%'
);
array_push($table->data, $data);
html_print_table($table);
@ -192,11 +208,13 @@ ui_require_jquery_file('pandora.controls');
<script type="text/javascript">
/* <![CDATA[ */
$(document).ready (function () {
update_users();
function update_users() {
var $select = $("#users_id").disable ();
$("#users_loading").show ();
$("option", $select).remove ();
console.log($("#groups_id").val());
jQuery.post ("ajax.php",
{"page" : "godmode/massive/massive_delete_profiles",
"get_users" : 1,
@ -206,7 +224,7 @@ $(document).ready (function () {
function (data, status) {
options = "";
jQuery.each (data, function (id, value) {
options += "<option value=\""+id+"\">"+value+"</option>";
options += "<option value=\""+value+"\">"+value+"</option>";
});
$("#users_id").append (options);
$("#users_loading").hide ();
@ -215,11 +233,11 @@ $(document).ready (function () {
"json"
);
}
$("#groups_id").change (function () {
update_users();
});
$("#profiles_id").change (function () {
update_users();
});

View File

@ -767,7 +767,7 @@ $table->data['edit1'][1] = '<table width="100%">';
$table->data['edit35'][2] = __('SNMP version');
$table->data['edit35'][3] = html_print_select(
$snmp_versions,
'tcp_send',
'snmp_version',
'',
'',
__('No change'),
@ -1933,6 +1933,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
'command_text',
'command_credential_identifier',
'command_os',
'snmp_version',
];
$values = [];
@ -2028,9 +2029,7 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
break;
case 'tcp_send2':
if ($value != '') {
$values['tcp_send'] = $value;
}
$tcp_send2 = $value;
break;
case 'plugin_parameter_text':
@ -2039,6 +2038,10 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
}
break;
case 'snmp_version':
$snmp_version = $value;
break;
default:
if ($value != '') {
$values[$field] = $value;
@ -2096,7 +2099,10 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
$modules = db_get_all_rows_filter(
'tagente_modulo',
$filter_modules,
['id_agente_modulo']
[
'id_agente_modulo',
'id_tipo_modulo',
]
);
} else {
if ($module_name == '0') {
@ -2104,7 +2110,10 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
$modules = db_get_all_rows_filter(
'tagente_modulo',
['id_agente' => $agents_select],
['id_agente_modulo']
[
'id_agente_modulo',
'id_tipo_modulo',
]
);
} else {
$modules = db_get_all_rows_filter(
@ -2113,7 +2122,10 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
'id_agente' => $agents_select,
'nombre' => $module_name,
],
['id_agente_modulo']
[
'id_agente_modulo',
'id_tipo_modulo',
]
);
}
}
@ -2137,6 +2149,21 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
}
foreach ($modules as $module) {
// Set tcp_send value according to module type since the purpose of this field in database varies in case of SNMP modules.
if ($module['id_tipo_modulo'] >= 15 && $module['id_tipo_modulo'] <= 18) {
if ($snmp_version != '') {
$values['tcp_send'] = $snmp_version;
} else {
unset($values['tcp_send']);
}
} else {
if ($tcp_send2 != '') {
$values['tcp_send'] = $tcp_send2;
} else {
unset($values['tcp_send']);
}
}
$result = modules_update_agent_module(
$module['id_agente_modulo'],
$values,

View File

@ -47,7 +47,7 @@ $options_agents = [
'delete_agents' => __('Bulk agent delete'),
];
if (check_acl($config['id_user'], 0, 'PM')) {
if (check_acl($config['id_user'], 0, 'UM')) {
$options_users = [
'add_profiles' => __('Bulk profile add'),
'delete_profiles' => __('Bulk profile delete'),
@ -263,7 +263,7 @@ $onheader = [];
$onheader['massive_agents'] = $agentstab;
$onheader['massive_modules'] = $modulestab;
$onheader['massive_plugins'] = $pluginstab;
if (check_acl($config['id_user'], 0, 'PM')) {
if (check_acl($config['id_user'], 0, 'UM')) {
$onheader['user_agents'] = $userstab;
}

View File

@ -184,7 +184,7 @@ if (check_acl($config['id_user'], 0, 'AW')) {
$sub2['godmode/massive/massive_operations&amp;tab=massive_agents']['text'] = __('Agents operations');
$sub2['godmode/massive/massive_operations&amp;tab=massive_modules']['text'] = __('Modules operations');
$sub2['godmode/massive/massive_operations&amp;tab=massive_plugins']['text'] = __('Plugins operations');
if (check_acl($config['id_user'], 0, 'PM')) {
if (check_acl($config['id_user'], 0, 'UM')) {
$sub2['godmode/massive/massive_operations&amp;tab=massive_users']['text'] = __('Users operations');
}

View File

@ -81,8 +81,8 @@ if (defined('METACONSOLE')) {
}
$type = (int) get_parameter('type');
$name = (string) get_parameter('name');
$description = (string) get_parameter('description');
$name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$max = (int) get_parameter('max');
$min = (int) get_parameter('min');
$tcp_send = (string) get_parameter('tcp_send');

View File

@ -1024,7 +1024,7 @@ $class = 'databox filters';
</td>
<td style="">
<?php
html_print_checkbox(
html_print_checkbox_switch(
'last_value',
'1',
((int) $period === 0),
@ -1110,7 +1110,7 @@ $class = 'databox filters';
<td style="font-weight:bold;"><?php echo __('Only display wrong SLAs'); ?></td>
<td>
<?php
html_print_checkbox(
html_print_checkbox_switch(
'checkbox_only_display_wrong',
1,
$only_display_wrong
@ -1125,7 +1125,13 @@ $class = 'databox filters';
</td>
<td style="font-weight:bold;">
<?php html_print_checkbox('current_month', 1, $current_month); ?>
<?php
html_print_checkbox_switch(
'current_month',
1,
$current_month
);
?>
</td>
</tr>
@ -1138,46 +1144,60 @@ $class = 'databox filters';
<table border="0">
<tr>
<td>
<?php
echo __('Monday');
html_print_checkbox('monday', 1, $monday);
?>
<p style="margin-right:30px;">
<?php
echo __('Monday')."<br>";
html_print_checkbox_switch('monday', 1, $monday);
?>
</p>
</td>
<td>
<?php
echo __('Tuesday');
html_print_checkbox('tuesday', 1, $tuesday);
?>
<p style="margin-right:30px;">
<?php
echo __('Tuesday')."<br>";
html_print_checkbox_switch('tuesday', 1, $tuesday);
?>
</p>
</td>
<td>
<?php
echo __('Wednesday');
html_print_checkbox('wednesday', 1, $wednesday);
?>
<p style="margin-right:30px;">
<?php
echo __('Wednesday')."<br>";
html_print_checkbox_switch('wednesday', 1, $wednesday);
?>
</p>
</td>
<td>
<?php
echo __('Thursday');
html_print_checkbox('thursday', 1, $thursday);
?>
<p style="margin-right:30px;">
<?php
echo __('Thursday')."<br>";
html_print_checkbox_switch('thursday', 1, $thursday);
?>
</p>
</td>
<td>
<?php
echo __('Friday');
html_print_checkbox('friday', 1, $friday);
?>
<p style="margin-right:30px;">
<?php
echo __('Friday')."<br>";
html_print_checkbox_switch('friday', 1, $friday);
?>
</p>
</td>
<td>
<?php
echo __('Saturday');
html_print_checkbox('saturday', 1, $saturday);
?>
<p style="margin-right:30px;">
<?php
echo __('Saturday')."<br>";
html_print_checkbox_switch('saturday', 1, $saturday);
?>
</p>
</td>
<td>
<?php
echo __('Sunday');
html_print_checkbox('sunday', 1, $sunday);
?>
<p style="margin-right:30px;">
<?php
echo __('Sunday')."<br>";
html_print_checkbox_switch('sunday', 1, $sunday);
?>
</p>
</td>
</tr>
<tr>
@ -1224,7 +1244,7 @@ $class = 'databox filters';
</td>
<td colspan="6">
<?php
html_print_checkbox(
html_print_checkbox_switch(
'compare_work_time',
1,
$compare_work_time
@ -1260,7 +1280,7 @@ $class = 'databox filters';
);
}
echo '&nbsp;&nbsp;&nbsp;'.__('Recursion').html_print_checkbox(
echo '&nbsp;&nbsp;&nbsp;'.__('Recursion').'&nbsp;&nbsp;&nbsp;'.html_print_checkbox_switch(
'recursion',
1,
$recursion,
@ -1922,6 +1942,7 @@ $class = 'databox filters';
250
);
?>
<span id="url_warning_text" class="error" style="display: none; font-weight: bold;"><?php echo __('Protocol must be specified in URL (e.g.: "https://")'); ?></span>
</td>
</tr>
<tr id="row_field_separator" style="" class="datos">
@ -1974,7 +1995,7 @@ $class = 'databox filters';
</td>
<td>
<?php
html_print_checkbox(
html_print_checkbox_switch(
'checkbox_row_group_by_agent',
1,
$group_by_agent
@ -2078,7 +2099,7 @@ $class = 'databox filters';
</td>
<td>
<?php
html_print_checkbox(
html_print_checkbox_switch(
'time_compare_overlapped',
1,
$time_compare_overlapped
@ -2096,7 +2117,14 @@ $class = 'databox filters';
);
?>
</td>
<td><?php html_print_checkbox('fullscale', 1, $fullscale); ?></td>
<td><?php
html_print_checkbox_switch(
'fullscale',
1,
$fullscale
);
?>
</td>
</tr>
<tr id="row_percentil" style="" class="datos">
@ -2166,32 +2194,32 @@ $class = 'databox filters';
<td>
<p style="margin-right:30px;">
<?php
echo __('Total time');
html_print_checkbox('total_time', 1, $total_time);
echo __('Total time')."<br>";
html_print_checkbox_switch('total_time', 1, $total_time);
?>
</p>
</td>
<td>
<p style="margin-right:30px;">
<?php
echo __('Time failed');
html_print_checkbox('time_failed', 1, $time_failed);
echo __('Time failed')."<br>";
html_print_checkbox_switch('time_failed', 1, $time_failed);
?>
</p>
</td>
<td>
<p style="margin-right:30px;">
<?php
echo __('Time in OK status');
html_print_checkbox('time_in_ok_status', 1, $time_in_ok_status);
echo __('Time in OK status')."<br>";
html_print_checkbox_switch('time_in_ok_status', 1, $time_in_ok_status);
?>
</p>
</td>
<td>
<p style="margin-right:30px;">
<?php
echo __('Time in unknown status');
html_print_checkbox(
echo __('Time in unknown status')."<br>";
html_print_checkbox_switch(
'time_in_unknown_status',
1,
$time_in_unknown_status
@ -2202,8 +2230,8 @@ $class = 'databox filters';
<td>
<p style="margin-right:30px;">
<?php
echo __('Time of not initialized module');
html_print_checkbox(
echo __('Time of not initialized module')."<br>";
html_print_checkbox_switch(
'time_of_not_initialized_module',
1,
$time_of_not_initialized_module
@ -2214,8 +2242,8 @@ $class = 'databox filters';
<td>
<p style="margin-right:30px;">
<?php
echo __('Time of downtime');
html_print_checkbox('time_of_downtime', 1, $time_of_downtime);
echo __('Time of downtime')."<br>";
html_print_checkbox_switch('time_of_downtime', 1, $time_of_downtime);
?>
</p>
</td>
@ -2348,7 +2376,7 @@ $class = 'databox filters';
</td>
<td>
<?php
html_print_checkbox(
html_print_checkbox_switch(
'show_summary_group',
true,
$show_summary_group
@ -2446,7 +2474,7 @@ $class = 'databox filters';
</td>
<td>
<?php
html_print_checkbox(
html_print_checkbox_switch(
'include_extended_events',
true,
$include_extended_events
@ -2460,8 +2488,8 @@ $class = 'databox filters';
<td>
<span id="row_event_graph_by_agent">
<?php
echo __('By agent');
html_print_checkbox(
echo __('By agent ');
html_print_checkbox_switch(
'event_graph_by_agent',
true,
$event_graph_by_agent
@ -2470,8 +2498,8 @@ $class = 'databox filters';
</span>
<span id="row_event_graph_by_user">
<?php
echo __('By user validator');
html_print_checkbox(
echo __('By user validator ');
html_print_checkbox_switch(
'event_graph_by_user_validator',
true,
$event_graph_by_user_validator
@ -2480,8 +2508,8 @@ $class = 'databox filters';
</span>
<span id="row_event_graph_by_criticity">
<?php
echo __('By criticity');
html_print_checkbox(
echo __('By criticity ');
html_print_checkbox_switch(
'event_graph_by_criticity',
true,
$event_graph_by_criticity
@ -2490,8 +2518,8 @@ $class = 'databox filters';
</span>
<span id="row_event_graph_by_validated">
<?php
echo __('Validated vs unvalidated');
html_print_checkbox(
echo __('Validated vs unvalidated ');
html_print_checkbox_switch(
'event_graph_validated_vs_unvalidated',
true,
$event_graph_validated_vs_unvalidated
@ -2512,7 +2540,7 @@ $class = 'databox filters';
</td>
<td style="">
<?php
html_print_checkbox('historical_db_check', 1, $historical_db);
html_print_checkbox_switch('historical_db_check', 1, $historical_db);
?>
</td>
</tr>
@ -2547,7 +2575,7 @@ $class = 'databox filters';
</td>
<td style="">
<?php
html_print_checkbox(
html_print_checkbox_switch(
'show_in_same_row',
'1',
$show_in_same_row,
@ -2683,7 +2711,7 @@ $class = 'databox filters';
</td>
<td style="">
<?php
html_print_checkbox('lapse_calc', 1, $lapse_calc);
html_print_checkbox_switch('lapse_calc', 1, $lapse_calc);
?>
</td>
</tr>
@ -2783,7 +2811,7 @@ $class = 'databox filters';
</td>
<td style="">
<?php
html_print_checkbox('uncompressed_module', 1, $item['uncompressed_module'], false, false, '', false);
html_print_checkbox_switch('uncompressed_module', 1, $item['uncompressed_module'], false, false, '', false);
?>
</td>
</tr>
@ -2794,7 +2822,7 @@ $class = 'databox filters';
echo __('Show item in landscape format (only PDF)');
?>
</td>
<td><?php html_print_checkbox('landscape', 1, $landscape); ?></td>
<td><?php html_print_checkbox_switch('landscape', 1, $landscape); ?></td>
</tr>
<tr id="row_pagebreak" style="" class="datos">
@ -2803,7 +2831,7 @@ $class = 'databox filters';
echo __('Page break at the end of the item (only PDF)');
?>
</td>
<td><?php html_print_checkbox('pagebreak', 1, $pagebreak); ?></td>
<td><?php html_print_checkbox_switch('pagebreak', 1, $pagebreak); ?></td>
</tr>
</tbody>
@ -3671,6 +3699,18 @@ $(document).ready (function () {
$("#inventory_modules").html('');
})
$("#text-url").keyup (
function () {
const user_typed_url = $(this).val();
if (user_typed_url.match('^.+:\/\/')) {
$("#url_warning_text").hide();
} else {
$("#url_warning_text").show();
}
}
);
$("#combo_group").change (
function () {
$("#id_agents").html('');
@ -3878,7 +3918,6 @@ $(document).ready (function () {
case 'historical_data':
case 'agent_configuration':
case 'module_histogram_graph':
case 'event_report_log':
case 'increment':
if ($("#hidden-id_agent").val() == 0) {
dialog_message('#message_no_agent');
@ -3898,6 +3937,12 @@ $(document).ready (function () {
return false;
}
break;
case 'event_report_log':
if ($("#id_agents3").val() == '') {
dialog_message('#message_no_agent');
return false;
}
break;
default:
break;
}

View File

@ -195,54 +195,21 @@ ui_require_javascript_file('encode_decode_base64');
id_visual_console = <?php echo $visualConsole['id']; ?>;
visual_map_main();
tinyMCE.init({
mode : "exact",
elements: "text-label",
convert_urls: false,
theme : "advanced",
<?php
if ($config['style'] == 'pandora_legacy') {
echo 'content_css: "'.ui_get_full_url('include/styles/pandora_legacy.css', false, false, false).'",'."\n";
} else {
echo 'content_css: "'.ui_get_full_url('include/styles/pandora.css', false, false, false).'",'."\n";
}
?>
theme_advanced_font_sizes :
"4pt=.visual_font_size_4pt, " +
"6pt=.visual_font_size_6pt, " +
"8pt=.visual_font_size_8pt, " +
"10pt=.visual_font_size_10pt, " +
"12pt=.visual_font_size_12pt, " +
"14pt=.visual_font_size_14pt, " +
"18pt=.visual_font_size_18pt, " +
"24pt=.visual_font_size_24pt, " +
"28pt=.visual_font_size_28pt, " +
"36pt=.visual_font_size_36pt, " +
"48pt=.visual_font_size_48pt, " +
"60pt=.visual_font_size_60pt, " +
"72pt=.visual_font_size_72pt, " +
"84pt=.visual_font_size_84pt, " +
"96pt=.visual_font_size_96pt, " +
"116pt=.visual_font_size_116pt, " +
"128pt=.visual_font_size_128pt, " +
"140pt=.visual_font_size_140pt, " +
"154pt=.visual_font_size_154pt, " +
"196pt=.visual_font_size_196pt",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, justifyleft, justifycenter, justifyright, |,undo, redo, |, image, link, |, fontselect, |, forecolor, fontsizeselect, |, code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_statusbar_location : "none",
width: "400",
height: "200",
nowrap: true,
plugins : "noneditable",
inline_styles : true,
valid_children : "+body[style]",
element_format : "html",
editor_deselector : "noselected"
});
var added_config = {
"plugins": "noneditable",
"elements": "text-label",
"theme_advanced_buttons1":
"bold,italic,|,justifyleft,justifycenter,justifyright,|,undo,redo,|,image,link,|,fontselect,|,forecolor,fontsizeselect,|,code",
"valid_children": "+body[style]",
"theme_advanced_font_sizes": "true",
"content_css": <?php echo '"'.ui_get_full_url('include/styles/pandora.css', false, false, false).'"'; ?>,
"editor_deselector": "noselected",
"inline_styles": true,
"nowrap": true,
"width": "50%",
"height": "100%",
}
defineTinyMCE(added_config);
$('.item img').each(function(){

View File

@ -710,48 +710,25 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
<script type="text/javascript">
$(document).ready (function () {
tinymce.init({
selector: "#tinyMCE_editor",
theme : "advanced",
<?php
if ($config['style'] == 'pandora_legacy') {
echo 'content_css: "'.ui_get_full_url('include/styles/pandora_legacy.css', false, false, false).'",'."\n";
} else {
echo 'content_css: "'.ui_get_full_url('include/styles/pandora.css', false, false, false).'",'."\n";
}
?>
theme_advanced_font_sizes :
"4pt=.visual_font_size_4pt, " +
"6pt=.visual_font_size_6pt, " +
"8pt=.visual_font_size_8pt, " +
"10pt=.visual_font_size_10pt, " +
"12pt=.visual_font_size_12pt, " +
"14pt=.visual_font_size_14pt, " +
"18pt=.visual_font_size_18pt, " +
"24pt=.visual_font_size_24pt, " +
"28pt=.visual_font_size_28pt, " +
"36pt=.visual_font_size_36pt, " +
"48pt=.visual_font_size_48pt, " +
"60pt=.visual_font_size_60pt, " +
"72pt=.visual_font_size_72pt, " +
"84pt=.visual_font_size_84pt, " +
"96pt=.visual_font_size_96pt, " +
"116pt=.visual_font_size_116pt, " +
"128pt=.visual_font_size_128pt, " +
"140pt=.visual_font_size_140pt, " +
"154pt=.visual_font_size_154pt, " +
"196pt=.visual_font_size_196pt",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, image, link, |, forecolor, fontsizeselect",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_statusbar_location : "none",
width: "400",
height: "200",
nowrap: true
});
var added_config = {
"selector": "#tinyMCE_editor",
"elements": "text-label",
"plugins": "noneditable",
"theme_advanced_buttons1":
"bold,italic,|,justifyleft,justifycenter,justifyright,|,undo,redo,|,image,link,|,fontselect,|,forecolor,fontsizeselect,|,code",
"valid_children": "+body[style]",
"theme_advanced_font_sizes": "true",
"content_css":
<?php echo '"'.ui_get_full_url('include/styles/pandora.css', false, false, false).'"'; ?>,
"editor_deselector": "noselected",
"inline_styles": true,
"nowrap": true,
"width": "400",
"height": "200",
}
defineTinyMCE(added_config);
$("#dialog_label_editor").hide ()
.dialog ({

View File

@ -302,6 +302,7 @@ ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript
// Include tiny for wysiwyg editor
ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
ui_require_javascript_file('pandora');
?>
<script language="javascript" type="text/javascript">
@ -325,20 +326,8 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
changeMonth: true,
changeYear: true,
showAnim: "slideDown"});
tinyMCE.init({
mode : "exact",
elements: "textarea_text",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, image, link, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright, | ,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
convert_urls : false,
theme_advanced_statusbar_location : "none"
});
defineTinyMCE({"elements": "textarea_text",});
$("#checkbox-expire").click(function() {
check_expire();

View File

@ -37,8 +37,8 @@ if ($idOS) {
$description = $os['description'];
$icon = $os['icon_name'];
} else {
$name = get_parameter('name', '');
$description = get_parameter('description', '');
$name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$icon = get_parameter('icon', 0);
}
@ -91,8 +91,8 @@ switch ($action) {
break;
case 'update':
$name = get_parameter('name', '');
$description = get_parameter('description', '');
$name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$icon = get_parameter('icon', 0);
$values = [];

View File

@ -685,8 +685,8 @@ function change_macro_fields() {
if (value <= 0) {
$("#text-max_macro_fields").val(1);
}
else if (value > 15) {
$("#text-max_macro_fields").val(15);
else if (value > 20) {
$("#text-max_macro_fields").val(20);
}
}

View File

@ -996,7 +996,7 @@ $row++;
$table_report->width = '100%';
$table_report->class = 'databox filters';
$table_report->style[0] = 'font-weight: bold;';
$table_report->size[0] = '50%';
$table_report->size[0] = '20%';
$table_report->data = [];
@ -1097,7 +1097,7 @@ $row++;
5,
15,
io_safe_output($config['custom_report_front_header']),
'style="width: 38em;"',
'style="width: 90%; height: 300px !important;"',
true
);
@ -1120,7 +1120,7 @@ $row++;
15,
15,
$custom_report_front_firstpage,
'style="width: 38em; height: 20em;"',
'style="width: 90%; height: 300px !important;"',
true
);
@ -1133,7 +1133,7 @@ $row++;
5,
15,
io_safe_output($config['custom_report_front_footer']),
'style="width: 38em;"',
'style="width: 90%; height: 300px !important;"',
true
);
@ -1474,30 +1474,17 @@ function change_servicetree_nodes_padding () {
}
}
tinyMCE.init({
mode : "exact",
elements: "textarea_custom_report_front_header, textarea_custom_report_front_footer",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, image, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_statusbar_location : "none"
});
var added_config1 = {
"elements":"textarea_custom_report_front_header, textarea_custom_report_front_footer",
}
tinyMCE.init({
mode : "exact",
elements: "textarea_custom_report_front_firstpage",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic, |, image, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
convert_urls : false,
theme_advanced_statusbar_location : "none"
});
defineTinyMCE(added_config1);
var added_config2 = {
"elements":"textarea_custom_report_front_firstpage",
}
defineTinyMCE(added_config2);
$(document).ready (function () {

View File

@ -1470,6 +1470,7 @@ if ($create_alert || $update_alert) {
unset($table);
}
ui_require_javascript_file('pandora', 'include/javascript/', true);
ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
?>
<script language="javascript" type="text/javascript">
@ -1575,24 +1576,19 @@ $(document).ready (function () {
}
});
tinyMCE.init({
selector: 'textarea.tiny-mce-editor',
theme : "advanced",
plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resizing : true,
theme_advanced_statusbar_location : "bottom",
force_p_newlines : false,
forced_root_block : '',
inline_styles : true,
valid_children : "+body[style]",
element_format : "html"
});
var added_config = {
"selector": "textarea.tiny-mce-editor",
"plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
"theme_advanced_buttons1" : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
"theme_advanced_buttons2" : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
"force_p_newlines": false,
"forced_root_block": '',
"inline_styles": true,
"valid_children": "+body[style]",
"element_format": "html",
}
defineTinyMCE(added_config);
});
function show_add_action_snmp(id_alert_snmp) {

View File

@ -179,7 +179,7 @@ if ($id_profile || $new_profile) {
$id_audit = db_pandora_audit(
'User management',
'Edit profile '.$name
'Edit profile '.io_safe_output($name)
);
enterprise_include_once('include/functions_audit.php');

View File

@ -101,6 +101,7 @@ $id = get_parameter('id', get_parameter('id_user', ''));
$pure = get_parameter('pure', 0);
$user_info = get_user_info($id);
$is_err = false;
if (! check_acl($config['id_user'], 0, 'UM')) {
db_pandora_audit(
@ -124,7 +125,7 @@ if (is_ajax()) {
db_pandora_audit(
'User management',
'Deleted profile for user '.io_safe_input($id2),
'Deleted profile for user '.io_safe_output($id2),
false,
false,
'The profile with id '.$id_perfil.' in the group '.$perfilUser['id_grupo']
@ -145,7 +146,7 @@ if (is_ajax()) {
if ($result) {
db_pandora_audit(
'User management',
__('Deleted user %s', io_safe_input($id_user))
__('Deleted user %s', io_safe_output($id_user))
);
}
@ -167,7 +168,7 @@ if (is_ajax()) {
if ($result) {
db_pandora_audit(
'User management',
__('Deleted user %s from metaconsole', io_safe_input($id_user))
__('Deleted user %s from metaconsole', io_safe_output($id_user))
);
}
@ -313,7 +314,7 @@ if ($create_user) {
$password_confirm = (string) get_parameter('password_confirm', '');
$values['email'] = (string) get_parameter('email');
$values['phone'] = (string) get_parameter('phone');
$values['comments'] = (string) get_parameter('comments');
$values['comments'] = io_safe_input(strip_tags(io_safe_output((string) get_parameter('comments'))));
$values['is_admin'] = $user_is_admin;
$values['language'] = get_parameter('language', 'default');
$values['timezone'] = (string) get_parameter('timezone');
@ -370,23 +371,27 @@ if ($create_user) {
if ($id == '') {
ui_print_error_message(__('User ID cannot be empty'));
$is_err = true;
$user_info = $values;
$password_new = '';
$password_confirm = '';
$new_user = true;
} else if (preg_match('/^\s+|\s+$/', io_safe_output($id))) {
ui_print_error_message(__('Invalid user ID: leading or trailing blank spaces not allowed'));
$is_err = true;
$user_info = $values;
$password_new = '';
$password_confirm = '';
$new_user = true;
} else if ($password_new == '') {
$is_err = true;
ui_print_error_message(__('Passwords cannot be empty'));
$user_info = $values;
$password_new = '';
$password_confirm = '';
$new_user = true;
} else if ($password_new != $password_confirm) {
$is_err = true;
ui_print_error_message(__('Passwords didn\'t match'));
$user_info = $values;
$password_new = '';
@ -422,7 +427,7 @@ if ($create_user) {
db_pandora_audit(
'User management',
'Created user '.io_safe_input($id),
'Created user '.io_safe_output($id),
false,
false,
$info
@ -465,7 +470,7 @@ if ($create_user) {
db_pandora_audit(
'User management',
'Added profile for user '.io_safe_input($id2),
'Added profile for user '.io_safe_output($id2),
false,
false,
'Profile: '.$profile2.' Group: '.$group2.' Tags: '.$tags
@ -500,7 +505,7 @@ if ($update_user) {
$values['lastname'] = (string) get_parameter('lastname');
$values['email'] = (string) get_parameter('email');
$values['phone'] = (string) get_parameter('phone');
$values['comments'] = (string) get_parameter('comments');
$values['comments'] = io_safe_input(strip_tags(io_safe_output((string) get_parameter('comments'))));
$values['is_admin'] = get_parameter('is_admin', 0);
$values['language'] = (string) get_parameter('language');
$values['timezone'] = (string) get_parameter('timezone');
@ -656,7 +661,7 @@ if ($update_user) {
db_pandora_audit(
'User management',
'Updated user '.io_safe_input($id),
'Updated user '.io_safe_output($id),
false,
false,
$info
@ -724,7 +729,7 @@ if ($add_profile && empty($json_profile)) {
db_pandora_audit(
'User management',
'Added profile for user '.io_safe_input($id2),
'Added profile for user '.io_safe_output($id2),
false,
false,
'Profile: '.$profile2.' Group: '.$group2.' Tags: '.$tags
@ -1143,7 +1148,7 @@ if ($meta) {
$metaconsole_access_node .= html_print_checkbox('metaconsole_access_node', 1, $user_info['metaconsole_access_node'], true).'</div>';
}
echo '<form id="user_profile_form" method="post" autocomplete="off">';
echo '<form id="user_profile_form" name="user_profile_form" method="post" autocomplete="off" action="#">';
if (!$id) {
@ -1160,13 +1165,17 @@ if (is_metaconsole()) {
$access_or_pagination = $size_pagination;
}
if ($id != '' && !$is_err) {
$div_user_info = '<div class="edit_user_info_left">'.$avatar.$user_id_create.'</div>
<div class="edit_user_info_right">'.$user_id_update_view.$full_name.$new_pass.$new_pass_confirm.$global_profile.'</div>';
} else {
$div_user_info = '<div class="edit_user_info_left">'.$avatar.'</div>
<div class="edit_user_info_right">'.$user_id_create.$user_id_update_view.$full_name.$new_pass.$new_pass_confirm.$global_profile.'</div>';
}
echo '<div id="user_form">
<div class="user_edit_first_row">
<div class="edit_user_info white_box">
<div class="edit_user_info_left">'.$avatar.$user_id_create.'</div>
<div class="edit_user_info_right">'.$user_id_update_view.$full_name.$new_pass.$new_pass_confirm.$global_profile.'</div>
</div>
<div class="edit_user_info white_box">'.$div_user_info.'</div>
<div class="edit_user_autorefresh white_box"><p style="font-weight:bold;">Extra info</p>'.$email.$phone.$not_login.$session_time.'</div>
</div>
<div class="user_edit_second_row white_box">
@ -1195,30 +1204,44 @@ if (!empty($ehorus)) {
echo '</div>';
profile_print_profile_table($id);
echo '<div style="width: 100%" class="action-buttons">';
if ($config['admin_can_add_user']) {
html_print_csrf_hidden();
if ($new_user) {
html_print_input_hidden('create_user', 1);
html_print_submit_button(__('Create'), 'crtbutton', false, 'class="sub wand"');
} else {
html_print_input_hidden('update_user', 1);
html_print_submit_button(__('Update'), 'uptbutton', false, 'class="sub upd"');
}
}
echo '</div>';
html_print_input_hidden('json_profile', '');
echo '</div>';
echo '</form>';
profile_print_profile_table($id);
echo '<br />';
echo '<div style="width: 100%" class="action-buttons">';
if ($config['admin_can_add_user']) {
if ($new_user) {
html_print_submit_button(__('Create'), 'crtbutton', false, 'class="sub wand" form="user_profile_form"');
} else {
html_print_submit_button(__('Update'), 'uptbutton', false, 'class="sub upd" form="user_profile_form"');
}
}
echo '</div>';
echo '</div>';
enterprise_hook('close_meta_frame');
$delete_image = html_print_input_image('del', 'images/cross.png', 1, '', true, ['onclick' => 'delete_profile(event, this)']);
if (!is_metaconsole()) {
?>
@ -1289,7 +1312,7 @@ $(document).ready (function () {
$('#checkbox-ehorus_user_level_enabled').trigger('change');
var img_delete = '<?php echo $delete_image; ?>';
var id_user = '<?php echo $id; ?>';
var id_user = '<?php echo io_safe_output($id); ?>';
var data = [];
$('input:image[name="add"]').click(function (e) {
@ -1335,7 +1358,7 @@ $(document).ready (function () {
e.preventDefault();
var rows = $("#table_profiles tr").length;
if (rows <= 3) {
if (!confirm('<?php echo __('Deleting last profile'); ?>' + '. ' + '<?php echo __('Are you sure?'); ?>')) {
if (!confirm('<?php echo __('Deleting last profile will delete this user'); ?>' + '. ' + '<?php echo __('Are you sure?'); ?>')) {
return;
}
}

View File

@ -81,7 +81,7 @@ if ($delete_profile) {
} else {
db_pandora_audit(
'Profile management',
'Delete profile '.$profile['name']
'Delete profile '.io_safe_output($profile['name'])
);
ui_print_success_message(__('Successfully deleted'));
}
@ -196,7 +196,7 @@ if ($update_profile) {
db_pandora_audit(
'User management',
'Update profile '.$name,
'Update profile '.io_safe_output($name),
false,
false,
$info
@ -247,7 +247,7 @@ if ($create_profile) {
db_pandora_audit(
'User management',
'Created profile '.$name,
'Created profile '.io_safe_output($name),
false,
false,
$info

View File

@ -171,7 +171,7 @@ if (isset($_GET['user_del'])) {
if ($result) {
db_pandora_audit(
'User management',
__('Deleted user %s', io_safe_input($id_user))
__('Deleted user %s', io_safe_output($id_user))
);
}
@ -366,16 +366,12 @@ if (!defined('METACONSOLE')) {
}
$group_um = users_get_groups_UM($config['id_user']);
if (isset($group_um[0])) {
$group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true)));
} else {
$group_um_string = implode(',', array_keys($group_um));
}
$info1 = [];
$user_is_admin = users_is_admin();
// Is admin or has group permissions all.
if (users_is_admin() || isset($group_um[0])) {
if ($user_is_admin || isset($group_um[0])) {
$info1 = get_users($order);
} else {
foreach ($group_um as $group => $value) {
@ -434,13 +430,13 @@ $rowPair = true;
$iterator = 0;
$cont = 0;
foreach ($info as $user_id => $user_info) {
if (!users_is_admin() && $user_info['is_admin']) {
if (!$user_is_admin && $user_info['is_admin']) {
// If user is not admin then don't display admin users.
continue;
}
// User profiles.
if (users_is_admin() || $user_id == $config['id_user'] || isset($group_um[0])) {
if ($user_is_admin || $user_id == $config['id_user'] || isset($group_um[0])) {
$user_profiles = db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $user_id);
} else {
$user_profiles_aux = users_get_user_profile($user_id);
@ -492,7 +488,7 @@ foreach ($info as $user_id => $user_info) {
$iterator++;
if (users_is_admin() || $config['id_user'] == $user_info['id_user'] || (!$user_info['is_admin'] && (!isset($user_info['edit']) || isset($group_um[0]) || (isset($user_info['edit']) && $user_info['edit'])))) {
if ($user_is_admin || $config['id_user'] == $user_info['id_user'] || (!$user_info['is_admin'] && (!isset($user_info['edit']) || isset($group_um[0]) || (isset($user_info['edit']) && $user_info['edit'])))) {
$data[0] = '<a href="index.php?sec='.$sec.'&amp;sec2=godmode/users/configure_user&pure='.$pure.'&amp;id='.$user_id.'">'.$user_id.'</a>';
} else {
$data[0] = $user_id;
@ -560,7 +556,7 @@ foreach ($info as $user_id => $user_info) {
$table->cellclass[][6] = 'action_buttons';
$data[6] = '';
if (users_is_admin() || $config['id_user'] == $user_info['id_user'] || isset($group_um[0]) || (!$user_info['is_admin'] && (!isset($user_info['edit']) || (isset($user_info['edit']) && $user_info['edit'])))) {
if ($user_is_admin || $config['id_user'] == $user_info['id_user'] || isset($group_um[0]) || (!$user_info['is_admin'] && (!isset($user_info['edit']) || (isset($user_info['edit']) && $user_info['edit'])))) {
if (!isset($user_info['not_delete'])) {
if ($user_info['disabled'] == 0) {
$data[6] = '<a href="index.php?sec='.$sec.'&amp;sec2=godmode/users/user_list&amp;disable_user=1&pure='.$pure.'&amp;id='.$user_info['id_user'].'">'.html_print_image('images/lightbulb.png', true, ['title' => __('Disable')]).'</a>';

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

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