Merge branch 'develop' into 'ent-12857-tickets-vmware-776'

# Conflicts:
#   pandora_console/extras/mr/68.sql
This commit is contained in:
Alejandro Sánchez 2024-02-12 13:45:23 +00:00
commit 680ad1b8db
89 changed files with 953 additions and 105 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.775-240207 Version: 7.0NG.775-240212
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -1039,7 +1039,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.775'; use constant AGENT_VERSION => '7.0NG.775';
use constant AGENT_BUILD => '240207'; use constant AGENT_BUILD => '240212';
# Agent log default file size maximum and instances # Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000; use constant DEFAULT_MAX_LOG_SIZE => 600000;

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -5,7 +5,7 @@
%define name pandorafms_agent_linux_bin %define name pandorafms_agent_linux_bin
%define source_name pandorafms_agent_linux %define source_name pandorafms_agent_linux
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
%define debug_package %{nil} %define debug_package %{nil}
Summary: Pandora FMS Linux agent, binary version Summary: Pandora FMS Linux agent, binary version

View File

@ -5,7 +5,7 @@
%define name pandorafms_agent_linux_bin %define name pandorafms_agent_linux_bin
%define source_name pandorafms_agent_linux %define source_name pandorafms_agent_linux
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
%define debug_package %{nil} %define debug_package %{nil}
Summary: Pandora FMS Linux agent, binary version Summary: Pandora FMS Linux agent, binary version

View File

@ -5,7 +5,7 @@
%define name pandorafms_agent_linux_bin %define name pandorafms_agent_linux_bin
%define source_name pandorafms_agent_linux %define source_name pandorafms_agent_linux
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
Summary: Pandora FMS Linux agent, binary version Summary: Pandora FMS Linux agent, binary version
Name: %{name} Name: %{name}

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_agent_linux %define name pandorafms_agent_linux
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.775" PI_VERSION="7.0NG.775"
PI_BUILD="240207" PI_BUILD="240212"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{240207} {240212}
ViewReadme ViewReadme
{Yes} {Yes}

View File

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

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Pandora FMS" VALUE "LegalCopyright", "Pandora FMS"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.775(Build 240207))" VALUE "ProductVersion", "(7.0NG.775(Build 240212))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.775-240207 Version: 7.0NG.775-240212
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -128,6 +128,6 @@ if (empty($data)) {
} }
echo '{ echo '{
"label": "'.htmlspecialchars($graph_title, ENT_QUOTES).'", "label": "'.htmlspecialchars(($graph_title ?? ''), ENT_QUOTES).'",
"data": [["'.time().'", '.htmlspecialchars($data, ENT_QUOTES).']] "data": [["'.time().'", '.htmlspecialchars(($data ?? ''), ENT_QUOTES).']]
}'; }';

View File

