diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..3de8a8ebac --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pandora_console/attachment/agents diff --git a/extras/build_src.sh b/extras/build_src.sh index 1a85af3b5b..da5b75d20b 100755 --- a/extras/build_src.sh +++ b/extras/build_src.sh @@ -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 diff --git a/extras/pandora_update_version.sh b/extras/pandora_update_version.sh index 5fa5af91f0..8a16e8e18d 100755 --- a/extras/pandora_update_version.sh +++ b/extras/pandora_update_version.sh @@ -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>)/\1$VERSION\2/g" "$AGENT_DARWIN_PLIST" +sed -i -r "s/(CFBundleShortVersionString<\/key>\s*).*(<\/string>)/\1$VERSION\2/g" "$AGENT_DARWIN_PLIST" +sed -i -r "s/(CFBundleGetInfoString<\/key>\s*).*( 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" diff --git a/pandora_agents/pc/Win32/help/how_to_keys.html b/pandora_agents/pc/Win32/help/how_to_keys.html index aaa831e70f..d3c0a6cdf2 100644 --- a/pandora_agents/pc/Win32/help/how_to_keys.html +++ b/pandora_agents/pc/Win32/help/how_to_keys.html @@ -1,53 +1,59 @@ - + - -Fandora FMS - Generate SSH keys step-by-step - - - - - - - -
- -
+ + Fandora FMS - Generate SSH keys step-by-step + + + + + + + +
+ +
-

Step-by-step generating SSH keys

+

Step-by-step generating SSH keys

-From -Pandora FMS FAQ. + From + Pandora FMS FAQ. -
    -
  1. - Go to .\util of your Pandora FMS agent for Windows - and run puttygen.exe.
    - Generate keys, SSH-2_DSA, 1024:

    -

    -
  2. -
  3. - Press Generate
    - Export key to OpenSSH key (Cygwin uses a port of OpenSSH)

    -

    -
  4. -
  5. - We have no chosen password, so press YES:

    -

    -
  6. -
  7. - Save it as c:\pandora\keys\id_dsa:

    -

    -
  8. -
  9. - Now let's copy the public key to clipboard:

    -

    -
  10. -
  11. - and paste it as c:\pandora_agent\keys\id_dsa.pub, - and also to the /home/pandora/.ssh/authorized_keys file. -

    -

    -
  12. -
- - \ No newline at end of file +
    +
  1. + Go to .\util of your Pandora FMS agent for Windows and run + puttygen.exe.
    + Generate keys, SSH-2_DSA, 1024:

    +

    +
  2. +
  3. + Press Generate
    + Export key to OpenSSH key (Cygwin uses a port of OpenSSH)

    +

    +
  4. +
  5. + We have no chosen password, so press YES:

    +

    +
  6. +
  7. + Save it as c:\pandora\keys\id_dsa:

    +

    +
  8. +
  9. + Now let's copy the public key to clipboard:

    +

    +
  10. +
  11. + and paste it as c:\pandora_agent\keys\id_dsa.pub, and also + to the /home/pandora/.ssh/authorized_keys file. +

    +

    +
  12. +
+ + diff --git a/pandora_agents/pc/Win32/help/how_to_keys_es.html b/pandora_agents/pc/Win32/help/how_to_keys_es.html index a0c6af59d2..1422add077 100644 --- a/pandora_agents/pc/Win32/help/how_to_keys_es.html +++ b/pandora_agents/pc/Win32/help/how_to_keys_es.html @@ -1,53 +1,62 @@ - + - -Pandora FMS - Generación de claves SSH en Windows paso por paso - - - - - - - -
- -
-

Generación de claves SSH en Windows paso por paso

+ + + Pandora FMS - Generación de claves SSH en Windows paso por paso + + + + + + + + +
+ +
+

Generación de claves SSH en Windows paso por paso

-Extraído de las - -FAQ. + Extraído de las + + FAQ. -
    -
  1. - Desde el directorio .\util del agente Pandora FMS para - windows ejecutamos puttygen.exe.
    - Generamos claves SSH-2_DSA, 1024:

    -

    -
  2. -
  3. - Pulsamos «Generate» - para generar la clave.
    - Exportamos la clave a formato OpenSSH

    -

    -
  4. -
  5. - No elegimos contraseña, con lo cual pulsamos «Sí»:

    -

    -
  6. -
  7. - Guardamos la clave como C:\pandora\keys\id_dsa:

    -

    -
  8. -
  9. - Ahora copiamos la clave pública al portapapeles:

    -

    -
  10. -
  11. - Pegamos la clave en un nuevo fichero C:\pandora_agent\keys\id_dsa.pub, - y debemos también añadirla al fichero /home/pandora/.ssh/authorized_keys. -

    -

    -
  12. -
- \ No newline at end of file +
    +
  1. + Desde el directorio .\util del agente Pandora FMS para + windows ejecutamos puttygen.exe.
    + Generamos claves SSH-2_DSA, 1024:

    +

    +
  2. +
  3. + Pulsamos «Generate» para generar la clave.
    + Exportamos la clave a formato OpenSSH

    +

    +
  4. +
  5. + No elegimos contraseña, con lo cual pulsamos «Sí»:

    +

    +
  6. +
  7. + Guardamos la clave como C:\pandora\keys\id_dsa:

    +

    +
  8. +
  9. + Ahora copiamos la clave pública al portapapeles:

    +

    +
  10. +
  11. + Pegamos la clave en un nuevo fichero + C:\pandora_agent\keys\id_dsa.pub, y debemos también + añadirla al fichero /home/pandora/.ssh/authorized_keys. +

    +

    +
  12. +
+ + diff --git a/pandora_agents/pc/tentacle_client b/pandora_agents/pc/tentacle_client index 0d8ed2992f..913beda931 100644 --- a/pandora_agents/pc/tentacle_client +++ b/pandora_agents/pc/tentacle_client @@ -4,7 +4,7 @@ # Copyright (c) 2007-2008 Ramon Novoa # 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, L, L, L -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 diff --git a/pandora_agents/pc/tentacle_server b/pandora_agents/pc/tentacle_server index 8b27ed35b3..d945a134e8 100755 --- a/pandora_agents/pc/tentacle_server +++ b/pandora_agents/pc/tentacle_server @@ -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 # 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 [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, L, L, L, L -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 diff --git a/pandora_agents/shellscript/linux/tentacle_client b/pandora_agents/shellscript/linux/tentacle_client index 0d8ed2992f..913beda931 100755 --- a/pandora_agents/shellscript/linux/tentacle_client +++ b/pandora_agents/shellscript/linux/tentacle_client @@ -4,7 +4,7 @@ # Copyright (c) 2007-2008 Ramon Novoa # 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, L, L, L -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 diff --git a/pandora_agents/shellscript/mac_osx/tentacle_client b/pandora_agents/shellscript/mac_osx/tentacle_client index 0d8ed2992f..913beda931 100755 --- a/pandora_agents/shellscript/mac_osx/tentacle_client +++ b/pandora_agents/shellscript/mac_osx/tentacle_client @@ -4,7 +4,7 @@ # Copyright (c) 2007-2008 Ramon Novoa # 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, L, L, L -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 diff --git a/pandora_agents/unix/AIX/pandora_agent.conf b/pandora_agents/unix/AIX/pandora_agent.conf index f81cfe787c..52c9ac9686 100644 --- a/pandora_agents/unix/AIX/pandora_agent.conf +++ b/pandora_agents/unix/AIX/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 3d527b8cd7..54a1eb5c32 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.749-200914 +Version: 7.0NG.749-200929 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 596f81cff4..3c07c6622f 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -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 diff --git a/pandora_agents/unix/Darwin/com.pandorafms.pandorafms.plist b/pandora_agents/unix/Darwin/com.pandorafms.pandorafms.plist index 0a3f6fc98c..647b15e68e 100644 --- a/pandora_agents/unix/Darwin/com.pandorafms.pandorafms.plist +++ b/pandora_agents/unix/Darwin/com.pandorafms.pandorafms.plist @@ -6,13 +6,16 @@ com.pandorafms.pandorafms ProgramArguments - /usr/bin/pandora_agent + /usr/local/bin/pandora_agent /etc/pandora + EnvironmentVariables + + PATH + /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin + RunAtLoad - ServiceDescription - PandoraFMS agent UserName root diff --git a/pandora_agents/unix/Darwin/dmg/HOWTO.txt b/pandora_agents/unix/Darwin/dmg/HOWTO.txt new file mode 100644 index 0000000000..8b78364597 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/HOWTO.txt @@ -0,0 +1,14 @@ +### DMG Agent compilation for MacOS + +1. Move to the dmg directory, where build_darwin_dmg.sh is located + # cd //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. \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/build_darwin_dmg.sh b/pandora_agents/unix/Darwin/dmg/build_darwin_dmg.sh new file mode 100644 index 0000000000..d1bfdb860a --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/build_darwin_dmg.sh @@ -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" \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/extras/distribution.xml b/pandora_agents/unix/Darwin/dmg/extras/distribution.xml new file mode 100644 index 0000000000..18a2823e8d --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/extras/distribution.xml @@ -0,0 +1,33 @@ + + + + Pandora FMS Agent installer for MacOS + + + + + + + + + + + + + + + + + + pandorafms_src.pdk + + + + pandorafms_uninstall.pdk + + diff --git a/pandora_agents/unix/Darwin/dmg/extras/pandora_installer.png b/pandora_agents/unix/Darwin/dmg/extras/pandora_installer.png new file mode 100644 index 0000000000..f68da2a5a8 Binary files /dev/null and b/pandora_agents/unix/Darwin/dmg/extras/pandora_installer.png differ diff --git a/pandora_agents/unix/Darwin/dmg/extras/pandorafms_uninstall.plist b/pandora_agents/unix/Darwin/dmg/extras/pandorafms_uninstall.plist new file mode 100644 index 0000000000..a33962ad04 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/extras/pandorafms_uninstall.plist @@ -0,0 +1,18 @@ + + + + + + BundleHasStrictIdentifier + + BundleIsRelocatable + + BundleIsVersionChecked + + BundleOverwriteAction + upgrade + RootRelativeBundlePath + PandoraFMS agent uninstaller.app + + + diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_group.scpt b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_group.scpt new file mode 100644 index 0000000000..85b5a06bf7 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_group.scpt @@ -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) \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_remotecfg.scpt b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_remotecfg.scpt new file mode 100644 index 0000000000..9727a024e5 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_remotecfg.scpt @@ -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) \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_serverip.scpt b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_serverip.scpt new file mode 100644 index 0000000000..f945907375 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/get_serverip.scpt @@ -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) diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/print_conf.pl b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/print_conf.pl new file mode 100644 index 0000000000..9e04e3387e --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms/inst_utilities/print_conf.pl @@ -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); diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Info.plist b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Info.plist new file mode 100644 index 0000000000..b5ba002f16 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Info.plist @@ -0,0 +1,14 @@ +CFBundlePackageTypeAPPLCFBundleInfoDictionaryVersion6.0 + + CFBundleName PandoraFMS agent uninstaller + CFBundleExecutable uninstall.sh + CFBundleIconFile pandorafms.icns + CFBundleIdentifier com.pandorafms.pandorafms_uninstall + + CFBundleVersion 7.0NG.749 + CFBundleGetInfoString 7.0NG.749 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020 + CFBundleShortVersionString 7.0NG.749 + + NSPrincipalClassNSApplication + NSMainNibFileMainMenu + diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/MacOS/uninstall.sh b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/MacOS/uninstall.sh new file mode 100644 index 0000000000..3b09f4a726 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/MacOS/uninstall.sh @@ -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"` diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/ask_root b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/ask_root new file mode 100644 index 0000000000..b6593d5494 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/ask_root @@ -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) diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/confirm_uninstall b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/confirm_uninstall new file mode 100644 index 0000000000..7c76c7b3c0 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/confirm_uninstall @@ -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) \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/pandorafms.icns b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/pandorafms.icns new file mode 100644 index 0000000000..795c4f7249 Binary files /dev/null and b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/pandorafms.icns differ diff --git a/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/uninstall b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/uninstall new file mode 100644 index 0000000000..61b858b38c --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/files/pandorafms_uninstall/PandoraFMS agent uninstaller.app/Contents/Resources/uninstall @@ -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* + diff --git a/pandora_agents/unix/Darwin/dmg/resources/images/pfms_background_darwin.png b/pandora_agents/unix/Darwin/dmg/resources/images/pfms_background_darwin.png new file mode 100644 index 0000000000..0f8f24098a Binary files /dev/null and b/pandora_agents/unix/Darwin/dmg/resources/images/pfms_background_darwin.png differ diff --git a/pandora_agents/unix/Darwin/dmg/resources/text/conclusion.html b/pandora_agents/unix/Darwin/dmg/resources/text/conclusion.html new file mode 100644 index 0000000000..9b415ab25f --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/resources/text/conclusion.html @@ -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. diff --git a/pandora_agents/unix/Darwin/dmg/resources/text/license.html b/pandora_agents/unix/Darwin/dmg/resources/text/license.html new file mode 100644 index 0000000000..23a21ce653 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/resources/text/license.html @@ -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. +Copyright (C) + + + 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. + + , 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. + diff --git a/pandora_agents/unix/Darwin/dmg/resources/text/readme.html b/pandora_agents/unix/Darwin/dmg/resources/text/readme.html new file mode 100644 index 0000000000..e845566c06 --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/resources/text/readme.html @@ -0,0 +1 @@ +README diff --git a/pandora_agents/unix/Darwin/dmg/resources/text/welcome.html b/pandora_agents/unix/Darwin/dmg/resources/text/welcome.html new file mode 100644 index 0000000000..aa18ed61be --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/resources/text/welcome.html @@ -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. diff --git a/pandora_agents/unix/Darwin/dmg/scripts/postinstall b/pandora_agents/unix/Darwin/dmg/scripts/postinstall new file mode 100644 index 0000000000..2f76310fee --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/scripts/postinstall @@ -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 \ No newline at end of file diff --git a/pandora_agents/unix/Darwin/dmg/scripts/preinstall b/pandora_agents/unix/Darwin/dmg/scripts/preinstall new file mode 100644 index 0000000000..70582d056c --- /dev/null +++ b/pandora_agents/unix/Darwin/dmg/scripts/preinstall @@ -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 diff --git a/pandora_agents/unix/Darwin/pandora_agent.conf b/pandora_agents/unix/Darwin/pandora_agent.conf index f0f43f80e0..74b2a8f974 100644 --- a/pandora_agents/unix/Darwin/pandora_agent.conf +++ b/pandora_agents/unix/Darwin/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/FreeBSD/pandora_agent.conf b/pandora_agents/unix/FreeBSD/pandora_agent.conf index 33b2fe1271..db63f1f73e 100644 --- a/pandora_agents/unix/FreeBSD/pandora_agent.conf +++ b/pandora_agents/unix/FreeBSD/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/HP-UX/pandora_agent.conf b/pandora_agents/unix/HP-UX/pandora_agent.conf index 717a1e6e2a..9223a5a1de 100644 --- a/pandora_agents/unix/HP-UX/pandora_agent.conf +++ b/pandora_agents/unix/HP-UX/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/Linux/pandora_agent.conf b/pandora_agents/unix/Linux/pandora_agent.conf index 36ea7c62de..12ca32271b 100644 --- a/pandora_agents/unix/Linux/pandora_agent.conf +++ b/pandora_agents/unix/Linux/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/NetBSD/pandora_agent.conf b/pandora_agents/unix/NetBSD/pandora_agent.conf index fafa8485f6..e05fe8f5ab 100644 --- a/pandora_agents/unix/NetBSD/pandora_agent.conf +++ b/pandora_agents/unix/NetBSD/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/SunOS/pandora_agent.conf b/pandora_agents/unix/SunOS/pandora_agent.conf index a533c29424..e34cd04dc9 100644 --- a/pandora_agents/unix/SunOS/pandora_agent.conf +++ b/pandora_agents/unix/SunOS/pandora_agent.conf @@ -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 diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 114b43ec57..4b10fa4c76 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -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'); diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 9bf329687c..2ce0fa437c 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -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} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 7ba1cc09cc..a21b2ad5d3 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -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} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 8ccc59fef6..9cf469d43e 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -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 diff --git a/pandora_agents/unix/tentacle_client b/pandora_agents/unix/tentacle_client index 0d8ed2992f..913beda931 100755 --- a/pandora_agents/unix/tentacle_client +++ b/pandora_agents/unix/tentacle_client @@ -4,7 +4,7 @@ # Copyright (c) 2007-2008 Ramon Novoa # 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, L, L, L -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 diff --git a/pandora_agents/unix/tentacle_server b/pandora_agents/unix/tentacle_server index 8b27ed35b3..d945a134e8 100755 --- a/pandora_agents/unix/tentacle_server +++ b/pandora_agents/unix/tentacle_server @@ -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 # 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 [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, L, L, L, L -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 diff --git a/pandora_agents/win32/bin/help/how_to_keys.html b/pandora_agents/win32/bin/help/how_to_keys.html index aaa831e70f..d3c0a6cdf2 100644 --- a/pandora_agents/win32/bin/help/how_to_keys.html +++ b/pandora_agents/win32/bin/help/how_to_keys.html @@ -1,53 +1,59 @@ - + - -Fandora FMS - Generate SSH keys step-by-step - - - - - - - -
- -
+ + Fandora FMS - Generate SSH keys step-by-step + + + + + + + +
+ +
-

Step-by-step generating SSH keys

+

Step-by-step generating SSH keys

-From -Pandora FMS FAQ. + From + Pandora FMS FAQ. -
    -
  1. - Go to .\util of your Pandora FMS agent for Windows - and run puttygen.exe.
    - Generate keys, SSH-2_DSA, 1024:

    -

    -
  2. -
  3. - Press Generate
    - Export key to OpenSSH key (Cygwin uses a port of OpenSSH)

    -

    -
  4. -
  5. - We have no chosen password, so press YES:

    -

    -
  6. -
  7. - Save it as c:\pandora\keys\id_dsa:

    -

    -
  8. -
  9. - Now let's copy the public key to clipboard:

    -

    -
  10. -
  11. - and paste it as c:\pandora_agent\keys\id_dsa.pub, - and also to the /home/pandora/.ssh/authorized_keys file. -

    -

    -
  12. -
- - \ No newline at end of file +
    +
  1. + Go to .\util of your Pandora FMS agent for Windows and run + puttygen.exe.
    + Generate keys, SSH-2_DSA, 1024:

    +

    +
  2. +
  3. + Press Generate
    + Export key to OpenSSH key (Cygwin uses a port of OpenSSH)

    +

    +
  4. +
  5. + We have no chosen password, so press YES:

    +

    +
  6. +
  7. + Save it as c:\pandora\keys\id_dsa:

    +

    +
  8. +
  9. + Now let's copy the public key to clipboard:

    +

    +
  10. +
  11. + and paste it as c:\pandora_agent\keys\id_dsa.pub, and also + to the /home/pandora/.ssh/authorized_keys file. +

    +

    +
  12. +
+ + diff --git a/pandora_agents/win32/bin/help/how_to_keys_es.html b/pandora_agents/win32/bin/help/how_to_keys_es.html index a0c6af59d2..1422add077 100644 --- a/pandora_agents/win32/bin/help/how_to_keys_es.html +++ b/pandora_agents/win32/bin/help/how_to_keys_es.html @@ -1,53 +1,62 @@ - + - -Pandora FMS - Generación de claves SSH en Windows paso por paso - - - - - - - -
- -
-

Generación de claves SSH en Windows paso por paso

+ + + Pandora FMS - Generación de claves SSH en Windows paso por paso + + + + + + + + +
+ +
+

Generación de claves SSH en Windows paso por paso

-Extraído de las - -FAQ. + Extraído de las + + FAQ. -
    -
  1. - Desde el directorio .\util del agente Pandora FMS para - windows ejecutamos puttygen.exe.
    - Generamos claves SSH-2_DSA, 1024:

    -

    -
  2. -
  3. - Pulsamos «Generate» - para generar la clave.
    - Exportamos la clave a formato OpenSSH

    -

    -
  4. -
  5. - No elegimos contraseña, con lo cual pulsamos «Sí»:

    -

    -
  6. -
  7. - Guardamos la clave como C:\pandora\keys\id_dsa:

    -

    -
  8. -
  9. - Ahora copiamos la clave pública al portapapeles:

    -

    -
  10. -
  11. - Pegamos la clave en un nuevo fichero C:\pandora_agent\keys\id_dsa.pub, - y debemos también añadirla al fichero /home/pandora/.ssh/authorized_keys. -

    -

    -
  12. -
- \ No newline at end of file +
    +
  1. + Desde el directorio .\util del agente Pandora FMS para + windows ejecutamos puttygen.exe.
    + Generamos claves SSH-2_DSA, 1024:

    +

    +
  2. +
  3. + Pulsamos «Generate» para generar la clave.
    + Exportamos la clave a formato OpenSSH

    +

    +
  4. +
  5. + No elegimos contraseña, con lo cual pulsamos «Sí»:

    +

    +
  6. +
  7. + Guardamos la clave como C:\pandora\keys\id_dsa:

    +

    +
  8. +
  9. + Ahora copiamos la clave pública al portapapeles:

    +

    +
  10. +
  11. + Pegamos la clave en un nuevo fichero + C:\pandora_agent\keys\id_dsa.pub, y debemos también + añadirla al fichero /home/pandora/.ssh/authorized_keys. +

    +

    +
  12. +
+ + diff --git a/pandora_agents/win32/bin/pandora_agent.conf b/pandora_agents/win32/bin/pandora_agent.conf index 91aee94a6f..ab6133694c 100644 --- a/pandora_agents/win32/bin/pandora_agent.conf +++ b/pandora_agents/win32/bin/pandora_agent.conf @@ -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 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 41166f90a0..42d1c8bfe7 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200914} +{200929} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index f413a84c06..57c191b6ce 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -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; diff --git a/pandora_agents/win32/pandora_windows_service.cc b/pandora_agents/win32/pandora_windows_service.cc index 4f14f2b7c5..3dd80d2a15 100644 --- a/pandora_agents/win32/pandora_windows_service.cc +++ b/pandora_agents/win32/pandora_windows_service.cc @@ -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)); diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 7cf77213e7..6aa0204357 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -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 diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 7ed7a10561..4148fe6fc6 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.749-200914 +Version: 7.0NG.749-200929 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 12d1ac2942..30af373a7f 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -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 diff --git a/pandora_console/extensions/resource_exportation.php b/pandora_console/extensions/resource_exportation.php index 14384aaec3..3946ec053d 100755 --- a/pandora_console/extensions/resource_exportation.php +++ b/pandora_console/extensions/resource_exportation.php @@ -379,7 +379,7 @@ function get_name_xml_resource($hook_enterprise) break; } - $file = $name.'.ptr'; + $file = io_safe_output($name).'.ptr'; return $file; } diff --git a/pandora_console/extras/mr/42.sql b/pandora_console/extras/mr/42.sql new file mode 100644 index 0000000000..2714e3f491 --- /dev/null +++ b/pandora_console/extras/mr/42.sql @@ -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; \ No newline at end of file diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index a8e1deae9a..edfeeb7996 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -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, diff --git a/pandora_console/general/cg_items.php b/pandora_console/general/cg_items.php index 0c8aaa801c..844aac3270 100644 --- a/pandora_console/general/cg_items.php +++ b/pandora_console/general/cg_items.php @@ -1,4 +1,5 @@ 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. diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index b812e5b8b0..73567b244a 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -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] .= ''.__('Min. ').''; $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] = ' '; } -$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] .= ''.__('Min. ').''; $table_simple->data[3][1] .= html_print_input_text( diff --git a/pandora_console/godmode/alerts/alert_list.php b/pandora_console/godmode/alerts/alert_list.php index 45d47e9ef9..69b2cdcfd6 100644 --- a/pandora_console/godmode/alerts/alert_list.php +++ b/pandora_console/godmode/alerts/alert_list.php @@ -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'" ); } diff --git a/pandora_console/godmode/alerts/alert_special_days.php b/pandora_console/godmode/alerts/alert_special_days.php index 23a4768510..a27c02ea9a 100644 --- a/pandora_console/godmode/alerts/alert_special_days.php +++ b/pandora_console/godmode/alerts/alert_special_days.php @@ -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] .= '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); + diff --git a/pandora_console/godmode/groups/group_list.php b/pandora_console/godmode/groups/group_list.php index ddb06070b5..de5cae9f7d 100644 --- a/pandora_console/godmode/groups/group_list.php +++ b/pandora_console/godmode/groups/group_list.php @@ -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 !== '') { diff --git a/pandora_console/godmode/massive/massive_add_profiles.php b/pandora_console/godmode/massive/massive_add_profiles.php index e337c09f81..fda466891e 100644 --- a/pandora_console/godmode/massive/massive_add_profiles.php +++ b/pandora_console/godmode/massive/massive_add_profiles.php @@ -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] = '
'; -$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); diff --git a/pandora_console/godmode/massive/massive_delete_profiles.php b/pandora_console/godmode/massive/massive_delete_profiles.php index 776e72616d..78cb2659af 100644 --- a/pandora_console/godmode/massive/massive_delete_profiles.php +++ b/pandora_console/godmode/massive/massive_delete_profiles.php @@ -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] = ''; -$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');