mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-04-08 18:55:09 +02:00
Merge branch develop into ent-11843-advertencia-de-deprecado-de-discovery-y-marcar-las-tarea-antiguas-como-legacy. conflict is resolved
This commit is contained in:
commit
3f0f6f8c44
@ -28,6 +28,7 @@ $PANDHOME_ENT/pandora_server/PandoraFMS-Enterprise/pandora_server_enterprise.spe
|
||||
$CODEHOME/pandora_console/pandora_console.redhat.spec \
|
||||
$CODEHOME/pandora_console/pandora_console.rhel7.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat.spec \
|
||||
$CODEHOME/pandora_agents/unix/pandora_agent.redhat_bin.spec\
|
||||
$CODEHOME/pandora_server/pandora_server.redhat.spec \
|
||||
$PANDHOME_ENT/pandora_agents/pandora_agent.spec \
|
||||
$PANDHOME_ENT/pandora_server/pandora_server_enterprise.redhat.spec \
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, AIX version
|
||||
# Version 7.0NG.773, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, FreeBSD Version
|
||||
# Version 7.0NG.773, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, HP-UX Version
|
||||
# Version 7.0NG.773, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, GNU/Linux
|
||||
# Version 7.0NG.773, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, GNU/Linux
|
||||
# Version 7.0NG.773, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, Solaris Version
|
||||
# Version 7.0NG.773, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2023 Pandora FMS
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.772, AIX version
|
||||
# Version 7.0NG.773, AIX version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# FreeBSD/IPSO version
|
||||
# Licenced under GPL licence, 2003-2007 Sancho Lerena
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.772, HPUX Version
|
||||
# Version 7.0NG.773, HPUX Version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2023 Pandora FMS
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2023 Pandora FMS
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# Licensed under GPL license v2,
|
||||
# please visit http://pandora.sourceforge.net
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Fichero de configuracion base de agentes de Pandora
|
||||
# Base config file for Pandora agents
|
||||
# Version 7.0NG.772, Solaris version
|
||||
# Version 7.0NG.773, Solaris version
|
||||
|
||||
# General Parameters
|
||||
# ==================
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, AIX version
|
||||
# Version 7.0NG.773, AIX version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.772-230808
|
||||
Version: 7.0NG.773-230814
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.772-230808"
|
||||
pandora_version="7.0NG.773-230814"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -31,7 +31,7 @@ fi
|
||||
if [ "$#" -ge 2 ]; then
|
||||
VERSION="$2"
|
||||
else
|
||||
VERSION="7.0NG.772"
|
||||
VERSION="7.0NG.773"
|
||||
fi
|
||||
|
||||
# Path for the generated DMG file
|
||||
|
@ -19,11 +19,11 @@
|
||||
<choice id="com.pandorafms.pandorafms_src" visible="false">
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.772" onConclusion="none">pandorafms_src.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.773" 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.772" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.773" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
|
||||
<!-- <installation-check script="check()" />
|
||||
<script>
|
||||
<![CDATA[
|
||||
|
@ -5,9 +5,9 @@
|
||||
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
|
||||
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
|
||||
|
||||
<key>CFBundleVersion</key> <string>7.0NG.772</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.772 Pandora FMS on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.772</string>
|
||||
<key>CFBundleVersion</key> <string>7.0NG.773</string>
|
||||
<key>CFBundleGetInfoString</key> <string>7.0NG.773 Pandora FMS on Aug 2020</string>
|
||||
<key>CFBundleShortVersionString</key> <string>7.0NG.773</string>
|
||||
|
||||
<key>NSPrincipalClass</key><string>NSApplication</string>
|
||||
<key>NSMainNibFile</key><string>MainMenu</string>
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, GNU/Linux
|
||||
# Version 7.0NG.773, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, FreeBSD Version
|
||||
# Version 7.0NG.773, FreeBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, HP-UX Version
|
||||
# Version 7.0NG.773, HP-UX Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2004-2023 Pandora FMS
|
||||
# https://pandorafms.com
|
||||
@ -310,3 +310,9 @@ module_plugin autodiscover --default
|
||||
#module_description Zombies process on system
|
||||
#module_group System
|
||||
#module_end
|
||||
|
||||
#Hardening plugin for security compliance analysis. Enable to use it.
|
||||
#module_begin
|
||||
#module_plugin /usr/share/pandora_agent/plugins/pandora_sca
|
||||
#module_absoluteinterval 7d
|
||||
#module_end
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, GNU/Linux
|
||||
# Version 7.0NG.773, GNU/Linux
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, NetBSD Version
|
||||
# Version 7.0NG.773, NetBSD Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Base config file for Pandora FMS agents
|
||||
# Version 7.0NG.772, Solaris Version
|
||||
# Version 7.0NG.773, Solaris Version
|
||||
# Licensed under GPL license v2,
|
||||
# Copyright (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -1030,8 +1030,8 @@ my $Sem = undef;
|
||||
# Semaphore used to control the number of threads
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.772';
|
||||
use constant AGENT_BUILD => '230808';
|
||||
use constant AGENT_VERSION => '7.0NG.773';
|
||||
use constant AGENT_BUILD => '230814';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.772
|
||||
%define version 7.0NG.773
|
||||
%define release 230725
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
@ -19,7 +19,7 @@ Group: System/Monitoring
|
||||
Packager: Sancho Lerena <slerena@artica.es>
|
||||
Prefix: /usr/share
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
|
||||
BuildArch: noarch
|
||||
BuildArch: x86_64
|
||||
Requires(pre): shadow-utils
|
||||
Requires(post): chkconfig /bin/ln
|
||||
Requires(preun): chkconfig /bin/rm /usr/sbin/userdel
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -9,8 +9,8 @@
|
||||
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.772"
|
||||
PI_BUILD="230808"
|
||||
PI_VERSION="7.0NG.773"
|
||||
PI_BUILD="230814"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Base config file for Pandora FMS Windows Agent
|
||||
# (c) 2006-2023 Pandora FMS
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# This program is Free Software, you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public Licence as published by the Free Software
|
||||
# Foundation; either version 2 of the Licence or any later version
|
||||
@ -522,5 +522,4 @@ module_plugin "%PROGRAMFILES%\Pandora_Agent\util\autodiscover.exe" --default
|
||||
#module_type generic_data_string
|
||||
#module_exec echo Bordón
|
||||
#module_native_encoding OEM
|
||||
#module_end
|
||||
|
||||
#module_end
|
@ -3,7 +3,7 @@ AllowLanguageSelection
|
||||
{Yes}
|
||||
|
||||
AppName
|
||||
{Pandora FMS Windows Agent v7.0NG.772}
|
||||
{Pandora FMS Windows Agent v7.0NG.773}
|
||||
|
||||
ApplicationID
|
||||
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
|
||||
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{230808}
|
||||
{230814}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.772 Build 230808")
|
||||
#define PANDORA_VERSION ("7.0NG.773 Build 230814")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.772(Build 230808))"
|
||||
VALUE "ProductVersion", "(7.0NG.773(Build 230814))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0NG.772-230808
|
||||
Version: 7.0NG.773-230814
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.772-230808"
|
||||
pandora_version="7.0NG.773-230814"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -1702,4 +1702,9 @@ enterprise/meta/monitoring/wizard/wizard.module.network.php
|
||||
enterprise/meta/monitoring/wizard/wizard.module.web.php
|
||||
enterprise/meta/monitoring/wizard/wizard.php
|
||||
enterprise/meta/monitoring/wizard/wizard.update_agent.php
|
||||
enterprise/meta/monitoring/wizard/wizard.update_module.php
|
||||
enterprise/meta/monitoring/wizard/wizard.update_module.php
|
||||
enterprise/godmode/wizards/Applications.class.php
|
||||
enterprise/godmode/wizards/Cloud.class.php
|
||||
enterprise/images/wizard/applications.png
|
||||
enterprise/images/wizard/cloud.png
|
||||
enterprise/images/wizard/consoletasks.png
|
File diff suppressed because one or more lines are too long
@ -1758,7 +1758,10 @@ if ($update_module) {
|
||||
];
|
||||
|
||||
|
||||
if ($id_module_type == 30 || $id_module_type == 31 || $id_module_type == 32 || $id_module_type == 33) {
|
||||
if ($id_module_type === 30 || $id_module_type === 31
|
||||
|| $id_module_type === 32 || $id_module_type === 33
|
||||
|| $id_module_type === 38
|
||||
) {
|
||||
$plugin_parameter_split = explode('
', $values['plugin_parameter']);
|
||||
|
||||
$values['plugin_parameter'] = '';
|
||||
@ -1954,7 +1957,10 @@ if ($create_module) {
|
||||
'warning_time' => $warning_time,
|
||||
];
|
||||
|
||||
if ($id_module_type === 30 || $id_module_type === 31 || $id_module_type === 32 || $id_module_type === 33) {
|
||||
if ($id_module_type === 30 || $id_module_type === 31
|
||||
|| $id_module_type === 32 || $id_module_type === 33
|
||||
|| $id_module_type === 38
|
||||
) {
|
||||
$plugin_parameter_split = explode('
', $values['plugin_parameter']);
|
||||
|
||||
$values['plugin_parameter'] = '';
|
||||
|
@ -407,8 +407,7 @@ if ($edit_module === true) {
|
||||
$help_header = 'local_module';
|
||||
}
|
||||
|
||||
if ($id_module_type === 6 || $id_module_type === 7
|
||||
) {
|
||||
if ($id_module_type === 6 || $id_module_type === 7) {
|
||||
$help_header = 'icmp_module_tab';
|
||||
}
|
||||
|
||||
@ -420,7 +419,7 @@ if ($edit_module === true) {
|
||||
$help_header = 'tcp_module_tab';
|
||||
}
|
||||
|
||||
if ($id_module_type >= 30 && $id_module_type <= 33) {
|
||||
if (($id_module_type >= 30 && $id_module_type <= 33) || $id_module_type === 38) {
|
||||
$help_header = 'webserver_module_tab';
|
||||
}
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ $data[1] = '';
|
||||
$table_conditions->data[] = $data;
|
||||
|
||||
$data[0] = __('Use special days list');
|
||||
$data[1] = (isset($alert['special_day']) && $alert['special_day'] == 1) ? __('Yes') : __('No');
|
||||
$data[1] = (isset($template['special_day']) && (int) $template['special_day'] !== 0) ? __('Yes') : __('No');
|
||||
$table_conditions->data[] = $data;
|
||||
|
||||
$data[0] = __('Time threshold');
|
||||
|
@ -1927,7 +1927,7 @@ $table_other->data[$row][] = html_print_label_input_block(
|
||||
).html_print_div(
|
||||
[
|
||||
'class' => '',
|
||||
'content' => __('Interval').html_print_select($units, 'interval_unit', 1, '', '', '', true, false, false, '', false, 'width: 100%'),
|
||||
'content' => __('Interval').html_print_select($units, 'interval_unit', '', '', '', '', true, false, false, '', false, 'width: 100%'),
|
||||
],
|
||||
true
|
||||
).html_print_button(
|
||||
@ -1975,7 +1975,7 @@ $table_other->data[$row][] = html_print_label_input_block(
|
||||
).html_print_button(
|
||||
__('Delete'),
|
||||
'interval_del_btn',
|
||||
empty($config['interval_values']),
|
||||
false,
|
||||
'',
|
||||
[
|
||||
'mode' => 'link',
|
||||
@ -2009,7 +2009,7 @@ $table_other->data[$row][] = html_print_label_input_block(
|
||||
).html_print_div(
|
||||
[
|
||||
'class' => '',
|
||||
'content' => __('Interval').html_print_select($units, 'interval_unit', 1, '', '', '', true, false, false, '', false, 'width: 100%'),
|
||||
'content' => __('Interval').html_print_select($units, 'module_interval_unit', 1, '', '', '', true, false, false, '', false, 'width: 100%'),
|
||||
],
|
||||
true
|
||||
).html_print_button(
|
||||
@ -2316,9 +2316,15 @@ $(document).ready (function () {
|
||||
// CUSTOM INTERVAL VALUES
|
||||
//------------------------------------------------------------------
|
||||
$("#button-interval_del_btn").click( function() {
|
||||
var interval_selected = $('#intervals option:selected').val();
|
||||
$('#hidden-interval_to_delete').val(interval_selected);
|
||||
$('#submit-update_button').trigger('click');
|
||||
confirmDialog({
|
||||
title: "<?php echo __('Delete interval'); ?>",
|
||||
message: "<?php echo __('This action is not reversible. Are you sure'); ?>",
|
||||
onAccept: function() {
|
||||
var interval_selected = $('#intervals option:selected').val();
|
||||
$('#hidden-interval_to_delete').val(interval_selected);
|
||||
$('#button-update_button').trigger('click');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#button-interval_add_btn").click( function() {
|
||||
|
8
pandora_console/images/checkbox_green.svg
Normal file
8
pandora_console/images/checkbox_green.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Icons/Dark/20/checkbox-on@svg</title>
|
||||
<g id="Icons/Dark/20/checkbox-on" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect id="Rectangle-2" stroke="#82b92e" stroke-width="2" x="1" y="1" width="18" height="18" rx="4"></rect>
|
||||
<path d="M14.3713994,6.22237132 C14.8008905,5.87515972 15.4305323,5.94186038 15.7777439,6.37135141 C16.098247,6.76780467 16.0660673,7.33480068 15.7214138,7.69277628 L15.6287639,7.77769594 L8.20693177,13.7776959 C7.78987666,14.114854 7.18888164,14.0598005 6.83812914,13.672688 L6.76182606,13.5774872 L4.18365814,9.93238606 C3.86473931,9.48148781 3.97172977,8.85742777 4.42262802,8.53850895 C4.83884178,8.24412234 5.40260169,8.31264068 5.73770948,8.67956758 L5.81650513,8.77747883 L7.77861597,11.5510307 L14.3713994,6.22237132 Z" id="Path-10" fill="#82b92e" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
12
pandora_console/images/fail_red@svg.svg
Normal file
12
pandora_console/images/fail_red@svg.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
|
||||
<title>Dark / 20 / delete-v2@svg</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Dark-/-20-/-delete-v2" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group" transform="translate(10.000000, 10.000000) rotate(45.000000) translate(-10.000000, -10.000000) translate(4.000000, 4.000000)" fill="#e63c52">
|
||||
<path d="M6,0 C6.51283584,0 6.93550716,0.38604019 6.99327227,0.883378875 L7,1 L7,5 L11,5 C11.5522847,5 12,5.44771525 12,6 C12,6.51283584 11.6139598,6.93550716 11.1166211,6.99327227 L11,7 L7,7 L7,11 C7,11.5522847 6.55228475,12 6,12 C5.48716416,12 5.06449284,11.6139598 5.00672773,11.1166211 L5,11 L5,7 L1,7 C0.44771525,7 0,6.55228475 0,6 C0,5.48716416 0.38604019,5.06449284 0.883378875,5.00672773 L1,5 L5,5 L5,1 C5,0.44771525 5.44771525,0 6,0 Z" id="Path-7"></path>
|
||||
</g>
|
||||
<path d="M10,0 C4.4771525,0 0,4.4771525 0,10 C0,15.5228475 4.4771525,20 10,20 C15.5228475,20 20,15.5228475 20,10 C20,4.4771525 15.5228475,0 10,0 Z M10,2 C14.418278,2 18,5.581722 18,10 C18,14.418278 14.418278,18 10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 Z" id="Oval" fill="#e63c52"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
7
pandora_console/images/security_scan@svg.svg
Normal file
7
pandora_console/images/security_scan@svg.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Security scan@svg</title>
|
||||
<g id="Security-scan" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M12,3 C13.6568542,3 15,4.34314575 15,6 L15,8 L13,8 L13,6 C13,5.44771525 12.5522847,5 12,5 L8,5 C7.44771525,5 7,5.44771525 7,6 L7,8 L5,8 L5,6 C5,4.34314575 6.34314575,3 8,3 L12,3 Z M4,0 C4.55228475,0 5,0.44771525 5,1 C5,1.51283584 4.61395981,1.93550716 4.11662113,1.99327227 L4,2 L2,2 L2,4.00298691 C2,4.51582275 1.61395981,4.93849407 1.11662113,4.99625918 L1,5.00298691 C0.487164161,5.00298691 0.0644928393,4.61694672 0.00672773133,4.11960803 L0,4.00298691 L0,1 C0,0.487164161 0.38604019,0.0644928393 0.883378875,0.00672773133 L1,0 L4,0 Z M19,0 L19.1166211,0.00672773133 C19.6139598,0.0644928393 20,0.487164161 20,1 L20,4.00298691 L19.9932723,4.11960803 C19.9355072,4.61694672 19.5128358,5.00298691 19,5.00298691 L18.8833789,4.99625918 C18.3860402,4.93849407 18,4.51582275 18,4.00298691 L18,2 L16,2 L15.8833789,1.99327227 C15.3860402,1.93550716 15,1.51283584 15,1 C15,0.44771525 15.4477153,0 16,0 L19,0 Z M1,15 L1.11662113,15.0067277 C1.61395981,15.0644928 2,15.4871642 2,16 L2,18.0029869 L4,18.0029869 L4.11662113,18.0097146 C4.61395981,18.0674797 5,18.4901511 5,19.0029869 C5,19.5552717 4.55228475,20.0029869 4,20.0029869 L1,20.0029869 L0.883378875,19.9962592 C0.38604019,19.9384941 0,19.5158227 0,19.0029869 L0,16 L0.00672773133,15.8833789 C0.0644928393,15.3860402 0.487164161,15 1,15 Z M19,15 C19.5128358,15 19.9355072,15.3860402 19.9932723,15.8833789 L20,16 L20,19.0029869 C20,19.5158227 19.6139598,19.9384941 19.1166211,19.9962592 L19,20.0029869 L16,20.0029869 C15.4477153,20.0029869 15,19.5552717 15,19.0029869 C15,18.4901511 15.3860402,18.0674797 15.8833789,18.0097146 L16,18.0029869 L18,18.0029869 L18,16 C18,15.4871642 18.3860402,15.0644928 18.8833789,15.0067277 L19,15 Z M15,12 L15,14 C15,15.1045695 14.1045695,16 13,16 L7,16 C5.8954305,16 5,15.1045695 5,14 L5,12 L15,12 Z M1,9 L19,9 C19.5522847,9 20,9.44771525 20,10 C20,10.5522847 19.5522847,11 19,11 L1,11 C0.44771525,11 6.76353751e-17,10.5522847 0,10 C-6.76353751e-17,9.44771525 0.44771525,9 1,9 Z" id="Path-54" fill="#3F3F3F"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
@ -65,8 +65,8 @@ if ($check_web) {
|
||||
__('Agent Web monitoring created on welcome'),
|
||||
];
|
||||
|
||||
$id_agent = api_set_new_agent(0, '', $array_other, '', true);
|
||||
if ($id_agent > 0) {
|
||||
$id_agent = api_set_new_agent(0, '', $array_other, '', true, true);
|
||||
if (is_integer($id_agent)) {
|
||||
$module_name = get_parameter('module_name', 'Web_monitoring_module');
|
||||
$text_to_search = get_parameter('text_to_search', '');
|
||||
$url_goliat = get_parameter('url_goliat', 'https://pandorafms.com/en/');
|
||||
@ -76,7 +76,7 @@ if ($check_web) {
|
||||
ui_print_success_message(__('Your check has been created, <a href='.ui_get_full_url('index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&id_agente='.$id_agent).'>click here to view the data</a>. Please note that it may take a few seconds to see data if your server is busy'));
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('The Name is not valid for the modules.'));
|
||||
ui_print_error_message(__($id_agent));
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('Web server is not enabled.'));
|
||||
@ -110,8 +110,8 @@ if ($check_connectivity) {
|
||||
__('Basic connectivity'),
|
||||
];
|
||||
|
||||
$id_agent = api_set_new_agent(0, '', $array_other, '', true);
|
||||
if ($id_agent > 0) {
|
||||
$id_agent = api_set_new_agent(0, '', $array_other, '', true, true);
|
||||
if (is_integer($id_agent)) {
|
||||
$ip_target = get_parameter('ip_target', '127.0.0.1');
|
||||
$basic_network = create_module_basic_network($id_agent, $id_group, $ip_target);
|
||||
$latency_network = create_module_latency_network($id_agent, $id_group, $ip_target);
|
||||
@ -120,7 +120,7 @@ if ($check_connectivity) {
|
||||
ui_print_success_message(__('Your check has been created, <a href='.ui_get_full_url('index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&id_agente='.$id_agent).'>click here to view the data</a>. Please note that it may take a few seconds to see data if your server is busy'));
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('The Name is not valid for the modules.'));
|
||||
ui_print_error_message(__($id_agent));
|
||||
}
|
||||
} else {
|
||||
ui_print_error_message(__('Web server is not enabled.'));
|
||||
|
@ -53,7 +53,10 @@ class AlertsList
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $AJAXMethods = ['loadModal', 'drawTable'];
|
||||
public $AJAXMethods = [
|
||||
'loadModal',
|
||||
'drawTable',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
|
@ -679,7 +679,7 @@ class WelcomeWindow extends Wizard
|
||||
)
|
||||
);
|
||||
echo html_print_label_input_block(
|
||||
__('Module group'),
|
||||
__('Agent group'),
|
||||
html_print_select_from_sql(
|
||||
'SELECT * FROM tgrupo ORDER BY nombre',
|
||||
'id_group',
|
||||
|
@ -20,8 +20,8 @@
|
||||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC230808';
|
||||
$pandora_version = 'v7.0NG.772';
|
||||
$build_version = 'PC230814';
|
||||
$pandora_version = 'v7.0NG.773';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
$script_tz = @date_default_timezone_get();
|
||||
|
@ -1916,7 +1916,7 @@ function api_set_update_agent_field($id_agent, $use_agent_alias, $params)
|
||||
*
|
||||
* @param $thrash3 Don't use.
|
||||
*/
|
||||
function api_set_new_agent($id_node, $thrash2, $other, $trhash3, $return=false)
|
||||
function api_set_new_agent($id_node, $thrash2, $other, $trhash3, $return=false, $message=false)
|
||||
{
|
||||
global $config;
|
||||
|
||||
@ -2009,16 +2009,40 @@ function api_set_new_agent($id_node, $thrash2, $other, $trhash3, $return=false)
|
||||
|
||||
// Check if agent exists (BUG WC-50518-2).
|
||||
if ($alias == '' && $alias_as_name === 0) {
|
||||
if ($message === true) {
|
||||
return 'No agent alias specified';
|
||||
}
|
||||
|
||||
returnError('No agent alias specified');
|
||||
} else if (agents_get_agent_id($nombre_agente)) {
|
||||
if ($message === true) {
|
||||
return 'The agent name already exists in DB.';
|
||||
}
|
||||
|
||||
returnError('The agent name already exists in DB.');
|
||||
} else if (db_get_value_sql('SELECT id_grupo FROM tgrupo WHERE id_grupo = '.$grupo) === false) {
|
||||
if ($message === true) {
|
||||
return 'The group does not exist.';
|
||||
}
|
||||
|
||||
returnError('The group does not exist.');
|
||||
} else if (group_allow_more_agents($grupo, true, 'create') === false) {
|
||||
if ($message === true) {
|
||||
return 'Agent cannot be created due to the maximum agent limit for this group';
|
||||
}
|
||||
|
||||
returnError('Agent cannot be created due to the maximum agent limit for this group');
|
||||
} else if (db_get_value_sql('SELECT id_os FROM tconfig_os WHERE id_os = '.$id_os) === false) {
|
||||
if ($message === true) {
|
||||
return 'The OS does not exist.';
|
||||
}
|
||||
|
||||
returnError('The OS does not exist.');
|
||||
} else if ($server_name === false) {
|
||||
if ($message === true) {
|
||||
return 'The '.get_product_name().' Server does not exist.';
|
||||
}
|
||||
|
||||
returnError('The '.get_product_name().' Server does not exist.');
|
||||
} else {
|
||||
if ($alias_as_name === 1) {
|
||||
@ -13122,7 +13146,7 @@ function api_set_create_event($id, $trash1, $other, $returnType)
|
||||
$ack_utimestamp = $val['ack_utimestamp'];
|
||||
$values['id_usuario'] = $val['id_usuario'];
|
||||
}
|
||||
|
||||
|
||||
api_set_validate_event_by_id($val['id_evento']);
|
||||
}
|
||||
}
|
||||
|
@ -1489,6 +1489,15 @@ function config_update_config()
|
||||
$interval_values_array = explode(',', $interval_values);
|
||||
if (in_array($new_interval, $interval_values_array) === false) {
|
||||
$interval_values_array[] = $new_interval;
|
||||
// Get current periods.
|
||||
$current_period = get_periods(false, false, true);
|
||||
if (!isset($current_period[-1])) {
|
||||
$new_current_period = array_keys($current_period);
|
||||
$new_current_period = implode(',', $new_current_period);
|
||||
// Add new periods to current.
|
||||
array_push($interval_values_array, $new_current_period);
|
||||
}
|
||||
|
||||
$interval_values = implode(',', $interval_values_array);
|
||||
}
|
||||
}
|
||||
|
@ -2608,22 +2608,27 @@ function events_print_type_img(
|
||||
case 'going_down_critical':
|
||||
case 'going_up_critical':
|
||||
// This is to be backwards compatible.
|
||||
$style .= ' event_module_background_state icon_background_critical';
|
||||
$icon = 'images/module_critical.png';
|
||||
break;
|
||||
|
||||
case 'going_up_normal':
|
||||
case 'going_down_normal':
|
||||
// This is to be backwards compatible.
|
||||
$style .= ' event_module_background_state icon_background_normal';
|
||||
// $style .= ' event_module_background_state icon_background_normal';
|
||||
$icon = 'images/module_ok.png';
|
||||
break;
|
||||
|
||||
case 'going_up_warning':
|
||||
$icon = 'images/module_warning.png';
|
||||
// $style .= ' event_module_background_state icon_background_warning';
|
||||
case 'going_down_warning':
|
||||
$style .= ' event_module_background_state icon_background_warning';
|
||||
$icon = 'images/module_warning.png';
|
||||
// $style .= ' event_module_background_state icon_background_warning';
|
||||
break;
|
||||
|
||||
case 'going_unknown':
|
||||
$style .= ' event_module_background_state icon_background_unknown';
|
||||
// $style .= ' event_module_background_state icon_background_unknown';
|
||||
$icon = 'images/module_unknown.png';
|
||||
break;
|
||||
|
||||
case 'alert_fired':
|
||||
@ -2660,23 +2665,24 @@ function events_print_type_img(
|
||||
if ($only_url) {
|
||||
$output = $urlImage.'/'.$icon;
|
||||
} else {
|
||||
$output .= html_print_div(
|
||||
[
|
||||
'title' => events_print_type_description($type, true),
|
||||
'class' => $style,
|
||||
'style' => ((empty($icon) === false) ? 'background-image: url('.$icon.'); background-repeat: no-repeat;' : ''),
|
||||
],
|
||||
true
|
||||
);
|
||||
/*
|
||||
$output .= html_print_image(
|
||||
$output .= html_print_div(
|
||||
[
|
||||
'title' => events_print_type_description($type, true),
|
||||
'class' => $style,
|
||||
'style' => ((empty($icon) === false) ? 'background-image: url('.$icon.'); background-repeat: no-repeat;' : ''),
|
||||
],
|
||||
true
|
||||
);
|
||||
*/
|
||||
$output .= html_print_image(
|
||||
$icon,
|
||||
true,
|
||||
[
|
||||
'title' => events_print_type_description($type, true),
|
||||
'class' => $style,
|
||||
]
|
||||
);*/
|
||||
);
|
||||
}
|
||||
|
||||
if ($return) {
|
||||
@ -2779,16 +2785,14 @@ function events_print_type_img_pdf(
|
||||
break;
|
||||
|
||||
case 'new_agent':
|
||||
$svg = '<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Dark / 20 / agents@svg</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Dark-/-20-/-agents" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Group" transform="translate(0.000000, 1.000000)">
|
||||
<rect id="Rectangle" fill="#3F3F3F" x="0" y="6" width="10" height="6" rx="1"></rect>
|
||||
<polyline id="Path-43" stroke="#3F3F3F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="3 4 6.9967103 -2.30926389e-14 15 -2.30926389e-14 19 4 19 14 15 18 6.9967103 18 3 14.0223656"></polyline>
|
||||
</g>
|
||||
</g>
|
||||
</svg>';
|
||||
$svg = html_print_image(
|
||||
'/images/agent_mc.png',
|
||||
true,
|
||||
[
|
||||
'class' => 'image_status invert_filter',
|
||||
'title' => 'agents',
|
||||
]
|
||||
);
|
||||
break;
|
||||
|
||||
case 'configuration_change':
|
||||
@ -2803,6 +2807,18 @@ function events_print_type_img_pdf(
|
||||
break;
|
||||
|
||||
case 'unknown':
|
||||
break;
|
||||
|
||||
case 'alert_fired':
|
||||
$svg = '<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Dark / 20 / alert@svg</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Dark-/-20-/-alert" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M10,20 C11.4190985,20 12.5702076,18.8808594 12.5702076,17.5 L7.42979244,17.5 C7.42979244,18.8808594 8.5809015,20 10,20 Z M18.6540098,14.1519531 C17.8777645,13.3410156 16.425318,12.1210937 16.425318,8.125 C16.425318,5.08984375 14.2364028,2.66015625 11.2849029,2.0640625 L11.2849029,1.25 C11.2849029,0.559765625 10.7095493,0 10,0 C9.29045075,0 8.71509711,0.559765625 8.71509711,1.25 L8.71509711,2.0640625 C5.76359722,2.66015625 3.57468198,5.08984375 3.57468198,8.125 C3.57468198,12.1210938 2.12223547,13.3410156 1.3459902,14.1519531 C1.10492023,14.4039062 0.998045886,14.7050781 1.00002702,15 C1.00447442,15.640625 1.52156948,16.25 2.28977909,16.25 L17.7102209,16.25 C18.4784305,16.25 18.9959274,15.640625 18.999973,15 C19.0019541,14.7050781 18.8950798,14.4035156 18.6540098,14.1519531 L18.6540098,14.1519531 Z" id="Shape" fill="#e63c52"></path>
|
||||
</g>
|
||||
</svg>';
|
||||
break;
|
||||
|
||||
default:
|
||||
$svg = '<svg viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Dark / 20 / event@svg</title>
|
||||
|
@ -2227,7 +2227,7 @@ function html_print_extended_select_for_time(
|
||||
$nothing_value,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
$class,
|
||||
$readonly,
|
||||
'font-size: xx-small;'.$select_style
|
||||
@ -6241,6 +6241,57 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'datetime':
|
||||
$date = (empty($data['value']) === true) ? '' : date('Y-m-d', $data['value']);
|
||||
$time = (empty($data['value']) === true) ? '' : date('H:i:s', $data['value']);
|
||||
ui_require_css_file('datepicker');
|
||||
ui_include_time_picker();
|
||||
ui_require_jquery_file(
|
||||
'ui.datepicker-'.get_user_language(),
|
||||
'include/javascript/i18n/'
|
||||
);
|
||||
|
||||
$inputDate = html_print_input_text(
|
||||
$data['name'].'_date',
|
||||
$date,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'off'
|
||||
);
|
||||
|
||||
$inputTime = html_print_input_text(
|
||||
$data['name'].'_time',
|
||||
$time,
|
||||
'',
|
||||
false,
|
||||
10,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'off'
|
||||
);
|
||||
$output .= html_print_div(
|
||||
[
|
||||
'content' => sprintf(
|
||||
'<div class="datetime-adv-opt">%s<span>:</span>%s</div>',
|
||||
$inputDate,
|
||||
$inputTime
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Ignore.
|
||||
break;
|
||||
|
@ -676,9 +676,7 @@ function planned_downtimes_stop($downtime)
|
||||
foreach ($agents as $agent) {
|
||||
$result = db_process_sql_update(
|
||||
'tagente',
|
||||
[
|
||||
'update_module_count' => 1,
|
||||
],
|
||||
['update_module_count' => 1],
|
||||
['id_agente' => $agent['id_agent']]
|
||||
);
|
||||
|
||||
|
@ -4066,7 +4066,7 @@ function ui_print_datatable(array $parameters)
|
||||
'',
|
||||
'',
|
||||
$parameters['toggle_collapsed'],
|
||||
false,
|
||||
(isset($parameters['form']['return_filter']) === false) ? false : $parameters['form']['return_filter'],
|
||||
'',
|
||||
'no-border filter-datatable-submain',
|
||||
'filter-datatable-main '.$parameters['filter_main_class']
|
||||
@ -4193,6 +4193,7 @@ function ui_print_datatable(array $parameters)
|
||||
|
||||
$spinner = '<div id="'.$table_id.'-spinner" class="spinner-fixed"><span></span><span></span><span></span><span></span></div>';
|
||||
|
||||
// TODO This widget should take a return: ui_print_info_message($info_msg_arr, '', true)
|
||||
$info_msg = '<div>'.ui_print_info_message($info_msg_arr).'</div>';
|
||||
|
||||
$err_msg = '<div id="error-'.$table_id.'"></div>';
|
||||
|
@ -486,6 +486,40 @@ function ring_graph(
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Radar graph RADAR.
|
||||
*
|
||||
* @param array $chart_data Data.
|
||||
* @param array $options Options.
|
||||
*
|
||||
* @return string Output html charts
|
||||
*/
|
||||
function radar_graph(
|
||||
$chart_data,
|
||||
$options
|
||||
) {
|
||||
$chart = get_build_setup_charts('RADAR', $options, $chart_data);
|
||||
return $chart->render(true, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Line graph LINE.
|
||||
*
|
||||
* @param array $chart_data Data.
|
||||
* @param array $options Options.
|
||||
*
|
||||
* @return string Output html charts
|
||||
*/
|
||||
function line_graph(
|
||||
$chart_data,
|
||||
$options
|
||||
) {
|
||||
$chart = get_build_setup_charts('LINE', $options, $chart_data);
|
||||
return $chart->render(true, true);
|
||||
}
|
||||
|
||||
|
||||
function get_build_setup_charts($type, $options, $data)
|
||||
{
|
||||
global $config;
|
||||
@ -505,6 +539,14 @@ function get_build_setup_charts($type, $options, $data)
|
||||
$chart = $factory->create($factory::BAR);
|
||||
break;
|
||||
|
||||
case 'RADAR':
|
||||
$chart = $factory->create($factory::RADAR);
|
||||
break;
|
||||
|
||||
case 'LINE':
|
||||
$chart = $factory->create($factory::LINE);
|
||||
break;
|
||||
|
||||
default:
|
||||
// code...
|
||||
break;
|
||||
@ -942,19 +984,31 @@ function get_build_setup_charts($type, $options, $data)
|
||||
) {
|
||||
$scales = $chart->options()->getScales();
|
||||
|
||||
// Defaults scalesFont X.
|
||||
$scalesXFonts = $scales->getX()->ticks()->getFonts();
|
||||
$scalesXFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
|
||||
$scalesXFonts->setStyle('normal');
|
||||
$scalesXFonts->setWeight(600);
|
||||
$scalesXFonts->setSize(((int) $config['font_size'] + 2));
|
||||
if ($options['scales']['x'] !== false) {
|
||||
// Defaults scalesFont X.
|
||||
$scalesXFonts = $scales->getX()->ticks()->getFonts();
|
||||
$scalesXFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
|
||||
$scalesXFonts->setStyle('normal');
|
||||
$scalesXFonts->setWeight(600);
|
||||
$scalesXFonts->setSize(((int) $config['font_size'] + 2));
|
||||
}
|
||||
|
||||
// Defaults scalesFont Y.
|
||||
$scalesYFonts = $scales->getY()->ticks()->getFonts();
|
||||
$scalesYFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
|
||||
$scalesYFonts->setStyle('normal');
|
||||
$scalesYFonts->setWeight(600);
|
||||
$scalesYFonts->setSize(((int) $config['font_size'] + 2));
|
||||
if ($options['scales']['y'] !== false) {
|
||||
// Defaults scalesFont Y.
|
||||
$scalesYFonts = $scales->getY()->ticks()->getFonts();
|
||||
$scalesYFonts->setFamily((empty($config['fontpath']) === true) ? 'lato' : $config['fontpath']);
|
||||
$scalesYFonts->setStyle('normal');
|
||||
$scalesYFonts->setWeight(600);
|
||||
$scalesYFonts->setSize(((int) $config['font_size'] + 2));
|
||||
}
|
||||
|
||||
if ($options['scales']['r'] !== false) {
|
||||
// Defaults scalesFont R.
|
||||
$scalesRFonts = $scales->getR()->pointLabels()->getFonts();
|
||||
$scalesRFonts->setStyle('normal');
|
||||
$scalesRFonts->setWeight(600);
|
||||
$scalesRFonts->setSize(((int) $config['font_size'] + 2));
|
||||
}
|
||||
|
||||
if (isset($options['scales']['x']) === true
|
||||
&& empty($options['scales']['x']) === false
|
||||
@ -1045,6 +1099,50 @@ function get_build_setup_charts($type, $options, $data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']) === true
|
||||
&& empty($options['scales']['r']) === false
|
||||
&& is_array($options['scales']['r']) === true
|
||||
) {
|
||||
if (isset($options['scales']['r']['pointLabels']) === true
|
||||
&& empty($options['scales']['r']['pointLabels']) === false
|
||||
&& is_array($options['scales']['r']['pointLabels']) === true
|
||||
) {
|
||||
if (isset($options['scales']['r']['pointLabels']['color']) === true) {
|
||||
$scales->getR()->pointLabels()->setColor($options['scales']['r']['pointLabels']['color']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['grid']['display']) === true) {
|
||||
$scales->getR()->grid()->setDrawOnChartArea($options['scales']['r']['grid']['display']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['grid']['color']) === true) {
|
||||
$scales->getR()->grid()->setColor($options['scales']['r']['grid']['color']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['angleLines']['color']) === true) {
|
||||
$scales->getR()->angleLines()->setColor($options['scales']['r']['angleLines']['color']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['pointLabels']['fonts']) === true
|
||||
&& empty($options['scales']['r']['pointLabels']['fonts']) === false
|
||||
&& is_array($options['scales']['r']['pointLabels']['fonts']) === true
|
||||
) {
|
||||
$scaleRpointLabelsFonts = $scales->getR()->pointLabels()->getFonts();
|
||||
if (isset($options['scales']['r']['pointLabels']['fonts']['size']) === true) {
|
||||
$scaleRpointLabelsFonts->setSize($options['scales']['r']['pointLabels']['fonts']['size']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['pointLabels']['fonts']['style']) === true) {
|
||||
$scaleRpointLabelsFonts->setStyle($options['scales']['r']['pointLabels']['fonts']['style']);
|
||||
}
|
||||
|
||||
if (isset($options['scales']['r']['pointLabels']['fonts']['weight']) === true) {
|
||||
$scaleRpointLabelsFonts->setWeight($options['scales']['r']['pointLabels']['fonts']['weight']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Color.
|
||||
@ -1102,12 +1200,45 @@ function get_build_setup_charts($type, $options, $data)
|
||||
}
|
||||
break;
|
||||
|
||||
case 'RADAR':
|
||||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
||||
$dataSet1->setBorderColor($dataset['borderColor']);
|
||||
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
||||
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
||||
$dataSet1->setPointHoverBackgroundColor($dataset['pointHoverBackgroundColor']);
|
||||
$dataSet1->setPointHoverBorderColor($dataset['pointHoverBorderColor']);
|
||||
$dataSet1->data()->exchangeArray($dataset['data']);
|
||||
$chart->addDataSet($dataSet1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'LINE':
|
||||
$chart->labels()->exchangeArray($options['labels']);
|
||||
|
||||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setLabel($dataset['label']);
|
||||
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
||||
$dataSet1->setBorderColor($dataset['borderColor']);
|
||||
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
||||
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
||||
$dataSet1->setPointHoverBackgroundColor($dataset['pointHoverBackgroundColor']);
|
||||
$dataSet1->setPointHoverBorderColor($dataset['pointHoverBorderColor']);
|
||||
$dataSet1->data()->exchangeArray($dataset['data']);
|
||||
$chart->addDataSet($dataSet1);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not possible.
|
||||
break;
|
||||
}
|
||||
|
||||
$chart->addDataSet($setData);
|
||||
if ($type !== 'RADAR' && $type !== 'LINE') {
|
||||
$chart->addDataSet($setData);
|
||||
}
|
||||
|
||||
return $chart;
|
||||
}
|
||||
|
@ -78,6 +78,17 @@ class SpecialDay extends Entity
|
||||
// Update.
|
||||
$updates = $this->fields;
|
||||
|
||||
$exist_special_days = $this->specialDays(
|
||||
[ '`talert_special_days`.*' ],
|
||||
['date_match' => $updates['date']]
|
||||
);
|
||||
|
||||
if (count($exist_special_days) > 0) {
|
||||
throw new \Exception(
|
||||
__('Already exist special day in this day.'),
|
||||
);
|
||||
}
|
||||
|
||||
$rs = \db_process_sql_update(
|
||||
$this->table,
|
||||
$updates,
|
||||
@ -94,6 +105,17 @@ class SpecialDay extends Entity
|
||||
// Creation.
|
||||
$inserts = $this->fields;
|
||||
|
||||
$exist_special_days = $this->specialDays(
|
||||
[ '`talert_special_days`.*' ],
|
||||
['date_match' => $inserts['date']]
|
||||
);
|
||||
|
||||
if (count($exist_special_days) > 0) {
|
||||
throw new \Exception(
|
||||
__('Already exist special day in this day.'),
|
||||
);
|
||||
}
|
||||
|
||||
// Clean null fields.
|
||||
foreach ($inserts as $k => $v) {
|
||||
if ($v === null) {
|
||||
|
@ -1281,6 +1281,11 @@ p.center {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.margin-lr-5 {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.img_help {
|
||||
cursor: help;
|
||||
margin: 0 5px;
|
||||
|
135
pandora_console/include/styles/security_hardening.css
Normal file
135
pandora_console/include/styles/security_hardening.css
Normal file
@ -0,0 +1,135 @@
|
||||
.details_table b {
|
||||
font-size: 12px;
|
||||
}
|
||||
.details_table {
|
||||
width: 99% !important;
|
||||
}
|
||||
|
||||
.dataTables_length {
|
||||
margin: 10px 0px 20px 20px;
|
||||
}
|
||||
|
||||
.dataTables_paginate.paging_simple_numbers {
|
||||
margin: 10px 20px 20px 0px;
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
.row-graphs {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.col-md-3 {
|
||||
width: 30%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-6 {
|
||||
width: 35%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.text-fail {
|
||||
font-size: 18px;
|
||||
color: #e63c52;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.text-passed {
|
||||
font-size: 18px;
|
||||
color: #82b92e;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.text-passed img {
|
||||
margin: 0px 5px 0px 11px;
|
||||
}
|
||||
.text-fail img {
|
||||
margin: 0px 5px 0px 11px;
|
||||
}
|
||||
|
||||
.text-calendar {
|
||||
margin-left: 20px;
|
||||
display: flex;
|
||||
font-size: 13px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.text-scored b {
|
||||
margin-left: 5px;
|
||||
font-size: 13px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.text-calendar b {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.text-calendar img {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.issues-audit {
|
||||
margin: 11px 12px 0px 18px;
|
||||
}
|
||||
|
||||
.pdd_b_40px {
|
||||
padding-bottom: 40px !important;
|
||||
}
|
||||
|
||||
.custom-filter {
|
||||
width: 95%;
|
||||
margin: 21px auto;
|
||||
}
|
||||
|
||||
.time-line {
|
||||
max-height: 300px;
|
||||
}
|
||||
.summary_categories {
|
||||
width: 80%;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
#list_total_resume .sorting_asc {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
#form_list_resume {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
#form_list_total_resume {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.dt-buttons {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#date-result {
|
||||
padding-left: 4px !important;
|
||||
}
|
||||
|
||||
@media (max-width: 1500px) {
|
||||
.col-md-3 {
|
||||
width: 40%;
|
||||
}
|
||||
.col-md-6 {
|
||||
width: 88%;
|
||||
}
|
||||
.issues-audit {
|
||||
justify-content: center;
|
||||
}
|
||||
.time-line {
|
||||
max-height: 230px;
|
||||
}
|
||||
}
|
@ -130,8 +130,8 @@
|
||||
</div>
|
||||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.772';
|
||||
$build = '230808';
|
||||
$version = '7.0NG.773';
|
||||
$build = '230814';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
@ -42,6 +42,7 @@ ui_require_javascript_file('openlayers.pandora');
|
||||
ui_require_css_file('agent_view');
|
||||
|
||||
enterprise_include_once('operation/agentes/ver_agente.php');
|
||||
enterprise_include_once('include/functions_security_hardening.php');
|
||||
|
||||
check_login();
|
||||
if (is_ajax()) {
|
||||
@ -1744,6 +1745,20 @@ $external_tools['text'] = html_print_menu_button(
|
||||
|
||||
$external_tools['active'] = ($tab === 'external_tools');
|
||||
|
||||
if (enterprise_installed() === true && security_hardening_installed() === true) {
|
||||
// External Tools tab.
|
||||
$security_hardening['text'] = html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/ver_agente&tab=security_hardening&id_agente='.$id_agente,
|
||||
'image' => 'images/security_scan@svg.svg',
|
||||
'title' => __('Security hardening'),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$security_hardening['active'] = ($tab === 'security_hardening');
|
||||
}
|
||||
|
||||
$onheader = [
|
||||
'manage' => ($managetab ?? null),
|
||||
'main' => ($maintab ?? null),
|
||||
@ -1761,6 +1776,7 @@ $onheader = [
|
||||
'sap_view' => ($saptab ?? null),
|
||||
'ncm_view' => ($ncm_tab ?? null),
|
||||
'external_tools' => ($external_tools ?? null),
|
||||
'security_hardening' => ($security_hardening ?? null),
|
||||
'incident' => ($incidenttab ?? null),
|
||||
'omnishell' => ($omnishellTab ?? null),
|
||||
];
|
||||
@ -1941,6 +1957,10 @@ switch ($tab) {
|
||||
$tab_name = __('External Tools');
|
||||
break;
|
||||
|
||||
case 'security_hardening':
|
||||
$tab_name = __('Security hardening');
|
||||
break;
|
||||
|
||||
default:
|
||||
$tab_name = '';
|
||||
$help_header = '';
|
||||
@ -2086,6 +2106,10 @@ switch ($tab) {
|
||||
include 'external_tools.php';
|
||||
break;
|
||||
|
||||
case 'security_hardening':
|
||||
enterprise_include('operation/agentes/security_hardening.php');
|
||||
break;
|
||||
|
||||
case 'extension':
|
||||
$found = false;
|
||||
foreach ($config['extensions'] as $extension) {
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Pandora FMS Console
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
@ -86,6 +86,16 @@ else
|
||||
echo "Please, now, point your browser to http://your_IP_address/pandora_console/install.php and follow all the steps described on it."
|
||||
fi
|
||||
|
||||
# Delete old dprecated files
|
||||
if [ -f %{prefix}/pandora_console/extras/delete_files/delete_files.txt ] ; then
|
||||
echo "Deleting old deprecated files"
|
||||
cd %{prefix}/pandora_console/
|
||||
rm -rf `cat extras/delete_files/delete_files.txt`
|
||||
cd - > /dev/null
|
||||
echo "Done deleting deprecated files"
|
||||
|
||||
fi
|
||||
|
||||
%preun
|
||||
|
||||
# Upgrading
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Pandora FMS Console
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Pandora FMS Console
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
@ -9,7 +9,7 @@
|
||||
# This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.772"
|
||||
PI_VERSION="7.0NG.773"
|
||||
FORCE=0
|
||||
DESTDIR=""
|
||||
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||
|
@ -3472,6 +3472,7 @@ CREATE TABLE IF NOT EXISTS `tmetaconsole_agent` (
|
||||
`cps` INT NOT NULL DEFAULT 0,
|
||||
`satellite_server` INT NOT NULL DEFAULT 0,
|
||||
`fixed_ip` TINYINT NOT NULL DEFAULT 0,
|
||||
`disabled_by_downtime` TINYINT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id_agente`),
|
||||
KEY `nombre` (`nombre`(255)),
|
||||
KEY `direccion` (`direccion`),
|
||||
@ -4407,3 +4408,17 @@ CREATE TABLE IF NOT EXISTS `tnetwork_explorer_filter` (
|
||||
`advanced_filter` TEXT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tsca`
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `tsca` (
|
||||
`id` int NOT NULL,
|
||||
`title` varchar(255) DEFAULT NULL,
|
||||
`description` text DEFAULT NULL,
|
||||
`rationale` text DEFAULT NULL,
|
||||
`impact` text DEFAULT NULL,
|
||||
`remediation` text DEFAULT NULL,
|
||||
`compliance` text DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
File diff suppressed because one or more lines are too long
@ -4,7 +4,9 @@ namespace Artica\PHPChartJS\Options;
|
||||
|
||||
use Artica\PHPChartJS\ArraySerializableInterface;
|
||||
use Artica\PHPChartJS\Delegate\ArraySerializable;
|
||||
use Artica\PHPChartJS\Options\Scales\AngleLines;
|
||||
use Artica\PHPChartJS\Options\Scales\GridLines;
|
||||
use Artica\PHPChartJS\Options\Scales\PointLabels;
|
||||
use Artica\PHPChartJS\Options\Scales\ScaleLabel;
|
||||
use Artica\PHPChartJS\Options\Scales\Ticks;
|
||||
use JsonSerializable;
|
||||
@ -128,6 +130,13 @@ abstract class Scale implements ArraySerializableInterface, JsonSerializable
|
||||
*/
|
||||
protected $grid;
|
||||
|
||||
/**
|
||||
* AngleLines
|
||||
*
|
||||
* @var AngleLines
|
||||
*/
|
||||
protected $angleLines;
|
||||
|
||||
/**
|
||||
* @var ScaleLabel
|
||||
*/
|
||||
@ -138,6 +147,11 @@ abstract class Scale implements ArraySerializableInterface, JsonSerializable
|
||||
*/
|
||||
protected $ticks;
|
||||
|
||||
/**
|
||||
* @var PointLabels
|
||||
*/
|
||||
protected $pointLabels;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@ -158,7 +172,7 @@ abstract class Scale implements ArraySerializableInterface, JsonSerializable
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@ -579,6 +593,26 @@ abstract class Scale implements ArraySerializableInterface, JsonSerializable
|
||||
return $this->grid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AngleLines
|
||||
*/
|
||||
public function getAngleLines()
|
||||
{
|
||||
return $this->angleLines;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AngleLines
|
||||
*/
|
||||
public function angleLines()
|
||||
{
|
||||
if (is_null($this->angleLines)) {
|
||||
$this->angleLines = new AngleLines();
|
||||
}
|
||||
|
||||
return $this->angleLines;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ScaleLabel
|
||||
*/
|
||||
@ -619,6 +653,31 @@ abstract class Scale implements ArraySerializableInterface, JsonSerializable
|
||||
return $this->ticks;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return PointLabels
|
||||
*/
|
||||
public function getPointLabels()
|
||||
{
|
||||
return $this->pointLabels;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param PointLabels $pointLabels
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function pointLabels()
|
||||
{
|
||||
if (is_null($this->pointLabels)) {
|
||||
$this->pointLabels = new PointLabels();
|
||||
}
|
||||
|
||||
return $this->pointLabels;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
|
@ -8,6 +8,8 @@ use Artica\PHPChartJS\Options\Scales\XAxis;
|
||||
use Artica\PHPChartJS\Options\Scales\XAxisCollection;
|
||||
use Artica\PHPChartJS\Options\Scales\YAxis;
|
||||
use Artica\PHPChartJS\Options\Scales\YAxisCollection;
|
||||
use Artica\PHPChartJS\Options\Scales\RAxis;
|
||||
use Artica\PHPChartJS\Options\Scales\RAxisCollection;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
@ -28,6 +30,11 @@ class Scales implements ArraySerializableInterface, JsonSerializable
|
||||
*/
|
||||
private $y;
|
||||
|
||||
/**
|
||||
* @var RAxisCollection
|
||||
*/
|
||||
private $r;
|
||||
|
||||
/**
|
||||
* @return XAxis
|
||||
*/
|
||||
@ -44,6 +51,14 @@ class Scales implements ArraySerializableInterface, JsonSerializable
|
||||
return new YAxis();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RAxis
|
||||
*/
|
||||
public function createR()
|
||||
{
|
||||
return new RAxis();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return XAxis
|
||||
*/
|
||||
@ -68,6 +83,18 @@ class Scales implements ArraySerializableInterface, JsonSerializable
|
||||
return $this->y;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RAxis
|
||||
*/
|
||||
public function getR()
|
||||
{
|
||||
if (is_null($this->r)) {
|
||||
$this->r = new RAxis();
|
||||
}
|
||||
|
||||
return $this->r;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
|
135
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/AngleLines.php
vendored
Normal file
135
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/AngleLines.php
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
<?php
|
||||
|
||||
namespace Artica\PHPChartJS\Options\Scales;
|
||||
|
||||
use Artica\PHPChartJS\ArraySerializableInterface;
|
||||
use Artica\PHPChartJS\Delegate\ArraySerializable;
|
||||
use Artica\PHPChartJS\Delegate\NumberUtils;
|
||||
use Artica\PHPChartJS\Delegate\StringUtils;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Class AngleLines
|
||||
*
|
||||
* @package Artica\PHPChartJS\Options\Scales
|
||||
*/
|
||||
class AngleLines implements ArraySerializableInterface, JsonSerializable
|
||||
{
|
||||
use ArraySerializable;
|
||||
use StringUtils;
|
||||
use NumberUtils;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $display;
|
||||
|
||||
/**
|
||||
* @var string|string[]
|
||||
*/
|
||||
private $color;
|
||||
|
||||
/**
|
||||
* @var float[]|null
|
||||
*/
|
||||
private $borderDash;
|
||||
|
||||
/**
|
||||
* @var float
|
||||
*/
|
||||
private $borderDashOffset;
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isDisplay()
|
||||
{
|
||||
return $this->display;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $display
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setDisplay($display)
|
||||
{
|
||||
$this->display = $display;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|string[]
|
||||
*/
|
||||
public function getColor()
|
||||
{
|
||||
return $this->color;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|string[] $color
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setColor($color)
|
||||
{
|
||||
if (is_array($color)) {
|
||||
$this->color = $this->recursiveToString($color);
|
||||
} else {
|
||||
$this->color = is_null($color) ? null : strval($color);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float[]|null
|
||||
*/
|
||||
public function getBorderDash()
|
||||
{
|
||||
return $this->borderDash;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float[] $borderDash
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setBorderDash($borderDash)
|
||||
{
|
||||
if (is_array($borderDash)) {
|
||||
$this->borderDash = $this->recursiveToFloat($borderDash);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getBorderDashOffset()
|
||||
{
|
||||
return $this->borderDashOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $borderDashOffset
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setBorderDashOffset($borderDashOffset)
|
||||
{
|
||||
$this->borderDashOffset = floatval($borderDashOffset);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->getArrayCopy();
|
||||
}
|
||||
}
|
263
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/PointLabels.php
vendored
Normal file
263
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/PointLabels.php
vendored
Normal file
@ -0,0 +1,263 @@
|
||||
<?php
|
||||
|
||||
namespace Artica\PHPChartJS\Options\Scales;
|
||||
|
||||
use Artica\PHPChartJS\ArraySerializableInterface;
|
||||
use Artica\PHPChartJS\Delegate\ArraySerializable;
|
||||
use JsonSerializable;
|
||||
use Artica\PHPChartJS\Options\Fonts;
|
||||
|
||||
/**
|
||||
* Class Pointlabels
|
||||
*
|
||||
* @package Artica\PHPChartJS\Options\Scales
|
||||
*/
|
||||
class Pointlabels implements ArraySerializableInterface, JsonSerializable
|
||||
{
|
||||
use ArraySerializable;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $backdropColor;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $backdropPadding;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $borderRadius;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $display;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $color;
|
||||
|
||||
/**
|
||||
* @var Fonts
|
||||
*/
|
||||
private $font;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $padding;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $centerPointLabels;
|
||||
|
||||
/**
|
||||
* Get the value of backdropColor
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBackdropColor()
|
||||
{
|
||||
return $this->backdropColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of backdropColor
|
||||
*
|
||||
* @param string $backdropColor
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setBackdropColor(string $backdropColor)
|
||||
{
|
||||
$this->backdropColor = $backdropColor;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of backdropPadding
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getBackdropPadding()
|
||||
{
|
||||
return $this->backdropPadding;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of backdropPadding
|
||||
*
|
||||
* @param int $backdropPadding
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setBackdropPadding(int $backdropPadding)
|
||||
{
|
||||
$this->backdropPadding = $backdropPadding;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of borderRadius
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getBorderRadius()
|
||||
{
|
||||
return $this->borderRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of borderRadius
|
||||
*
|
||||
* @param int $borderRadius
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setBorderRadius(int $borderRadius)
|
||||
{
|
||||
$this->borderRadius = $borderRadius;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of display
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDisplay()
|
||||
{
|
||||
return $this->display;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of display
|
||||
*
|
||||
* @param string $display
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setDisplay(string $display)
|
||||
{
|
||||
$this->display = $display;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of color
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getColor()
|
||||
{
|
||||
return $this->color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of color
|
||||
*
|
||||
* @param string $color
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setColor(string $color)
|
||||
{
|
||||
$this->color = $color;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of font
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFonts()
|
||||
{
|
||||
if (isset($this->font) === false) {
|
||||
$this->font = new Fonts();
|
||||
}
|
||||
|
||||
return $this->font;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of font
|
||||
*
|
||||
* @param string $font
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setFonts(string $font)
|
||||
{
|
||||
$this->font = $font;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of padding
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPadding()
|
||||
{
|
||||
return $this->padding;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of padding
|
||||
*
|
||||
* @param int $padding
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setPadding(int $padding)
|
||||
{
|
||||
$this->padding = $padding;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of centerPointLabels
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getCenterPointLabels()
|
||||
{
|
||||
return $this->centerPointLabels;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of centerPointLabels
|
||||
*
|
||||
* @param bool $centerPointLabels
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setCenterPointLabels(bool $centerPointLabels)
|
||||
{
|
||||
$this->centerPointLabels = $centerPointLabels;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->getArrayCopy();
|
||||
}
|
||||
|
||||
}
|
14
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/RAxis.php
vendored
Normal file
14
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/RAxis.php
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace Artica\PHPChartJS\Options\Scales;
|
||||
|
||||
use Artica\PHPChartJS\Options\Scale;
|
||||
|
||||
/**
|
||||
* Class RAxis
|
||||
*
|
||||
* @package Artica\PHPChartJS\Options\Scales
|
||||
*/
|
||||
class RAxis extends Scale
|
||||
{
|
||||
}
|
37
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/RAxisCollection.php
vendored
Normal file
37
pandora_console/vendor/artica/phpchartjs/src/Options/Scales/RAxisCollection.php
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Artica\PHPChartJS\Options\Scales;
|
||||
|
||||
use Halfpastfour\Collection\Collection\ArrayAccess;
|
||||
use Artica\PHPChartJS\ArraySerializableInterface;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Class RAxisCollection
|
||||
*
|
||||
* @package Artica\PHPChartJS\Collection
|
||||
*/
|
||||
class RAxisCollection extends ArrayAccess implements ArraySerializableInterface, JsonSerializable
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getArrayCopy()
|
||||
{
|
||||
$rows = [];
|
||||
foreach ($this->data as $row) {
|
||||
/** @var RAxis $row */
|
||||
$rows[] = $row->getArrayCopy();
|
||||
}
|
||||
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return $this->getArrayCopy();
|
||||
}
|
||||
}
|
@ -331,7 +331,7 @@ for ($month = 1; $month <= 12; $month++) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($week == 0 || $week == 6) {
|
||||
if ($week == 0 || $week == 6 || isset($specialDays[$display_year][$display_month][$day]) === true) {
|
||||
$cal_table->cellstyle[$cal_line][$week] = 'color: red;';
|
||||
}
|
||||
|
||||
@ -341,7 +341,7 @@ for ($month = 1; $month <= 12; $month++) {
|
||||
$cal_table->cellstyle[$cal_line][$week] .= 'font-size: 18px;';
|
||||
$cal_table->data[$cal_line][$week] = $day.' ';
|
||||
|
||||
if ($is_management_allowed === true) {
|
||||
if ($is_management_allowed === true && isset($specialDays[$display_year][$display_month][$day]) === false) {
|
||||
$cal_table->data[$cal_line][$week] .= '<a href="'.$url.'&op=edit&date='.$date.'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= __('Create');
|
||||
$cal_table->data[$cal_line][$week] .= '>'.html_print_image(
|
||||
|
@ -108,6 +108,7 @@ $inputs[] = [
|
||||
'returnAllGroup' => $display_all_group,
|
||||
'name' => 'id_group',
|
||||
'selected' => $specialDay->id_group(),
|
||||
'required' => true,
|
||||
],
|
||||
];
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-server
|
||||
Version: 7.0NG.772-230808
|
||||
Version: 7.0NG.773-230814
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.772-230808"
|
||||
pandora_version="7.0NG.773-230814"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
@ -1,7 +1,7 @@
|
||||
#############################################################################
|
||||
# Pandora FMS Server Parameters
|
||||
# Pandora FMS, the Flexible Monitoring System.
|
||||
# Version 7.0NG.772
|
||||
# Version 7.0NG.773
|
||||
# Licensed under GPL license v2,
|
||||
# (c) 2003-2023 Pandora FMS
|
||||
# http://www.pandorafms.com
|
||||
|
@ -45,8 +45,8 @@ our @EXPORT = qw(
|
||||
);
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.772";
|
||||
my $pandora_build = "230808";
|
||||
my $pandora_version = "7.0NG.773";
|
||||
my $pandora_build = "230814";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -535,20 +535,22 @@ sub pandora_evaluate_alert ($$$$$$$;$$$$) {
|
||||
|
||||
# Get current time
|
||||
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
|
||||
|
||||
|
||||
my @weeks = ( 'none', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'holiday');
|
||||
my $special_day;
|
||||
|
||||
# Check weekday
|
||||
if ($alert->{'special_day'}) {
|
||||
logger ($pa_config, "Checking special days '" . $alert->{'name'} . "'.", 10);
|
||||
my $date = sprintf("%4d%02d%02d", $year + 1900, $mon + 1, $mday);
|
||||
# '0001' means every year.
|
||||
my $date_every_year = sprintf("0001%02d%02d", $mon + 1, $mday);
|
||||
my $special_day = get_db_value ($dbh, 'SELECT day_code FROM talert_special_days WHERE (date = ? OR date = ?) AND (id_group = 0 OR id_group = ?) AND (id_calendar = ?) ORDER BY date DESC', $date, $date_every_year, $alert->{'id_group'}, $alert->{'special_day'});
|
||||
$special_day = get_db_value ($dbh, 'SELECT day_code FROM talert_special_days WHERE (date = ? OR date = ?) AND (id_group = 0 OR id_group = ?) AND (id_calendar = ?) ORDER BY date DESC', $date, $date_every_year, $alert->{'id_group'}, $alert->{'special_day'});
|
||||
|
||||
if (!defined($special_day)) {
|
||||
$special_day = 0;
|
||||
}
|
||||
|
||||
my @weeks = ( 'none', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'holiday');
|
||||
if ($special_day != 0) {
|
||||
logger ($pa_config, $date . " is a special day for " . $alert->{'name'} . ". (as a " . $weeks[$special_day] . ")", 10);
|
||||
return $status if (!defined($alert->{$weeks[$special_day]}) || $alert->{$weeks[$special_day]} == 0);
|
||||
@ -565,6 +567,9 @@ sub pandora_evaluate_alert ($$$$$$$;$$$$) {
|
||||
my $schedule;
|
||||
if (defined($alert->{'schedule'}) && $alert->{'schedule'} ne '') {
|
||||
$schedule = PandoraFMS::Tools::p_decode_json($pa_config, $alert->{'schedule'});
|
||||
if ($special_day != 0) {
|
||||
return $status if (!defined($schedule->{$weeks[$special_day]}));
|
||||
}
|
||||
}
|
||||
|
||||
if (defined($schedule)) {
|
||||
@ -577,11 +582,18 @@ sub pandora_evaluate_alert ($$$$$$$;$$$$) {
|
||||
|
||||
my $time = sprintf ("%.2d:%.2d:%.2d", $hour, $min, $sec);
|
||||
|
||||
my $schedule_day;
|
||||
if ($special_day != 0 && defined($schedule->{$weeks[$special_day]})) {
|
||||
$schedule_day = $weeks[$special_day];
|
||||
} else {
|
||||
$schedule_day = $DayNames[$wday];
|
||||
}
|
||||
|
||||
#
|
||||
# Check time slots
|
||||
#
|
||||
my $inSlot = 0;
|
||||
foreach my $timeBlock (@{$schedule->{$DayNames[$wday]}}) {
|
||||
foreach my $timeBlock (@{$schedule->{$schedule_day}}) {
|
||||
if ($timeBlock->{'start'} eq $timeBlock->{'end'}) {
|
||||
# All day.
|
||||
$inSlot = 1;
|
||||
|
@ -33,8 +33,8 @@ use base 'Exporter';
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.772";
|
||||
my $pandora_build = "230808";
|
||||
my $pandora_version = "7.0NG.773";
|
||||
my $pandora_build = "230814";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -3,8 +3,8 @@
|
||||
#
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.772
|
||||
%define release 230808
|
||||
%define version 7.0NG.773
|
||||
%define release 230814
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -8,8 +8,8 @@
|
||||
# This code is licensed under GPL 2.0 license.
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.772"
|
||||
PI_BUILD="230808"
|
||||
PI_VERSION="7.0NG.773"
|
||||
PI_BUILD="230814"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
@ -315,6 +315,8 @@ install () {
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/trans
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/commands 2> /dev/null
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/commands
|
||||
mkdir $DESTDIR$PANDORA_SPOOL/data_in/discovery 2> /dev/null
|
||||
chmod 2770 $DESTDIR$PANDORA_SPOOL/data_in/discovery
|
||||
mkdir -p $DESTDIR$PANDORA_LOG 2> /dev/null
|
||||
chown -R pandora:apache $DESTDIR$PANDORA_LOG 2> /dev/null
|
||||
chmod 2774 $DESTDIR$PANDORA_LOG 2> /dev/null
|
||||
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
||||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.772 Build 230808";
|
||||
my $version = "7.0NG.773 Build 230814";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
||||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.772 Build 230808";
|
||||
my $version = "7.0NG.773 Build 230814";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
@ -1095,7 +1095,7 @@ Protocol description and more info at: L<< https://pandorafms.com/manual/en/docu
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2005-2023 Pandora FMS
|
||||
Copyright (c) 2005-2023 Pandora FMS.
|
||||
|
||||
=cut
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user