@ -61,4 +61,11 @@ ALTER TABLE `tmensajes` ADD COLUMN `icon_notification` VARCHAR(250) NULL DEFAULT
UPDATE `tncm_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]'); UPDATE `tncm_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]');
UPDATE `tncm_agent_data_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]'); UPDATE `tncm_agent_data_template` SET `vendors` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM vendors))), '"]'), `models` = CONCAT('["', TRIM(BOTH '"' FROM TRIM(BOTH ']' FROM TRIM(BOTH '[' FROM models))), '"]');
-- Update version for plugin oracle
UPDATE `tdiscovery_apps` SET `version` = '1.2' WHERE `short_name` = 'pandorafms.oracle';
SET @widget_id = NULL;
SELECT @widget_id := `id` FROM `twidget` WHERE `unique_name` = 'GisMap';
INSERT IGNORE INTO `twidget` (`id`,`class_name`,`unique_name`,`description`,`options`,`page`) VALUES (@widget_id,'GisMap','GisMap','Gis map','','GisMap.php');
COMMIT; COMMIT;

View File

@ -150,7 +150,7 @@ if (is_ajax()) {
$component = db_get_row('tlocal_component', 'id', $id_component); $component = db_get_row('tlocal_component', 'id', $id_component);
foreach ($component as $index => $element) { foreach ($component as $index => $element) {
$component[$index] = html_entity_decode( $component[$index] = html_entity_decode(
$element, (isset($element) === true) ? $element : '',
ENT_QUOTES, ENT_QUOTES,
'UTF-8' 'UTF-8'
); );

View File

@ -505,7 +505,7 @@ $tableBasicThresholds->data['caption_switch_warning_inverse_string'][0] = html_p
$tableBasicThresholds->data['caption_warning_threshold'][0] .= '<span class="font_11" id="caption_str_warning">('.__('Str.').')</span>'; $tableBasicThresholds->data['caption_warning_threshold'][0] .= '<span class="font_11" id="caption_str_warning">('.__('Str.').')</span>';
$tableBasicThresholds->data['warning_threshold'][0] .= html_print_input_text( $tableBasicThresholds->data['warning_threshold'][0] .= html_print_input_text(
'str_warning', 'str_warning',
str_replace('"', '', $str_warning), str_replace('"', '', (isset($str_warning) === true) ? $str_warning : ''),
'', '',
10, 10,
1024, 1024,
@ -602,7 +602,7 @@ $tableBasicThresholds->data['switch_critical_threshold'][0] .= html_print_div(
$tableBasicThresholds->data['caption_critical_threshold'][0] .= '<span class="font_11" id="caption_str_critical">('.__('Str.').')</span>'; $tableBasicThresholds->data['caption_critical_threshold'][0] .= '<span class="font_11" id="caption_str_critical">('.__('Str.').')</span>';
$tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text( $tableBasicThresholds->data['critical_threshold'][0] .= html_print_input_text(
'str_critical', 'str_critical',
str_replace('"', '', $str_critical), str_replace('"', '', (isset($str_critical) === true) ? $str_critical : ''),
'', '',
10, 10,
1024, 1024,

View File

@ -60,7 +60,12 @@ $data[1] = html_print_select_from_sql(
$disabledBecauseInPolicy $disabledBecauseInPolicy
); );
// Store the macros in base64 into a hidden control to move between pages // Store the macros in base64 into a hidden control to move between pages
$data[1] .= html_print_input_hidden('macros', base64_encode($macros), true); $data[1] .= html_print_input_hidden(
'macros',
(isset($macros) === true) ? base64_encode($macros) : '',
true
);
$table_simple->colspan['plugin_1'][2] = 2; $table_simple->colspan['plugin_1'][2] = 2;
if (!empty($id_plugin)) { if (!empty($id_plugin)) {

View File

@ -319,9 +319,8 @@ if ($update_agents) {
$secondary_groups_removed $secondary_groups_removed
); );
$agents_values = agents_get_agent((int) $array_id[1]); $agents_values = db_get_row_filter('tagente', ['id_agente' => (int) $array_id[1]]);
$node->disconnect(); $node->disconnect();
if (empty($values) === false) { if (empty($values) === false) {
update_agents_in_metaconsole( update_agents_in_metaconsole(
(int) $array_id[1], (int) $array_id[1],

View File

@ -1500,7 +1500,7 @@ $table->data[39][0] = html_print_label_input_block(
'', '',
'', '',
true true
).html_print_input_hidden('macros', base64_encode($macros), true) ).html_print_input_hidden('macros', base64_encode(($macros ?? '')), true)
); );
require_once $config['homedir'].'/include/class/CredentialStore.class.php'; require_once $config['homedir'].'/include/class/CredentialStore.class.php';

View File

@ -115,7 +115,7 @@ foreach ($servers as $server) {
$table->cellclass[] = [ $table->cellclass[] = [
3 => 'progress_bar', 3 => 'progress_bar',
8 => 'table_action_buttons', 9 => 'table_action_buttons',
]; ];
$data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>'; $data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>';

View File

@ -48,7 +48,7 @@ if ($idOS > 0) {
} else { } else {
$name = io_safe_input(strip_tags(trim(io_safe_output((string) get_parameter('name'))))); $name = io_safe_input(strip_tags(trim(io_safe_output((string) get_parameter('name')))));
$description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description')))); $description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
$icon = get_parameter('icon', 0); $icon = get_parameter('icon', 'os@svg.svg');
} }
$icon_upload = get_parameter('icon_upload', null); $icon_upload = get_parameter('icon_upload', null);
@ -246,7 +246,7 @@ $iconData[] = html_print_select(
'icon', 'icon',
$icon, $icon,
'show_icon_OS();', 'show_icon_OS();',
__('None'), '',
0, 0,
true true
); );
@ -356,6 +356,8 @@ function get_list_os_icons_dir()
} }
} }
$return['os@svg.svg'] = __('None');
return $return; return $return;
} }

View File

@ -88,6 +88,14 @@ switch ($tab) {
break; break;
case 'manage_os': case 'manage_os':
$id_os = get_parameter('id_os', '');
if ($id_os !== '') {
$headerTitle = __('Edit OS');
} else {
$headerTitle = __('Create OS');
}
break;
case 'list': case 'list':
if ($action === 'edit') { if ($action === 'edit') {
$headerTitle = __('Edit OS'); $headerTitle = __('Edit OS');

View File

@ -386,7 +386,7 @@ if (empty($result) === false) {
$data[4] = $output; $data[4] = $output;
$phone_large = io_safe_output($tag['phone']); $phone_large = io_safe_output($tag['phone']);
$phone_small = substr($phone_large, 0, 24); $phone_small = substr(($phone_large ?? ''), 0, 24);
if ($phone_large == $phone_small) { if ($phone_large == $phone_small) {
$output = $phone_large; $output = $phone_large;
} else { } else {

View File

@ -1581,7 +1581,7 @@ $autorefresh_list_out['operation/events/events'] = 'Events';
if (isset($autorefresh_list) === false || empty($autorefresh_list) === true || empty($autorefresh_list[0]) === true) { if (isset($autorefresh_list) === false || empty($autorefresh_list) === true || empty($autorefresh_list[0]) === true) {
$select = db_process_sql("SELECT autorefresh_white_list FROM tusuario WHERE id_user = '".$id."'"); $select = db_process_sql("SELECT autorefresh_white_list FROM tusuario WHERE id_user = '".$id."'");
$autorefresh_list = json_decode($select[0]['autorefresh_white_list']); $autorefresh_list = json_decode(($select[0]['autorefresh_white_list'] ?? ''));
if ($autorefresh_list === null || $autorefresh_list === 0) { if ($autorefresh_list === null || $autorefresh_list === 0) {
$autorefresh_list = []; $autorefresh_list = [];
$autorefresh_list[0] = __('None'); $autorefresh_list[0] = __('None');

View File

@ -37,6 +37,20 @@ class Applications extends Wizard
*/ */
public $mode; public $mode;
/**
* Task properties.
*
* @var array
*/
public $task;
/**
* Class of styles.
*
* @var string
*/
public $class;
/** /**
* Constructor. * Constructor.

View File

@ -37,6 +37,20 @@ class Custom extends Wizard
*/ */
public $mode; public $mode;
/**
* Task properties.
*
* @var array
*/
public $task;
/**
* Class of styles.
*
* @var string
*/
public $class;
/** /**
* Constructor. * Constructor.

View File

@ -47,6 +47,13 @@ ui_require_javascript_file('simTree');
class DiscoveryTaskList extends HTML class DiscoveryTaskList extends HTML
{ {
/**
* Task properties.
*
* @var array
*/
public $task;
/** /**
* Constructor. * Constructor.

View File

@ -1109,7 +1109,7 @@ class HostDevices extends Wizard
'return' => true, 'return' => true,
'selected' => explode( 'selected' => explode(
',', ',',
$this->task['id_network_profile'] (isset($this->task['id_network_profile']) === true) ? $this->task['id_network_profile'] : ''
), ),
'nothing_value' => 0, 'nothing_value' => 0,
'nothing' => __('None'), 'nothing' => __('None'),

View File

@ -97,6 +97,13 @@ class Wizard
*/ */
public $access = 'AR'; public $access = 'AR';
/**
* Root url.
*
* @var string
*/
public $rootUrl;
/** /**
* Setter for breadcrum * Setter for breadcrum
@ -550,7 +557,7 @@ class Wizard
} }
echo '<ul class="bigbuttonlist">'; echo '<ul class="bigbuttonlist">';
array_map('self::printBigButtonElement', $list_data); array_map(['Wizard', 'printBigButtonElement'], $list_data);
echo '</ul>'; echo '</ul>';
if ($return === true) { if ($return === true) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -250,6 +250,7 @@ if (is_ajax() === true) {
if ($getInfo === true) { if ($getInfo === true) {
enterprise_include_once('include/functions_agents.php'); enterprise_include_once('include/functions_agents.php');
include_once $config['homedir'].'/include/functions_graph.php';
$id = get_parameter('id', 0); $id = get_parameter('id', 0);
$id_server = get_parameter('id_server', 0); $id_server = get_parameter('id_server', 0);
if (empty($id_server) === false) { if (empty($id_server) === false) {

View File

@ -380,5 +380,7 @@ if (session_status() !== PHP_SESSION_DISABLED) {
// Could give a warning if no session file is created. Ignore. // Could give a warning if no session file is created. Ignore.
@session_destroy(); @session_destroy();
header_remove('Set-Cookie'); header_remove('Set-Cookie');
setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/'); if (isset($_COOKIE[session_name()]) === true) {
setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/');
}
} }

View File

@ -572,10 +572,10 @@ function get_user_info($user)
* *
* @return array An array of user information * @return array An array of user information
*/ */
function get_users($order='fullname', $filter=false, $fields=false) function get_users($order='fullname', $filter=[], $fields=false)
{ {
if (is_array($order) === true) { if (is_array($order) === true) {
$filter['order'] = $order['field'].' '.$order['order']; $filter['order'] = (string) $order['field'].' '.(string) $order['order'];
} else { } else {
if ($order !== 'registered' || $order !== 'last_connect' || $order !== 'fullname') { if ($order !== 'registered' || $order !== 'last_connect' || $order !== 'fullname') {
$order = 'fullname'; $order = 'fullname';

View File

@ -53,6 +53,48 @@ class AuditLog extends HTML
*/ */
private $ajaxController; private $ajaxController;
/**
* TableId
*
* @var integer
*/
public $tableId;
/**
* FilterIp
*
* @var array
*/
public $filterIp;
/**
* FilterPeriod
*
* @var integer
*/
public $filterPeriod;
/**
* FilterText
*
* @var string
*/
public $filterText;
/**
* FilterType
*
* @var string
*/
public $filterType;
/**
* FilterUser
*
* @var string
*/
public $filterUser;
/** /**
* Class constructor * Class constructor

View File

@ -66,6 +66,13 @@ class CalendarManager
*/ */
private $message; private $message;
/**
* Access
*
* @var string
*/
public $access;
/** /**
* Allowed methods to be called using AJAX request. * Allowed methods to be called using AJAX request.
* *

View File

@ -850,7 +850,7 @@ class CredentialStore extends Wizard
'privilege' => 'AR', 'privilege' => 'AR',
'type' => 'select_groups', 'type' => 'select_groups',
'nothing' => false, 'nothing' => false,
'selected' => (defined($id_group_filter) ? $id_group_filter : 0), 'selected' => ((isset($id_group_filter) === true) ? $id_group_filter : 0),
'return' => true, 'return' => true,
'size' => '80%', 'size' => '80%',
], ],

View File

@ -54,6 +54,13 @@ class Diagnostics extends Wizard
*/ */
public $pdf; public $pdf;
/**
* Product name.
*
* @var string
*/
public $product_name;
/** /**
* Constructor. * Constructor.

View File

@ -38,6 +38,62 @@ require_once $config['homedir'].'/include/class/HTML.class.php';
class ExternalTools extends HTML class ExternalTools extends HTML
{ {
/**
* Origin
*
* @var string
*/
public $origin;
/**
* PathCustomComm
*
* @var string
*/
public $pathCustomComm;
/**
* PathDig
*
* @var string
*/
public $pathDig;
/**
* PathNmap
*
* @var string
*/
public $pathNmap;
/**
* PathPing
*
* @var string
*/
public $pathPing;
/**
* PathSnmpget
*
* @var string
*/
public $pathSnmpget;
/**
* PathTraceroute
*
* @var string
*/
public $pathTraceroute;
/**
* UpdatePaths
*
* @var string
*/
public $updatePaths;
/** /**
* Constructor. * Constructor.

View File

@ -706,7 +706,7 @@ class NetworkMap
*/ */
public function setNodes($nodes) public function setNodes($nodes)
{ {
$this->nodes = $nodes; $this->nodes = (array) $nodes;
} }

View File

@ -52,6 +52,13 @@ class OrderInterpreter extends Wizard
*/ */
public $ajaxController; public $ajaxController;
/**
* Pages menu
*
* @var array
*/
public $pages_menu;
/** /**
* Generates a JSON error. * Generates a JSON error.

View File

@ -67,6 +67,34 @@ class SatelliteAgent extends HTML
*/ */
private $ajaxController; private $ajaxController;
/**
* Satellite_name
*
* @var string
*/
public $satellite_name;
/**
* Satellite_server
*
* @var string
*/
public $satellite_server;
/**
* TableId
*
* @var integer
*/
public $tableId;
/**
* Satellite_config
*
* @var string
*/
public $satellite_config;
/** /**
* Class constructor * Class constructor

View File

@ -20,7 +20,7 @@
/** /**
* Pandora build version and version * Pandora build version and version
*/ */
$build_version = 'PC240207'; $build_version = 'PC240212';
$pandora_version = 'v7.0NG.775'; $pandora_version = 'v7.0NG.775';
// Do not overwrite default timezone set if defined. // Do not overwrite default timezone set if defined.

View File

@ -2917,6 +2917,10 @@ function delete_dir($dir)
*/ */
function is_image_data($data) function is_image_data($data)
{ {
if (isset($data) === false) {
return false;
}
return (substr($data, 0, 10) == 'data:image'); return (substr($data, 0, 10) == 'data:image');
} }
@ -2939,7 +2943,7 @@ function is_snapshot_data($data)
*/ */
function is_text_to_black_string($data) function is_text_to_black_string($data)
{ {
if (is_image_data($data)) { if (isset($data) === false || is_image_data($data)) {
return false; return false;
} }

View File

@ -541,7 +541,7 @@ function api_get_groups($thrash1, $thrash2, $other, $returnType, $user_in_db)
} }
function api_get_agent_module_name_last_value($agentName, $moduleName, $other=';', $returnType) function api_get_agent_module_name_last_value($agentName, $moduleName, $other=';', $returnType='string')
{ {
$idAgent = agents_get_agent_id($agentName); $idAgent = agents_get_agent_id($agentName);
@ -558,7 +558,7 @@ function api_get_agent_module_name_last_value($agentName, $moduleName, $other=';
} }
function api_get_agent_module_name_last_value_alias($alias, $moduleName, $other=';', $returnType) function api_get_agent_module_name_last_value_alias($alias, $moduleName, $other=';', $returnType='string')
{ {
$sql = sprintf( $sql = sprintf(
'SELECT tagente_modulo.id_agente_modulo FROM tagente_modulo 'SELECT tagente_modulo.id_agente_modulo FROM tagente_modulo
@ -573,7 +573,7 @@ function api_get_agent_module_name_last_value_alias($alias, $moduleName, $other=
} }
function api_get_module_last_value($idAgentModule, $trash1, $other=';', $returnType) function api_get_module_last_value($idAgentModule, $trash1, $other=';', $returnType='string')
{ {
global $config; global $config;
if (defined('METACONSOLE')) { if (defined('METACONSOLE')) {

View File

@ -440,7 +440,7 @@ function extensions_add_operation_menu_option($name, $fatherId=null, $icon=null,
$option_menu['acl'] = $acl; $option_menu['acl'] = $acl;
$extension = &$config['extensions'][$extension_file]; $extension = &$config['extensions'][$extension_file];
$option_menu['sec2'] = $extension['dir'].'/'.mb_substr($extension_file, 0, -4); $option_menu['sec2'] = $extension['dir'].'/'.mb_substr(($extension_file ?? ''), 0, -4);
$option_menu['fatherId'] = $fatherId; $option_menu['fatherId'] = $fatherId;
$option_menu['subfatherId'] = $subfatherId; $option_menu['subfatherId'] = $subfatherId;
$option_menu['icon'] = $icon; $option_menu['icon'] = $icon;

View File

@ -100,7 +100,7 @@ function forecast_projection_graph(
$data[0] = ''; $data[0] = '';
$data[1] = $cont; $data[1] = $cont;
$data[2] = date($config['date_format'], $row[0]); $data[2] = date($config['date_format'], (int) $row[0]);
$data[3] = $row[0]; $data[3] = $row[0];
$data[4] = $row[1]; $data[4] = $row[1];
$data[5] = ($row[0] * $row[1]); $data[5] = ($row[0] * $row[1]);

View File

@ -82,11 +82,11 @@ function io_safe_input($value)
return $value; return $value;
} }
if (! mb_check_encoding($value, 'UTF-8')) { if (isset($value) === true && !mb_check_encoding($value, 'UTF-8')) {
$value = utf8_encode($value); $value = utf8_encode($value);
} }
$valueHtmlEncode = htmlentities($value, ENT_QUOTES, 'UTF-8', true); $valueHtmlEncode = htmlentities(($value ?? ''), ENT_QUOTES, 'UTF-8', true);
// Replace the character '\' for the equivalent html entitie // Replace the character '\' for the equivalent html entitie
$valueHtmlEncode = str_replace('\\', '&#92;', $valueHtmlEncode); $valueHtmlEncode = str_replace('\\', '&#92;', $valueHtmlEncode);
@ -561,10 +561,8 @@ function io_output_password($password, $wrappedBy='')
] ]
); );
$output = ($plaintext === ENTERPRISE_NOT_HOOK) ? $password : $plaintext;
// If password already decrypt return same password. // If password already decrypt return same password.
$output = (empty($plaintext) === true) ? $password : $plaintext; $output = (empty($plaintext) === true || $plaintext === ENTERPRISE_NOT_HOOK) ? $password : $plaintext;
return sprintf( return sprintf(
'%s%s%s', '%s%s%s',

View File

@ -819,7 +819,7 @@ function notifications_print_global_source_configuration($source)
$html_checkboxes = ''; $html_checkboxes = '';
$blacklist = json_decode($source['subtype_blacklist'], 1); $blacklist = json_decode(($source['subtype_blacklist'] ?? ''), 1);
if (json_last_error() !== JSON_ERROR_NONE) { if (json_last_error() !== JSON_ERROR_NONE) {
$blacklist = []; $blacklist = [];
} }

View File

@ -243,6 +243,7 @@ function profile_print_profile_table($id, $json_profile=false, $return=false, $c
$profile = json_decode($profile); $profile = json_decode($profile);
} }
$result = [];
$result[] = [ $result[] = [
'id_grupo' => $profile->group, 'id_grupo' => $profile->group,
'id_perfil' => $profile->profile, 'id_perfil' => $profile->profile,

View File

@ -1039,7 +1039,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
echo " echo "
<script> <script>
function sendHash(url) { function sendHash(url) {
window.open(url+'&loginhash=auto&loginhash_data=".$hashdata.'&loginhash_user='.str_rot13($user)."', '_blank'); window.open(url+'&loginhash=auto&loginhash_data=".$hashdata.'&loginhash_user='.str_rot13(($user ?? ''))."', '_blank');
} }

View File

@ -148,7 +148,7 @@ function ui_print_truncate_text(
$text_html_decoded = io_safe_output($text); $text_html_decoded = io_safe_output($text);
$text_has_entities = $text != $text_html_decoded; $text_has_entities = $text != $text_html_decoded;
if (mb_strlen($text_html_decoded, 'UTF-8') > ($numChars)) { if (isset($text_html_decoded) === true && mb_strlen($text_html_decoded, 'UTF-8') > ($numChars)) {
// '/2' because [...] is in the middle of the word. // '/2' because [...] is in the middle of the word.
$half_length = intval(($numChars - 3) / 2); $half_length = intval(($numChars - 3) / 2);
@ -969,15 +969,27 @@ function ui_print_os_icon(
$options['title'] = $os_name; $options['title'] = $os_name;
} }
$output = html_print_image( if ($icon === '.png') {
'images/'.$subfolder.'/'.$icon, $output = html_print_image(
true, 'images/os@svg.svg',
$options, true,
false, $options,
$relative, false,
$no_in_meta, $relative,
true $no_in_meta,
); true
);
} else {
$output = html_print_image(
'images/'.$subfolder.'/'.$icon,
true,
$options,
false,
$relative,
$no_in_meta,
true
);
}
} }
} else { } else {
// $output = "<img src='images/os_icons/" . $icon . "' alt='" . $os_name . "' title='" . $os_name . "'>"; // $output = "<img src='images/os_icons/" . $icon . "' alt='" . $os_name . "' title='" . $os_name . "'>";

View File

@ -301,6 +301,13 @@ function gd_progress_bubble($width, $height, $progress, $title, $font, $out_of_l
function ImageRectangleWithRoundedCorners(&$im, $x1, $y1, $x2, $y2, $radius, $color) function ImageRectangleWithRoundedCorners(&$im, $x1, $y1, $x2, $y2, $radius, $color)
{ {
$x1 = (int) $x1;
$y1 = (int) $y1;
$x2 = (int) $x2;
$y2 = (int) $y2;
$radius = (int) $radius;
$color = (int) $color;
// Draw rectangle without corners // Draw rectangle without corners
imagefilledrectangle($im, ($x1 + $radius), $y1, ($x2 - $radius), $y2, $color); imagefilledrectangle($im, ($x1 + $radius), $y1, ($x2 - $radius), $y2, $color);
imagefilledrectangle($im, $x1, ($y1 + $radius), $x2, ($y2 - $radius), $color); imagefilledrectangle($im, $x1, ($y1 + $radius), $x2, ($y2 - $radius), $color);

View File

@ -113,6 +113,13 @@ class ClusterWizard extends \HTML
*/ */
private $agent; private $agent;
/**
* Id of clusters.
*
* @var integer
*/
public $id;
/** /**
* Builds a Cluster Wizard. * Builds a Cluster Wizard.

View File

@ -167,6 +167,20 @@ class Manager implements PublicLogin
*/ */
private $duplicateCellId; private $duplicateCellId;
/**
* Url
*
* @var string
*/
public $url;
/**
* Widget
*
* @var Widget
*/
public $cWidget;
/** /**
* Allowed methods to be called using AJAX request. * Allowed methods to be called using AJAX request.
* *

View File

@ -65,6 +65,27 @@ class Widget
*/ */
private $dateTo; private $dateTo;
/**
* Data cell
*
* @var array
*/
public $dataCell;
/**
* Overflow scrollbar.
*
* @var boolean
*/
public $overflow_scrollbars;
/**
* Position
*
* @var array
*/
public $position;
/** /**
* Contructor widget. * Contructor widget.

View File

@ -226,7 +226,7 @@ class AgentHive extends Widget
'name' => 'groups[]', 'name' => 'groups[]',
'returnAllGroup' => false, 'returnAllGroup' => false,
'privilege' => 'AR', 'privilege' => 'AR',
'selected' => explode(',', $values['groups'][0]), 'selected' => (isset($values['groups'][0]) === true) ? explode(',', $values['groups'][0]) : [],
'return' => true, 'return' => true,
'multiple' => true, 'multiple' => true,
'required' => true, 'required' => true,

View File

@ -117,6 +117,13 @@ class DataMatrix extends Widget
*/ */
protected $cellId; protected $cellId;
/**
* Position
*
* @var array
*/
public $size;
/** /**
* Construct. * Construct.

View File

@ -0,0 +1,541 @@
<?php
/**
* Widget agiss map Pandora FMS Console
*
* @category Console Class
* @package Pandora FMS
* @subpackage Widget
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2024 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
namespace PandoraFMS\Dashboard;
use PandoraFMS\Enterprise\Metaconsole\Node;
global $config;
/**
* URL Widgets
*/
class GisMap extends Widget
{
/**
* Name widget.
*
* @var string
*/
protected $name;
/**
* Title widget.
*
* @var string
*/
protected $title;
/**
* Page widget;
*
* @var string
*/
protected $page;
/**
* Class name widget.
*
* @var [type]
*/
protected $className;
/**
* Values options for each widget.
*
* @var [type]
*/
protected $values;
/**
* Configuration required.
*
* @var boolean
*/
protected $configurationRequired;
/**
* Error load widget.
*
* @var boolean
*/
protected $loadError;
/**
* Width.
*
* @var integer
*/
protected $width;
/**
* Heigth.
*
* @var integer
*/
protected $height;
/**
* Grid Width.
*
* @var integer
*/
protected $gridWidth;
/**
* Cell ID.
*
* @var integer
*/
protected $cellId;
/**
* Construct.
*
* @param integer $cellId Cell ID.
* @param integer $dashboardId Dashboard ID.
* @param integer $widgetId Widget ID.
* @param integer|null $width New width.
* @param integer|null $height New height.
* @param integer|null $gridWidth Grid width.
*/
public function __construct(
int $cellId,
int $dashboardId=0,
int $widgetId=0,
?int $width=0,
?int $height=0,
?int $gridWidth=0
) {
global $config;
// WARNING: Do not edit. This chunk must be in the constructor.
parent::__construct(
$cellId,
$dashboardId,
$widgetId
);
// Width.
$this->width = $width;
// Height.
$this->height = $height;
// Grid Width.
$this->gridWidth = $gridWidth;
// Cell Id.
$this->cellId = $cellId;
// Options.
$this->values = $this->decoders($this->getOptionsWidget());
// Page.
$this->page = basename(__FILE__);
// ClassName.
$class = new \ReflectionClass($this);
$this->className = $class->getShortName();
// Title.
$this->title = __('Gis map');
// Name.
if (empty($this->name) === true) {
$this->name = 'GisMap';
}
// This forces at least a first configuration.
$this->configurationRequired = false;
if (empty($this->values['gis_map']) === true) {
$this->configurationRequired = true;
}
}
/**
* Decoders hack for retrocompability.
*
* @param array $decoder Values.
*
* @return array Returns the values with the correct key.
*/
public function decoders(array $decoder): array
{
$values = [];
// Retrieve global - common inputs.
$values = parent::decoders($decoder);
if (isset($decoder['gis_map']) === true) {
$values['gis_map'] = $decoder['gis_map'];
}
return $values;
}
/**
* Generates inputs for form (specific).
*
* @return array Of inputs.
*
* @throws Exception On error.
*/
public function getFormInputs(): array
{
global $config;
include_once $config['homedir'].'/include/functions_gis.php';
// Retrieve global - common inputs.
$inputs = parent::getFormInputs();
if ((bool) $config['activate_gis'] === true) {
$maps = gis_get_maps();
}
$array_map = [];
foreach ($maps as $map) {
if (check_acl($config['id_user'], $map['group_id'], 'MR') === false
&& check_acl($config['id_user'], $map['group_id'], 'MW') === false
&& check_acl($config['id_user'], $map['group_id'], 'MM') === false
) {
continue;
}
$array_map[$map['id_tgis_map']] = $map['map_name'];
}
// Filters.
$inputs[] = [
'class' => 'flex flex-row',
'label' => __('GIS maps'),
'arguments' => [
'type' => 'select',
'fields' => $array_map,
'name' => 'gis_map',
'return' => true,
'selected' => ($this->values['gis_map'] === null) ? 0 : $this->values['gis_map'],
],
];
return $inputs;
}
/**
* Get Post for widget.
*
* @return array
*/
public function getPost(): array
{
// Retrieve global - common inputs.
$values = parent::getPost();
$values['gis_map'] = \get_parameter('gis_map', 0);
return $values;
}
/**
* Draw widget.
*
* @return string;
*/
public function load()
{
global $config;
include_once $config['homedir'].'/include/functions_gis.php';
include_once $config['homedir'].'/include/functions_agents.php';
\ui_require_javascript_file('openlayers.pandora', 'include/javascript/', true);
\ui_require_javascript_file('OpenLayers/OpenLayers', 'include/javascript/', true);
$map = db_get_row('tgis_map', 'id_tgis_map', $this->values['gis_map']);
$output = '';
if (check_acl($config['id_user'], $map['group_id'], 'MR') === false
&& check_acl($config['id_user'], $map['group_id'], 'MW') === false
&& check_acl($config['id_user'], $map['group_id'], 'MM') === false
) {
$output .= '<div class="container-center">';
$output .= ui_print_error_message(
__('You don\'t have access'),
'',
true
);
$output .= '</div>';
return $output;
}
$confMap = gis_get_map_conf($this->values['gis_map']);
// Default open map (used to overwrite unlicensed google map view).
$confMapDefault = get_good_con();
$confMapDefaultFull = json_decode($confMapDefault['conection_data'], true);
$confMapUrlDefault = $confMapDefaultFull['url'];
$num_baselayer = 0;
// Initialy there is no Gmap base layer.
$gmap_layer = false;
if ($confMap !== false) {
foreach ($confMap as $mapC) {
$baselayers[$num_baselayer]['typeBaseLayer'] = $mapC['connection_type'];
$baselayers[$num_baselayer]['name'] = $mapC['conection_name'];
$baselayers[$num_baselayer]['num_zoom_levels'] = $mapC['num_zoom_levels'];
$decodeJSON = json_decode($mapC['conection_data'], true);
switch ($mapC['connection_type']) {
case 'OSM':
$baselayers[$num_baselayer]['url'] = $decodeJSON['url'];
break;
case 'Gmap':
if (!isset($decodeJSON['gmap_key']) || empty($decodeJSON['gmap_key'])) {
// If there is not gmap_key, show the default view.
$baselayers[$num_baselayer]['url'] = $confMapUrlDefault;
$baselayers[$num_baselayer]['typeBaseLayer'] = 'OSM';
} else {
$baselayers[$num_baselayer]['gmap_type'] = $decodeJSON['gmap_type'];
$baselayers[$num_baselayer]['gmap_key'] = $decodeJSON['gmap_key'];
$gmap_key = $decodeJSON['gmap_key'];
// Once a Gmap base layer is found we mark it to import the API.
$gmap_layer = true;
}
break;
case 'Static_Image':
$baselayers[$num_baselayer]['url'] = $decodeJSON['url'];
$baselayers[$num_baselayer]['bb_left'] = $decodeJSON['bb_left'];
$baselayers[$num_baselayer]['bb_right'] = $decodeJSON['bb_right'];
$baselayers[$num_baselayer]['bb_bottom'] = $decodeJSON['bb_bottom'];
$baselayers[$num_baselayer]['bb_top'] = $decodeJSON['bb_top'];
$baselayers[$num_baselayer]['image_width'] = $decodeJSON['image_width'];
$baselayers[$num_baselayer]['image_height'] = $decodeJSON['image_height'];
break;
case 'WMS':
$baselayers[$num_baselayer]['url'] = $decodeJSON['url'];
$baselayers[$num_baselayer]['layers'] = $decodeJSON['layers'];
break;
default:
// Do nothing.
break;
}
$num_baselayer++;
if ($mapC['default_map_connection'] == 1) {
$numZoomLevels = $mapC['num_zoom_levels'];
}
}
}
if ($gmap_layer === true) {
if (https_is_running()) {
?>
<script type="text/javascript" src="https://maps.google.com/maps?file=api&v=2&sensor=false&key=<?php echo $gmap_key; ?>" ></script>
<?php
} else {
?>
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=<?php echo $gmap_key; ?>" ></script>
<?php
}
}
$controls = [
'PanZoomBar',
'ScaleLine',
'Navigation',
'MousePosition',
'layerSwitcher',
];
$layers = gis_get_layers($this->values['gis_map']);
$output .= '<div id="map_'.$this->cellId.'" style="width: 100%; height: 100%" />';
gis_print_map(
'map_'.$this->cellId,
$map['zoom_level'],
$map['initial_latitude'],
$map['initial_longitude'],
$baselayers,
$controls
);
$output .= '</div>';
if (empty($layers) === false) {
foreach ($layers as $layer) {
gis_make_layer(
$layer['layer_name'],
$layer['view_layer'],
null,
$layer['id_tmap_layer']
);
// Calling agents_get_group_agents with none to obtain the names in the same case as they are in the DB.
$agentNamesByGroup = [];
if ($layer['tgrupo_id_grupo'] >= 0) {
$agentNamesByGroup = agents_get_group_agents(
$layer['tgrupo_id_grupo'],
false,
'none',
true,
true,
false
);
}
$agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer']);
$groupsByAgentId = gis_get_groups_layer_by_agent_id($layer['id_tmap_layer']);
$agentNamesOfGroupItems = [];
foreach ($groupsByAgentId as $agentId => $groupInfo) {
$agentNamesOfGroupItems[$agentId] = $groupInfo['agent_name'];
}
$agentNames = array_unique($agentNamesByGroup + $agentNamesByLayer + $agentNamesOfGroupItems);
foreach ($agentNames as $key => $agentName) {
$idAgent = $key;
$coords = gis_get_data_last_position_agent($idAgent);
if ($coords === false) {
$coords['stored_latitude'] = $map['default_latitude'];
$coords['stored_longitude'] = $map['default_longitude'];
} else {
if ($show_history == 'y') {
$lastPosition = [
'longitude' => $coords['stored_longitude'],
'latitude' => $coords['stored_latitude'],
];
gis_add_path($layer['layer_name'], $idAgent, $lastPosition);
}
}
$status = agents_get_status($idAgent, true);
$icon = gis_get_agent_icon_map($idAgent, true, $status);
$icon_size = getimagesize($icon);
$icon_width = $icon_size[0];
$icon_height = $icon_size[1];
// Is a group item.
if (empty($groupsByAgentId[$idAgent]) === false) {
$groupId = (int) $groupsByAgentId[$idAgent]['id'];
$groupName = $groupsByAgentId[$idAgent]['name'];
gis_add_agent_point(
$layer['layer_name'],
io_safe_output($groupName),
$coords['stored_latitude'],
$coords['stored_longitude'],
$icon,
$icon_width,
$icon_height,
$idAgent,
$status,
'point_group_info',
$groupId
);
} else {
$parent = db_get_value('id_parent', 'tagente', 'id_agente', $idAgent);
gis_add_agent_point(
$layer['layer_name'],
io_safe_output($agentName),
$coords['stored_latitude'],
$coords['stored_longitude'],
$icon,
$icon_width,
$icon_height,
$idAgent,
$status,
'point_agent_info',
$parent
);
}
}
}
gis_add_parent_lines();
$timestampLastOperation = db_get_value_sql('SELECT UNIX_TIMESTAMP()');
gis_activate_select_control();
gis_activate_ajax_refresh($layers, $timestampLastOperation);
}
return $output;
}
/**
* Get description.
*
* @return string.
*/
public static function getDescription()
{
return __('GIS map');
}
/**
* Get Name.
*
* @return string.
*/
public static function getName()
{
return 'GisMap';
}
/**
* Get size Modal Configuration.
*
* @return array
*/
public function getSizeModalConfiguration(): array
{
$size = [
'width' => 500,
'height' => 300,
];
return $size;
}
}

View File

@ -115,6 +115,13 @@ class ModulesByStatus extends Widget
*/ */
protected $cellId; protected $cellId;
/**
* Size
*
* @var array
*/
public $size;
/** /**
* Construct. * Construct.

View File

@ -355,7 +355,7 @@ class AgentModuleWidget extends Widget
*/ */
public function getIdCacheAgent($id_agents) public function getIdCacheAgent($id_agents)
{ {
$target_agents = explode(',', $id_agents); $target_agents = explode(',', ($id_agents ?? ''));
$cache_id_agents = []; $cache_id_agents = [];
foreach ($target_agents as $agent_id) { foreach ($target_agents as $agent_id) {
if (str_contains($agent_id, '|') === false) { if (str_contains($agent_id, '|') === false) {

View File

@ -111,6 +111,20 @@ class EventsListWidget extends Widget
*/ */
protected $publicLink; protected $publicLink;
/**
* Overflow scrollbar.
*
* @var boolean
*/
public $overflow_scrollbars;
/**
* Position
*
* @var array
*/
public $position;
/** /**
* Construct. * Construct.

View File

@ -271,7 +271,7 @@ class HeatmapWidget extends Widget
'name' => 'groups[]', 'name' => 'groups[]',
'returnAllGroup' => true, 'returnAllGroup' => true,
'privilege' => 'AR', 'privilege' => 'AR',
'selected' => explode(',', $values['groups'][0]), 'selected' => (isset($values['groups'][0]) === true) ? explode(',', $values['groups'][0]) : [],
'return' => true, 'return' => true,
'multiple' => true, 'multiple' => true,
], ],
@ -305,7 +305,7 @@ class HeatmapWidget extends Widget
'type' => 'select', 'type' => 'select',
'fields' => $tags, 'fields' => $tags,
'name' => 'tags[]', 'name' => 'tags[]',
'selected' => explode(',', $values['tags'][0]), 'selected' => (isset($values['tags'][0]) === true) ? explode(',', $values['tags'][0]) : [],
'return' => true, 'return' => true,
'multiple' => true, 'multiple' => true,
], ],
@ -332,7 +332,7 @@ class HeatmapWidget extends Widget
'type' => 'select', 'type' => 'select',
'fields' => $module_groups, 'fields' => $module_groups,
'name' => 'module_groups[]', 'name' => 'module_groups[]',
'selected' => explode(',', $values['module_groups'][0]), 'selected' => (isset($values['module_groups'][0]) === true) ? explode(',', $values['module_groups'][0]) : [],
'return' => true, 'return' => true,
'multiple' => true, 'multiple' => true,
'nothing' => __('Not assigned'), 'nothing' => __('Not assigned'),

View File

@ -446,7 +446,7 @@ class SecurityHardening extends Widget
{ {
global $config; global $config;
$id_groups = explode(',', $group); $id_groups = explode(',', ($group ?? ''));
if (in_array(0, $id_groups) === true) { if (in_array(0, $id_groups) === true) {
$id_groups = array_keys(users_get_groups($config['id_user'], 'AR', false)); $id_groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
} }

View File

@ -83,7 +83,11 @@ class SnmpTraps extends Element
{ {
if ($this->isEnabled() === true) { if ($this->isEnabled() === true) {
$value = $this->valueMonitoring('snmp_trap_queue'); $value = $this->valueMonitoring('snmp_trap_queue');
$total = round($value[0]['data']); if (isset($value[0]['data']) === true) {
$total = round($value[0]['data']);
} else {
$total = __('N/A');
}
} else { } else {
$total = __('N/A'); $total = __('N/A');
} }
@ -109,7 +113,11 @@ class SnmpTraps extends Element
{ {
if ($this->isEnabled() === true) { if ($this->isEnabled() === true) {
$value = $this->valueMonitoring('total_trap'); $value = $this->valueMonitoring('total_trap');
$total = round($value[0]['data']); if (isset($value[0]['data']) === true) {
$total = round($value[0]['data']);
} else {
$total = __('N/A');
}
} else { } else {
$total = __('N/A'); $total = __('N/A');
} }

View File

@ -131,7 +131,7 @@
<div style='padding-bottom: 50px'> <div style='padding-bottom: 50px'>
<?php <?php
$version = '7.0NG.775'; $version = '7.0NG.775';
$build = '240207'; $build = '240212';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -505,7 +505,7 @@ if (is_ajax() === true) {
} }
} }
if (strlen($tmp->server_name) >= 10) { if (isset($tmp->server_name) === true && strlen($tmp->server_name) >= 10) {
$tmp->server_name = ui_print_truncate_text( $tmp->server_name = ui_print_truncate_text(
$tmp->server_name, $tmp->server_name,
10, 10,

View File

@ -304,23 +304,7 @@ if ($layers != false) {
gis_add_parent_lines(); gis_add_parent_lines();
switch ($config['dbtype']) { $timestampLastOperation = db_get_value_sql('SELECT UNIX_TIMESTAMP()');
case 'mysql':
$timestampLastOperation = db_get_value_sql('SELECT UNIX_TIMESTAMP()');
break;
case 'postgresql':
$timestampLastOperation = db_get_value_sql(
"SELECT ceil(date_part('epoch', CURRENT_TIMESTAMP))"
);
break;
case 'oracle':
$timestampLastOperation = db_get_value_sql(
"SELECT ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) FROM dual'
);
break;
}
gis_activate_select_control(); gis_activate_select_control();
gis_activate_ajax_refresh($layers, $timestampLastOperation); gis_activate_ajax_refresh($layers, $timestampLastOperation);

View File

@ -382,7 +382,7 @@ ui_print_standard_header(
$inventory_id_agent = (int) get_parameter('agent_id', -1); $inventory_id_agent = (int) get_parameter('agent_id', -1);
$inventory_agent = (string) get_parameter('agent', ''); $inventory_agent = (string) get_parameter('agent', '');
if (strlen($inventory_agent) == 0) { if (strlen(($inventory_agent ?? '')) == 0) {
$inventory_id_agent = -1; $inventory_id_agent = -1;
$inventory_agent = __('All'); $inventory_agent = __('All');
} else if ($inventory_agent == __('All')) { } else if ($inventory_agent == __('All')) {

View File

@ -6,7 +6,7 @@
%define debug_package %{nil} %define debug_package %{nil}
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -6,7 +6,7 @@
%define debug_package %{nil} %define debug_package %{nil}
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name httpd %define httpd_name httpd

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
%define httpd_name httpd %define httpd_name httpd
# User and Group under which Apache is running # User and Group under which Apache is running
%define httpd_name apache2 %define httpd_name apache2

View File

@ -2832,7 +2832,8 @@ INSERT INTO `twidget` (`id`,`class_name`,`unique_name`,`description`,`options`,`
(44,'WuxWidget','wux_transaction','Agent WUX transaction','','wux_transaction.php'), (44,'WuxWidget','wux_transaction','Agent WUX transaction','','wux_transaction.php'),
(45,'WuxStatsWidget','wux_transaction_stats','WUX transaction stats','','wux_transaction_stats.php'), (45,'WuxStatsWidget','wux_transaction_stats','WUX transaction stats','','wux_transaction_stats.php'),
(46,'SecurityHardening','security_hardening','Security Hardening','','security_hardening.php'), (46,'SecurityHardening','security_hardening','Security Hardening','','security_hardening.php'),
(47,'ServiceLevelWidget','service_level','Service Level','','service_level.php'); (47,'ServiceLevelWidget','service_level','Service Level','','service_level.php'),
(48,'GisMap','GisMap','Gis map','','GisMap.php');
INSERT INTO `tmap` (`id`,`id_group`,`id_user`,`type`,`subtype`,`name`,`description`,`height`,`width`,`center_x`,`center_y`,`background`,`background_options`,`source_period`,`source`,`source_data`,`generation_method`,`generated`,`filter`,`id_group_map`,`refresh_time`) VALUES (1,'0','admin',0,0,'Sample&#x20;dynamic&#x20;map','This&#x20;is&#x20;a&#x20;sample&#x20;dynamic&#x20;map.',900,900,0,0,'',0,60,0,'0',6,0,'{\"dont_show_subgroups\":0,\"node_radius\":40,\"x_offs\":\"0\",\"y_offs\":\"0\",\"z_dash\":\"1\",\"node_sep\":\"0.25\",\"rank_sep\":\"0.5\",\"mindist\":\"1\",\"kval\":\"0.3\"}',0,300); INSERT INTO `tmap` (`id`,`id_group`,`id_user`,`type`,`subtype`,`name`,`description`,`height`,`width`,`center_x`,`center_y`,`background`,`background_options`,`source_period`,`source`,`source_data`,`generation_method`,`generated`,`filter`,`id_group_map`,`refresh_time`) VALUES (1,'0','admin',0,0,'Sample&#x20;dynamic&#x20;map','This&#x20;is&#x20;a&#x20;sample&#x20;dynamic&#x20;map.',900,900,0,0,'',0,60,0,'0',6,0,'{\"dont_show_subgroups\":0,\"node_radius\":40,\"x_offs\":\"0\",\"y_offs\":\"0\",\"z_dash\":\"1\",\"node_sep\":\"0.25\",\"rank_sep\":\"0.5\",\"mindist\":\"1\",\"kval\":\"0.3\"}',0,300);
INSERT INTO `treport` (`id_report`,`id_user`,`name`,`description`,`private`,`id_group`,`custom_logo`,`header`,`first_page`,`footer`,`custom_font`,`id_template`,`id_group_edit`,`metaconsole`,`non_interactive`,`hidden`,`orientation`,`cover_page_render`,`index_render`) VALUES (1,'admin','Sample&#x20;report&#x20;#1','This&#x20;is&#x20;a&#x20;sample&#x20;report,&#x20;just&#x20;to&#x20;show&#x20;you&#x20;some&#x20;general&#x20;report&#x20;items.',0,0,NULL,NULL,'&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;img&#x20;src=&quot;http://localhost/pandora_console//images/pandora_report_logo.png&quot;&#x20;alt=&quot;&quot;&#x20;width=&quot;800&quot;&#x20;/&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;xx-large;&quot;&gt;&#40;_REPORT_NAME_&#41;&lt;/span&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;large;&quot;&gt;&#40;_DATETIME_&#41;&lt;/span&gt;&lt;/p&gt;',NULL,'Lato-Regular.ttf',0,0,0,0,0,'vertical',1,1); INSERT INTO `treport` (`id_report`,`id_user`,`name`,`description`,`private`,`id_group`,`custom_logo`,`header`,`first_page`,`footer`,`custom_font`,`id_template`,`id_group_edit`,`metaconsole`,`non_interactive`,`hidden`,`orientation`,`cover_page_render`,`index_render`) VALUES (1,'admin','Sample&#x20;report&#x20;#1','This&#x20;is&#x20;a&#x20;sample&#x20;report,&#x20;just&#x20;to&#x20;show&#x20;you&#x20;some&#x20;general&#x20;report&#x20;items.',0,0,NULL,NULL,'&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;img&#x20;src=&quot;http://localhost/pandora_console//images/pandora_report_logo.png&quot;&#x20;alt=&quot;&quot;&#x20;width=&quot;800&quot;&#x20;/&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;xx-large;&quot;&gt;&#40;_REPORT_NAME_&#41;&lt;/span&gt;&lt;/p&gt;&#x0d;&#x0a;&lt;p&#x20;style=&quot;text-align:&#x20;center;&quot;&gt;&lt;span&#x20;style=&quot;font-size:&#x20;large;&quot;&gt;&#40;_DATETIME_&#41;&lt;/span&gt;&lt;/p&gt;',NULL,'Lato-Regular.ttf',0,0,0,0,0,'vertical',1,1);

View File

@ -123,7 +123,7 @@ class Manager
string $public_url, string $public_url,
?string $ajax_url=null, ?string $ajax_url=null,
?string $page=null, ?string $page=null,
array $settings, array $settings=[],
?int $mode=null, ?int $mode=null,
bool $composer=false bool $composer=false
) { ) {

View File

@ -15,7 +15,7 @@ trait JsonSerializable
/** /**
* @return array * @return array
*/ */
public function jsonSerialize() public function jsonSerialize():mixed
{ {
return array_map(function ($value) { return array_map(function ($value) {
if ($value instanceof JsonSerializableInterface) { if ($value instanceof JsonSerializableInterface) {

View File

@ -148,7 +148,7 @@ class Elements implements ArraySerializableInterface, JsonSerializable
/** /**
* @return array * @return array
*/ */
public function jsonSerialize() public function jsonSerialize():mixed
{ {
return $this->getArrayCopy(); return $this->getArrayCopy();
} }

View File

@ -34,7 +34,12 @@ if ($redraw === false) {
$output .= '<div class="header-widget">'; $output .= '<div class="header-widget">';
$output .= '<div>'; $output .= '<div>';
$options = json_decode($cellData['options'], true); if (isset($cellData['options']) === true) {
$options = json_decode($cellData['options'], true);
} else {
$options = [];
}
if ($cellData['id_widget'] !== '0') { if ($cellData['id_widget'] !== '0') {
$output .= $options['title']; $output .= $options['title'];
} else { } else {

View File

@ -43,7 +43,7 @@ $form = [
'extra' => 'novalidate', 'extra' => 'novalidate',
]; ];
$js = 'tinymce.init({ $js .= ' tinymce.init({
selector: "#textarea_text", selector: "#textarea_text",
plugins: "preview, searchreplace, table, nonbreaking, link, image", plugins: "preview, searchreplace, table, nonbreaking, link, image",
promotion: false, promotion: false,

View File

@ -71,6 +71,10 @@ foreach ($widgets as $widget) {
continue; continue;
} }
if ($widget['unique_name'] === 'GisMap' && (bool) $config['activate_gis'] === false) {
continue;
}
$imageWidget = '/images/widgets/'.$widget['unique_name'].'.png'; $imageWidget = '/images/widgets/'.$widget['unique_name'].'.png';
$output .= '<div class="list-widgets">'; $output .= '<div class="list-widgets">';

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.775-240207 Version: 7.0NG.775-240212
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -46,7 +46,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.775"; my $pandora_version = "7.0NG.775";
my $pandora_build = "240207"; my $pandora_build = "240212";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.775"; my $pandora_version = "7.0NG.775";
my $pandora_build = "240207"; my $pandora_build = "240212";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

@ -7,7 +7,7 @@
%define debug_package %{nil} %define debug_package %{nil}
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -4,7 +4,7 @@
%global __os_install_post %{nil} %global __os_install_post %{nil}
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.775 %define version 7.0NG.775
%define release 240207 %define release 240212
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -9,7 +9,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.775" PI_VERSION="7.0NG.775"
PI_BUILD="240207" PI_BUILD="240212"
MODE=$1 MODE=$1
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then

View File

@ -38,7 +38,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.775 Build 240207"; my $version = "7.0NG.775 Build 240212";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;

View File

@ -36,7 +36,7 @@ use Encode::Locale;
Encode::Locale::decode_argv; Encode::Locale::decode_argv;
# version: define current version # version: define current version
my $version = "7.0NG.775 Build 240207"; my $version = "7.0NG.775 Build 240212";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);